/** * Update the Water Mark to indicate the last data edit * @param int $dataSetId The Data Set ID to Update */ private function UpdateWatermark($dataSetId) { if ($dataSetId == 0 || $dataSetId == '') { return $this->SetError(25001, __('Missing dataSetId')); } if (!$this->updateWatermark) { return; } Debug::LogEntry('audit', sprintf('Updating water mark on DataSetId: %d', $dataSetId), 'DataSetData', 'UpdateWatermark'); try { $dbh = PDOConnect::init(); $sth = $dbh->prepare('UPDATE `dataset` SET LastDataEdit = :last_data_edit WHERE DataSetID = :dataset_id'); $sth->execute(array('last_data_edit' => time(), 'dataset_id' => $dataSetId)); // Get affected Campaigns Kit::ClassLoader('dataset'); $dataSet = new DataSet($this->db); $campaigns = $dataSet->GetCampaignsForDataSet($dataSetId); Kit::ClassLoader('display'); $display = new Display($this->db); foreach ($campaigns as $campaignId) { // Assess all displays $campaigns = $display->NotifyDisplays($campaignId); } } catch (Exception $e) { Debug::LogEntry('error', $e->getMessage()); if (!$this->IsError()) { $this->SetError(1, __('Unknown Error')); } return false; } }
/** * Sets the Layout Xml and writes it back to the database * @return * @param $layoutid Object * @param $xml Object */ public function SetLayoutXml($layoutid, $xml) { Debug::LogEntry('audit', 'IN', 'Layout', 'SetLayoutXml'); try { $dbh = PDOConnect::init(); $sth = $dbh->prepare('UPDATE layout SET xml = :xml, modifieddt = NOW() WHERE layoutID = :layoutid'); $sth->execute(array('layoutid' => $layoutid, 'xml' => $xml)); // Get the Campaign ID $campaign = new Campaign($this->db); $campaignId = $campaign->GetCampaignId($layoutid); // Notify (dont error) if (!$this->delayFinalise) { $displayObject = new Display($this->db); $displayObject->NotifyDisplays($campaignId); } Debug::LogEntry('audit', 'OUT', 'Layout', 'SetLayoutXml'); return true; } catch (Exception $e) { Debug::LogEntry('error', $e->getMessage()); if (!$this->IsError()) { $this->SetError(25007, 'Unable to Update Layout.'); } return false; } }
/** * Add * @return * @param $displayGroupIDs Object * @param $fromDT Object * @param $toDT Object * @param $layoutID Object * @param $recType Object * @param $recDetail Object * @param $recToDT Object * @param $isPriority Object * @param $userID Object * @param $displayOrder Object */ public function Add($displayGroupIDs, $fromDT, $toDT, $campaignId, $recType, $recDetail, $recToDT, $isPriority, $userID, $displayOrder = 0) { Debug::LogEntry('audit', 'IN', 'Schedule', 'Add'); try { $dbh = PDOConnect::init(); // Validation if (count($displayGroupIDs) == 0) { return $this->SetError(25001, __('No display groups selected')); } if ($userID == 0) { return $this->SetError(25001, __('No User Id Present')); } // Cant have a 0 increment as it creates a loop if ($recDetail == 0) { $recDetail = 1; } // make the displayid_list from the selected displays. $displayGroupIDList = implode(",", $displayGroupIDs); // Parameters for the query $params = array('campaignid' => $campaignId, 'displaygroupids' => $displayGroupIDList, 'userid' => $userID, 'is_priority' => $isPriority, 'fromdt' => $fromDT, 'todt' => $toDT); $SQL = ""; $SQL .= "INSERT INTO `schedule` (CampaignId, DisplayGroupIDs, userID, is_priority, FromDT, ToDT "; // Columns for Recurrence if ($recType != '' && $recType != 'null') { $SQL .= ", recurrence_type, recurrence_detail, recurrence_range "; } $SQL .= ") "; $SQL .= " VALUES ( :campaignid, :displaygroupids, :userid, :is_priority, :fromdt, :todt "; // Values for Recurrence if ($recType != '' && $recType != 'null') { $SQL .= ", :recurrence_type, :recurrence_detail, :recurrence_range "; $params['recurrence_type'] = $recType; $params['recurrence_detail'] = $recDetail; $params['recurrence_range'] = $recToDT; } $SQL .= ")"; $sth = $dbh->prepare($SQL); $sth->execute($params); // Get the event id $eventID = $dbh->lastInsertId(); // Make sure we dont just have one... if (!is_array($displayGroupIDs)) { $displayGroupIDs = array($displayGroupIDs); } // Create a detail record for each display group foreach ($displayGroupIDs as $displayGroupID) { // Add the parent detail record for this event if (!$this->AddDetail($displayGroupID, $campaignId, $fromDT, $toDT, $userID, $isPriority, $eventID, $displayOrder)) { throw new Exception("Error Processing Request", 1); } // Is there any recurrance to take care of? if ($recType != '' && $recType != 'null') { // Set the temp starts $t_start_temp = $fromDT; $t_end_temp = $toDT; Debug::LogEntry('audit', sprintf('Recurrence detected until %d. Recurrence period is %s and interval is %s.', $recToDT, $recDetail, $recType), 'Schedule', 'Add'); //loop until we have added the recurring events for the schedule while ($t_start_temp < $recToDT) { // add the appropriate time to the start and end switch ($recType) { case 'Hour': $t_start_temp = mktime(date("H", $t_start_temp) + $recDetail, date("i", $t_start_temp), date("s", $t_start_temp), date("m", $t_start_temp), date("d", $t_start_temp), date("Y", $t_start_temp)); $t_end_temp = mktime(date("H", $t_end_temp) + $recDetail, date("i", $t_end_temp), date("s", $t_end_temp), date("m", $t_end_temp), date("d", $t_end_temp), date("Y", $t_end_temp)); break; case 'Day': $t_start_temp = mktime(date("H", $t_start_temp), date("i", $t_start_temp), date("s", $t_start_temp), date("m", $t_start_temp), date("d", $t_start_temp) + $recDetail, date("Y", $t_start_temp)); $t_end_temp = mktime(date("H", $t_end_temp), date("i", $t_end_temp), date("s", $t_end_temp), date("m", $t_end_temp), date("d", $t_end_temp) + $recDetail, date("Y", $t_end_temp)); break; case 'Week': $t_start_temp = mktime(date("H", $t_start_temp), date("i", $t_start_temp), date("s", $t_start_temp), date("m", $t_start_temp), date("d", $t_start_temp) + $recDetail * 7, date("Y", $t_start_temp)); $t_end_temp = mktime(date("H", $t_end_temp), date("i", $t_end_temp), date("s", $t_end_temp), date("m", $t_end_temp), date("d", $t_end_temp) + $recDetail * 7, date("Y", $t_end_temp)); break; case 'Month': $t_start_temp = mktime(date("H", $t_start_temp), date("i", $t_start_temp), date("s", $t_start_temp), date("m", $t_start_temp) + $recDetail, date("d", $t_start_temp), date("Y", $t_start_temp)); $t_end_temp = mktime(date("H", $t_end_temp), date("i", $t_end_temp), date("s", $t_end_temp), date("m", $t_end_temp) + $recDetail, date("d", $t_end_temp), date("Y", $t_end_temp)); break; case 'Year': $t_start_temp = mktime(date("H", $t_start_temp), date("i", $t_start_temp), date("s", $t_start_temp), date("m", $t_start_temp), date("d", $t_start_temp), date("Y", $t_start_temp) + $recDetail); $t_end_temp = mktime(date("H", $t_end_temp), date("i", $t_end_temp), date("s", $t_end_temp), date("m", $t_end_temp), date("d", $t_end_temp), date("Y", $t_end_temp) + $recDetail); break; } // after we have added the appropriate amount, are we still valid if ($t_start_temp > $recToDT) { break; } if (!$this->AddDetail($displayGroupID, $campaignId, $t_start_temp, $t_end_temp, $userID, $isPriority, $eventID, $displayOrder)) { throw new Exception("Error Processing Request", 1); } } } } // Notify (dont error) Kit::ClassLoader('Display'); $displayObject = new Display($this->db); $displayObject->NotifyDisplays($campaignId); Debug::LogEntry('audit', 'OUT', 'Schedule', 'Add'); return true; } catch (Exception $e) { Debug::LogEntry('error', $e->getMessage()); if (!$this->IsError()) { $this->SetError(25001, __('Could not INSERT a new Schedule')); } return false; } }