nekosune

Heeere

Jul 29th, 2012
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.07 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * Tables
  5.  *  
  6.  * @author PeterSwales
  7.  * @version
  8.  */
  9.  
  10. require_once 'Zend/Db/Table/Abstract.php';
  11. require_once 'Utils.php';
  12. class Tables extends Zend_Db_Table_Abstract {
  13.     /**
  14.      * The default table name
  15.      */
  16.     protected $_name = 'tables';
  17.    
  18.     /**
  19.      * Gets the table Data for a certain date
  20.      * @param Zend_Date $date Date to check
  21.      * @throws Exception Throws exception if no tables set for this
  22.      * @return array Array containing table data
  23.      */
  24.     public function getDate($date)
  25.     {
  26.        
  27.         $select=$this->select();
  28.         $select->where('dateFrom <=? ',$date->get(Utils::DATABASE_DATE));
  29.         $select->where('dateTo >= ? ',$date->get(Utils::DATABASE_DATE));
  30.         $rows=$this->fetchall($select);
  31.         $cnt=$rows->count();
  32.         if($cnt==0)
  33.         {
  34.             throw new Exception("No Tables Set");
  35.         }
  36.         $data=$rows[0]->tableData;
  37.         //print_r($data);
  38.         return json_decode($data,true);
  39.     }
  40.    
  41.     /**
  42.      * Inserts an array of table data into the db
  43.      * @param array $data Assosiative array containing table data
  44.      * @param Zend_Date $fromDate Date of the start of this change
  45.      * @param Zend_Date $toDate if set the end date of this period
  46.      */
  47.     public function insertData($data,$fromDate,$toDate=NULL)
  48.     {
  49.         $tableData=json_encode($data);
  50.         if($toDate===NULL)
  51.         {
  52.             $toDate=$fromDate;
  53.         }
  54.         $select=$this->select();
  55.         $select->where('dateTo >=? ',$fromDate->get(Utils::DATABASE_DATE));
  56.         $select->where('dateFrom <=? ',$fromDate->get(Utils::DATABASE_DATE));
  57.         $old1=$this->fetchRow($select);
  58.         if($old1!=null)
  59.         {
  60.             // is exact?
  61.             if($old1->fromDate==$fromDate && $old1->toDate==$toDate)
  62.             {
  63.                 $old1->tableData=$tableData;
  64.                 $old1->save();
  65.                 return;
  66.             }
  67.             else if($old1->fromDate==$fromDate)
  68.             {
  69.                 if($old1->toDate>$toDate)
  70.                 {
  71.                     $newOlddate = $toDate->addDay(1);
  72.                     $old1->dateFrom=$newOlddate->get(Utils::DATABASE_DATE);
  73.                     $old1->save();
  74.                 }
  75.                 else
  76.                 {
  77.                     $old1->delete();
  78.                 }
  79.             }
  80.             else
  81.             {
  82.                 $olddate=new Zend_Date($old1->dateTo,Zend_Date::ISO_8601);
  83.                 $newOlddate = $fromDate->addDay(-1);
  84.                 $old1->dateTo=$newOlddate->get(Utils::DATABASE_DATE);
  85.                 $old1->save();
  86.                 if($toDate<$olddate)
  87.                 {
  88.                     $remain=$this->createRow();
  89.                     $remain->tableData=$old1->tableData;
  90.                     $remain->dateFrom=$toDate->addDay(1);
  91.                     $remain->dateTo=$old1->dateTo;
  92.                     $remain->status=$old1->status;
  93.                     $remain->save();
  94.                 }
  95.                 $old1->save();
  96.             }
  97.         }
  98.         $select2=$this->select();
  99.         $select2->where('dateFrom <=? ',$toDate->get(Utils::DATABASE_DATE));
  100.         $select2->where('dateTo >=? ',$toDate->get(Utils::DATABASE_DATE));
  101.         $old2=$this->fetchRow($select2);
  102.         if($old2!=null)
  103.         {
  104.             $newOlddate = $fromDate->addDay(1);
  105.             $old2->dateFrom=$newOlddate->get(Utils::DATABASE_DATE);
  106.             $old2->save();
  107.         }
  108.         $this->delete(array('dateFrom > ?'=>$fromDate->get(Utils::DATABASE_DATE),'dateTo < ?'=>$toDate->get(Utils::DATABASE_DATE)));
  109.         $row=$this->createRow();
  110.         $row->fromDate=$fromDate->get(Utils::DATABASE_DATE);
  111.         $row->toDate=$toDate->get(Utils::DATABASE_DATE);
  112.         $row->tableData=$tableData;
  113.         $row->status='';
  114.         $row->save();
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment