| <?php | 
|   | 
| class Model_Task_TaskProgress extends PhalApi_Model_NotORM { | 
|   | 
|     const STATE_WAITTING = 0; | 
|     const STATE_RUNNING = 1; | 
|     const STATE_EXCEPTION = -1; | 
|   | 
|     const ENABLE_ON = 1; | 
|     const ENABLE_OFF = 0; | 
|   | 
|     protected function getTableName($id = NULL) { | 
|         return 'task_progress'; | 
|     } | 
|   | 
|     public function getWrongItems($maxLastFireTime) { | 
|         $rows = $this->getORM() | 
|             ->select('id, title') | 
|             ->where('state != ?', self::STATE_WAITTING) | 
|             ->where('last_fire_time < ?', $maxLastFireTime) | 
|             ->where('enable = ?', self::ENABLE_ON) | 
|             ->order('last_fire_time ASC') | 
|             ->fetchAll(); | 
|   | 
|         return !empty($rows) ? $rows : array(); | 
|     } | 
|   | 
|     public function resetWrongItems($id) { | 
|         return $this->update($id, array('state' => self::STATE_WAITTING)); | 
|     } | 
|   | 
|     public function getAllWaittingItems() { | 
|         $rows = $this->getORM() | 
|             ->select('id, title, trigger_class, fire_params') | 
|             ->where('state', self::STATE_WAITTING) | 
|             ->where('interval_time + last_fire_time < ?', $_SERVER['REQUEST_TIME']) | 
|             ->where('enable = ?', self::ENABLE_ON) | 
|             ->fetchAll(); | 
|   | 
|         return !empty($rows) ? $rows : array(); | 
|     } | 
|   | 
|     public function isRunnable($id) { | 
|         $row = $this->get($id, 'enable, state'); | 
|   | 
|         if (empty($row)) { | 
|             return FALSE; | 
|         } | 
|   | 
|         return ($row['state'] == self::STATE_WAITTING && $row['enable'] == self::ENABLE_ON) ? TRUE : FALSE; | 
|     } | 
|   | 
|     public function setRunningState($id) { | 
|         return $this->update($id, array('state' => self::STATE_RUNNING)); | 
|     } | 
|   | 
|     public function updateFinishItem($id, $result) { | 
|         $data = array( | 
|             'result' => json_encode($result), | 
|             'state' => self::STATE_WAITTING, | 
|             'last_fire_time' => $_SERVER['REQUEST_TIME'], | 
|         ); | 
|   | 
|         return $this->update($id, $data); | 
|     } | 
|   | 
|     public function updateExceptionItem($id, $errorMsg) { | 
|         $data = array( | 
|             'result' => $errorMsg, | 
|             'state' => self::STATE_EXCEPTION, | 
|             'last_fire_time' => $_SERVER['REQUEST_TIME'], | 
|         ); | 
|   | 
|         return $this->update($id, $data); | 
|     } | 
| } |