GamersChallenge |
09-21-2011 12:12 AM |
after spending hours reading all those tutorials I came up with this... what am I doing wrong?
PHP Code:
<?php
// ####################### SET PHP ENVIRONMENT ########################### error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT', 'test'); define('CSRF_PROTECTION', true); // change this depending on your filename
// ################### PRE-CACHE TEMPLATES AND DATA ###################### // get special phrase groups $phrasegroups = array();
// get special data templates from the datastore $specialtemplates = array();
// pre-cache templates used by all actions $globaltemplates = array('test', );
// pre-cache templates used by specific actions $actiontemplates = array();
// ######################### REQUIRE BACK-END ############################ // if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line // chdir ('/path/to/your/forums'); require_once('./global.php');
// ####################################################################### // ######################## START MAIN SCRIPT ############################ // #######################################################################
$navbits = construct_navbits(array('' => 'Terms of Service')); $navbar = render_navbar_template($navbits);
// ###### YOUR CUSTOM CODE GOES HERE ##### $pagetitle = 'test';
// DEBUG MODUS ! $debug_modus = false;
if($debug_modus === false) { ob_start(); }
//nivo slider - uf - vb.org version //set these values as you need them:
//your slider folder - has to be read and writeable //folder where all slider files are saved $slider_img_filepath = 'slider/';
//picture width and height !same as in the CSS FILE! $maxwidth = 620; $maxheight = 250;
//do you want images without previewimage to be shown? slider is using the fallback then $show_articles_without_image = false;
//picture shown if your articles has no previewpicture $fallback_img = $slider_img_filepath . 'uf_fallback_slider.png';
//hardcoded maximum is 20 - if you want more just ask $number_of_articles_shown = 7; //lengh in characters of the article descriptions $description_length = 95;
//Debug Messages if($debug_modus) { echo "<span style='color:red;'>DEBUG MODE is ON! </span><br />"; echo "slider_img_filepath: $slider_img_filepath <br />"; echo "width: $maxwidth height: $maxheight <br />"; echo "show_articles_without_image: "; var_dump($show_articles_without_image); echo " <br />"; echo "fallback_img: $fallback_img <br />"; echo "#img: $number_of_articles_shown <br />"; echo "description_length: $description_length <br />"; echo 'directory ' . DIR . '<br />';
}
$article_type = vb_Types::instance()->getContentTypeID("vBCms_Article"); $time = TIMENOW; if(!extension_loaded('gd')) { echo '<span style="color:red">Error occurred:</span> Your System does not support the GD-Libary. Please install the GD-Libary.<br />'; } $article_get = vB::$db->query_read(' SELECT article.pagetext, article.previewimage, node.url, node.publishdate, node.parentnode, parentnode.url AS parenturl, thread.replycount, info.title, node.nodeid, GROUP_CONCAT( category.category ) FROM '.TABLE_PREFIX.'cms_article AS article INNER JOIN '.TABLE_PREFIX.'cms_node AS node ON (node.contentid = article.contentid AND node.contenttypeid = ' . vb::$db->sql_prepare($article_type) .') INNER JOIN '.TABLE_PREFIX.'cms_nodeinfo AS info ON info.nodeid = node.nodeid INNER JOIN '.TABLE_PREFIX.'cms_node AS parentnode ON parentnode.nodeid = node.parentnode LEFT JOIN '.TABLE_PREFIX.'thread AS thread ON thread.threadid = info.associatedthreadid LEFT JOIN '.TABLE_PREFIX.'cms_nodecategory AS nodecategory ON nodecategory.nodeid = node.nodeid LEFT JOIN '.TABLE_PREFIX.'cms_category AS category ON nodecategory.categoryid = category.categoryid WHERE node.setpublish = 1 AND node.publishdate > '. vb::$db->sql_prepare($time) .' -34560000 AND node.publishdate < '. vb::$db->sql_prepare($time) .' AND node.parentnode IN ( 163, 158 ) GROUP BY node.nodeid ORDER BY node.publishdate DESC LIMIT 20'); $database_articles = array(); /* my version of sorting the articles via relevance - i'll keep it in case someone is interested*/ while($article = vB::$db->fetch_array($article_get)) { $article['value'] = ( 5 - ($time - $article['publishdate'] ) / 86400 ) * ( 5 - ($time - $article['publishdate'] ) / 86400 ) * ( 5 - ($time - $article['publishdate'] ) / 86400 ) + (10 * $article['replycount']); $database_articles[] = $article; } foreach($database_articles as $c => $key) { $sort_value[] = $key['value']; } array_multisort($sort_value, SORT_DESC, $database_articles); // $i = 0; $section_array = array(); $featured_articles = array(); foreach($database_articles AS $article) { $section_array[$article['parentnode']]++;
$categories = explode(',' , $article['GROUP_CONCAT( category.category )']); if($show_articles_without_image == true OR $article['previewimage']) { if($section_array[$article['parentnode']] < 50 AND $i < $number_of_articles_shown) { //rebuild image to the height and width we want in the slider //called sprite since i got the code from our sprite addon :P $sprite = imagecreatetruecolor($maxwidth, $maxheight); if(is_resource($sprite) AND $article['previewimage'] ) { $imageinfo = getimagesize($article['previewimage']); if(is_array($imageinfo)) { $image = null; switch($imageinfo[2]) { case IMAGETYPE_PNG: $image = imagecreatefrompng($article['previewimage']); break; case IMAGETYPE_GIF: $image = imagecreatefromgif($article['previewimage']); break; case IMAGETYPE_JPEG: $image = imagecreatefromjpeg($article['previewimage']); break; default: echo '<span style="color:red">Error occurred:</span> Unknown image format. ' . $article['previewimage']. '<br />'; break; } if(!is_resource($image)) { //resiziing did not work - we are using the fallback image. $article['previewimage'] = $fallback_img; echo '<span style="color:red">Error occurred:</span> imagecreation failed. ' . $article['previewimage']. '<br />'; } else { $img_width = $imageinfo[0]; $img_height = $imageinfo[1]; imagecopyresampled($sprite, $image, 0, 0, 0, 0, $maxwidth, $maxheight, $img_width, $img_height ); imagedestroy($image);
$img_filepath = $slider_img_filepath . 'slide_' . $i . '.jpg'; $success = imagejpeg($sprite, DIR . ($img_filepath[0] != DIRECTORY_SEPARATOR ? DIRECTORY_SEPARATOR : '') . $img_filepath); imagedestroy($sprite); if($success) { $article['previewimage'] = $img_filepath; } else { $img_filepath = DIR . ($img_filepath[0] != DIRECTORY_SEPARATOR ? DIRECTORY_SEPARATOR : '') . $img_filepath; echo '<span style="color:red">Error occurred:</span> imagejpeg failed. ' . $article['previewimage']. '<br /> directory: '. $img_filepath ; $article['previewimage'] = $fallback_img; } } } else { //resiziing did not work - we are using the fallback image. $article['previewimage'] = $fallback_img; echo '<span style="color:red">Error occurred:</span> picture is not readable.' . $article['previewimage']. '<br /> '; } } else { //resiziing did not work - we are using the fallback image. $article['previewimage'] = $fallback_img; echo '<span style="color:red">Warning:</span> article has no previewimage or sprite is no ressource. ' . $article['previewimage']. '<br />'; }
/*remove everything from the previewtext - html and bb. I do not want bold or colored text there. Cut to a decent length.*/ $article['pagetext'] = strip_bbcode($article['pagetext'], true, true, false, true, false);
$article['previewtext'] = strip_tags($article['pagetext'], '<a>'); $len = $description_length; if ( strlen($article['previewtext']) > $len ) { $article['previewtext'] = substr( $article['previewtext'] , 0 , strrpos( substr( $article['previewtext'], 0, $len), ' ' )); }
$i++; //Build Array $article_neu = array(); $article_neu['description'] = '<h2 style="font-weight:bold; font-size: 14px">'. $article['title'].'</h2><span>'. $article['previewtext'] .'</span> <a href="/content.php?r=' . $article['nodeid'] . '-' . $article['url'] . '">read on</a>'; $article_neu['htmlcaptionname'] = 'htmlcaption' . $i ; $article_neu['picture'] = '<a href="/content.php?r=' . $article['nodeid'] . '-' . $article['url'] . '"><img src="'.$article['previewimage'].'" alt="" title="#htmlcaption'. $i . '" /></a>'; $featured_articles[] = $article_neu; } } } //Randomize Array //shuffle($featured_articles);
//Debug Messages if($debug_modus) { echo '#articles - featured and databasepull '; var_dump(count($featured_articles)); var_dump(count($database_articles)); }
$output_bits = ' <link rel="stylesheet" href="' .$slider_img_filepath. 'nivo-slider.css" type="text/css" media="screen" /> <link rel="stylesheet" href="' .$slider_img_filepath. 'nivo-slider_uf_theme.css" type="text/css" media="screen" /> <div style="height:' . $maxheight . 'px;"> <div id="wrapper"> <div class="slider-wrapper theme-uf"> <div class="ribbon"></div> <div id="slider" class="nivoSlider">'; foreach($featured_articles AS $article) { $output_bits .= $article['picture']; } $output_bits .= ' </div>'; foreach($featured_articles AS $article) { $output_bits .= '<div id="' . $article['htmlcaptionname'] . '" class="nivo-html-caption">' . $article['description'] .'</div>'; } $output_bits .= ' </div>
</div> <script type="text/javascript" src="' .$slider_img_filepath. 'jquery-1.6.1.min.js"></script> <script type="text/javascript" src="' .$slider_img_filepath. 'jquery.nivo.slider.pack.js"></script> <script type="text/javascript"> $(window).load(function() { $("#slider").nivoSlider(); }); </script> </div> '; $output = $output_bits; if($debug_modus === false) { ob_end_clean(); }
echo "$output";
// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######
$templater = vB_Template::create('test'); $templater->register_page_templates(); $templater->register('navbar', $navbar); $templater->register('output', $output); $templater->register('pagetitle', $pagetitle); print_output($templater->render());
?>
|