Location: PHPKode > projects > Informium > engine/article-engine.php
<?

//
// Copyright (c) 2002, Cameron McKay
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions 
// are met:

// * Redistributions of source code must retain the above copyright 
//   notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright 
//   notice, this list of conditions and the following disclaimer in the 
//   documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 
// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//

//
// Informium -- Advanced News Script
//
// Article Display Script (article-engine.php)
//
// Author: Cameron McKay
// Note:   Displays the articles in the database.
//

// Import CONF & Version Info.
require_once('conf/inf-conf.php');
require_once('conf/version.php');

// Report ID.
echo "<!-- Generated by: $CONF[id] -->\n";

// Import ARTICLE and MYSQL class.
require_once("$CONF[local_path]/class/article-class.php");
require_once("$CONF[local_path]/class/mysql-class.php");

// Create new ARTICLE and MYSQL objects.
$article = new article();
$db      = new mysql();

// Connect to the DB.
$db->pconnect();

// If the variable 'post_id' is greater than 0, then we show the comments
// and the extended story for that post id.
if ($post_id > 0) {

	// Prepare and execute the query.
	$query  = "SELECT * FROM news WHERE post_id='$post_id'";
	$result = $db->query($query);

	// Get the data from the post.
	$list = $db->fetch_array($result);

	// Use the prepare() routine to prepare the list.
	$list = $article->prepare($list);

	// Add in the template.
    include("engine/tmpl/$CONF[template_set]/article-more.php");

	// Free the result.
	$db->free($result);

	// Show the comments.
	require_once("$CONF[local_path]/engine/comment-engine.php");

} else {

	// If 'lookup' is set, then we show all posts from that date key.
	if (isset($lookup)) {

		// First we separate the date key into year and month components.
		list($YYYY, $MM) = split('-', $lookup);

		// Check if a 'section_id' is defined.  If it is, then we show
		// only posts from that section on this year and month.
		if (isset($section_id)) {

			// Prepare the query.
			$query  = "SELECT * FROM news WHERE section_id='$section_id' AND create_date LIKE '{$YYYY}{$MM}________' ORDER BY create_date DESC";

		} else {

			// Prepare the query.
			$query  = "SELECT * FROM news WHERE create_date LIKE '{$YYYY}{$MM}________' ORDER BY create_date DESC";

		}

	// Otherwise proceed as normal.
	} else {

		// If both section_id *and* topic_id are set, then we should only posts that
		// contain both.

		if (isset($section_id) && isset($topic_id)) {

			// Prepare the query.
			$query  = "SELECT * FROM news WHERE section_id='$section_id' AND topic_id='$topic_id' ORDER BY create_date DESC LIMIT $CONF[article_limit]";

		// Check if a 'section_id' is defined.  If it is, then we show
		// only posts from that section with a limited defined in the config.

		} else if (isset($section_id)) {

			// Prepare the query.
			$query  = "SELECT * FROM news WHERE section_id='$section_id' ORDER BY create_date DESC LIMIT $CONF[article_limit]";		

		// Check if a 'topic_id' is defined.  If it is, then we show
		// only posts from that topic with a limited defined in the config.

		} else if (isset($topic_id)) {

			// Prepare the query.
			$query  = "SELECT * FROM news WHERE topic_id='$topic_id' ORDER BY create_date DESC LIMIT $CONF[article_limit]";

		} else {

			// Prepare the query.
			$query  = "SELECT * FROM news ORDER BY create_date DESC LIMIT $CONF[article_limit]";

		}

	}	

	// Execute the query.
	$result = $db->query($query);

	// Cycle through the result, showing the news items.
	while ($list = $db->fetch_array($result))
	{
		// Use the prepare() routine to prepare the list.
		$list = $article->prepare($list);

		// Add in the template.
		include("engine/tmpl/$CONF[template_set]/article-post.php");
	}

	// Free the result.
	$db->free($result);

}

?>
Return current item: Informium