Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Tables
- *
- * @author PeterSwales
- * @version
- */
- require_once 'Zend/Db/Table/Abstract.php';
- require_once 'Utils.php';
- class Tables extends Zend_Db_Table_Abstract {
- /**
- * The default table name
- */
- protected $_name = 'tables';
- /**
- * Gets the table Data for a certain date
- * @param Zend_Date $date Date to check
- * @throws Exception Throws exception if no tables set for this
- * @return array Array containing table data
- */
- public function getDate($date)
- {
- $select=$this->select();
- $select->where('dateFrom <=? ',$date->get(Utils::DATABASE_DATE));
- $select->where('dateTo >= ? ',$date->get(Utils::DATABASE_DATE));
- $rows=$this->fetchall($select);
- $cnt=$rows->count();
- if($cnt==0)
- {
- throw new Exception("No Tables Set");
- }
- $data=$rows[0]->tableData;
- //print_r($data);
- return json_decode($data,true);
- }
- /**
- * Inserts an array of table data into the db
- * @param array $data Assosiative array containing table data
- * @param Zend_Date $fromDate Date of the start of this change
- * @param Zend_Date $toDate if set the end date of this period
- */
- public function insertData($data,$fromDate,$toDate=NULL)
- {
- $tableData=json_encode($data);
- if($toDate===NULL)
- {
- $toDate=$fromDate;
- }
- $select=$this->select();
- $select->where('dateTo >=? ',$fromDate->get(Utils::DATABASE_DATE));
- $select->where('dateFrom <=? ',$fromDate->get(Utils::DATABASE_DATE));
- $old1=$this->fetchRow($select);
- if($old1!=null)
- {
- // is exact?
- if($old1->fromDate==$fromDate && $old1->toDate==$toDate)
- {
- $old1->tableData=$tableData;
- $old1->save();
- return;
- }
- else if($old1->fromDate==$fromDate)
- {
- if($old1->toDate>$toDate)
- {
- $newOlddate = $toDate->addDay(1);
- $old1->dateFrom=$newOlddate->get(Utils::DATABASE_DATE);
- $old1->save();
- }
- else
- {
- $old1->delete();
- }
- }
- else
- {
- $olddate=new Zend_Date($old1->dateTo,Zend_Date::ISO_8601);
- $newOlddate = $fromDate->addDay(-1);
- $old1->dateTo=$newOlddate->get(Utils::DATABASE_DATE);
- $old1->save();
- if($toDate<$olddate)
- {
- $remain=$this->createRow();
- $remain->tableData=$old1->tableData;
- $remain->dateFrom=$toDate->addDay(1);
- $remain->dateTo=$old1->dateTo;
- $remain->status=$old1->status;
- $remain->save();
- }
- $old1->save();
- }
- }
- $select2=$this->select();
- $select2->where('dateFrom <=? ',$toDate->get(Utils::DATABASE_DATE));
- $select2->where('dateTo >=? ',$toDate->get(Utils::DATABASE_DATE));
- $old2=$this->fetchRow($select2);
- if($old2!=null)
- {
- $newOlddate = $fromDate->addDay(1);
- $old2->dateFrom=$newOlddate->get(Utils::DATABASE_DATE);
- $old2->save();
- }
- $this->delete(array('dateFrom > ?'=>$fromDate->get(Utils::DATABASE_DATE),'dateTo < ?'=>$toDate->get(Utils::DATABASE_DATE)));
- $row=$this->createRow();
- $row->fromDate=$fromDate->get(Utils::DATABASE_DATE);
- $row->toDate=$toDate->get(Utils::DATABASE_DATE);
- $row->tableData=$tableData;
- $row->status='';
- $row->save();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment