legacy open qoob framework

php mvc framework for generating dynamic websites.

qoob/core/mvc/controller.php


<?php
/**
 * controller class
 * this base class has all the necessary loading
 * functions so that controllers can load models,
 * views, and libraries (e.g. utilities).
 *
 * @author xero harrison <x@xero.nu>
 * @copyright (cc) creative commons - attribution-shareAlike 3.0 unported
 * @version 3.7
 * @package qoob
 * @subpackage core.mvc
 */
class controller {
//_____________________________________________________________________________________________
//                                                                              setup functions	
	/**
	 * controller constructor
	 * the php magic method to be overridden by your custom
	 * controller classes. use the $classes parameter to 
	 * auto-load needed utility classes (e.g. session)
	 *
	 * @param array $classes
	 * @example parent::__construct(array("session" => array("type" => qoob_types::core, "class" => "session", "dir" => "users/")));
	 */
	public function __construct($classes = null) {
		if(is_array($classes)){
			$this->init($classes);
		}
	}
	/**
	 * initilizer function
	 * loops through each of the elements in the $classes array
	 * and registers them in the qoob framework as public functions
	 * in your controller. use them in $this->class->method format.
	 * 
	 * @param array $classes
	 */
	private function init($classes) {
		//load default libraries
		foreach ($classes as $publicVar => $params) {
			$this->$publicVar = registry::register($params["type"], $params["class"], $params["dir"]);
		}
	}
//_____________________________________________________________________________________________
//                                                                             loader functions
	/**
	 * library loader function
	 * used to register classes into the qoob framework as public functions
	 * in your controller. use them in $this->class->method format.
	 *
	 * @param string $type
	 * @param string $class
	 * @param string $path
	 * @param boolean $singleton
	 */
	public function library($type = "", $class = "", $path = "", $singleton = false){
		if($type == "" || $class == "") return false;
		
		$publicVar = $class;
        $this->$publicVar = registry::register($type, $class, $path, $singleton);
	}
	/**
	 * view loader function
	 * used to load a view into the qoob framework. any data in the optional
	 * $data array is extracted and becomes available in the php code in the
	 * view file loaded. in the $string boolean is set to true, the rended
	 * view code is returned from this function. otherwise the view is just
	 * included and immediatly rendered.
	 *
	 * @param string $view
	 * @param array $data
	 * @param boolean $string
	 * @return string
	 */
	public function view($view, $data=array(), $string=false) {
		$file = APP_PATH."/views/".$view.".php";
        if(sizeof($data) > 0)
        extract($data, EXTR_SKIP);
        
        if(file_exists($file)) {
        	if($string) {
        		//pause echoing
        		ob_start();
                //look at code igniter similarity ->> system/libraries/loader.php line 671.
                //echo eval(file_get_contents($file));
                include($file);
				//read file as string to variables
                $content = ob_get_contents();
                //cleanup
                ob_end_clean();
                return $content;
        	} else {
                //just include file.
                include($file);        		
        	}
        } else {
        	throw new Exception("unable to load template: $file", statusCodes::HTTP_INTERNAL_SERVER_ERROR);
            return false;
        }
        return true;
	}
	/**
	 * model loader function
	 * used to load a database model into the qoob framework.
	 * if the $data array is not null, it will be passed to
	 * the models constructor.
	 *
	 * @param string $model
	 * @param array $data
	 * @return class
	 */
	public function model($model, $data=array()) {
		$file = APP_PATH."/models/".$model.".php";
        
        if(file_exists($file)) {
        	//check if exists in library
        	if(!library::catalog()->$model) {
            	library::catalog()->$model = true;
        		include($file);
        	}
        	//create model
	        if(sizeof($data) > 0) {
	        	$class = new $model($data);
	        } else {
	        	$class = new $model();
	        }
            return $class;
        } else {
            throw new Exception("unable to load model: $file", statusCodes::HTTP_INTERNAL_SERVER_ERROR);
            return false;
        }
	}	
	/**
	 * log message function
	 * writes data to a given log file.
	 *
	 * @param string $msg  the message to save
	 * @param string $file the filename to save to
	 */
	public function logMSG($msg, $file = 'log.txt') {
		$fd = fopen($file, "a");
		$str = $msg."\n";
		fwrite($fd, $str);
		fclose($fd);
		return true;
	}		
}

?>

Download

raw zip tar