public function import_one($campaignMailChimpID)
 {
     $MailChimpAPI = $this->get_api_instance();
     $campaign = $MailChimpAPI->get("campaigns/{$campaignMailChimpID}");
     if ($MailChimpAPI->success()) {
         $data = $this->map_fields($campaign);
         $Lists = new PerchMailChimp_Lists($this->api);
         $List = $Lists->get_one_by('listMailChimpID', $campaign['recipients']['list_id']);
         if ($List) {
             $data['listID'] = $List->id();
         }
         if (!$this->remote_campaign_exists_locally($campaign['id'])) {
             $Campaign = $this->create($data);
         } else {
             // Campaign exists
             $Campaign = $this->get_one_by('campaignMailChimpID', $campaign['id']);
             $Compaign->update($data);
         }
         if ($Campaign) {
             $Campaign->import_content($MailChimpAPI);
         }
     } else {
         PerchUtil::debug($MailChimpAPI->getLastResponse(), 'error');
     }
     return false;
 }
 public function import()
 {
     $MailChimpAPI = $this->get_api_instance();
     $lists = $MailChimpAPI->get("lists");
     if ($MailChimpAPI->success()) {
         if (isset($lists['lists']) && PerchUtil::count($lists['lists'])) {
             $all_lists = $lists['lists'];
             foreach ($all_lists as $list) {
                 $data = $this->map_fields($list);
                 if (!$this->remote_list_exists_locally($list['id'])) {
                     PerchUtil::debug('Importing list: ' . $list['id']);
                     $this->create($data);
                 } else {
                     $Lists = new PerchMailChimp_Lists($this->api);
                     $List = $Lists->get_one_by('listMailChimpID', $list['id']);
                     if ($List) {
                         $List->update($data);
                     }
                 }
             }
         }
     } else {
         PerchUtil::debug($MailChimpAPI->getLastResponse(), 'error');
     }
 }
 public function update_subscription($listMailChimpID, $subStatus)
 {
     $Lists = new PerchMailChimp_Lists($this->api);
     $List = $Lists->get_one_by('listMailChimpID', $listMailChimpID);
     if (!is_object($List)) {
         return false;
     }
     $Subscriptions = new PerchMailChimp_Subscriptions($this->api);
     $Subscription = $Subscriptions->find_subscription($List, $this);
     if (is_object($Subscription)) {
         $Subscription->update(['subStatus' => $subStatus, 'subUpdated' => date('Y-m-d H:i:s')]);
         return true;
     }
     return false;
 }
 public function lookup_and_create(array $data)
 {
     if ($this->remote_subscriber_exists_locally($data['id'])) {
         return $this->get_one_by('subscriberMailChimpID', $data['id']);
     }
     $Lists = new PerchMailChimp_Lists($this->api);
     $List = $Lists->get_one_by('listMailChimpID', $data['list_id']);
     if (!is_object($List)) {
         return false;
     }
     $MailChimpAPI = $this->get_api_instance();
     $listID = $List->listMailChimpID();
     $hash = $MailChimpAPI->subscriberHash($data['email']);
     $member = $MailChimpAPI->get("lists/{$listID}/members/{$hash}");
     if ($MailChimpAPI->success()) {
         $Subscriptions = new PerchMailChimp_Subscriptions($this->api);
         $sub_data = $this->map_fields($member);
         $sub_data['subscriberCreated'] = date('Y-m-d H:i:s');
         $Subscriber = $this->create($sub_data);
         if ($Subscriber) {
             // create subscription
             $Subscriptions->create_from_import($List, $Subscriber, $member);
         }
     }
 }