File indexing completed on 2024-06-16 05:27:21

0001 <?php
0002 /**
0003  *  ocs-webserver
0004  *
0005  *  Copyright 2016 by pling GmbH.
0006  *
0007  *    This file is part of ocs-webserver.
0008  *
0009  *    This program is free software: you can redistribute it and/or modify
0010  *    it under the terms of the GNU Affero General Public License as
0011  *    published by the Free Software Foundation, either version 3 of the
0012  *    License, or (at your option) any later version.
0013  *
0014  *    This program is distributed in the hope that it will be useful,
0015  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017  *    GNU Affero General Public License for more details.
0018  *
0019  *    You should have received a copy of the GNU Affero General Public License
0020  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021  **/
0022 class Statistics_Model_DbTable_StatDaily extends Zend_Db_Table_Abstract
0023 {
0024 
0025     /**
0026      * The primary key column or columns.
0027      * A compound key should be declared as an array.
0028      * You may declare a single-column primary key
0029      * as a string.
0030      *
0031      * @var mixed
0032      */
0033     protected $_primary = 'daily_id';
0034 
0035     /**
0036      * The table name.
0037      *
0038      * @var string
0039      */
0040     protected $_name = 'stat_daily';
0041 
0042     protected $_keyColumnsForRow = array('project_id', 'project_category_id', 'project_type_id', 'year', 'month', 'day');
0043 
0044 
0045     /**
0046      * @param $data
0047      */
0048     public function save($data)
0049     {
0050         $rowSet = $this->findForColumns($data, $this->_keyColumnsForRow);
0051 
0052         if (null === $rowSet) {
0053             $rowSet = $this->createRow($data);
0054         } else {
0055             $rowSet->setFromArray($data);
0056         }
0057 
0058         $rowSet->save();
0059     }
0060 
0061     /**
0062      * @param $data
0063      * @param $columns
0064      * @return null|Zend_Db_Table_Row_Abstract
0065      */
0066     public function findForColumns($data, $columns)
0067     {
0068 
0069         $statement = $this->select()->setIntegrityCheck(false)->from($this->_name);
0070         foreach ($columns as $identifier) {
0071             $statement->where($this->_db->quoteIdentifier($identifier) . ' = ?', $data[$identifier]);
0072         }
0073 
0074         return $this->fetchRow($statement);
0075     }
0076 
0077 }