PHP Classes

File: QueryTemplatesTemplate.php

Recommend this page to a friend!
  Classes of   Query Templates   QueryTemplatesTemplate.php   Download  
File: QueryTemplatesTemplate.php
Role: Class source
Content type: text/plain
Description: QueryTemplatesTemplate.php
Class: Query Templates
Template engine using load, traverse and modify
Author: By
Last change:
Date: 15 years ago
Size: 5,540 bytes
 

Contents

Class file image Download
<?php
require(dirname(__FILE__).'/QueryTemplatesParseVoid.php');
require(
dirname(__FILE__).'/QueryTemplatesSourceReplicator.php');
require(
dirname(__FILE__).'/IQueryTemplatesTemplate.php');
require(
dirname(__FILE__).'/IQueryTemplatesParse.php');
if (!
class_exists('Callback')) {
   
$included = @include_once('Callback.php');
    if (!
$included)
        require_once(
dirname(__FILE__)."/phpQuery/Callback.php");
}
/**
 * Class defining main namespace of the template.
 *
 * Use template() function as shortcut.
 *
 * @package QueryTemplates
 * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
 * @license http://www.opensource.org/licenses/mit-license.php MIT License
 * @link http://code.google.com/p/querytemplates/
 */
class QueryTemplatesTemplate
   
implements IQueryTemplatesTemplate {
    public
$name;
    public
$cache = true;
   
/**
     * @access private
     */
   
public $toFetch = array(
       
// [0] path, [1] name, [2] parse php tags
       
'full' => array(),
       
// [0] path, [1] replicator object, [2] parse php tags
       
'parts' => array(),
    );
   
/**
     * Enter description here...
     *
     * @param string $name Optional.
     */
   
public function __construct($name = null) {
       
$this->name = $name;
    }
   
/**
     * Fetches file or URL and returns phpQuery object with additional collect()
     * method to collect specific part(s) of document.
     *
     * It has to be ended with one of followings:
     * - sourceEnd()
     * - parse()
     * - any other source*() method
     *
     * @param string|Callback $path
     * @return QueryTemplatesSourceQuery
     * @TODO content-type
     */
   
public function sourceQuery($path) {
        return
$this->_sourceFetch($path, true);
    }
   
/**
     * Fetches file or URL and collects it content.
     *
     * @param string|Callback $path
     * @param String $name Optional. Defaults to file name.
     * @return QueryTemplatesTemplate
     * @TODO content-type
     */
   
public function sourceCollect($path, $name = null) {
        return
$this->_sourceFetch($path, false, $name);
    }
   
/**
     * @access private
     *
     */
   
protected function _sourceFetch($path, $onlySomeParts = false, $name = null, $php = false) {
        if (!
$onlySomeParts) {
           
$this->toFetch['full'][] = array($path, $name, $php);
            return
$this;
        } else {
           
$replicator = new QueryTemplatesSourceReplicator($this);
           
$this->toFetch['parts'][] = array($path, $replicator, $php);
            return
$replicator;
        }
    }
   
/**
     * Fetches PHP source file or URL and collects it content.
     *
     * @param string|Callback $path
     * @param string $name
     * @return QueryTemplatesTemplate
     * @see QueryTemplatesTemplate::sourceCollect()
     */
   
public function sourceCollectPHP($path, $name = null) {
        return
$this->_sourceFetch($path, false, $name, true);
    }
   
/**
     * Fetches PHP souce file or URL and returns phpQuery object with
     * additional collect() method to collect specific part(s) of document.
     *
     * @param string|Callback $path
     * @param string $name
     * @return QueryTemplatesSourceQuery
     * @see QueryTemplatesTemplate::sourceQuery()
     */
   
public function sourceQueryPHP($path, $name = null) {
        return
$this->_sourceFetch($path, true, $name, true);
    }
   
/**
     * Enter description here...
     *
     * @param unknown_type $name
     * @return unknown
     * @TODO sourceTemplate
     */
   
public function sourceTemplate($name) {
    }
   
/**
     * Start template parsing stage and changes namespace to @see QueryTemplatesParse.
     *
     * @return String|QueryTemplatesParse
     */
   
public function parse() {
        if (!
$this->name)
           
$this->name = $this->generateName();
       
//check cache
// $this->includeFunctions();
       
if ($includePath = QueryTemplates::loadTemplate($this->name))
            return new
QueryTemplatesParseVoid($includePath);
       
$this->includeClasses();
        return new
QueryTemplatesParse($this);
    }
   
/**
     * Disable or enables cache engine for this template.
     *
     * Chainable when $state is passed. Otherwise returns actual
     * cache's setting.
     *
     * @param Bool $state
     * False to disable cache, True to enable.
     * @return QueryTemplatesTemplate
     * @see QueryTemplates::$cacheTimeout
     */
   
public function templateCache($state = null) {
        if (isset(
$state)) {
           
$this->cache = isset($state);
            return
$this;
        } else {
           
$this->cache;
        }
    }
 
/**
     * @access private
     */
   
protected function generateName() {
       
$name = '';
        foreach(
$this->toFetch['parts'] as $r)
           
$name .= QueryTemplates::$templatesDir.$r[0];
        foreach(
$this->toFetch['full'] as $r)
           
$name .= QueryTemplates::$templatesDir.$r[0];
        return
md5($name);
    }
   
/**
     * @access private
     */
   
protected function includeClasses() {
       
$dir = dirname(__FILE__);
        if (!
class_exists('phpQuery')) {
           
$included = @include_once('phpQuery.php');
            if (!
$included)
                require_once(
"$dir/phpQuery/phpQuery.php");
        }
       
phpQuery::$debug = QueryTemplates::$debug;
        require_once(
"$dir/QueryTemplatesPhpQuery.php");
        require_once(
"$dir/QueryTemplatesSourceQuery.php");
        require_once(
"$dir/QueryTemplatesSource.php");
        require_once(
"$dir/QueryTemplatesParse.php");
    }
   
/**
     * Returns or changes template's name.
     *
     * @param unknown_type $newName
     */
   
function templateName($newName = null) {
        if (
$newName)
           
$this->parent->name = $newName;
        else
            return
$this->parent->name;
    }
}

/**
 * Create new template using QueryTemplates.
 *
 * @param string $name
 * @return QueryTemplatesTemplate
 */
function template($name = null) {
    return new
QueryTemplatesTemplate($name);
}