/**
  * Get an individual contact list
  * @param $accessToken - Constant Contact OAuth2 access token
  * @param $list_id - list id
  * @return ContactList
  */
 public function getList($accessToken, $list_id)
 {
     $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.list'), $list_id);
     $url = $this->buildUrl($baseUrl);
     $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
     return ContactList::create(json_decode($response->body, true));
 }
 public function testUpdateList()
 {
     $response = self::$client->put('/');
     $list = ContactList::create($response->json());
     $this->assertInstanceOf('Ctct\\Components\\Contacts\\ContactList', $list);
     $this->assertEquals(6, $list->id);
     $this->assertEquals("Test List 4", $list->name);
     $this->assertEquals("HIDDEN", $list->status);
     $this->assertEquals(19, $list->contact_count);
 }
Exemple #3
0
 /**
  * Factory method to create a Contact object from an array
  * @param array $props - Associative array of initial properties to set
  * @return Contact
  */
 public static function create(array $props)
 {
     $contact = new Contact();
     $contact->id = parent::getValue($props, "id");
     $contact->status = parent::getValue($props, "status");
     $contact->first_name = parent::getValue($props, "first_name");
     $contact->middle_name = parent::getValue($props, "middle_name");
     $contact->last_name = parent::getValue($props, "last_name");
     $contact->confirmed = parent::getValue($props, "confirmed");
     $contact->source = parent::getValue($props, "source");
     if (isset($props['email_addresses'])) {
         foreach ($props['email_addresses'] as $email_address) {
             $contact->email_addresses[] = EmailAddress::create($email_address);
         }
     }
     $contact->prefix_name = parent::getValue($props, "prefix_name");
     $contact->job_title = parent::getValue($props, "job_title");
     if (isset($props['addresses'])) {
         foreach ($props['addresses'] as $address) {
             $contact->addresses[] = Address::create($address);
         }
     }
     if (isset($props['notes'])) {
         foreach ($props['notes'] as $note) {
             $contact->notes[] = Note::create($note);
         }
     }
     $contact->company_name = parent::getValue($props, "company_name");
     $contact->home_phone = parent::getValue($props, "home_phone");
     $contact->work_phone = parent::getValue($props, "work_phone");
     $contact->cell_phone = parent::getValue($props, "cell_phone");
     $contact->fax = parent::getValue($props, "fax");
     if (isset($props['custom_fields'])) {
         foreach ($props['custom_fields'] as $custom_field) {
             $contact->custom_fields[] = CustomField::create($custom_field);
         }
     }
     if (isset($props['lists'])) {
         foreach ($props['lists'] as $contact_list) {
             $contact->lists[] = ContactList::create($contact_list);
         }
     }
     $contact->created_date = parent::getValue($props, "created_date");
     $contact->modified_date = parent::getValue($props, "modified_date");
     $contact->source_details = parent::getValue($props, "source_details");
     return $contact;
 }
 /**
  * Factory method to create a Campaign object from an array
  * @param array $props - associative array of initial properties to set
  * @return Campaign
  */
 public static function create(array $props)
 {
     $campaign = new Campaign();
     $campaign->id = parent::getValue($props, "id");
     $campaign->name = parent::getValue($props, "name");
     $campaign->subject = parent::getValue($props, "subject");
     $campaign->from_name = parent::getValue($props, "from_name");
     $campaign->from_email = parent::getValue($props, "from_email");
     $campaign->reply_to_email = parent::getValue($props, "reply_to_email");
     $campaign->template_type = parent::getValue($props, "template_type");
     $campaign->created_date = parent::getValue($props, "created_date");
     $campaign->modified_date = parent::getValue($props, "modified_date");
     $campaign->last_run_date = parent::getValue($props, "last_run_date");
     $campaign->next_run_date = parent::getValue($props, "next_run_date");
     $campaign->status = parent::getValue($props, "status");
     $campaign->is_permission_reminder_enabled = parent::getValue($props, "is_permission_reminder_enabled");
     $campaign->permission_reminder_text = parent::getValue($props, "permission_reminder_text");
     $campaign->is_view_as_webpage_enabled = parent::getValue($props, "is_view_as_webpage_enabled");
     $campaign->view_as_web_page_text = parent::getValue($props, "view_as_web_page_text");
     $campaign->view_as_web_page_link_text = parent::getValue($props, "view_as_web_page_link_text");
     $campaign->greeting_salutations = parent::getValue($props, "greeting_salutations");
     $campaign->greeting_name = parent::getValue($props, "greeting_name");
     $campaign->greeting_string = parent::getValue($props, "greeting_string");
     if (array_key_exists("message_footer", $props)) {
         $campaign->message_footer = MessageFooter::create($props['message_footer']);
     }
     if (array_key_exists("tracking_summary", $props)) {
         $campaign->tracking_summary = TrackingSummary::create($props['tracking_summary']);
     }
     $campaign->email_content = parent::getValue($props, "email_content");
     $campaign->email_content_format = parent::getValue($props, "email_content_format");
     $campaign->style_sheet = parent::getValue($props, "style_sheet");
     $campaign->text_content = parent::getValue($props, "text_content");
     if (array_key_exists('sent_to_contact_lists', $props)) {
         foreach ($props['sent_to_contact_lists'] as $sent_to_contact_list) {
             $campaign->sent_to_contact_lists[] = ContactList::create($sent_to_contact_list);
         }
     }
     if (array_key_exists('click_through_details', $props)) {
         foreach ($props['click_through_details'] as $click_through_details) {
             $campaign->click_through_details[] = ClickThroughDetails::create($click_through_details);
         }
     }
     return $campaign;
 }
 /**
  * Clean and parse an array of contact details to be in CTCT format
  *
  * The method filters out any data not allowed by Constant Contact, so you don't
  * need to worry about having just the right details.
  *
  * It converts `email`, `email_address` and `user_email` into the
  * proper `email_addresses` array so you don't have to.
  *
  * @param  array $contact_array Contact information.
  * @param  boolean $add [description]
  *
  * @return [type]                 [description]
  */
 private function prepare(array $contact_array, $add = false)
 {
     $defaults = array('id' => NULL, 'status' => NULL, 'name' => NULL, 'first_name' => NULL, 'middle_name' => NULL, 'last_name' => NULL, 'source' => NULL, 'email_addresses' => array(), 'email' => NULL, 'email_address' => NULL, 'user_email' => NULL, 'prefix_name' => NULL, 'job_title' => NULL, 'addresses' => array(), 'address' => NULL, 'address_line1' => NULL, 'address_line2' => NULL, 'address_line3' => NULL, 'address_city' => NULL, 'address_state_code' => NULL, 'address_state_name' => NULL, 'address_country_code' => NULL, 'address_postal_code' => NULL, 'address_sub_postal_code' => NULL, 'notes' => array(), 'company_name' => NULL, 'home_phone' => NULL, 'work_phone' => NULL, 'cell_phone' => NULL, 'fax' => NULL, 'custom_fields' => array(), 'lists' => array(), 'source_details' => CTCT_APIKEY);
     $Contact = wp_parse_args($contact_array, $defaults);
     # r($contact_array);
     # r($Contact);
     foreach ($Contact as $k => $v) {
         /** Only allow permitted data in the Contact array */
         if (!array_key_exists($k, $defaults)) {
             // @todo: Add logging notice.
             unset($Contact[$k]);
         }
         switch ($k) {
             case 'user_email':
                 if (!empty($v)) {
                     $Contact['email'] = $Contact['user_email'];
                 }
                 unset($Contact['user_email']);
                 break;
             case 'name':
                 $Contact = $this->prepareName($Contact);
                 unset($Contact['name']);
                 break;
             case 'CustomField1':
             case 'CustomField2':
             case 'CustomField3':
             case 'CustomField4':
             case 'CustomField5':
             case 'CustomField6':
             case 'CustomField7':
             case 'CustomField8':
             case 'CustomField9':
             case 'CustomField10':
             case 'CustomField11':
             case 'CustomField12':
             case 'CustomField13':
             case 'CustomField14':
             case 'CustomField15':
                 $Contact['custom_fields'][] = array('name' => $k, 'value' => $v);
                 unset($Contact[$k]);
                 break;
             case 'address_line1':
             case 'address_line2':
             case 'address_line3':
             case 'address_city':
             case 'address_state_code':
             case 'address_state_name':
             case 'address_country_code':
             case 'address_postal_code':
             case 'address_sub_postal_code':
                 $Contact['address'][str_replace('address_', '', $k)] = $v;
                 unset($Contact[$k]);
                 break;
         }
     }
     if (!empty($Contact['email_address']) && empty($Contact['email_addresses'])) {
         $Contact['email_addresses'] = array($Contact['email_address']);
     }
     unset($Contact['email_address']);
     if (!empty($Contact['email']) && empty($Contact['email_addresses'])) {
         $Contact['email_addresses'] = array($Contact['email']);
     }
     unset($Contact['email']);
     $Contact['email_addresses'] = (array) $Contact['email_addresses'];
     if (empty($Contact['email_addresses'])) {
         return new WP_Error('no_email_address', 'There was no email defined.', $Contact);
     }
     foreach ($Contact['email_addresses'] as &$email_address) {
         $email_address = EmailAddress::create(array('email_address' => $email_address));
     }
     if (!empty($Contact['address']) && empty($Contact['addresses'])) {
         $Contact['address'] = $this->prepareAddress($Contact['address']);
         $Contact['addresses'] = array($Contact['address']);
     }
     unset($Contact['address']);
     if (!empty($Contact['addresses'])) {
         $Contact['addresses'] = (array) $Contact['addresses'];
         foreach ($Contact['addresses'] as $key => &$address) {
             $check_address = $address;
             foreach ($check_address as $k => $v) {
                 if (empty($v)) {
                     unset($check_address[$k]);
                 }
             }
             if (empty($check_address)) {
                 unset($address, $Contact['addresses'][$key]);
                 continue;
             }
             $address['address_type'] = strtoupper($address['address_type']);
             if (!in_array($address['address_type'], array('PERSONAL', 'BUSINESS', 'UNKNOWN'))) {
                 $address['address_type'] = 'PERSONAL';
             }
             $address = Address::create($this->prepareAddress((array) $address));
         }
         if (empty($Contact['addresses'])) {
             unset($Contact['addresses']);
         }
     }
     if (isset($Contact['notes'])) {
         unset($Contact['notes']);
         /*// CTCT got rid of updating notes for now.
         		$Contact['notes'] = array( $Contact['notes'] );
         		foreach( $Contact['notes'] as &$note) {
         			$note = is_array($note) ? $note : array('note' => $note);
         			$note = Note::create($note);
         		}*/
     }
     if (isset($Contact['custom_fields'])) {
         $Contact['custom_fields'] = (array) $Contact['custom_fields'];
         foreach ($Contact['custom_fields'] as &$custom_field) {
             $custom_field = CustomField::create($custom_field);
         }
     }
     if (isset($Contact['lists'])) {
         $Contact['lists'] = (array) $Contact['lists'];
         foreach ($Contact['lists'] as &$contact_list) {
             if (is_numeric($contact_list)) {
                 $contact_list = array('id' => (string) $contact_list);
             }
             $contact_list = ContactList::create($contact_list);
         }
     }
     if ($add || !in_array($Contact['status'], array('ACTIVE', 'UNCONFIRMED', 'OPTOUT', 'REMOVED', 'NON_SUBSCRIBER', 'VISITOR'))) {
         unset($Contact['status']);
     }
     if ($add) {
         unset($Contact['id'], $Contact['confirmed']);
     }
     return $Contact;
 }
 /**
  * Get an individual contact list
  * @param $accessToken - Constant Contact OAuth2 access token
  * @param $listId - list id
  * @return ContactList
  * @throws CtctException
  */
 public function getList($accessToken, $listId)
 {
     $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.list'), $listId);
     $request = parent::createBaseRequest($accessToken, 'GET', $baseUrl);
     try {
         $response = parent::getClient()->send($request);
     } catch (ClientException $e) {
         throw parent::convertException($e);
     }
     return ContactList::create($response->json());
 }