Example #1
0
 /**
  * Save relation teaser ids
  * 
  * @param Teaser_Model_Item $item 
  */
 protected function _saveTeaserIds(Teaser_Model_Item $item)
 {
     //get existing teaser ids
     $oldItem = new Teaser_Model_Item();
     $oldTeaserIds = array();
     if ($this->find($item->get_id(), $oldItem)) {
         $this->populateTeaserIds($oldItem);
         $oldTeaserIds = $oldItem->get_teaser_ids();
     }
     //new ids
     $teaserIds = $item->get_teaser_ids();
     $data = array('item_id' => $item->get_id());
     foreach ($teaserIds as $teaserId) {
         //new teaser
         if (!in_array($teaserId, $oldTeaserIds)) {
             $data['teaser_id'] = $teaserId;
             //put this item as last one
             if ($item->get_fallback() == 'yes') {
                 $data['order_num'] = 100000;
             } else {
                 $data['order_num'] = Teaser_Model_TeaserMapper::getInstance()->getMaxItemOrderNum($teaserId) + 1;
             }
             $this->_dbTable->getAdapter()->insert('teaser_has_items', $data);
         } else {
             $pos = array_search($teaserId, $oldTeaserIds);
             if ($pos !== false) {
                 unset($oldTeaserIds[$pos]);
             } elseif ($item->get_fallback() == 'yes' && $oldItem->get_fallback() != $item->get_fallback()) {
                 Teaser_Model_TeaserMapper::getInstance()->setItemOrder($teaserId, $item->get_id(), 100000);
             }
         }
     }
     //now delete pending old ids
     foreach ($oldTeaserIds as $oldTeaserId) {
         $this->_dbTable->getAdapter()->delete('teaser_has_items', array('teaser_id = ?' => $oldTeaserId, 'item_id = ?' => $item->get_id()));
     }
 }
 /**
  * Get item status
  * 
  * @param Teaser_Model_Item $item
  * @return 'pending'|'active'|'expired' 
  */
 protected function _getItemStatus(Teaser_Model_Item $item)
 {
     $now = Zend_Date::now();
     $start = new Zend_Date($item->get_start_dt(), Zend_Date::ISO_8601);
     $end = new Zend_Date($item->get_end_dt(), Zend_Date::ISO_8601);
     if ($item->get_fallback() == 'yes') {
         return 'fallback';
     } else {
         if ($start->isLater($now)) {
             return 'pending';
         } else {
             if ($end->isEarlier($now)) {
                 return 'expired';
             } else {
                 return 'active';
             }
         }
     }
 }