Example #1
0
 public function create_job($ad_id, $type, $at_every, $time, $num = 0, $options = null)
 {
     $create_time = date("Y-m-d H:i:s");
     $create_user = $_SESSION['id'];
     $params = '';
     if ($options['keywords']) {
         $params .= '"keywords":"' . $options['keywords'] . '",';
     }
     if ($options['ad_desc']) {
         $params .= '"ad_desc":"' . $options['ad_desc'] . '",';
     }
     if ($params) {
         $params = '{' . substr($params, 0, -1) . '}';
     }
     if ($type < 0 || $type > 4 || $at_every != 'at' && $at_every != 'every') {
         throw new Exception('错误的任务类型', 1);
     }
     if ($at_every == 'every' && $type == 2 && $this->has_daily_job($ad_id)) {
         throw new Exception('该广告已存在每日加分任务', 3);
     }
     if ($create_time > $time) {
         throw new Exception('时间已过', 2);
     }
     $ad = new AD();
     if (!$ad->exist($ad_id)) {
         throw new Exception('不存在ad', 4);
     }
     $id = $this->insert_ad_job(['ad_id' => $ad_id, 'jobtype' => $type, 'at_every' => $at_every, 'jobtime' => $time, 'jobnum' => $num, 'create_user' => $create_user, 'create_time' => $create_time, 'is_run' => -1, 'params' => $params]);
     if (!$id) {
         throw new Exception('操作失败', 5);
     }
     if ($options['share'] && $type == self::OFFLINE) {
         $this->update_share($ad_id, $options['show_countdown']);
     }
     // log it
     $log = new ADOperationLogger();
     $log->log($ad_id, 'job', 'add', "[{$type}, {$at_every}, {$time}, {$num}] => {$id}", 0);
     $stamp = strtotime($time);
     $event_url = 'event.php?ajid=' . $id;
     $link_id = $this->insert_job($stamp, $event_url);
     return $this->update_job($link_id, $id);
 }