Ejemplo n.º 1
0
 /**
  * Index action.
  *
  * Call if typed path:
  *   http://phpdays.dev/
  *   http://phpdays.dev/index
  *   http://phpdays.dev/index/index
  */
 public function indexAction()
 {
     $blog = Days_Model::factory('table_blog');
     //$categories = Days_Model::factory('table_blog_category');
     $this->_view->set('blog_items', $blog->find('last', array('count' => 12)));
     //$this->_view->set('categories', $categories->find('all'));
 }
Ejemplo n.º 2
0
/**
 * Call method in class Days_Model_Helper_[Name].
 *
 * Part of "php:Days - php5 framework" project (http://phpdays.googlecode.com).
 *
 * @copyright	Copyright (c) 2009 phpDays foundation (http://phpdays.org)
 * @license	http://www.opensource.org/licenses/mit-license.php The MIT License
 * @link	http://phpdays.googlecode.com/
 * @package	phpDays
 * @subpackage	phpDays Smarty library
 * @author	Anton Danilchenko <*****@*****.**>
 * @param       Parameters
 *  - name: part of Days_Model_Helper_[Name]
 *  - action: name of method in specified class
 *  - to: name of variable to assign result
 */
function smarty_function_helper($params, &$smarty)
{
    // check required parameters
    if (!isset($params['name'])) {
        throw new Days_Exception('Not passed `name` parameter in smarty plugin `helper`');
    }
    if (!isset($params['to'])) {
        throw new Days_Exception('Not passed `to` parameter in smarty plugin `helper`');
    }
    // create model
    $model = Days_Model::factory("helper_{$params['name']}");
    // check method
    if (!isset($params['action'])) {
        throw new Days_Exception('Not passed `action` parameter in smarty plugin `helper`');
    }
    if (!method_exists($model, $params['action'])) {
        $class = get_class($model);
        throw new Days_Exception("Not defined method `{$params['action']}` in class `{$class}`");
    }
    // return result
    $content = call_user_func(array($model, $params['action']));
    $smarty->assign($params['to'], $content);
}
Ejemplo n.º 3
0
 /**
  * Return specified variable (as array key).
  *
  * @param string $offset Int or string variable name
  * @return mixed
  */
 public final function offsetGet($offset)
 {
     // magic field name
     $offset = $this->_table->column($offset);
     // load virtual value
     if (!array_key_exists($offset, $this->_table->info()) and !array_key_exists($offset, $this->_values)) {
         // current row not saved physical
         if (!isset($this->id)) {
             return null;
         }
         // recive parent table name
         if (false !== ($pos = strpos($this->_table->name(), "{$offset}_"))) {
             $tableName = substr($this->_table->name(), 0, $pos) . $offset;
         } elseif ('child' == $offset or 'parent' == $offset) {
             $tableName = $this->_table->name();
         } else {
             $tableName = $this->_table->name($offset);
         }
         // get referenced rows
         $referenceTable = Days_Model::factory('table_' . $tableName);
         $currentTableName = $this->_table->name();
         // set column name and value
         switch ($offset) {
             case 'child':
                 $currentTableColumnName = $this->_table->column('pid');
                 $currentTableColumnValue = $this->id;
                 break;
             case 'parent':
                 $currentTableColumnName = $this->_table->column('pid');
                 $currentTableColumnValue = $this->pid;
                 break;
             default:
                 $currentTableColumnName = $this->_table->column('id');
                 $currentTableColumnValue = $this->id;
                 break;
         }
         // join outer table
         if ($tableName != $currentTableName) {
             $referenceTable->join($currentTableName);
         }
         // find tows by criteria
         $this->_values[$offset] = $referenceTable->find('all', array('where' => array("{$currentTableName}.{$currentTableColumnName}" => $currentTableColumnValue), 'columns' => array("{$tableName}.*")));
     }
     // return value
     return isset($this->_values[$offset]) ? $this->_values[$offset] : null;
 }
Ejemplo n.º 4
0
 /**
  * Call before all controller actions.
  */
 public function init()
 {
     $blog = Days_Model::factory('table_blog_category');
     $this->_view->set('categorys', $blog->find('all'));
     $this->_view->set('title', 'Category');
 }
Ejemplo n.º 5
0
 /**
  * Get posts by category
  *
  * Call if typed path:
  *   http://phpdays.dev/blog/category/category_url_name/
  */
 public function categoryAction()
 {
     $blog = Days_Model::factory('table_blog');
     $this->_view->set('blog_items', $blog->find('last', array('count' => 12)));
 }