[ Index ] |
PHP Cross Reference of phpwcms V1.4.7 _r403 (01.11.10) |
[Summary view] [Print] [Text view]
1 <?php 2 /************************************************************************************* 3 Copyright notice 4 5 (c) 2002-2010 Oliver Georgi (oliver@phpwcms.de) // All rights reserved. 6 7 This script is part of PHPWCMS. The PHPWCMS web content management system is 8 free software; you can redistribute it and/or modify it under the terms of 9 the GNU General Public License as published by the Free Software Foundation; 10 either version 2 of the License, or (at your option) any later version. 11 12 The GNU General Public License can be found at http://www.gnu.org/copyleft/gpl.html 13 A copy is found in the textfile GPL.txt and important notices to the license 14 from the author is found in LICENSE.txt distributed with these scripts. 15 16 This script is distributed in the hope that it will be useful, but WITHOUT ANY 17 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 18 PARTICULAR PURPOSE. See the GNU General Public License for more details. 19 20 This copyright notice MUST APPEAR in all copies of the script! 21 *************************************************************************************/ 22 23 // ---------------------------------------------------------------- 24 // obligate check for phpwcms constants 25 if (!defined('PHPWCMS_ROOT')) { 26 die("You Cannot Access This Script Directly, Have a Nice Day."); 27 } 28 // ---------------------------------------------------------------- 29 30 31 // Teaser (link article) content part 32 33 $content['alink'] = @unserialize($crow["acontent_form"]); 34 35 if(!isset($content['alink']['alink_id'])) { 36 37 $content['alink']['alink_id'] = explode(':', $crow['acontent_alink']); 38 39 } 40 41 if( 42 (is_array($content['alink']['alink_id']) && count($content['alink']['alink_id'])) 43 || 44 (!empty($content['alink']['alink_type']) 45 && 46 ( 47 (is_array($content['alink']['alink_level']) && count($content['alink']['alink_level'])) 48 || 49 (isset($content['alink']['alink_category']) && count($content['alink']['alink_category'])) 50 ) 51 ) 52 ) { 53 54 if(!isset($content['UNIQUE_ALINK'])) { 55 $content['UNIQUE_ALINK'] = array(); 56 } 57 58 if(!empty($content['alink']['alink_template']) && is_file(PHPWCMS_TEMPLATE.'inc_cntpart/teaser/'.$content['alink']['alink_template'])) { 59 60 $content['alink']['alink_template'] = @file_get_contents(PHPWCMS_TEMPLATE.'inc_cntpart/teaser/'.$content['alink']['alink_template']); 61 62 } elseif(is_file(PHPWCMS_TEMPLATE.'inc_default/teaser.tmpl')) { 63 64 $content['alink']['alink_template'] = @file_get_contents(PHPWCMS_TEMPLATE.'inc_default/teaser.tmpl'); 65 66 } else { 67 68 $content['alink']['alink_template'] = '<!--TEASER_HEAD_START//--><ul{LINK_ARTICLE_CLASS}><!--TEASER_HEAD_END//-->'; 69 $content['alink']['alink_template'] .= '<!--TEASER_ENTRY_START//--><li><a href="{ARTICLELINK}">{TITLE}</a></li><!--TEASER_ENTRY_END//-->'; 70 $content['alink']['alink_template'] .= '<!--TEASER_ENTRY_SPACER_START//--><!--TEASER_ENTRY_SPACER_END//-->'; 71 $content['alink']['alink_template'] .= '<!--TEASER_ROW_SPACER_START//--><!--TEASER_ROW_SPACER_END//-->'; 72 $content['alink']['alink_template'] .= '<!--TEASER_FOOTER_START//--></ul><!--TEASER_FOOTER_END//-->'; 73 $content['alink']['alink_template'] .= '<!--TEASER_COLUMN_OVERWRITE_START//--><!--TEASER_COLUMN_OVERWRITE_END//-->'; 74 75 } 76 77 78 $content['alink']['tags_group_by'] = ''; 79 $content['alink']['tags_where'] = ''; 80 $content['alink']['date_basis'] = 'article_date'; 81 82 $alink_sql = "SELECT ar.*, UNIX_TIMESTAMP(ar.article_tstamp) AS article_date FROM ".DB_PREPEND."phpwcms_article ar "; 83 84 85 // select by category 86 if(!empty($content['alink']['alink_category']) && count($content['alink']['alink_category'])) { 87 88 $content['alink']['tags_sql'] = array(); 89 90 // and/or/not mode 91 switch($content['alink']['alink_andor']) { 92 93 case 'AND': $content['alink']['alink_andor'] = ' AND '; 94 $content['alink']['alink_compare'] = '='; 95 break; 96 97 case 'NOT': $content['alink']['alink_andor'] = ' AND '; 98 $content['alink']['alink_compare'] = '!='; 99 break; 100 101 default: //OR 102 $content['alink']['alink_andor'] = ' OR '; 103 $content['alink']['alink_compare'] = '='; 104 } 105 106 foreach($content['alink']['alink_category'] as $value) { 107 108 $content['alink']['tags_sql'][] = 'pcat.cat_name' . $content['alink']['alink_compare'] . "'" . aporeplace($value) . "'"; 109 110 } 111 112 // JOIN with tags/categories for articles 113 $alink_sql .= "LEFT JOIN ".DB_PREPEND."phpwcms_categories pcat ON (pcat.cat_type='article' AND pcat.cat_pid=ar.article_id) "; 114 $content['alink']['tags_where'] = 'AND (' . implode($content['alink']['alink_andor'], $content['alink']['tags_sql']) . ') '; 115 116 // group by article ID 117 $content['alink']['tags_group_by'] = ' GROUP BY ar.article_id'; 118 119 } 120 121 122 $alink_sql .= "WHERE ar.article_public=1 AND ar.article_aktiv=1 AND ar.article_deleted=0 "; 123 $alink_sql .= "AND ar.article_begin < NOW() AND ar.article_end > NOW() "; 124 125 // add possible WHERE clauses when tags/categories are used 126 $alink_sql .= $content['alink']['tags_where']; 127 128 if(empty($content['alink']['alink_type'])) { 129 130 if(!empty($content['alink']['alink_unique']) && count($content['UNIQUE_ALINK'])) { 131 132 $content['alink']['alink_id'] = array_diff($content['alink']['alink_id'], $content['UNIQUE_ALINK']); 133 $alink_sql .= count($content['alink']['alink_id']) ? 'AND ar.article_id IN ('.implode(',', $content['alink']['alink_id']) . ')' : ' AND 0 '; 134 135 } else { 136 $alink_sql .= 'AND ar.article_id IN ('.implode(',', $content['alink']['alink_id']) . ')'; 137 } 138 139 // group by - when used with categories/tags 140 $alink_sql .= $content['alink']['tags_group_by']; 141 142 } else { 143 144 if(is_array($content['alink']['alink_level']) && count($content['alink']['alink_level'])) { 145 146 $alink_sql .= 'AND ar.article_cid IN ('.implode(',', $content['alink']['alink_level']) . ')'; 147 if(!empty($content['alink']['alink_unique']) && count($content['UNIQUE_ALINK'])) { 148 $alink_sql .= ' AND ar.article_id NOT IN ('.implode(',', $content['UNIQUE_ALINK']) . ')'; 149 } 150 } 151 152 // group by - when used with categories/tags 153 $alink_sql .= $content['alink']['tags_group_by']; 154 155 // don't use SQL UNION 156 $sql_union = ''; 157 158 // add prio sorting value 159 if(empty($content['alink']['alink_prio'])) { 160 $sql_prio = ''; 161 $sql_union_prio = ''; 162 } else { 163 $sql_prio = 'ar.article_priorize DESC, '; 164 $sql_union_prio = 'article_priorize DESC, '; 165 } 166 167 switch($content['alink']['alink_type']) { 168 169 case 1: // create date, DESC 170 $content['alink']['date_basis'] = 'article_created'; 171 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_created DESC"; break; 172 173 case 2: // create date, ASC 174 $content['alink']['date_basis'] = 'article_created'; 175 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_created ASC"; break; 176 177 case 3: // change date, DESC 178 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_tstamp DESC"; break; 179 180 case 4: // change date, ASC 181 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_tstamp ASC"; break; 182 183 case 5: // live date, DESC 184 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_begin DESC"; break; 185 186 case 6: // live date, ASC 187 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_begin ASC"; break; 188 189 case 7: // kill date, DESC 190 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_end DESC"; break; 191 192 case 8: // kill date, ASC 193 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_end ASC"; break; 194 195 case 18: // article title, DESC 196 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_title DESC"; break; 197 198 case 19: // article title, ASC 199 $alink_sql .= " ORDER BY ".$sql_prio."ar.article_title ASC"; break; 200 201 202 case 9: // random 203 $alink_sql .= " ORDER BY RAND()"; break; 204 205 case 10: // random, create date, DESC 206 $alink_sql .= " ORDER BY RAND()"; 207 $sql_union .= " ORDER BY ".$sql_union_prio."article_created DESC"; break; 208 209 case 11: // random, create date, ASC 210 $alink_sql .= " ORDER BY RAND()"; 211 $sql_union .= " ORDER BY ".$sql_union_prio."article_created ASC"; break; 212 213 case 12: // random, change date, DESC 214 $alink_sql .= " ORDER BY RAND()"; 215 $sql_union .= " ORDER BY ".$sql_union_prio."article_tstamp DESC"; break; 216 217 case 13: // random, change date, ASC 218 $alink_sql .= " ORDER BY RAND()"; 219 $sql_union .= " ORDER BY ".$sql_union_prio."article_tstamp ASC"; break; 220 221 case 14: // random, live date, DESC 222 $alink_sql .= " ORDER BY RAND()"; 223 $sql_union .= " ORDER BY ".$sql_union_prio."article_begin DESC"; break; 224 225 case 15: // random, live date, ASC 226 $alink_sql .= " ORDER BY RAND()"; 227 $sql_union .= " ORDER BY ".$sql_union_prio."article_begin ASC"; break; 228 229 case 16: // random, kill date, DESC 230 $alink_sql .= " ORDER BY RAND()"; 231 $sql_union .= " ORDER BY ".$sql_union_prio."article_end DESC"; break; 232 233 case 17: // random, kill date, ASC 234 $alink_sql .= " ORDER BY RAND()"; 235 $sql_union .= " ORDER BY ".$sql_union_prio."article_end ASC"; break; 236 237 case 20: // random, kill date, DESC 238 $alink_sql .= " ORDER BY RAND()"; 239 $sql_union .= " ORDER BY ".$sql_union_prio."article_title DESC"; break; 240 241 case 21: // random, kill date, ASC 242 $alink_sql .= " ORDER BY RAND()"; 243 $sql_union .= " ORDER BY ".$sql_union_prio."article_title ASC"; break; 244 245 } 246 247 if(!empty($content['alink']['alink_max']) && intval($content['alink']['alink_max'])) { 248 $alink_sql .= " LIMIT ".intval($content['alink']['alink_max']); 249 } 250 251 if($sql_union != '') { 252 253 $alink_sql = '('.$alink_sql.') UNION DISTINCT ('.$alink_sql.')'.$sql_union; 254 if(!empty($content['alink']['alink_max']) && intval($content['alink']['alink_max'])) { 255 $alink_sql .= " LIMIT ".intval($content['alink']['alink_max']); 256 } 257 258 } 259 260 } 261 262 $content['alink']['tr'] = array(); 263 264 $content['alink']['alink_template_head'] = get_tmpl_section('TEASER_HEAD', $content['alink']['alink_template']); 265 $content['alink']['alink_template_footer'] = get_tmpl_section('TEASER_FOOTER', $content['alink']['alink_template']); 266 $content['alink']['alink_template_entry'] = get_tmpl_section('TEASER_ENTRY', $content['alink']['alink_template']); 267 $content['alink']['alink_template_space'] = get_tmpl_section('TEASER_ENTRY_SPACER', $content['alink']['alink_template']); 268 $content['alink']['alink_template_row'] = get_tmpl_section('TEASER_ROW_SPACER', $content['alink']['alink_template']); 269 $content['alink']['alink_template_column'] = trim( get_tmpl_section('TEASER_COLUMN_OVERWRITE', $content['alink']['alink_template']) ); 270 271 $content['alink']['alink_template_head'] = str_replace('{LINK_ARTICLE_CLASS}', get_class_attrib($template_default["article"]["link_article_class"]), $content['alink']['alink_template_head']); 272 273 $content['alink']['result'] = _dbQuery($alink_sql); 274 275 if(isset($content['alink']['result'][0])) { 276 277 // lets handle columns and rows 278 if($content['alink']['alink_template_column'] !== '') { 279 $content['alink']['alink_columns'] = abs(intval($content['alink']['alink_template_column'])); 280 } elseif(empty($content['alink']['alink_columns'])) { 281 $content['alink']['alink_columns'] = 0; 282 } else { 283 $content['alink']['alink_columns'] = $content['alink']['alink_columns']; 284 } 285 286 $content['alink']['column'] = 1; 287 $content['alink']['row'] = 1; 288 $content['alink']['row_space'] = false; 289 290 // before finding a faster solution... 291 if(!empty($content['alink']['alink_type'])) { 292 $content['alink']['alink_id'] = array(); 293 foreach($content['alink']['result'] as $value) { 294 $content['alink']['alink_id'][] = $value['article_id']; 295 } 296 } 297 298 // Max teaser items 299 $content['alink']['max_items'] = count($content['alink']['alink_id']); 300 301 foreach($content['alink']['alink_id'] as $key => $value) { 302 303 $content['UNIQUE_ALINK'][$value] = $value; //save UNIQUE Teaser ID 304 305 foreach($content['alink']['result'] as $row) { 306 307 if($value == $row['article_id'] && isset($content['struct'][ $row['article_cid'] ])) { 308 309 // enable frontend edit link 310 $content['alink']['tr'][$key] = getFrontendEditLink('summary', $row["article_id"]); 311 312 // set columns/row class 313 if($content['alink']['alink_columns'] > 0) { 314 315 // check if the current teaser will be on a new row 316 if($content['alink']['row_space']) { 317 $content['alink']['tr'][$key] .= $content['alink']['alink_template_row']; 318 } 319 320 $row['column'] = array( 321 'teaser-row'.$content['alink']['row'], 322 'teaser-col'.$content['alink']['column'] 323 ); 324 325 $row['column'] = implode(' ', $row['column']); 326 327 // now make the tests 328 if($content['alink']['column'] % $content['alink']['alink_columns']) { 329 // New column 330 $content['alink']['column']++; 331 $content['alink']['row_space'] = false; 332 } else { 333 // New row 334 $content['alink']['column'] = 1; 335 $content['alink']['row']++; 336 $content['alink']['row_space'] = true; 337 } 338 339 } else { 340 341 $row['column'] = ''; 342 } 343 344 $content['alink']['tr'][$key] .= $content['alink']['alink_template_entry']; 345 346 $content['alink']['tr'][$key] = str_replace('{ARTICLEID}', $row['article_id'], $content['alink']['tr'][$key]); 347 $content['alink']['tr'][$key] = str_replace('{CATEGORYID}', $row['article_cid'], $content['alink']['tr'][$key]); 348 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'MENUTITLE', html_specialchars($row['article_menutitle'])); 349 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'TITLE', html_specialchars($row['article_title'])); 350 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'SUBTITLE', html_specialchars($row['article_subtitle'])); 351 $content['alink']['tr'][$key] = render_cnt_date($content['alink']['tr'][$key], $row[ $content['alink']['date_basis'] ], strtotime($row['article_begin']), strtotime($row['article_end'])); 352 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'PRIO', empty($row['article_priorize']) ? '' : $row['article_priorize']); 353 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'COLUMN', $row['column']); 354 355 $row['article_image'] = @unserialize( $row['article_image'] ); 356 357 // article list image 358 if(strpos($content['alink']['tr'][$key], 'IMAGE') !== false) { 359 360 $row['article_image'] = setArticleSummaryImageData( $row['article_image'] ); 361 362 $img_thumb_name = ''; 363 $img_thumb_rel = ''; 364 $img_thumb_abs = ''; 365 $img_thumb_width = 0; 366 $img_thumb_height = 0; 367 $img_thumb_id = empty($row['article_image']['list_id']) ? '' : $row['article_image']['list_id']; 368 $img_thumb_hash = ''; 369 $img_thumb_crop = 0; 370 371 // check if image available 372 if($img_thumb_id) { 373 374 if(!empty($content['alink']['alink_width'])) { 375 $row['article_image']['list_width'] = $content['alink']['alink_width']; 376 $img_thumb_width = $row['article_image']['list_width']; 377 } 378 if(!empty($content['alink']['alink_height'])) { 379 $row['article_image']['list_height'] = $content['alink']['alink_height']; 380 $img_thumb_height = $row['article_image']['list_height']; 381 } 382 383 // build image/image link 384 $content['alink']['poplink'] = ''; 385 $thumb_image = false; 386 $thumb_img = ''; 387 $img_thumb_hash = empty($row['article_image']['list_hash']) ? '' : $row['article_image']['list_hash']; 388 $img_thumb_crop = empty($content['alink']['alink_crop']) ? 0 : 1; 389 $content['alink']['caption'] = getImageCaption($row['article_image']['list_caption']); 390 $row['article_image']['list_caption'] = $content['alink']['caption'][0]; // caption text 391 392 if(strpos($content['alink']['tr'][$key], 'cmsimage.php') !== false && $img_thumb_hash) { 393 394 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'IMAGE', $img_thumb_hash); 395 396 } elseif($img_thumb_hash) { 397 398 $thumb_image = get_cached_image( 399 array( "target_ext" => $row['article_image']['list_ext'], 400 "image_name" => $row['article_image']['list_hash'] . '.' . $row['article_image']['list_ext'], 401 "max_width" => $row['article_image']['list_width'], 402 "max_height" => $row['article_image']['list_height'], 403 "thumb_name" => md5( $row['article_image']['list_hash']. 404 $row['article_image']['list_width']. 405 $row['article_image']['list_height']. 406 $GLOBALS['phpwcms']['sharpen_level']. 407 $img_thumb_crop 408 ), 409 'crop_image' => $img_thumb_crop 410 )); 411 412 if($thumb_image != false) { 413 414 $content['alink']['caption'][3] = empty($content['alink']['caption'][3]) ? '' : ' title="'.html_specialchars($content['alink']['caption'][3]).'"'; 415 $content['alink']['caption'][1] = html_specialchars($content['alink']['caption'][1]); 416 417 $thumb_img = '<img src="'.PHPWCMS_IMAGES . $thumb_image[0] .'" border="0" '.$thumb_image[3].' alt="'.$content['alink']['caption'][1].'"'.$content['alink']['caption'][3].' />'; 418 419 $img_thumb_name = $thumb_image[0]; 420 $img_thumb_rel = PHPWCMS_IMAGES.$thumb_image[0]; 421 $img_thumb_abs = PHPWCMS_URL.PHPWCMS_IMAGES.$thumb_image[0]; 422 $img_thumb_width = $thumb_image[1]; 423 $img_thumb_height = $thumb_image[2]; 424 } 425 } 426 427 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'IMAGE', $thumb_img); 428 429 } else { 430 431 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'IMAGE', ''); 432 433 } 434 435 // replace thumbnail and zoom image information 436 $content['alink']['tr'][$key] = str_replace( 437 array( '{THUMB_NAME}', '{THUMB_REL}', '{THUMB_ABS}', '{THUMB_WIDTH}', '{THUMB_HEIGHT}', '{THUMB_ID}', '{THUMB_HASH}', '{THUMB_CROP}' ), 438 array( $img_thumb_name, $img_thumb_rel, $img_thumb_abs, $img_thumb_width, $img_thumb_height, $img_thumb_id, $img_thumb_hash, $img_thumb_crop ), 439 $content['alink']['tr'][$key] 440 ); 441 442 // Image Caption 443 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'CAPTION', empty($row['article_image']['list_caption']) ? '' : html_specialchars($row['article_image']['list_caption'])); 444 445 } 446 447 // article summary 448 if(strpos($content['alink']['tr'][$key], 'SUMMARY') !== false) { 449 450 if(empty($content['alink']['alink_wordlimit']) && !empty($row['article_image']['list_maxwords'])) { 451 $content['alink']['alink_wordlimit'] = $row['article_image']['list_maxwords']; 452 } 453 $row['article_summary'] = empty($content['alink']['alink_allowedtags']) ? strip_tags($row['article_summary']) : strip_tags($row['article_summary'], $content['alink']['alink_allowedtags']); 454 if(!empty($content['alink']['alink_wordlimit'])) { 455 $row['article_summary'] = getCleanSubString($row['article_summary'], $content['alink']['alink_wordlimit'], $template_default['ellipse_sign'], 'word'); 456 } 457 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'SUMMARY', $row['article_summary']); 458 } 459 460 $content['alink']['tr'][$key] = str_replace('{ARTICLELINK}', 'index.php?'.setGetArticleAid($row), $content['alink']['tr'][$key]); 461 462 // article category 463 $content['alink']['tr'][$key] = render_cnt_template($content['alink']['tr'][$key], 'CATEGORY', html_specialchars($content['struct'][ $row['article_cid'] ]['acat_name'])); 464 465 break; 466 467 } 468 469 } 470 } 471 472 } 473 474 // combine all teaser items 475 if(count($content['alink']['tr'])) { 476 $content['alink']['tr'] = implode($content['alink']['alink_template_space'], $content['alink']['tr']); 477 $content['alink']['teaser'] = ' '; 478 } else { 479 $content['alink']['tr'] = ''; 480 $content['alink']['teaser'] = ''; 481 } 482 483 // put all template and content into one 484 $content['alink']['alink_template'] = LF . $content['alink']['alink_template_head'] . $content['alink']['tr'] . $content['alink']['alink_template_footer'] . LF; 485 486 // render teaser elements - throw everything between [TEASER]...[/TEASER] 487 $content['alink'] = render_cnt_template($content['alink']['alink_template'], 'TEASER', $content['alink']['teaser']); 488 489 // render title 490 $content['alink'] = render_cnt_template($content['alink'], 'TITLE', html_specialchars($crow['acontent_title'])); 491 $content['alink'] = render_cnt_template($content['alink'], 'SUBTITLE', html_specialchars($crow['acontent_subtitle'])); 492 493 $CNT_TMP .= $content['alink']; 494 495 496 } 497 498 499 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Nov 16 22:51:00 2010 | Cross-referenced by PHPXref 0.7 |