Läuft leider immer noch nicht
<?php
// Includes
cInclude('frontend', 'includes/pagination/ps_pagination.php');
// Initialization
$bDebug = false;
$iDataStart = 1000; // Startwert fuer dynamisch generierte CMS_VAR Elemente !!!Muss im Input gleich sein!!!
$lCount = 0;
// Check php version
$sVersion = explode( '.', phpversion() );
$sVersion = (((int)$sVersion[0] == 5 && (int)$sVersion[1] >= 2) || (int)$sVersion[0] > 5) ? 'php>=5.2' : 'php<5.2';
if ($sVersion == 'php>=5.2') {
cInclude('frontend', 'includes/class.datetimereplacelang.php');
} elseif (!function_exists(formatDateToStrftime)) {
function formatDateToStrftime($sDate) {
$aDate = array('d', 'm', 'y', 'H', 'i', 'F', 'j', 'Y', 'M', 'l', 'D');
$aStrftime = array('%d', '%m', '%y', '%H', '%M', '%B', '%e', '%Y', '%b', '%A', '%a');
return str_replace($aDate, $aStrftime, $sDate);
}
} else {
// do nothing
}
unset ($aData);
$aData = array();
// Base settings
unset ($aSettings);
$aSettings = array();
$aSettings['ShowModul'] = "CMS_VALUE[0]";
$aSettings['Category'] = "CMS_VALUE[100]";
$aSettings['CatTypeSel'] = "CMS_VALUE[105]";
$aSettings['AddCats'] = "CMS_VALUE[106]";
$aSettings['ArticleCount'] = "CMS_VALUE[110]";
$aSettings['SortBy'] = "CMS_VALUE[115]";
$aSettings['SortDir'] = "CMS_VALUE[116]";
$aSettings['ShowStart'] = "CMS_VALUE[120]";
$aSettings['ShowOnlyStart'] = "CMS_VALUE[121]";
$aSettings['ShowCurrentArticle'] = "CMS_VALUE[123]";
$aSettings['Template'] = "CMS_VALUE[125]";
$aSettings['UseArtListHeadline'] = "CMS_VALUE[300]";
$aSettings['ArtListHeadline'] = "CMS_VALUE[301]";
$aSettings['UseDefaultText'] = "CMS_VALUE[305]";
$aSettings['DefaultTextArticle'] = "CMS_VALUE[306]";
$aSettings['DefaultTextFreeText'] = "CMS_VALUE[307]";
$aSettings['UseOverviewLink'] = "CMS_VALUE[310]";
$aSettings['OverviewLink'] = "CMS_VALUE[311]";
$aSettings['OverviewLinkText'] = "CMS_VALUE[312]";
$aSettings['UseDateFormat'] = "CMS_VALUE[315]";
$aSettings['DateFormat'] = "CMS_VALUE[316]";
$aSettings['DateSort'] = "CMS_VALUE[317]";
$aSettings['DateLanguage'] = "CMS_VALUE[318]";
$aSettings['UseAuthorLabeling'] = "CMS_VALUE[320]";
$aSettings['AuthorLabeling'] = "CMS_VALUE[321]";
$aSettings['UsePagination'] = "CMS_VALUE[330]";
$aSettings['ArticlePerPage'] = "CMS_VALUE[331]";
$aSettings['PaginationType01'] = "CMS_VALUE[332]";
$aSettings['PaginationType02'] = "CMS_VALUE[333]";
$aSettings['PaginationType03'] = "CMS_VALUE[334]";
$aSettings['PaginationType04'] = "CMS_VALUE[335]";
$aSettings['PaginationType05'] = "CMS_VALUE[336]";
$aSettings['PaginationType05MaxPages'] = "CMS_VALUE[337]";
$aSettings['UseUTF8Decoding'] = "CMS_VALUE[340]";
$aSettings['SampleArt'] = "CMS_VALUE[500]";
$aSettings['HeadlineIdentifier'] = "CMS_VALUE[510]";
$aSettings['HeadlineLength'] = "CMS_VALUE[511]";
$aSettings['UseSummary'] = "CMS_VALUE[515]";
$aSettings['SummaryWidth'] = "CMS_VALUE[516]";
$aSettings['UsePageTitle'] = "CMS_VALUE[520]";
$aSettings['PageTitleWidth'] = "CMS_VALUE[521]";
$aSettings['Elements'] = "CMS_VALUE[525]";
$aSettings['CurrentPage'] = $_REQUEST['page'];
if ($aSettings['ShowModul'] == 'on') {
// Client Cache loeschen um auf jeden Fall alle Aenderungen an Inhalten zu beruecksichtigen
// Es wird explizit nur der content-Ordner geloescht um zu verhindern, dass es Fehler bei der Darstellung von Bildern gibt
cInclude('classes', 'class.purge.php');
$oPurge = new Purge($db, $cfg, $cfgClient);
$oPurge->clearClientCache($iClientId, 'cache/content/');
// Checking base settings
$aSettings['ArticleCount'] = (!is_numeric($aSettings['ArticleCount']) || $aSettings['ArticleCount'] < 0) ? 5 : $aSettings['ArticleCount'];
$aSettings['OverviewLinkText'] = ($aSettings['OverviewLinkText'] == "") ? mi18n("Link to overview") : $aSettings['OverviewLinkText'];
$aSettings['ArticlePerPage'] = ($aSettings['UsePagination'] == 'enabled' &&
is_numeric($aSettings['ArticlePerPage']) &&
$aSettings['ArticlePerPage'] >= 2) ? $aSettings['ArticlePerPage'] : 10;
$aSettings['CurrentPage'] = (!is_numeric($aSettings['CurrentPage']) ||
!isset($aSettings['CurrentPage'])) ? 1 : $aSettings['CurrentPage'];
$aSettings['Category'] = str_replace('cat_', '', $aSettings['Category']);
$aSettings['Category'] = (!is_numeric($aSettings['Category']) || $aSettings['Category'] <= 0) ? 0 : $aSettings['Category'];
$aSettings['HeadlineIdentifier'] = (strlen($aSettings['HeadlineIdentifier']) > 50) ? '' : $aSettings['HeadlineIdentifier'];
$aSettings['HeadlineLength'] = (!is_numeric($aSettings['HeadlineLength']) || $aSettings['HeadlineLength'] < 0) ? 0 : $aSettings['HeadlineLength'];
$aSettings['Elements'] = (!is_numeric($aSettings['Elements']) || $aSettings['Elements'] < 0) ? 0 : $aSettings['Elements'];
$aSettings['CatTypeSel'] = ($aSettings['CatTypeSel'] == '' ||
($aSettings['AddCats'] == '' &&
$aSettings['CatTypeSel'] == 'selected')) ? 'none' : $aSettings['CatTypeSel'];
$aSettings['PaginationType05MaxPages'] = (!is_numeric($aSettings['PaginationType05MaxPages']) ||
$aSettings['PaginationType05MaxPages'] == '') ? 10 : $aSettings['PaginationType05MaxPages'];
$aSettings['PaginationType05MaxPages'] = ($aSettings['PaginationType05MaxPages'] <= 3) ? 3 : $aSettings['PaginationType05MaxPages'];
$aSettings['SummaryWidth'] = (!is_numeric($aSettings['SummaryWidth']) || $aSettings['SummaryWidth'] < 0) ? 0 : $aSettings['SummaryWidth'];
$aSettings['PageTitleWidth'] = (!is_numeric($aSettings['PageTitleWidth']) || $aSettings['PageTitleWidth'] < 0) ? 0 : $aSettings['PageTitleWidth'];
if ($aSettings['UseUTF8Decoding'] == 'enabled') {
cInclude('frontend', 'includes/functions.include.UTF8decoding.php');
}
// Detail settings
if ($aSettings['Elements'] > 0) {
for ($i = 0; $i < $aSettings['Elements']; $i++) {
$iElementType = $iDataStart + ($i * 10);
$iElementIdentifier = $iElementType + 1;
$iElementWidth = $iElementType + 2;
$iElementHeight = $iElementType + 3;
$iElementDontStripTags = $iElementType + 3;
$iElementAllowedTags = $iElementType + 4;
$aSettings['k'.$i] = array();
$aSettings['k'.$i]['ElementType'] = "CMS_VALUE[$iElementType]"; // Text, Image, ExtractedImage, FixedDate
$aSettings['k'.$i]['Identifier'] = "CMS_VALUE[$iElementIdentifier]";
$aSettings['k'.$i]['ElementWidth'] = "CMS_VALUE[$iElementWidth]"; // Textlength or ImageWidth
$aSettings['k'.$i]['ElementHeight'] = "CMS_VALUE[$iElementHeight]";
$aSettings['k'.$i]['DontStripTags'] = ("CMS_VALUE[$iElementDontStripTags]" == 'enabled' && $aSettings['k'.$i]['ElementWidth'] == 0);
$aSettings['k'.$i]['ElementAllowedTags'] = ("CMS_VALUE[$iElementAllowedTags]" != '') ? '\''."CMS_VALUE[$iElementAllowedTags]".'\'' : '';
// Check detail settings
if ($aSettings['k'.$i]['ElementType'] == '') {
$aSettings['k'.$i]['ElementType'] == 'Text';
}
if ($aSettings['k'.$i]['ElementType'] == 'Text') {
$aSettings['ElementHeight'] = 0;
if (!is_numeric($aSettings['k'.$i]['ElementWidth']) || $aSettings['k'.$i]['ElementWidth'] < 0) {
$aSettings['k'.$i]['ElementWidth'] = 50;
}
}
elseif (!is_numeric($aSettings['k'.$i]['ElementWidth']) || $aSettings['k'.$i]['ElementWidth'] <= 0 ||
!is_numeric($aSettings['k'.$i]['ElementHeight']) || $aSettings['k'.$i]['ElementHeight'] <= 0) {
$aSettings['k'.$i]['ElementWidth'] = 0;
$aSettings['k'.$i]['ElementHeight'] = 0;
}
if (strlen($aSettings['Identifier']) > 50) {
$aSettings['Identifier'] = '';
}
} // end for
}
unset ($iDataStart);
unset ($iElementType);
unset ($iElementIdentifier);
unset ($iElementWidth);
unset ($iElementHeight);
unset ($iElementDontStripTags);
unset ($iElementAllowedTags);
if ($aSettings['Category'] !== '0' && $aSettings['HeadlineIdentifier'] !== '') {
if (!is_object($db2)) $db2 = new DB_Contenido;
// Specifying search categories
$sSelCats = '"'.$aSettings['Category'].'"';
// Adding categories "below" primary category
switch ($aSettings['CatTypeSel']) {
case 'below':
$lCatLevel = -1;
$sql = 'SELECT'."\n".
' a.idcat AS idcat,'."\n".
' b.level AS level'."\n".
'FROM'."\n".
' '.$cfg['tab']['cat'].' a,'."\n".
' '.$cfg['tab']['cat_tree'].' b'."\n".
'WHERE'."\n".
' a.idcat = b.idcat'."\n".
'ORDER BY'."\n".
' b.idtree';
$db2->query($sql);
while($db2->next_record()) {
if ($db2->f('idcat') == $aSettings['Category'])
$lCatLevel = $db2->f('level');
elseif ($lCatLevel > -1 && $db2->f('level') > $lCatLevel)
$sSelCats .= ',"'.$db2->f('idcat').'"';
elseif ($db2->f('level') <= $lCatLevel)
break;
} // end while
break;
case 'select':
$aCats = explode(",", str_replace('cat_','',$aSettings["AddCats"])); //
http://forum.contenido.org/viewtopic.ph ... 95#p149395
foreach ($aCats as $value)
if (is_numeric($value))
$sSelCats .= ',"'.$value.'"';
break;
default:
} // end switch
$sql = 'SELECT'."\n".
' tblData.value AS headline,'."\n".
' artlang.pagetitle AS pagetitle,'."\n".
' artlang.summary AS summary,'."\n".
' artlang.idart AS idart,'."\n".
' artlang.idart AS idartlang,'."\n".
' artlang.lastmodified AS lastmodified,'."\n".
' artlang.modifiedby AS autor,'."\n".
' artlang.created AS created,'."\n".
' artlang.published AS published,'."\n".
' artlang.idartlang AS idartlang,'."\n".
' catlang.name AS category,'."\n".
' catlang.startidartlang AS startid,'."\n".
' catart.is_start AS isstart,'."\n".
' catart.idcat AS idcat,'."\n".
' catart.idcatart AS idcatart'."\n".
'FROM'."\n".
' '.$cfg['tab']['cat_art'].' AS catart,'."\n".
' '.$cfg['tab']['art_lang'].' AS artlang,'."\n".
' '.$cfg['tab']['cat_lang'].' AS catlang,'."\n".
' '.$cfg['tab']['content'].' AS tblData'."\n".
'WHERE'."\n".
' catart.idcat IN ('.$sSelCats.') AND'."\n".
' artlang.idlang = '.$lang.' AND'."\n".
' tblData.idartlang = artlang.idartlang AND'."\n".
' catlang.idlang = artlang.idlang AND'."\n".
' catlang.idcat = catart.idcat AND'."\n".
' artlang.idart = catart.idart ';
if ($aSettings['ShowStart'] != 'enabled')
$sql .= ($cfg['is_start_compatible'] == true) ? 'AND '."\n".' catart.is_start = 0 ' : 'AND '."\n".' tblData.idartlang != catlang.startidartlang ';
else
if ($aSettings['ShowOnlyStart'] == 'enabled')
$sql .= ($cfg['is_start_compatible'] == true) ? 'AND '."\n".' catart.is_start = 1 ' : 'AND '."\n".' tblData.idartlang = catlang.startidartlang ';
if ($aSettings['ShowCurrentArticle'] != '' && is_numeric($aSettings['ShowCurrentArticle']))
$sql .= ' AND'."\n".' artlang.idart <> ' . $aSettings['ShowCurrentArticle'] . ' ';
$sql .= 'AND '."\n".' artlang.online = 1'."\n";
$sql .= 'AND '."\n".' '.$aSettings['HeadlineIdentifier'].'';
// Sort by
$sql .= "\n".'ORDER BY'."\n".
' '.$aSettings['SortBy']."\n".
' '.$aSettings['SortDir']."\n";
// LIMIT
if ($aSettings['UsePagination'] == 'enabled') $sql_pagination = $sql;
if ($aSettings['ArticleCount'] > 0) $sql .= 'LIMIT 0, '.$aSettings['ArticleCount'];
if ($aSettings['UsePagination'] == 'enabled') $sql_all = $sql;
if ($bDebug) {
echo '<pre>'.$sql.'</pre>', chr(10);
}
// execute query
$db2->query($sql);
$lCount = $db2->num_rows();
// Init Template
if (!is_object($tpl)) $tpl = new Template;
$tpl->reset();
if ($lCount > 0) {
if (!is_object($db3)) $db3 = new DB_Contenido;
if (!is_object($db4)) $db4 = new DB_Contenido;
if (!is_object($db5)) $db5 = new DB_Contenido;
if ($aSettings['ArticlePerPage'] > 0 && $aSettings['UsePagination'] == 'enabled') {
$lStartCount = ($aSettings['CurrentPage'] - 1) * $aSettings['ArticlePerPage'];
$lEndCount = (($aSettings['CurrentPage'] - 1) * $aSettings['ArticlePerPage']) + $aSettings['ArticlePerPage'];
if ($lEndCount > $lCount) $lEndCount = $lCount;
} else {
$lStartCount = 0;
$lEndCount = $lCount;
}
$lRow = 0;
$i = 0;
while ($db2->next_record()) {
if ($aSettings['ShowStart'] == 'enabled' ||
($aSettings['ShowStart'] != 'enabled' && $db2->f('idartlang') != $lStartIDArtLang)) {
if ($lRow >= $lStartCount && $lRow < $lEndCount) {
$aData[$i] = array();
$aData[$i]['Category'] = urldecode($db2->f('Category'));
if ($db2->f('startid') == $db2->f('idartlang') || $db2->f('isstart')) {
$aParams = array('lang' => $lang, 'idcat' => $db2->f('idcat'));
} else {
$aParams = array('lang' => $lang, 'idcat' => $db2->f('idcat'), 'idart' => $db2->f('idart'));
}
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$aData[$i]['Link'] = $inUrl;
$aData[$i]['LastModified'] = $db2->f('lastmodified');
$aData[$i]['Autor'] = $db2->f('autor');
$aData[$i]['Created'] = $db2->f('created');
$aData[$i]['Published'] = $db2->f('published');
// Generate pagetitle
if ($aSettings['UseUTF8Decoding'] != 'enabled') {
$sTmpValue = urldecode($db2->f('pagetitle'));
} else {
$sTmpValue = html_entity_decode_utf8(urldecode($db2->f('pagetitle')));
}
if ($aSettings['PageTitleWidth'] > 0 && strlen($sTmpValue) > $aSettings['PageTitleWidth'] && $aSettings['UsePageTitle'] == 'enabled') {
// Cutting text but preserving words
$sTmpValue = capiStrTrimAfterWord($sTmpValue, $aSettings['PageTitleWidth']).'...';
} elseif ($aSettings['UsePageTitle'] == 'enabled') {
$sTmpValue = $sTmpValue;
} else {
$sTmpValue = '';
}
$aData[$i]['PageTitle'] = $sTmpValue;
// Generate headline
if ($aSettings['UseUTF8Decoding'] != 'enabled') {
$sTmpValue = strip_tags(urldecode($db2->f('headline')));
} else {
$sTmpValue = html_entity_decode_utf8(strip_tags(urldecode($db2->f('headline'))));
}
if ($aSettings['HeadlineLength'] > 0 && strlen($sTmpValue) > $aSettings['HeadlineLength']) {
// Cutting text but preserving words and entities
$sTmpValue = capiStrTrimAfterWord($sTmpValue, $aSettings['HeadlineLength']).'...';
}
$aData[$i]['Headline'] = $sTmpValue;
// Generate Summary
if ($aSettings['UseUTF8Decoding'] != 'enabled') {
$sTmpValue = urldecode($db2->f('summary'));
} else {
$sTmpValue = html_entity_decode_utf8(urldecode($db2->f('summary')));
}
if ($aSettings['SummaryWidth'] > 0 && strlen($sTmpValue) > $aSettings['SummaryWidth'] && $aSettings['UseSummary'] == 'enabled') {
// Cutting text but preserving words
$sTmpValue = capiStrTrimAfterWord($sTmpValue, $aSettings['SummaryWidth']).'...';
} elseif ($aSettings['UseSummary'] == 'enabled') {
$sTmpValue = $sTmpValue;
} else {
$sTmpValue = '';
}
$aData[$i]['Summary'] = $sTmpValue;
//
if ($aSettings['Elements'] > 0) {
for ($k = 0; $k < $aSettings['Elements']; $k++) {
$aData[$i]['i'.$k] = array();
$aData[$i]['i'.$k]['Value'] = '';
$aData[$i]['i'.$k]['ServerPath'] = '';
$aData[$i]['i'.$k]['WebPath'] = '';
$aData[$i]['i'.$k]['Width'] = 0;
$aData[$i]['i'.$k]['Height'] = 0;
} // end for
$sql = 'SELECT'."\n".
' tblData.value AS value,'."\n".
' tblData.idtype AS idtype,'."\n".
' tblData.typeid AS typeid'."\n".
'FROM'."\n".
' '.$cfg['tab']['cat_art'].' AS tblCatArt,'."\n".
' '.$cfg['tab']['art_lang'].' AS tblArtLang,'."\n".
' '.$cfg['tab']['content'].' AS tblData'."\n".
'WHERE'."\n".
' tblData.idartlang = tblArtLang.idartlang AND'."\n".
' tblArtLang.idlang = "'.$lang.'" AND'."\n".
' tblArtLang.idart = tblCatArt.idart AND'."\n".
' tblCatArt.idcatart = "'.$db2->f('idcatart').'" AND'."\n".
' ('."\n";
$sql_items = '';
for ($k = 0; $k < $aSettings['Elements']; $k++) {
if ($aSettings['k'.$k]['Identifier'] != '' && $aSettings['k'.$k]['Identifier'] != 'none') {
if ($sql_items != '') {
$sql_items .= ' OR'."\n".
' ('.$aSettings['k'.$k]['Identifier'].')';
} else {
$sql_items = ' ('.$aSettings['k'.$k]['Identifier'].')';
}
}
} // end for
$sql .= $sql_items."\n".' )';
if ($bDebug) {
echo '<pre>'.$sql.'</pre>', chr(10);
}
// execute query
$db3->query($sql);
while ($db3->next_record()) {
$sTypeIdentifier = "tblData.idtype = '".$db3->f('idtype')."' AND tblData.typeid = '".$db3->f('typeid')."'";
/**
* Note: The TypeIdentifier for one item may be the same as for another item.
* Therefore, we are storing the content everywhere as needed
*/
for ($k = 0; $k < $aSettings['Elements']; $k++) {
if ($sTypeIdentifier == $aSettings['k'.$k]['Identifier']) {
switch (TRUE) {
case ($aSettings['k'.$k]['ElementType'] == 'Image' || $aSettings['k'.$k]['ElementType'] == 'ExtractedImage'):
$sql = '';
if ($aSettings['k'.$k]['ElementType'] == 'Image') {
$sql = 'SELECT'."\n".
' dirname,'."\n".
' filename'."\n".
'FROM'."\n".
' '.$cfg['tab']['upl']."\n".
'WHERE'."\n".
' idupl = "'.$db3->f('value').'"';
} else {
$sTmpValue = urldecode($db3->f('value'));
$regEx = "/<img[^>]*?>.*?/i";
$match = array ();
preg_match($regEx, $sTmpValue, $match);
$regEx = "/(src)(=)(['\"]?)([^\"']*)(['\"]?)/i";
$img = array ();
preg_match($regEx, $match[0], $img);
$img_src = preg_split("/\//", $img[0]);
$img_name = $img_src[count($img_src) - 1];
$img_name = preg_replace("/\"/", "", $img_name);
$name = strtolower($img_name);
if (strlen($name) > 0) {
$sql = 'SELECT'."\n".
' dirname,'."\n".
' filename'."\n".
'FROM'."\n".
' '.$cfg['tab']['upl']."\n".
'WHERE'."\n".
' LOWER(filename) = "'.$name.'"';
}
}
if ($bDebug) {
echo '<pre>'.$sql.'</pre>';
}
// execute query
if ($sql != '') {
$db4->query($sql);
if ($db4->next_record()) {
$aData[$i]['i'.$k]['ServerPath'] = $cfgClient[$client]['upl']['path'].$db4->f('dirname').$db4->f('filename');
$aData[$i]['i'.$k]['WebPath'] = $cfgClient[$client]['upl']['htmlpath'].$db4->f('dirname').$db4->f('filename');
list (
$width,
$height,
$type,
$attr
) = getimagesize($aData[$i]['i'.$k]['ServerPath']);
$aData[$i]['i'.$k]['Width'] = $width;
$aData[$i]['i'.$k]['Height'] = $height;
}
}
break;
case ($aSettings['k'.$k]['ElementType'] == 'FixedDate'):
$aData[$i]['i'.$k]['Value'] = strip_tags(trim(urldecode($db3->f('value'))));
break;
default:
if ($aSettings['UseUTF8Decoding'] != 'enabled') {
$sTmpValue = ($aSettings['k'.$k]['DontStripTags']) ? urldecode($db3->f('value')) : str_replace(' ', ' ', preg_replace('/\r/s', '', preg_replace('/\n|\t/s', ' ', strip_tags(urldecode($db3->f('value')), $aSettings['k'.$k]['ElementAllowedTags']))));
} else {
$sTmpValue = ($aSettings['k'.$k]['DontStripTags']) ? html_entity_decode_utf8(urldecode($db3->f('value'))) :
html_entity_decode_utf8(
str_replace(' ', ' ',
preg_replace('/\r/s', '',
preg_replace('/\n|\t/s', ' ',
strip_tags(urldecode($db3->f('value')), $aSettings['k'.$k]['ElementAllowedTags'])
)
)
)
);
}
if ($aSettings['k'.$k]['ElementWidth'] > 0 && strlen($sTmpValue) > $aSettings['k'.$k]['ElementWidth']) {
// Cutting text but preserving words and entities
$sTmpValue = capiStrTrimAfterWord($sTmpValue, $aSettings['k'.$k]['ElementWidth']).'...';
}
$aData[$i]['i'.$k]['Value'] = $sTmpValue;
} // end switch
} // end if ($sTypeIdentifier == $aSettings['k'.$k]['Identifier'])
} // end for
} // end while
}
$i++;
}
elseif ($lRow == $lEndCount) {
break;
}
$lRow++;
}
} // end while
// Clearing memory
unset ($db2);
unset ($db3);
unset ($db4);
unset ($sql);
unset ($lStartIDArtLang);
unset ($lStartCount);
unset ($lEndCount);
/**
* Output data
* Every output manipulation should be done here...
*
* Base information:
* $aSettings['UseArtListHeadline']: Enable use of article list headline
* $aSettings['ArtListHeadline']: Value for article list headline
* $aSettings['Elements']: Number of expected, additional elements from each article
* $aSettings['ArticlePerPage']: Number of articles per page (0: show all)
* $aSettings['k'.$i]['ElementType']: Per Element: Type of Element: Text, Image or ExtractedImage
* $aSettings['k'.$i]['ElementWidth']: Per Element: Text length or image width (-> recycling ...)
* $aSettings['k'.$i]['ElementHeight']: Per Element: Image width
* $aSettings['k'.$i]['DontStripTags'] Per Element: Strip tags or not
* $aSettings['k'.$i]['ElementAllowedTags'] Per Element: Allowed tags
*
* Per article:
* $aValue['Headline']: Content of article element specified as containing the headline information
* $aValue['Link']: Relative link to get to the listed article
* $aValue['LastModified']: Last modified date of the article
* $aValue['Created']: Created date of the article
* $aValue['Published']: Published date of the article
* $aValue['Category']: Category name
* $aValue['Autor']: Autor name
* $aValue['Pagetitle']: Pagetitle
* $aValue['Summary']: Summary
*
* Per article additional element:
* $aValue['i'.$i]['Value']: Text (only for text elements, otherwise '')
* $aValue['i'.$i]['WebPath']: HTTP... path to image
* $aValue['i'.$i]['ServerPath']: /server/... path to image
`* $aValue['i'.$i]['Width']: >Original< image width
* $aValue['i'.$i]['Height']: >Original< image height
*
*/
foreach ($aData as $aValue) {
if ($aSettings['Elements'] > 0) {
for ($i = 0; $i < $aSettings['Elements']; $i++) {
switch (TRUE) {
case ($aSettings['k'.$i]['ElementType'] == 'Image' || $aSettings['k'.$i]['ElementType'] == 'ExtractedImage'):
$image = $aValue['i'.$i]['WebPath'];
$width = $aValue['i'.$i]['Width'];
$height = $aValue['i'.$i]['Height'];
if ($aSettings['k'.$i]['ElementWidth'] > 0 && $aSettings['k'.$i]['ElementHeight'] > 0) {
// Check, if resize necessary
if ( $aValue['i'.$i]['ServerPath'] != '' && file_exists($aValue['i'.$i]['ServerPath']) &&
($aValue['i'.$i]['Width'] > $aSettings['k'.$i]['ElementWidth'] || $aValue['i'.$i]['Height'] > $aSettings['k'.$i]['ElementHeight'])) {
// Scale image
$image = capiImgScale($aValue['i'.$i]['ServerPath'], $aSettings['k'.$i]['ElementWidth'], $aSettings['k'.$i]['ElementHeight'], false, false, 10, true, 100, true);
// Get dimensions of the image
list (
$width,
$height,
$type,
$attr
) = getimagesize(str_replace($cfgClient[$client]['path']['htmlpath'], $cfgClient[$client]['path']['frontend'], $image));
} else {
$image = $aValue['i'.$i]['WebPath'];
$width = $aValue['i'.$i]['Width'];
$height = $aValue['i'.$i]['Height'];
}
}
$artlist_image = ($image != '') ? '<img class="articlelistImage" src="'.$image.'" width="'.$width.'" height="'.$height.'" alt="'.mi18n("Article Thumb").'" />' : '';
$tpl->set('d', 'IMG_'.$i, $artlist_image);
break;
case ($aSettings['k'.$i]['ElementType'] == 'FixedDate'):
$tpl->set('d', 'FIXEDDATE', $aValue['i'.$i]['Value']);
break;
default: // Everything else is treated as "Text"
$artlist_text = $aValue['i'.$i]['Value'];
$tpl->set('d', 'TEXT_1', $myValue);
} // end switch
} // end for
}
// Generate date if enabled
if($aSettings['UseDateFormat'] == 'enabled') {
if ($sVersion == 'php>=5.2') {
if ($aSettings['DateLanguage'] != 'en_UK') {
$oDate = ($aSettings['DateSort'] == 'create') ? new DateTimeReplaceLang($aValue['Created']) : new DateTimeReplaceLang($aValue['Published']);
if ($aSettings['DateFormat'] == 'F j, Y' || $aSettings['DateFormat'] == 'j F Y' || $aSettings['DateFormat'] == 'l, j F Y')
$artlist_lastmod = $oDate->format($aSettings['DateFormat'], $aSettings['DateLanguage'], 'long');
else
$artlist_lastmod = $oDate->format($aSettings['DateFormat'], $aSettings['DateLanguage'], 'short');
// $fmt = new IntlDateFormatter("de_DE", IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Europe/Berlin', IntlDateFormatter::GREGORIAN);
// $artlist_lastmod = $fmt->format($aValue['Created']);
} else {
$oDate = ($aSettings['DateSort'] == 'create') ? new DateTime($aValue['Created']) : new DateTime($aValue['Published']);
$artlist_lastmod = $oDate->format($aSettings['DateFormat']);
}
} else {
setlocale(LC_TIME, $aSettings['DateLanguage']);
$tmp_artlist_Date = ($aSettings['DateSort'] == 'create') ? strtotime($aValue['Created']) : strtotime($aValue['Published']);
$artlist_lastmod = strftime(formatDateToStrftime($aSettings['DateFormat']), $tmp_artlist_Date);
}
} else {
$artlist_lastmod = '';
}
// Search author if enabled
if($aSettings['UseAuthorLabeling'] == 'enabled') {
$sql = 'SELECT'."\n".
' realname AS name'."\n".
'FROM'."\n".
' '.$cfg['tab']['phplib_auth_user_md5']."\n".
'WHERE'."\n".
' username = "'.$aValue["Autor"].'"';
// execute query
$db5->query($sql);
if ($bDebug) {
echo '<pre>'.$sql.'</pre>', chr(10);
}
$db5->next_record();
$sAuthor = strip_tags(urldecode($db5->f('name')));
if ($aSettings['UseUTF8Decoding'] != 'enabled') {
$sAuthor = strip_tags(urldecode($db5->f('name')));
} else {
$sAuthor = html_entity_decode_utf8(strip_tags(urldecode($db5->f('name'))));
}
} else {
$sAuthor = '';
}
$artlist_more = mi18n("More");
// Generate template
$tpl->set('d', 'PAGELINK', $aValue['Link']);
$tpl->set('d', 'PAGETITLE', $aValue['PageTitle']);
$tpl->set('d', 'DATE', $artlist_lastmod);
$tpl->set('d', 'HEADLINE', $aValue['Headline']);
$tpl->set('d', 'LABELING', $aSettings['AuthorLabeling']);
$tpl->set('d', 'AUTHOR', $sAuthor);
$tpl->set('d', 'SUMMARY', $aValue['Summary']);
$tpl->set('d', 'MORE', $artlist_more);
$tpl->next();
unset($oDate);
} // end foreach
if ($aSettings['UseOverviewLink'] == 'enabled') {
$aParams = (($iCount = substr_count($aSettings['OverviewLink'],'cat_')) > 0) ? array('lang' => $lang, 'idcat' => str_replace('cat_', '', $aSettings['OverviewLink'])) : '';
$aParams = (($iCount = substr_count($aSettings['OverviewLink'],'art_')) > 0) ? array('lang' => $lang, 'idart' => str_replace('art_', '', $aSettings['OverviewLink'])) : $aParams;
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sOverviewLink = '<div class="articlelistLinkToOverview"><a href="'.$inUrl.'" title="'.$aSettings['OverviewLinkText'].'">'.$aSettings['OverviewLinkText'].'</a></div>';
$tpl->set('s', 'OVERVIEWLINK', $sOverviewLink);
} else {
$tpl->set('s', 'OVERVIEWLINK', '');
}
$tpl->set('s', 'DEFAULTTEXT', '');
/**
* Page browsing
* Hint: Number of max available records: $lCount
* Number of pages: ceil($lCount / $aSettings['ArticlePerPage'])
* First page: page=1;
* Last page: page=ceil($lCount / $aSettings['ArticlePerPage']);
*/
if ($aSettings['UsePagination'] == 'enabled') {
$iPages = ceil($lCount / $aSettings['ArticlePerPage']);
if ($bDebug) {
echo '<p>$iPages = '.$iPages.' / $aSettings[\'currentPage\'] = '.$aSettings['CurrentPage'].'</p>';
}
// Example: Back and Next
$sPaginationType01 = '';
if ($aSettings['PaginationType01'] == 'enabled') {
if ($iPages > 1 && $aSettings['CurrentPage'] > 1) {
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => ($aSettings['CurrentPage'] - 1));
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType01 .= '<div class="articlelistBack">';
$sPaginationType01 .= '<a href="'.$inUrl.'">'.mi18n("Back").'</a>';
$sPaginationType01 .= '</div>';
} else {
$sPaginationType01 .= '<div class="articlelistBack">';
$sPaginationType01 .= mi18n("Back");
$sPaginationType01 .= '</div>';
}
if ($iPages > 1 && $aSettings['CurrentPage'] < $iPages) {
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => ($aSettings['CurrentPage'] + 1));
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType01 .= '<div class="articlelistNext">';
$sPaginationType01 .= '<a href="'.$inUrl.'">'.mi18n("Next").'</a>';
$sPaginationType01 .= '</div>';
} else {
$sPaginationType01 .= '<div class="articlelistNext">';
$sPaginationType01 .= mi18n("Next");
$sPaginationType01 .= '</div>';
}
}
// Example: 1 2 3 4 5 6 7 ...
$sPaginationType02 = '';
if ($aSettings['PaginationType02'] == 'enabled') {
for ($i = 1; $i <= $iPages; $i++) {
if ($sPaginationType02 != '') $sPaginationType02 .= ' ';
if ($aSettings['CurrentPage'] == $i) {
$sPaginationType02 .= $i;
} else {
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => $i);
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType02 .= '<a class="articlelistPageNumber" href="'.$inUrl.'">'.$i.'</a>';
}
}
}
// Example: Seite 1 von 7
$sPaginationType03 = '';
if ($aSettings['PaginationType03'] == 'enabled')
$sPaginationType03 .= mi18n("Page").' '.$aSettings['CurrentPage'].' '.mi18n("of").' '.$iPages;
// Example: << < 1 2 3 ... 5 6 7 ... 9 10 11 > >>
$sPaginationType04 = '';
if ($aSettings['PaginationType04'] == 'enabled') {
if ($aSettings['CurrentPage'] != 1) {
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => 1);
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType04 .= '<a class="articlelistBegin" href="'.$inUrl.'">'.mi18n("«").'</a> ';
} else {
$sPaginationType04 .= '<span class="articlelistBegin">'.mi18n("«").'</span> ';
}
if (($aSettings['CurrentPage'] - 1) >= 1) {
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => ($aSettings['CurrentPage'] - 1));
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType04 .= '<a class="articlelistPrevious" href="'.$inUrl.'">'.mi18n("‹").'</a>';
} else {
$sPaginationType04 .= '<span class="articlelistPrevious">'.mi18n("‹").'</span>';
}
for ($i = 1; $i <= $iPages; $i++) {
$aStartRange = array(1, 2, 3);
$aEndRange = array($iPages, ($iPages-1), ($iPages-2));
if (in_array($i, $aStartRange) || in_array($i, $aEndRange)) {
if ($sPaginationType04 != '') $sPaginationType04 .= ' ';
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => $i);
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType04 .= ($aSettings['CurrentPage'] == $i) ? '<span class="articlelistLinkActive">'.$i.'</span>' : '<a class="articlelistPageNumber" href="'.$inUrl.'">'.$i.'</a>';
} elseif ($aSettings['CurrentPage'] == $i) {
$sPaginationType04 .= ' <span class="articlelistLinkActive">'.$i.'</span>'; // I'm on the current page, no link
} elseif ($aSettings['CurrentPage'] == ($i+1)) {
// Front
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => $i);
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType04 .= ' <a class="articlelistPageNumber" href="'.$inUrl.'">'.$i.'</a>';
} elseif ($aSettings['CurrentPage'] == ($i-1)) {
// Back
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => $i);
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType04 .= ' <a class="articlelistPageNumber" href="'.$inUrl.'">'.$i.'</a>';
} elseif ($aSettings['CurrentPage'] == ($i-2) ||
$aSettings['CurrentPage'] == ($i+2) ||
($aSettings['CurrentPage'] == ($i-3) && (($i-3)==1)) ||
($aSettings['CurrentPage'] == ($i+3) && (($i+3)==$iPages))) {
$sPaginationType04 .= ' ...';
}
}
if (($aSettings['CurrentPage'] + 1) <= $iPages) {
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => ($aSettings['CurrentPage'] + 1));
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType04 .= ' <a class="articlelistNext" href="'.$inUrl.'">'.mi18n("›").'</a>';
} else {
$sPaginationType04 .= ' <span class="articlelistNext">'.mi18n("›").'</span>';
}
if ($aSettings['CurrentPage'] != $iPages) {
$aParams = array('lang' => $lang, 'idcat' => $idcat, 'idart' => $idart, 'page' => $iPages);
$inUrl = Contenido_Url::getInstance()->buildRedirect($aParams);
$sPaginationType04 .= ' <a class="articlelistEnd" href="'.$inUrl.'">'.mi18n("»").'</a>';
} else {
$sPaginationType04 .= ' <span class="articlelistEnd">'.mi18n("»").'</span>';
}
}
// Example: << < 1 2 3 4 5 6 7 8 ... > >>
// First Page
$sPaginationType05 = '';
if ($aSettings['PaginationType05'] == 'enabled') {
if (!is_object($db)) $db = new DB_Contenido;
/**
* Create a PS_Pagination object
*
* $conn = MySQL connection object
* $sql = SQl Query to paginate
* $aSettings['ArticlePerPage'] = Number of rows per page
* $aSettings['PaginationType05MaxPages'] = Number of links
* 'param1=valu1¶m2=value2' = You can append your own parameters to paginations links
*/
$pager = new PS_Pagination($db, $sql_all, $sql_pagination, $aSettings['ArticlePerPage'], $aSettings['PaginationType05MaxPages'], 'idart='.$idart);
/**
* Enable debugging if you want o view query errors
*/
$pager->setDebug(true);
// Init pagination
$pager->paginate();
// Display the full navigation in one go
$sDotsBefore = '';
$sDotsAfter = '';
if ($iPages > $aSettings['PaginationType05MaxPages'] && ($aSettings['CurrentPage'] + 1) > $aSettings['PaginationType05MaxPages'])
$sDotsBefore .= ' ...';
if ($iPages > $aSettings['PaginationType05MaxPages'] && ($aSettings['CurrentPage'] + 1) <= $aSettings['PaginationType05MaxPages'])
$sDotsAfter .= '... ';
$sPaginationType05 .= $pager->renderFirst(mi18n("«")).$pager->renderPrev(mi18n("‹")).$sDotsBefore.$pager->renderNav('','').$sDotsAfter.$pager->renderNext(mi18n("›")).$pager->renderLast(mi18n("»"));
}
}
$tpl->set('s', 'PAGINATIONTYPE01', $sPaginationType01);
$tpl->set('s', 'PAGINATIONTYPE02', $sPaginationType02);
$tpl->set('s', 'PAGINATIONTYPE03', $sPaginationType03);
$tpl->set('s', 'PAGINATIONTYPE04', $sPaginationType04);
$tpl->set('s', 'PAGINATIONTYPE05', $sPaginationType05);
} else {
if ($aSettings['UseDefaultText'] == 'enabled' && $aSettings['DefaultTextArticle'] == '' && $aSettings['DefaultTextFreeText'] != '') {
$tpl->set('s', 'DEFAULTTEXT', '<p class="articlelistDefaultText">'.$aSettings['DefaultTextFreeText'].'</p>');
} elseif ($aSettings['UseDefaultText'] == 'enabled' && $aSettings['DefaultTextArticle'] != '') {
cInclude('classes', 'class.article.php');
$lIDCatArt = str_replace('art_', '', $aSettings['DefaultTextArticle']);
$oArt = new Article($lIDCatArt, $client, $lang);
$sContent = $oArt->getContent('html', 1);
$tpl->set('s', 'DEFAULTTEXT', $sContent);
} else {
$tpl->set('s', 'DEFAULTTEXT', '');
}
$tpl->set('s', 'PAGINATIONTYPE01', '');
$tpl->set('s', 'PAGINATIONTYPE02', '');
$tpl->set('s', 'PAGINATIONTYPE03', '');
$tpl->set('s', 'PAGINATIONTYPE04', '');
$tpl->set('s', 'PAGINATIONTYPE05', '');
$tpl->set('s', 'OVERVIEWLINK', '');
}
if ($aSettings['UseArtListHeadline'] == 'enabled' && $aSettings['ArtListHeadline'] != '') {
if ($aSettings['UseUTF8Decoding'] != 'enabled') {
$sArtListHeadline = urldecode($aSettings['ArtListHeadline']);
} else {
$sArtListHeadline = html_entity_decode_utf8(urldecode($aSettings['ArtListHeadline']));
}
$tpl->set('s', 'TITLE', $sArtListHeadline);
} else {
$tpl->set('s', 'TITLE', '');
}
$tpl->generate($aSettings['Template']);
}
// Clearing memory
unset ($aData);
unset ($aSettings);
unset ($i);
unset ($lCount);
unset ($bDebug);
unset ($db5);
} elseif ($bDebug) {
echo '<strong>'.$aSettings['ShowModul'].'</strong>', chr(10);
} else {
// do nothing
}
?>