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