Login   Register  
PHP Classes
elePHPant
Icontem

File: QueryTemplatesSource.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of  >  Query Templates  >  QueryTemplatesSource.php  >  Download  
File: QueryTemplatesSource.php
Role: Class source
Content type: text/plain
Description: QueryTemplatesSource.php
Class: Query Templates
Template engine using load, traverse and modify
Author: By
Last change:
Date: 2008-12-04 00:13
Size: 4,916 bytes
 

Contents

Class file image Download
<?php
/**
 * Class handling template source use.
 * 
 * @abstract
 * @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/
 * 
 * @TODO multi-returns
 */
class QueryTemplatesSource
    
extends QueryTemplatesPhpQuery
    
implements IQueryTemplatesParseChain {
    
/**
     * Parent template.
     *
     * @var QueryTemplatesParse
     */
    
public $parent;
    public function 
__construct($parent$src null) {
        if ( 
$parent instanceof self ) {
            
// new instance call from phpQuery
            // link all important vars to new object
            
$this->parent =& $parent->parent;
            
$docId $src;
            
parent::__construct($docId);
        } else {
            
$this->parent $parent;
//            $docId = parent::createDom($src);
            
$docId phpQuery::newDocument($src)->getDocumentId();
            
parent::__construct($docId);
            
// parse template includes and merge dependencies
            
$this->parent->dependencies array_merge(
                
$this->parent->dependencies,
                
QueryTemplates::parseIncludes($this)
            );
        }
    }
    
/**
     * Free source DOM from memory and returns parent template.
     * No more source pickups is possible after this operation.
     *
     * @return QueryTemplatesParse
     */
    
public function free() {
        
$this->unloadDocument();
        return 
$this->parent;
    }
    
/**
     * Returns actual source stack as a replacement for templates stack or
     * nodes matched by optional $cssSelector executed agains templates stack.
     *
     * @param unknown_type $cssSelector
     * @return QueryTemplatesParse
     */
    
public function returnReplace($cssSelector null) {
        if (! 
$this->parent->document) {
            
$this->parent->documentCreate($this);
        } else {
            if (
$cssSelector)
                
$this->parent->find($cssSelector)->replaceWith($this);
            else
                
$this->parent->documentCreate($this);
        }
        return 
$this->free();
    }
    
/**
     * Returns actual source stack prepending it to template's stack or
     * nodes matched by optional $cssSelector executed agains template's stack.
     *
     * @param string $cssSelector
     * @return QueryTemplatesParse Parent template.
     */
    
public function returnPrepend($cssSelector null) {
        return 
$this->_returnInsert($cssSelector'prependTo');
    }
    
/**
     * Returns actual source stack appending it to template's stack or
     * nodes matched by optional $cssSelector executed agains template's stack.
     *
     * @param string $cssSelector
     * @return QueryTemplatesParse Parent template.
     */
    
public function returnAppend($cssSelector null) {
        return 
$this->_returnInsert($cssSelector'appendTo');
    }
    
/**
     * Returns actual source stack inserting it after template's stack or
     * nodes matched by optional $cssSelector executed agains template's stack.
     *
     * @param string $cssSelector
     * @return QueryTemplatesParse Parent template.
     */
    
public function returnAfter($cssSelector null) {
        return 
$this->_returnInsert($cssSelector'insertAfter');
    }
    
/**
     * Returns actual source stack inserting it before template's stack or
     * nodes matched by optional $cssSelector executed agains template's stack.
     *
     * @param string $cssSelector
     * @return QueryTemplatesParse Parent template.
     */
    
public function returnBefore($cssSelector null) {
        return 
$this->_returnBefore($cssSelector'insertBefore');
    }
    protected function 
_returnInsert($cssSelector$method) {
        if (! 
$this->parent->document)
            
$this->parent->documentCreate($this);
        else
            
call_user_func_array(
                array(
$this$method),
                array(
                    
$cssSelector
                        
$this->parent->newInstance()->toRoot()->find($cssSelector)
                        : 
$this->parent
                
)
            );
        return 
$this->free();
    }
    
/**
     * Saves actual stack using markupOuter() as value of variable named $var.
     * New variable is available in template's scope.
     *
     * @param string $name
     * @TODO customizable method (markupOuter)
     * @param string $cssSelector
     * @return QueryTemplatesParse Parent template.
     */
    
public function saveAsVar($name) {
        
$this->parent->vars[$name] = $this->htmlOuter();
        return 
$this->free();
    }
    public function 
__toString() {
        return 
$this->parent->__toString();
    }
    
/**
     * Saves template and returns file path ready to include.
     *
     * @return string
     * @see QueryTemplatesParse::save()
     */
    
public function save($unloadDocument true) {
        return 
$this->parent->save($unloadDocument);
    }
    
/**
     * @see QueryTemplatesTemplate::templateCache()
     * @return QueryTemplatesSource
     */
    
public function templateCache($state null) {
        
$this->parent->templateCache($state);
        return 
$this;
    }
    
/**
     * @see QueryTemplatesTemplate::templateName()
     * @return QueryTemplatesSourceQuery
     */
    
public function templateName($newName null) {
        
$this->parent->templateName($state);
        return 
$this;
    }
}