示例#1
0
	/**
	 * Function to save the  Scheduled Reports data
	 */
	public function saveScheduleReport() {
		$adb = PearDatabase::getInstance();

		$reportid = $this->get('reportid');
        $scheduleid = $this->get('scheduleid');
		$schtime = $this->get('schtime');
        if(!preg_match('/^[0-2]\d(:[0-5]\d){1,2}$/', $schtime) or substr($schtime,0,2)>23) {  // invalid time format
            $schtime='00:00';
        }
        $schtime .=':00';

		$schdate = null; $schdayoftheweek = null; $schdayofthemonth = null; $schannualdates = null;
		if ($scheduleid == self::$SCHEDULED_ON_SPECIFIC_DATE) {
			$date = $this->get('schdate');
			$dateDBFormat = DateTimeField::convertToDBFormat($date);
            $nextTriggerTime = $dateDBFormat.' '.$schtime;
            $currentTime = Vtiger_Util_Helper::getActiveAdminCurrentDateTime();
            if($nextTriggerTime > $currentTime) {
                $this->set('next_trigger_time', $nextTriggerTime);
            } else {
                $this->set('next_trigger_time', date('Y-m-d H:i:s', strtotime('+10 year')));
            }
			$schdate = Zend_Json::encode(array($dateDBFormat));
		} else if ($scheduleid == self::$SCHEDULED_WEEKLY) {
			$schdayoftheweek = Zend_Json::encode($this->get('schdayoftheweek'));
            $this->set('schdayoftheweek', $schdayoftheweek);
		} else if ($scheduleid == self::$SCHEDULED_MONTHLY_BY_DATE) {
			$schdayofthemonth = Zend_Json::encode($this->get('schdayofthemonth'));
            $this->set('schdayofthemonth', $schdayofthemonth);
		} else if ($scheduleid == self::$SCHEDULED_ANNUALLY) {
			$schannualdates = Zend_Json::encode($this->get('schannualdates'));
            $this->set('schannualdates', $schannualdates);
		}

		$recipients = Zend_Json::encode($this->get('recipients'));
		$specificemails = Zend_Json::encode($this->get('specificemails'));
		$isReportScheduled = $this->get('isReportScheduled');

        if($scheduleid != self::$SCHEDULED_ON_SPECIFIC_DATE) {
            $nextTriggerTime = $this->getNextTriggerTime();
		}
		if ($isReportScheduled == '0' || $isReportScheduled == '' || $isReportScheduled == false) {
			$deleteScheduledReportSql = "DELETE FROM vtiger_schedulereports WHERE reportid=?";
			$adb->pquery($deleteScheduledReportSql, array($reportid));
		} else {
			$checkScheduledResult = $adb->pquery('SELECT 1 FROM vtiger_schedulereports WHERE reportid=?', array($reportid));
			if ($adb->num_rows($checkScheduledResult) > 0) {
				$scheduledReportSql = 'UPDATE vtiger_schedulereports SET scheduleid=?, recipients=?, schdate=?, schtime=?, schdayoftheweek=?, schdayofthemonth=?, schannualdates=?, specificemails=?, next_trigger_time=? WHERE reportid=?';
				$adb->pquery($scheduledReportSql, array($scheduleid, $recipients, $schdate, $schtime, $schdayoftheweek, $schdayofthemonth, $schannualdates, $specificemails, $nextTriggerTime, $reportid));
			} else {
				$scheduleReportSql = 'INSERT INTO vtiger_schedulereports (reportid,scheduleid,recipients,schdate,schtime,schdayoftheweek,schdayofthemonth,schannualdates,next_trigger_time,specificemails) VALUES (?,?,?,?,?,?,?,?,?,?)';
				$adb->pquery($scheduleReportSql, array($reportid, $scheduleid, $recipients, $schdate, $schtime, $schdayoftheweek, $schdayofthemonth, $schannualdates, $nextTriggerTime, $specificemails));
			}
		}
	}
示例#2
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $summary = $request->get('summary');
     $moduleName = $request->get('module_name');
     $conditions = $request->get('conditions');
     $filterSavedInNew = $request->get('filtersavedinnew');
     $executionCondition = $request->get('execution_condition');
     if ($recordId) {
         $workflowModel = Settings_Workflows_Record_Model::getInstance($recordId);
     } else {
         $workflowModel = Settings_Workflows_Record_Model::getCleanInstance($moduleName);
     }
     $response = new Vtiger_Response();
     $workflowModel->set('summary', $summary);
     $workflowModel->set('module_name', $moduleName);
     $workflowModel->set('conditions', $conditions);
     $workflowModel->set('execution_condition', $executionCondition);
     if ($executionCondition == '6') {
         $schtime = $request->get("schtime");
         if (!preg_match('/^[0-2]\\d(:[0-5]\\d){1,2}$/', $schtime) or substr($schtime, 0, 2) > 23) {
             // invalid time format
             $schtime = '00:00';
         }
         $schtime .= ':00';
         $workflowModel->set('schtime', $schtime);
         $workflowScheduleType = $request->get('schtypeid');
         $workflowModel->set('schtypeid', $workflowScheduleType);
         $dayOfMonth = null;
         $dayOfWeek = null;
         $month = null;
         $annualDates = null;
         if ($workflowScheduleType == Workflow::$SCHEDULED_WEEKLY) {
             $dayOfWeek = Zend_Json::encode($request->get('schdayofweek'));
         } else {
             if ($workflowScheduleType == Workflow::$SCHEDULED_MONTHLY_BY_DATE) {
                 $dayOfMonth = Zend_Json::encode($request->get('schdayofmonth'));
             } else {
                 if ($workflowScheduleType == Workflow::$SCHEDULED_ON_SPECIFIC_DATE) {
                     $date = $request->get('schdate');
                     $dateDBFormat = DateTimeField::convertToDBFormat($date);
                     $nextTriggerTime = $dateDBFormat . ' ' . $schtime;
                     $currentTime = Vtiger_Util_Helper::getActiveAdminCurrentDateTime();
                     if ($nextTriggerTime > $currentTime) {
                         $workflowModel->set('nexttrigger_time', $nextTriggerTime);
                     } else {
                         $workflowModel->set('nexttrigger_time', date('Y-m-d H:i:s', strtotime('+10 year')));
                     }
                     $annualDates = Zend_Json::encode(array($dateDBFormat));
                 } else {
                     if ($workflowScheduleType == Workflow::$SCHEDULED_ANNUALLY) {
                         $annualDates = Zend_Json::encode($request->get('schannualdates'));
                     }
                 }
             }
         }
         $workflowModel->set('schdayofmonth', $dayOfMonth);
         $workflowModel->set('schdayofweek', $dayOfWeek);
         $workflowModel->set('schannualdates', $annualDates);
     }
     // Added to save the condition only when its changed from vtiger6
     if ($filterSavedInNew == '6') {
         //Added to change advanced filter condition to workflow
         $workflowModel->transformAdvanceFilterToWorkFlowFilter();
     }
     $workflowModel->set('filtersavedinnew', $filterSavedInNew);
     $workflowModel->save();
     //Update only for scheduled workflows other than specific date
     if ($workflowScheduleType != Workflow::$SCHEDULED_ON_SPECIFIC_DATE && $executionCondition == '6') {
         $workflowModel->updateNextTriggerTime();
     }
     $response->setResult(array('id' => $workflowModel->get('workflow_id')));
     $response->emit();
 }