public function checkDestination() { if ($this->method === 'mail') { if (empty($this->destination_email)) { $this->addError('destination_email', 'Destination email address can not be empty.'); return false; } } else { if ($this->method === 'ftp') { if (!$this->destination_ip_port) { $this->addError('destination_ip_port', 'Destination ip port can\'t be empty.'); } if (!$this->destination_ip_folder) { $this->destination_ip_folder = ''; } //$this->destination_ip_folder = '//'. $this->destination_ip_folder; $res = explode('/', $this->destination_ip_folder); $str = ''; if ($res) { foreach ($res as $value) { if ($value) { $str .= $value . '/'; } } } // $this->destination_ip_folder = $str ? $str : '/'; $this->destination_ip_folder = $str; $long = ip2long($this->destination_ip); if ($long == -1 || $long === false) { $this->addError('destination_ip', 'Destination ip address is invalid.'); return false; } } else { if ($this->method === 'local_folder') { $matches = array(); if (!preg_match('/^[A-Z,a-z,0-9,_,\\.\\s,-]{0,255}$/', $this->destination_local_folder, $matches)) { $this->addError('destination_local_folder', 'Destination Local Folder is invalid.'); return false; } $criteria = new CDbCriteria(); $criteria->compare('destination_local_folder', $this->destination_local_folder); if (!$this->isNewRecord) { $criteria->addNotInCondition('ex_schedule_destination_id', [$this->ex_schedule_destination_id]); } $destinations = ScheduleTypeReportDestination::model()->findAll($criteria); if (count($destinations) > 0) { $this->addError('destination_local_folder', 'Such folder is already used.'); return false; } if (!$this->getErrors()) { $scheduleTypeReportProcessed = new ScheduleTypeReportProcessed(); $path = $scheduleTypeReportProcessed->getFileDir() . DIRECTORY_SEPARATOR . $this->destination_local_folder; if (!file_exists($path)) { if (@mkdir($path, 0777, true) === false) { $this->addError('destination_local_folder', 'Can\'t create directory.'); return false; } } } } } } }
public static function getHistory($schedule_id, $page_size = 15) { $criteria = new CDbCriteria(); $criteria->alias = "t1"; $criteria->condition = "t1.ex_schedule_id = {$schedule_id}"; $criteria->order = "check_period_start DESC"; $criteria->with = array('send_log.destination'); $strp = new ScheduleTypeReportProcessed(); $count = $strp->count($criteria); $pages = new CPagination($count); $pages->pageSize = $page_size; $pages->pageVar = 'page'; $pages->applyLimit($criteria); $historyResult = $strp->findAll($criteria); $historyArrResult = array(); if (!is_null($historyResult)) { foreach ($historyResult as $historyItem) { $historyArrResult[] = $historyItem->attributes; } } return array('pages' => $pages, 'result' => $historyResult); }
public function actionScheduleTypeDownload() { $id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null; if ((int) $id) { $report = new ScheduleTypeReportProcessed(); $reportResult = $report->with('ex_schedule_report')->findByPk($id); $reportResult->file_content; $extension = $reportResult->ex_schedule_report->report_format; $file_name = $reportResult->check_period_start . ' - ' . $reportResult->check_period_end; $report_string = !empty($reportResult->file_content) ? $reportResult->file_content : ''; $file_name .= '.' . $extension; It::downloadFile($report_string, $file_name); } else { $this->redirect($_SERVER['HTTP_REFERER']); } }
/** * @param $uids array * @param bool $sent true| false * @return array */ public function findByUIDsWithDestinations($uids, $sent = false) { $criteria = new CDbCriteria(); $criteria->alias = "t1"; $criteria->join = ' LEFT JOIN `' . ScheduleTypeReportProcessed::model()->tableName() . '` `t2` on `t1`.`ex_schedule_processed_id`=`t2`.`ex_schedule_processed_id` LEFT JOIN `' . ScheduleTypeReport::model()->tableName() . '` `t3` on `t2`.`ex_schedule_id`=`t3`.`ex_schedule_id` '; $criteria->with = array('report_processed.ex_schedule_report', 'destination'); if ($sent == false) { $sent_condition = ' AND `t1`.`sent`="0"'; } if ($sent == true) { $sent_condition = ' AND `t1`.`sent`="1"'; } if (count($uids)) { foreach ($uids as $uid) { $res = ScheduleTypeReportProcessed::parseUID($uid['report_uid']); $criteria->addCondition('(`t2`.`check_period_start`="' . $res['check_period_start'] . '" AND `t3`.`ex_schedule_ident`="' . $res['ex_schedule_ident'] . '" ' . $sent_condition . ')', 'OR'); } $result = $this->findAll($criteria); if (!is_null($result)) { foreach ($result as &$item) { if (is_object($item->report_processed->ex_schedule_report) && is_object($item->report_processed)) { $item->report_processed->setUniqueID($item->report_processed->ex_schedule_report->ex_schedule_ident); } } $UIDsArray = $this->getUIDsArray($result); return array('result' => $result, 'uids' => $UIDsArray); } } return array('result' => array(), 'uids' => array()); }
protected function serverStep04() { $sendData = $this->msStatus(); if ($this->messageData['ms_status_processed'] == 1 && $this->messageData['ms_status'] == "master") { $scheduleTypeReportProcessed = new ScheduleTypeReportProcessed(); $uids = array(); foreach ($this->messageData['not_searched_reports'] as $uidItem) { $uids[] = $uidItem['report_uid']; } // master has not uid like this; $unSynchronizedReports = $scheduleTypeReportProcessed->findByUIDs($uids, 0); if (!is_null($unSynchronizedReports)) { foreach ($unSynchronizedReports['result'] as $reportItem) { if ($reportItem->aging_time < time()) { $reportItem->is_synchronized = 2; // could not synchronize $reportItem->save(); } } } } $this->createServerMessage('01', 1, 'SERVER ANSWER 04 (END)' . time()); }