<?php

/* 

 * phpMyVisites : website statistics and audience measurements

 * Copyright (C) 2002 - 2006

 * http://www.phpmyvisites.net/ 

 * phpMyVisites is free software (license GNU/GPL)

 * Authors : phpMyVisites team

*/



// $Id: ViewModule.class.php 29 2006-08-18 07:35:21Z matthieu_ $





require_once INCLUDE_PATH."/core/include/DataModel.class.php";

require_once INCLUDE_PATH."/core/include/Site.class.php";

require_once INCLUDE_PATH."/core/include/Archive.class.php";







class ViewModule extends Module

{

	var $partName;

	

	//the datamodel

	var $data;

	

	

	/**

	 * ViewModule constructor

	 * @param $name string the partName

	 * @param $o_data object , datas to render

	 * 

	 * @return void

	 */

	function ViewModule($name = "", $o_data = null)

	{



		$this->partName = $name;

		$this->data = $o_data;

	

		parent::Module();

	}

	

	

	/**

	 * initialize module with request datas

	 * 

	 * @param object request

	 * @return void

	 */

	function init(&$request, $o_tpl = null, $o_archive = null)

	{

		if(!is_a($o_tpl, "TemplateEngine"))

	    {

			$o_tpl = null;

	    }

		parent::init($request, $o_tpl);



		$date = $this->request->getDate();

		

		if(is_null($this->data))

		{

			if(is_null($o_archive))

			{

				$o_archive = DataModel::getArchive($this->site, $date, $this->request->getPeriod() );

			}

			

			$this->data = new DataModel( $o_archive , $this->request);

		}

		

		$d = new Date( getDateFromTimestamp( time() ) );

		if(($this->data->archive->date->get() == $d->get() || isset($this->disableCache))

			&& is_a($this->tpl, "TemplateEngine"))

		{

			printDebug("Current date asked is today's date, cache not activated<br>");

			$this->tpl->caching = 0;

		}

	}





	function getDataMethod($methods, $returnPlease = false)

	{

		$return = array(); 



		// foreach method that we have to call for getting data

		foreach( $methods as $key => $methodsuffix )

		{

			// case we have parameters to pass to the method

			if(is_array($methodsuffix))

			{

				$method_name = "get".$this->partName.$key;

			

				// call the method on the object DataModel, with correct arguments

				$value = call_user_func_array(array(&$this->data , $method_name), $methodsuffix );



				if(!$returnPlease)	

				{

					$this->tpl->assign( $key, $value);

				}

				else

				{

					$return[$key] = $value;

				}

			}	

		}

		

		if($returnPlease)

		{

			return $return;

		}

		return true;

	}

	

	/**

	 * Main job method overided in each view plugin

	 * this method should take care of obtaining and processing datas

	 * 

	 * @return void

	 */

	function process()

	{

		echo('please override me...');

	}

	

	

	/**

	 * default display method for all views

	 * 

	 * @return void

	 */

	function showAll()

	{	

	    // set mod to view because of specific elements in this case (period_selection.tpl)

		$this->tpl->assign('mod', 'view');

		

		if (!$this->isCached())

		{

			$this->process();	

		}	

		

		$this->display();

	}



}

?>

