* @license PHP License * @package WB * @subpackage db */ WBClass::load('WBDatasource_Decorator_DB'); /** * Simple datasource decorator: Count * * @version 0.1.0 * @package WB * @subpackage db */ class WBDatasource_Decorator_DB_Count extends WBDatasource_Decorator { /** * @var WBDatasource_Table */ private $table; /** * Decorator's Parameter List * * Parameters: * * @var array */ protected $parameter = array( 'table' => 'pageview', 'date' => 'created', 'column' => 'count', 'clause' => array() ); /** * Setup */ public function onStart(&$item) { if (empty($this->table)) { $this->table = WBClass::create('WBDatasource_Table'); } } /** * Actually Decorate List Item * * @param array $item * @return void */ public function decorate(&$item) { $date = $item[$this->parameter['date']]; $clause = $this->parameter['clause']; if (!is_array($clause)) { $clause = array(); } $clause[] = array( 'field' => 'created', 'relation' => 'ge', 'value' => $date ); $date = strtotime($date) + 24 * 3600; $date = date('Y-m-d', $date); $clause[] = array( 'field' => 'created', 'relation' => 'lt', 'value' => $date ); $cnt = $this->table->count($this->parameter['table'], null, null, $clause); $item[$this->parameter['column']] = $cnt; } }