1: <?php
2: namespace Ctct\Components\Activities;
3:
4: use Ctct\Components\Component;
5: use Ctct\Util\Config;
6: use Ctct\Components\Activities\ActivityError;
7: use Ctct\Components\Activities\AddContactsImportData;
8: use Ctct\Exceptions\IllegalArgumentException;
9:
10: class AddContacts extends Component
11: {
12: public $import_data = array();
13: public $lists = array();
14: public $column_names = array();
15:
16: 17: 18: 19: 20: 21: 22:
23: public function __construct(Array $contacts, Array $lists, Array $columnNames = array())
24: {
25: if (!empty($contacts)) {
26: if ($contacts[0] instanceof AddContactsImportData) {
27: $this->import_data = $contacts;
28: } else {
29: $msg = sprintf(Config::get('errors.id_or_object'), "AddContactsImportData");
30: throw new IllegalArgumentException($msg);
31: }
32: }
33:
34: $this->lists = $lists;
35:
36: if (empty($columnNames)) {
37: $usedColumns[] = Config::get('activities_columns.email');
38: $contact = $contacts[0];
39:
40: if (isset($contact->first_name)) {
41: $usedColumns[] = Config::get('activities_columns.first_name');
42: }
43: if (isset($contact->middle_name)) {
44: $usedColumns[] = Config::get('activities_columns.middle_name');
45: }
46: if (isset($contact->last_name)) {
47: $usedColumns[] = Config::get('activities_columns.last_name');
48: }
49: if (isset($contact->job_title)) {
50: $usedColumns[] = Config::get('activities_columns.job_title');
51: }
52: if (isset($contact->company_name)) {
53: $usedColumns[] = Config::get('activities_columns.company_name');
54: }
55: if (isset($contact->work_phone)) {
56: $usedColumns[] = Config::get('activities_columns.work_phone');
57: }
58: if (isset($contact->home_phone)) {
59: $usedColumns[] = Config::get('activities_columns.home_phone');
60: }
61:
62:
63: if (!empty($contact->addresses)) {
64: $address = $contact->addresses[0];
65: if (isset($address->line1)) {
66: $usedColumns[] = Config::get('activities_columns.address1');
67: }
68: if (isset($address->line2)) {
69: $usedColumns[] = Config::get('activities_columns.address2');
70: }
71: if (isset($address->line3)) {
72: $usedColumns[] = Config::get('activities_columns.address3');
73: }
74: if (isset($address->city)) {
75: $usedColumns[] = Config::get('activities_columns.city');
76: }
77: if (isset($address->state_code)) {
78: $usedColumns[] = Config::get('activities_columns.state');
79: }
80: if (isset($address->state_province)) {
81: $usedColumns[] = Config::get('activities_columns.state_province');
82: }
83: if (isset($address->country)) {
84: $usedColumns[] = Config::get('activities_columns.country');
85: }
86: if (isset($address->postal_code)) {
87: $usedColumns[] = Config::get('activities_columns.postal_code');
88: }
89: if (isset($address->sub_postal_code)) {
90: $usedColumns[] = Config::get('activities_columns.sub_postal_code');
91: }
92: }
93:
94:
95: if (!empty($contact->custom_fields)) {
96: foreach ($contact->custom_fields as $customField) {
97: if (strpos($customField->name, 'custom_field_') !== false) {
98: $customFieldNumber = substr($customField->name, 13);
99: $usedColumns[] = Config::get('activities_columns.custom_field_' . $customFieldNumber);
100: }
101: }
102: }
103: $this->column_names = $usedColumns;
104: }
105: }
106:
107: 108: 109: 110:
111: public function toJson()
112: {
113: foreach ($this->import_data as $contact) {
114: foreach ($contact as $key => $value) {
115: if ($value == null) {
116: unset($contact->$key);
117: }
118: }
119: }
120: return json_encode($this);
121: }
122: }
123: