public function onAfterWrite() { parent::onAfterWrite(); // On Event Creation Instanciate New MCListSegment Object(s) if ($this->owner->isChanged("ID") && $this->getFirstWrite()) { if (!empty($this->_AffectedMCListIDs)) { $ListData = explode(',', $this->_AffectedMCListIDs); foreach ($ListData as $ListID) { $seg = new MCListSegment(); $seg->setField("MCListID", $ListID); $seg->setField("EventID", $this->owner->ID); $seg->setField("Title", "Event " . $this->owner->ID . ": " . $this->owner->getTitle()); $seg->write(); } } } // END: if($this->isChanged("ID")) { $this->setFirstWrite(false); }
public function UpdateSegments($list = null) { if (!is_object($list)) { SS_Log::log("UpdateSegments() Requireds a MCList Object Parameter!", SS_Log::ERR); return false; } $api = new MCAPI($this->apikey); $retval = $api->listStaticSegments($list->ListID); if ($api->errorCode) { SS_Log::log("API Call Failed: listStaticSegments('" . $list->ListID . "); Error Code = " . $api->errorCode . " | Error Message = " . $api->errorMessage, SS_Log::ERR); return false; } else { SS_Log::log("API Call Success: listStaticSegments('" . $list->ListID . ");", SS_Log::NOTICE); if (!empty($retval)) { $LiveSegmentIDs = array(); foreach ($retval as $segment) { $dl = new DataList("MCListSegment"); $seg = $dl->where("\"MCListSegmentID\" = '" . $segment['id'] . "'")->first(); // Create New Segment If It Doesnt Yet Exist On The Site (i.e. It Was Created On MailChimp) if (empty($seg)) { $seg = new MCListSegment(); $seg->setField("Title", $segment['name']); $seg->setField("MCListSegmentID", $segment['id']); $seg->setField("MCListID", $list->ID); $seg->setSyncMailChimp(false); $seg->write(); } $LiveSegmentIDs[] = $segment['id']; } } // Get List of Segments Which Exist On Site But Not On MailChimp $where = "\"MCListID\" = '" . $list->ID . "'"; $where .= !empty($LiveSegmentIDs) ? "AND \"MCListSegmentID\" NOT IN (" . $this->arrayToCSV($LiveSegmentIDs) . ")" : ""; // Don't Delete Segments Which Still Exist $dl = new DataList("MCListSegment"); $deadSegs = $dl->where($where); // Delete Dead Segments (Deleted On MailChimp Directly) if (!empty($deadSegs)) { foreach ($deadSegs as $deadSeg) { $deadSeg->setSyncMailChimp(false); $deadSeg->delete(); } } } return true; }