00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00039 require_once(PATH_t3lib."class.t3lib_xml.php");
00040 require_once(PATH_tslib."class.tslib_pibase.php");
00041
00042 class tx_ttnews extends tslib_pibase {
00043 var $cObj;
00044
00045 var $tt_news_uid;
00046 var $conf;
00047 var $config;
00048 var $alternativeLayouts;
00049 var $pid;
00050 var $allowCaching;
00051 var $catExclusive;
00052 var $searchFieldList="short,bodytext,author,keywords,links,imagecaption,title";
00053 var $theCode="";
00054
00055 var $categories=array();
00056 var $pageArray=array();
00057
00061 function main_xmlnewsfeed($content,$conf) {
00062 $className=t3lib_div::makeInstanceClassName("t3lib_xml");
00063 $xmlObj = new $className("typo3_xmlnewsfeed");
00064 $xmlObj->setRecFields("tt_news","title,datetime");
00065 $xmlObj->renderHeader();
00066 $xmlObj->renderRecords("tt_news",$this->getStoriesResult());
00067 $xmlObj->renderFooter();
00068 return $xmlObj->getResult();
00069 }
00070 function getStoriesResult() {
00071 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tt_news', 'pid='.intval($GLOBALS['TSFE']->id).$this->cObj->enableFields('tt_news'), '', 'datetime DESC');
00072 return $res;
00073 }
00074
00075
00076
00077
00081 function main_news($content,$conf) {
00082
00083
00084 $GLOBALS["TSFE"]->set_no_cache();
00085
00086
00087
00088
00089
00090 $this->conf = $conf;
00091 $this->tt_news_uid = intval(t3lib_div::_GP("tt_news"));
00092 $this->alternativeLayouts = intval($this->conf["alternatingLayouts"])>0 ? intval($this->conf["alternatingLayouts"]) : 2;
00093
00094
00095 $this->config["pid_list"] = trim($this->cObj->stdWrap($this->conf["pid_list"],$this->conf["pid_list."]));
00096 $this->config["pid_list"] = $this->config["pid_list"] ? implode(t3lib_div::intExplode(",",$this->config["pid_list"]),",") : $GLOBALS["TSFE"]->id;
00097 $this->config["recursive"] = $this->cObj->stdWrap($conf["recursive"],$conf["recursive."]);
00098 list($pid) = explode(",",$this->config["pid_list"]);
00099 $this->pid = $pid;
00100
00101
00102 $this->config["code"] = $this->cObj->stdWrap($this->conf["code"],$this->conf["code."]);
00103 $this->config["limit"] = t3lib_div::intInRange($conf["limit"],0,1000);
00104 $this->config["limit"] = $this->config["limit"] ? $this->config["limit"] : 50;
00105 $this->allowCaching = $this->conf["allowCaching"]?1:0;
00106
00107
00108 $this->config["displayCurrentRecord"] = $this->conf["displayCurrentRecord"];
00109 if ($this->config["displayCurrentRecord"]) {
00110 $this->config["code"]="LIST";
00111 $this->tt_news_uid=$this->cObj->data["uid"];
00112 }
00113
00114
00115 $this->templateCode = $this->cObj->fileResource($this->conf["templateFile"]);
00116
00117
00118 $splitMark = md5(microtime());
00119 $globalMarkerArray=array();
00120 list($globalMarkerArray["###GW1B###"],$globalMarkerArray["###GW1E###"]) = explode($splitMark,$this->cObj->stdWrap($splitMark,$conf["wrap1."]));
00121 list($globalMarkerArray["###GW2B###"],$globalMarkerArray["###GW2E###"]) = explode($splitMark,$this->cObj->stdWrap($splitMark,$conf["wrap2."]));
00122 $globalMarkerArray["###GC1###"] = $this->cObj->stdWrap($conf["color1"],$conf["color1."]);
00123 $globalMarkerArray["###GC2###"] = $this->cObj->stdWrap($conf["color2"],$conf["color2."]);
00124 $globalMarkerArray["###GC3###"] = $this->cObj->stdWrap($conf["color3"],$conf["color3."]);
00125
00126
00127 $this->templateCode= $this->cObj->substituteMarkerArray($this->templateCode, $globalMarkerArray);
00128
00129
00130
00131
00132
00133 $this->enableFields = $this->cObj->enableFields("tt_news");
00134 $this->dontParseContent = $this->conf["dontParseContent"];
00135 $this->local_cObj =t3lib_div::makeInstance("tslib_cObj");
00136
00137 $codes=t3lib_div::trimExplode(",", $this->config["code"]?$this->config["code"]:$this->conf["defaultCode"],1);
00138 if (!count($codes)) $codes=array("");
00139 while(list(,$theCode)=each($codes)) {
00140 list($theCode,$cat,$aFlag) = explode("/",$theCode);
00141 $this->catExclusive = intval($cat);
00142 $this->arcExclusive = intval($aFlag);
00143 $theCode = (string)strtoupper(trim($theCode));
00144 $this->theCode = $theCode;
00145 switch($theCode) {
00146 case "LATEST":
00147 case "LIST":
00148 case "SINGLE":
00149 case "SEARCH":
00150 $content.= $this->news_list();
00151 break;
00152 case "AMENU":
00153 $content.= $this->news_archiveMenu();
00154 break;
00155 default:
00156 $langKey = strtoupper($GLOBALS["TSFE"]->config["config"]["language"]);
00157 $helpTemplate = $this->cObj->fileResource("EXT:tt_news/pi/news_help.tmpl");
00158
00159
00160 $helpTemplate_lang="";
00161 if ($langKey) {$helpTemplate_lang = $this->cObj->getSubpart($helpTemplate,"###TEMPLATE_".$langKey."###");}
00162 $helpTemplate = $helpTemplate_lang ? $helpTemplate_lang : $this->cObj->getSubpart($helpTemplate,"###TEMPLATE_DEFAULT###");
00163
00164
00165 $markerArray["###CODE###"] = $this->theCode;
00166 $content.=$this->cObj->substituteMarkerArray($helpTemplate,$markerArray);
00167 break;
00168 }
00169 }
00170 return $content;
00171 }
00172
00176 function news_archiveMenu() {
00177 $this->arcExclusive=1;
00178 $selectConf = $this->getSelectConf('',1);
00179
00180
00181 $selectConf['selectFields'] = 'max(datetime) as maxval, min(datetime) as minval';
00182 $res = $this->cObj->exec_getQuery("tt_news",$selectConf);
00183 $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
00184
00185 if ($row["minval"]) {
00186 $dateArr = array();
00187 $arcMode = $this->conf["archiveMode"] ? $this->conf["archiveMode"] : "month";
00188 $c=0;
00189 do {
00190 switch($arcMode) {
00191 case "month":
00192 $theDate = mktime (0,0,0,date("m",$row["minval"])+$c,1,date("Y",$row["minval"]));
00193 break;
00194 case "quarter":
00195 $theDate = mktime (0,0,0,floor(date("m",$row["minval"])/3)+1+(3*$c),1,date("Y",$row["minval"]));
00196 break;
00197 case "year":
00198 $theDate = mktime (0,0,0,1,1,date("Y",$row["minval"])+$c);
00199 break;
00200 }
00201 $dateArr[]=$theDate;
00202 $c++;
00203 if ($c>1000) break;
00204 } while ($theDate<$GLOBALS["SIM_EXEC_TIME"]);
00205
00206
00207 reset($dateArr);
00208 $periodAccum=array();
00209 while(list($k,$v)=each($dateArr)) {
00210 if (!isset($dateArr[$k+1])) {break;}
00211 $periodInfo=array();
00212 $periodInfo["start"] = $dateArr[$k];
00213 $periodInfo["stop"] = $dateArr[$k+1]-1;
00214 $periodInfo["HRstart"] = date("d-m-Y",$periodInfo["start"]);
00215 $periodInfo["HRstop"] = date("d-m-Y",$periodInfo["stop"]);
00216 $periodInfo["quarter"] = floor(date("m",$dateArr[$k])/3)+1;
00217
00218
00219 $selectConf['selectFields'] = 'count(*)';
00220 $selectConf['where'].= " AND datetime>=".$periodInfo["start"]." AND datetime<".$periodInfo["stop"];
00221 $res = $this->cObj->exec_getQuery("tt_news",$selectConf);
00222 $row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00223 $periodInfo["count"]=$row[0];
00224
00225 if (!$this->conf["archiveMenuNoEmpty"] || $periodInfo["count"]) {
00226 $periodAccum[] = $periodInfo;
00227 }
00228 }
00229
00230
00231
00232
00233 $t["total"] = $this->cObj->getSubpart($this->templateCode,$this->spMarker("###TEMPLATE_ARCHIVE###"));
00234 $t["item"]= $this->getLayouts($t["total"],$this->alternativeLayouts,"MENUITEM");
00235 $cc=0;
00236
00237 $veryLocal_cObj =t3lib_div::makeInstance("tslib_cObj");
00238 reset($periodAccum);
00239 $itemsOut="";
00240 while(list(,$pArr)=each($periodAccum)) {
00241
00242 $wrappedSubpartArray=array();
00243 $wrappedSubpartArray["###LINK_ITEM###"]= array('<A href="'.$this->getLinkUrl(0).'&pS='.$pArr["start"].'&pL='.($pArr["stop"]-$pArr["start"]).'&arc=1">','</A>');
00244
00245 $markerArray = array();
00246 $veryLocal_cObj->start($pArr,"");
00247 $markerArray["###ARCHIVE_TITLE###"]=$veryLocal_cObj->cObjGetSingle($this->conf["archiveTitleCObject"],$this->conf["archiveTitleCObject."],"archiveTitle");
00248 $markerArray["###ARCHIVE_COUNT###"]=$pArr["count"];
00249
00250 $itemsOut.= $this->cObj->substituteMarkerArrayCached($t["item"][($cc%count($t["item"]))],$markerArray,array(),$wrappedSubpartArray);
00251 }
00252
00253
00254 $subpartArray=array();
00255 $wrappedSubpartArray=array();
00256 $markerArray=array();
00257
00258 $subpartArray["###CONTENT###"]=$itemsOut;
00259 $content = $this->cObj->substituteMarkerArrayCached($t["total"],$markerArray,$subpartArray,$wrappedSubpartArray);
00260 } else {
00261 $content = $this->cObj->getSubpart($this->templateCode,$this->spMarker("###TEMPLATE_ARCHIVE_NOITEMS###"));
00262 }
00263 return $content;
00264 }
00265
00269 function news_list() {
00270 $theCode = $this->theCode;
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281 $this->initCategories();
00282 switch($theCode) {
00283 case "LATEST":
00284 $prefix_display="displayLatest";
00285 $templateName = "TEMPLATE_LATEST";
00286 $this->arcExclusive=-1;
00287 if (intval($this->conf["latestLimit"])) $this->config["limit"] = intval($this->conf["latestLimit"]);
00288 break;
00289 case "LIST":
00290 case "SEARCH":
00291 $prefix_display="displayList";
00292 $templateName = "TEMPLATE_LIST";
00293 break;
00294 default:
00295 $prefix_display="displaySingle";
00296 $templateName = "TEMPLATE_SINGLE";
00297 break;
00298 }
00299
00300 if ($this->tt_news_uid) {
00301
00302 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tt_news', 'uid='.intval($this->tt_news_uid).' AND type=0'.$this->enableFields);
00303 $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
00304
00305 if($this->config["displayCurrentRecord"] || is_array($row)) {
00306 $this->setPidlist(intval($row["pid"]));
00307 $this->generatePageArray();
00308
00309
00310 $item ="";
00311 if ($this->config["displayCurrentRecord"]) {
00312 $row=$this->cObj->data;
00313 $item = trim($this->cObj->getSubpart($this->templateCode,$this->spMarker("###TEMPLATE_SINGLE_RECORDINSERT###")));
00314 }
00315 if (!$item) {$item = $this->cObj->getSubpart($this->templateCode,$this->spMarker("###TEMPLATE_SINGLE###"));}
00316
00317
00318 $wrappedSubpartArray=array();
00319 $wrappedSubpartArray["###LINK_ITEM###"]= array('<A href="'.$this->getLinkUrl($this->conf["backPid"]?$this->conf["backPid"]:t3lib_div::_GP("backPID")).'">','</A>');
00320 $markerArray = $this->getItemMarkerArray($row,"displaySingle");
00321
00322 $content= $this->cObj->substituteMarkerArrayCached($item,$markerArray,array(),$wrappedSubpartArray);
00323 }
00324 } elseif ($theCode=="SINGLE") {
00325 $content.="Wrong parameters, GET/POST var 'tt_news' was missing.";
00326 } elseif ($this->arcExclusive>0 && !t3lib_div::_GP("pS") && $theCode!="SEARCH") {
00327 $content.="";
00328 } else {
00329 $content="";
00330
00331 $where="";
00332 if ($theCode=="SEARCH") {
00333
00334 $t["search"] = $this->cObj->getSubpart($this->templateCode,$this->spMarker("###TEMPLATE_SEARCH###"));
00335
00336 $out=$t["search"];
00337 $out=$this->cObj->substituteMarker($out, "###FORM_URL###", $this->getLinkUrl($this->conf["PIDsearch"]));
00338 $out=$this->cObj->substituteMarker($out, "###SWORDS###", htmlspecialchars(t3lib_div::_GP("swords")));
00339
00340 $content.=$out;
00341 if (t3lib_div::_GP("swords")) {
00342 $where = $this->searchWhere(trim(t3lib_div::_GP("swords")));
00343 }
00344 }
00345 $begin_at=t3lib_div::intInRange(t3lib_div::_GP("begin_at"),0,100000);
00346 if (($theCode!="SEARCH" && !t3lib_div::_GP("swords")) || $where) {
00347
00348 $selectConf = $this->getSelectConf($where);
00349
00350
00351 $selectConf['selectFields'] = 'count(*)';
00352 $res = $this->cObj->exec_getQuery("tt_news",$selectConf);
00353 $row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00354 $newsCount = $row[0];
00355
00356
00357 $begin_at = t3lib_div::intInRange(($begin_at >= $newsCount) ? ($newsCount-$this->config["limit"]) : $begin_at,0);
00358
00359
00360 $selectConf["orderBy"] = "datetime DESC";
00361 $selectConf['selectFields'] = '*';
00362 $selectConf['max'] = intval($this->config["limit"]+1);
00363 $selectConf['begin'] = $begin_at;
00364
00365 $res = $this->cObj->exec_getQuery("tt_news",$selectConf);
00366
00367
00368 $itemsOut = "";
00369 $t = array();
00370 $t["total"] = $this->cObj->getSubpart($this->templateCode,$this->spMarker("###".$templateName."###"));
00371 $t["item"] = $this->getLayouts($t["total"],$this->alternativeLayouts,"NEWS");
00372 $cc = 0;
00373
00374 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
00375
00376 $wrappedSubpartArray=array();
00377 if ($row["type"]==1 || $row["type"]==2) {
00378 $this->local_cObj->setCurrentVal($row["type"]==1 ? $row["page"] : $row["ext_url"]);
00379 $wrappedSubpartArray["###LINK_ITEM###"]= $this->local_cObj->typolinkWrap($this->conf["pageTypoLink."]);
00380 } else {
00381 $wrappedSubpartArray["###LINK_ITEM###"]= array('<A href="'.$this->getLinkUrl($this->conf["PIDitemDisplay"]).'&tt_news='.$row["uid"].'">','</A>');
00382 }
00383 $markerArray = $this->getItemMarkerArray($row,$prefix_display);
00384
00385 $itemsOut.= $this->cObj->substituteMarkerArrayCached($t["item"][($cc%count($t["item"]))],$markerArray,array(),$wrappedSubpartArray);
00386 $cc++;
00387 if ($cc==$this->config["limit"]) {break;}
00388 }
00389 $out=$itemsOut;
00390 }
00391 if ($out) {
00392
00393 $url = $this->getLinkUrl("","begin_at");
00394
00395 $subpartArray=array();
00396 $wrappedSubpartArray=array();
00397 $markerArray=array();
00398
00399 if ($newsCount > $begin_at+$this->config["limit"]) {
00400 $next = ($begin_at+$this->config["limit"] > $newsCount) ? $newsCount-$this->config["limit"] : $begin_at+$this->config["limit"];
00401 $wrappedSubpartArray["###LINK_NEXT###"]=array('<A href="'.$url.'&begin_at='.$next.'">','</A>');
00402 } else {
00403 $subpartArray["###LINK_NEXT###"]="";
00404 }
00405 if ($begin_at) {
00406 $prev = ($begin_at-$this->config["limit"] < 0) ? 0 : $begin_at-$this->config["limit"];
00407 $wrappedSubpartArray["###LINK_PREV###"]=array('<A href="'.$url.'&begin_at='.$prev.'">','</A>');
00408 } else {
00409 $subpartArray["###LINK_PREV###"]="";
00410 }
00411 $markerArray["###BROWSE_LINKS###"]="";
00412 if ($newsCount > $this->config["limit"] ) {
00413 for ($i = 0 ; $i < ($newsCount/$this->config["limit"]); $i++) {
00414 if (($begin_at >= $i*$this->config["limit"]) && ($begin_at < $i*$this->config["limit"]+$this->config["limit"])) {
00415 $markerArray["###BROWSE_LINKS###"].= ' <b>'.(string)($i+1).'</b> ';
00416
00417
00418 } else {
00419 $markerArray["###BROWSE_LINKS###"].= ' <A href="'.$url.'&begin_at='.(string)($i * $this->config["limit"]).'">'.(string)($i+1).'</A> ';
00420 }
00421 }
00422 }
00423
00424 $subpartArray["###CONTENT###"]=$out;
00425 $markerArray["###CATEGORY_TITLE###"]="";
00426 $wrappedSubpartArray["###LINK_ARCHIVE###"]=$this->local_cObj->typolinkWrap($this->conf["archiveTypoLink."]);
00427
00428 $content.= $this->cObj->substituteMarkerArrayCached($t["total"],$markerArray,$subpartArray,$wrappedSubpartArray);
00429 } elseif ($where) {
00430 $content.=$this->cObj->getSubpart($this->templateCode,$this->spMarker("###ITEM_SEARCH_EMPTY###"));
00431 }
00432 }
00433 return $content;
00434 }
00435
00436 function getSelectConf($where,$noPeriod=0) {
00437 $this->setPidlist($this->config["pid_list"]);
00438 $this->initRecursive($this->config["recursive"]);
00439 $this->generatePageArray();
00440
00441
00442 $selectConf = Array();
00443 $selectConf["pidInList"] = $this->pid_list;
00444 $selectConf["where"] = "1=1 ".$where;
00445
00446
00447
00448 if (intval(t3lib_div::_GP("arc"))) {
00449 $this->arcExclusive = intval(t3lib_div::_GP("arc"));
00450 }
00451 if ($this->arcExclusive) {
00452 if ($this->conf["enableArchiveDate"]) {
00453 if ($this->arcExclusive<0) {
00454 $selectConf["where"].=' AND (archivedate=0 OR archivedate>'.$GLOBALS["SIM_EXEC_TIME"].')';
00455 } elseif ($this->arcExclusive>0) {
00456 $selectConf["where"].=' AND archivedate<'.$GLOBALS["SIM_EXEC_TIME"];
00457 }
00458 }
00459 if ($this->conf["datetimeDaysToArchive"]) {
00460 $theTime = $GLOBALS["SIM_EXEC_TIME"]-intval($this->conf["datetimeDaysToArchive"])*3600*24;
00461 if ($this->arcExclusive<0) {
00462 $selectConf["where"].=' AND (datetime=0 OR datetime>'.$theTime.')';
00463 } elseif ($this->arcExclusive>0) {
00464 $selectConf["where"].=' AND datetime<'.$theTime;
00465 }
00466 }
00467 }
00468
00469 if (intval(t3lib_div::_GP("cat"))) {
00470 $this->catExclusive = intval(t3lib_div::_GP("cat"));
00471 }
00472 if ($this->catExclusive) {
00473 $selectConf["where"].=" AND category=".$this->catExclusive;
00474 }
00475
00476 if (!$noPeriod && intval(t3lib_div::_GP("pS"))) {
00477 $selectConf["where"].=' AND datetime>'.intval(t3lib_div::_GP("pS"));
00478 if (intval(t3lib_div::_GP("pL"))) {
00479 $selectConf["where"].=' AND datetime<'.(intval(t3lib_div::_GP("pS"))+intval(t3lib_div::_GP("pL")));
00480 }
00481 }
00482 return $selectConf;
00483 }
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00501 function setPidlist($pid_list) {
00502 $this->pid_list = $pid_list;
00503 }
00504
00508 function initRecursive($recursive) {
00509 if ($recursive) {
00510 $pid_list_arr = explode(",",$this->pid_list);
00511 $this->pid_list="";
00512 while(list(,$val)=each($pid_list_arr)) {
00513 $this->pid_list.=$val.",".$this->cObj->getTreeList($val,intval($recursive));
00514 }
00515 $this->pid_list = ereg_replace(",$","",$this->pid_list);
00516 }
00517 }
00518
00522 function initCategories() {
00523
00524 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tt_news_cat', '1=1'.$this->cObj->enableFields('tt_news_cat'));
00525 $this->categories = array();
00526 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
00527 $this->categories[$row["uid"]] = $row["title"];
00528 }
00529 }
00530
00534 function generatePageArray() {
00535
00536 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('title,uid,author,author_email', 'pages', 'uid IN ('.$this->pid_list.')');
00537 $this->pageArray = array();
00538 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
00539 $this->pageArray[$row["uid"]] = $row;
00540 }
00541 }
00542
00546 function getItemMarkerArray ($row,$textRenderObj="displaySingle") {
00547
00548
00549 $lConf = $this->conf[$textRenderObj."."];
00550 $this->local_cObj->start($row,"tt_news");
00551 $imageNum = isset($lConf["imageCount"]) ? $lConf["imageCount"] : 1;
00552 $imageNum = t3lib_div::intInRange($imageNum,0,100);
00553 $markerArray=array();
00554
00555
00556
00557 $theImgCode="";
00558 $imgs = t3lib_div::trimExplode(",",$row["image"],1);
00559 $imgsCaptions = explode(chr(10),$row["imagecaption"]);
00560 reset($imgs);
00561 $cc=0;
00562 while(list(,$val)=each($imgs)) {
00563 if ($cc==$imageNum) break;
00564 if ($val) {
00565 $lConf["image."]["file"] = "uploads/pics/".$val;
00566 }
00567 $theImgCode.=$this->local_cObj->IMAGE($lConf["image."]).$this->local_cObj->stdWrap($imgsCaptions[$cc],$lConf["caption_stdWrap."]);
00568 $cc++;
00569 }
00570 $markerArray["###NEWS_IMAGE###"]="";
00571 if ($cc) {
00572 $markerArray["###NEWS_IMAGE###"] = $this->local_cObj->wrap(trim($theImgCode),$lConf["imageWrapIfAny"]);
00573 }
00574
00575
00576 $markerArray["###NEWS_UID###"] = $row["uid"];
00577 $markerArray["###NEWS_TITLE###"] = $this->local_cObj->stdWrap($row["title"],$lConf["title_stdWrap."]);
00578 $markerArray["###NEWS_AUTHOR###"] = $this->local_cObj->stdWrap($row["author"],$lConf["author_stdWrap."]);
00579 $markerArray["###NEWS_EMAIL###"] = $this->local_cObj->stdWrap($row["author_email"],$lConf["email_stdWrap."]);
00580 $markerArray["###NEWS_DATE###"] = $this->local_cObj->stdWrap($row["datetime"],$lConf["date_stdWrap."]);
00581 $markerArray["###NEWS_TIME###"] = $this->local_cObj->stdWrap($row["datetime"],$lConf["time_stdWrap."]);
00582 $markerArray["###NEWS_AGE###"] = $this->local_cObj->stdWrap($row["datetime"],$lConf["age_stdWrap."]);
00583 $markerArray["###NEWS_SUBHEADER###"] = $this->formatStr($this->local_cObj->stdWrap($row["short"],$lConf["subheader_stdWrap."]));
00584 $markerArray["###NEWS_CONTENT###"] = $this->formatStr($this->local_cObj->stdWrap($row["bodytext"],$lConf["content_stdWrap."]));
00585 $markerArray["###NEWS_LINKS###"] = $this->formatStr($this->local_cObj->stdWrap($row["links"],$lConf["links_stdWrap."]));
00586
00587 $markerArray["###NEWS_CATEGORY###"] = $this->local_cObj->stdWrap($this->categories[$row["category"]],$lConf["category_stdWrap."]);
00588
00589
00590 $markerArray["###NEWS_RELATED###"] = $this->local_cObj->stdWrap($this->getRelated($row["uid"]),$lConf["related_stdWrap."]);
00591
00592
00593 $markerArray["###PAGE_UID###"] = $row["pid"];
00594 $markerArray["###PAGE_TITLE###"] = $this->pageArray[$row["pid"]]["title"];
00595 $markerArray["###PAGE_AUTHOR###"] = $this->local_cObj->stdWrap($this->pageArray[$row["pid"]]["author"],$lConf["author_stdWrap."]);
00596 $markerArray["###PAGE_AUTHOR_EMAIL###"] = $this->local_cObj->stdWrap($this->pageArray[$row["pid"]]["author_email"],$lConf["email_stdWrap."]);
00597
00598
00599 if ($this->conf["itemMarkerArrayFunc"]) {
00600 $markerArray = $this->userProcess("itemMarkerArrayFunc",$markerArray);
00601 }
00602
00603 return $markerArray;
00604 }
00605
00609 function getRelated($uid) {
00610 $veryLocal_cObj = t3lib_div::makeInstance("tslib_cObj");
00611 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,title,short,datetime,archivedate', 'tt_news,tt_news_related_mm M', 'tt_news.uid=M.uid_foreign AND M.uid_local='.intval($uid));
00612
00613 $lines = array();
00614 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
00615 $veryLocal_cObj->start($row,"tt_news");
00616 $lines[] = $veryLocal_cObj->cObjGetSingle($this->conf["getRelatedCObject"],$this->conf["getRelatedCObject."],"getRelated");
00617 }
00618 return implode("",$lines);
00619 }
00620
00624 function userProcess($mConfKey,$passVar) {
00625 if ($this->conf[$mConfKey]) {
00626 $funcConf = $this->conf[$mConfKey."."];
00627 $funcConf["parentObj"]=&$this;
00628 $passVar = $GLOBALS["TSFE"]->cObj->callUserFunction($this->conf[$mConfKey], $funcConf, $passVar);
00629 }
00630 return $passVar;
00631 }
00632
00636 function spMarker($subpartMarker) {
00637 $sPBody = substr($subpartMarker,3,-3);
00638 $altSPM = "";
00639 if (isset($this->conf["altMainMarkers."])) {
00640 $altSPM = trim($this->cObj->stdWrap($this->conf["altMainMarkers."][$sPBody],$this->conf["altMainMarkers."][$sPBody."."]));
00641 $GLOBALS["TT"]->setTSlogMessage("Using alternative subpart marker for '".$subpartMarker."': ".$altSPM,1);
00642 }
00643 return $altSPM ? $altSPM : $subpartMarker;
00644 }
00645
00649 function getLinkUrl($id="",$excludeList="") {
00650 $queryString=array();
00651 $queryString["id"] = "id=".($id ? $id : $GLOBALS["TSFE"]->id);
00652 $queryString["type"]= $GLOBALS["TSFE"]->type ? 'type='.$GLOBALS["TSFE"]->type : "";
00653 $queryString["backPID"]= 'backPID='.$GLOBALS["TSFE"]->id;
00654 $queryString["begin_at"]= t3lib_div::_GP("begin_at") ? 'begin_at='.t3lib_div::_GP("begin_at") : "";
00655 $queryString["swords"]= t3lib_div::_GP("swords") ? "swords=".rawurlencode(t3lib_div::_GP("swords")) : "";
00656 $queryString["pS"]= t3lib_div::_GP("pS") ? "pS=".intval(t3lib_div::_GP("pS")) : "";
00657 $queryString["pL"]= t3lib_div::_GP("pL") ? "pL=".intval(t3lib_div::_GP("pL")) : "";
00658 $queryString["arc"]= t3lib_div::_GP("arc") ? "arc=".intval(t3lib_div::_GP("arc")) : "";
00659 $queryString["cat"]= t3lib_div::_GP("cat") ? "cat=".intval(t3lib_div::_GP("cat")) : "";
00660
00661 reset($queryString);
00662 while(list($key,$val)=each($queryString)) {
00663 if (!$val || ($excludeList && t3lib_div::inList($excludeList,$key))) {
00664 unset($queryString[$key]);
00665 }
00666 }
00667 return $GLOBALS["TSFE"]->absRefPrefix.'index.php?'.implode($queryString,"&");
00668 }
00669
00673 function searchWhere($sw) {
00674 $where=$this->cObj->searchWhere($sw, $this->searchFieldList, 'tt_news');
00675 return $where;
00676 }
00677
00681 function formatStr($str) {
00682 if (is_array($this->conf["general_stdWrap."])) {
00683 $str = $this->local_cObj->stdWrap($str,$this->conf["general_stdWrap."]);
00684 }
00685 return $str;
00686 }
00687
00691 function getLayouts($templateCode,$alternativeLayouts,$marker) {
00692 $out=array();
00693 for($a=0;$a<$alternativeLayouts;$a++) {
00694 $m= "###".$marker.($a?"_".$a:"")."###";
00695 if(strstr($templateCode,$m)) {
00696 $out[]=$GLOBALS["TSFE"]->cObj->getSubpart($templateCode, $m);
00697 } else {
00698 break;
00699 }
00700 }
00701 return $out;
00702 }
00703 }
00704
00705
00706 if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/tt_news/pi/class.tx_ttnews.php"]) {
00707 include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/tt_news/pi/class.tx_ttnews.php"]);
00708 }
00709
00710 ?>