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;
 }