/** * 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')); }
/** * 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); }
/** * 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; }
/** * 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'); }
/** * 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))); }