public static function create($data, $addressbook) { global $cgp_show, $cdg_sql, $obm; $uid = sql_parse_id($obm['uid']); $domain_id = sql_parse_id($obm['domain_id']); $data['aka'] = trim($data['aka']); $data['sound'] = phonetic_key($data['lastname']); $add_comment = $data['add_comment']; if ($add_comment != '') { $datecomment = of_isodate_convert($data['datecomment']); $usercomment = $data['usercomment']; $data['comment'] = "\n$datecomment:$usercomment:$add_comment"; } $add_comment2 = $data['add_comment']; if ($add_comment2 != '') { $datecomment2 = of_isodate_convert($data['datecomment2']); $usercomment2 = $data['usercomment2']; $data['comment2'] = "\n$datecomment2:$usercomment2:$add_comment2"; } $add_comment3 = $data['add_comment3']; if ($add_comment3 != '') { $datecomment3 = of_isodate_convert($data['datecomment3']); $usercomment3 = $data['usercomment3']; $data['comment3'] = "\n$datecomment3:$usercomment3:$add_comment3"; } $data['mailok'] = ($data['mailok'] == '1' ? '1' : '0'); $data['newsletter'] = ($data['newsletter'] == '1' ? '1' : '0'); $data['archive'] = ($data['archive'] == '1' ? '1' : '0'); if (empty($data['datasource_id'])) $data['datasource_id'] = $data['datasource']; $contact = new OBM_Contact; $contact->lastname = $data['lastname']; $contact->firstname = $data['firstname']; $fields = array('commonname','mname','kind','title','function','company_id','company', 'market_id','suffix','aka','sound','manager','assistant','spouse','category', 'service','mailok','newsletter','archive','comment','comment2','comment3', 'origin' ); foreach($fields as $field) { $contact->$field = $data[$field]; } $date_fields = array('date','birthday','anniversary'); foreach($date_fields as $field) { if (isset($data[$field])) { $date = of_isodate_convert($data[$field], true); $contact->$field = (!empty($date) ? new Of_Date($date) : null); } } $contact->phone = is_array($data['phones']) ? $data['phones'] : array(); $contact->email = is_array($data['emails']) ? $data['emails'] : array(); $contact->address = is_array($data['addresses'])? $data['addresses'] : array(); $contact->im = is_array($data['ims']) ? $data['ims'] : array(); $contact->website = is_array($data['websites']) ? $data['websites'] : array(); $comp_id = sql_parse_id($contact->company_id); $dsrc = sql_parse_id($contact->datasource_id); $kind = sql_parse_id($contact->kind); $market_id = sql_parse_id($contact->market_id); $func = sql_parse_id($contact->function); $contact->addressbook_id = $addressbook->id; $date = ($contact->date ? "'{$contact->date}'" : 'null'); $query = "INSERT INTO Contact (contact_timeupdate, contact_timecreate, contact_userupdate, contact_usercreate, contact_domain_id, contact_datasource_id, contact_company_id, contact_company, contact_kind_id, contact_marketingmanager_id, contact_lastname, contact_firstname, contact_commonname, contact_middlename, contact_suffix, contact_aka, contact_sound, contact_manager, contact_assistant, contact_spouse, contact_category, contact_service, contact_function_id, contact_title, contact_mailing_ok, contact_newsletter, contact_archive, contact_date, contact_comment, contact_comment2, contact_comment3, contact_origin, contact_addressbook_id ) VALUES ( NOW(), NOW(), $uid, $uid, $domain_id, $dsrc, $comp_id, '{$contact->company}', $kind, $market_id, '{$contact->lastname}', '{$contact->firstname}', '{$contact->commonname}', '{$contact->mname}', '{$contact->suffix}', '{$contact->aka}', '{$contact->sound}', '{$contact->manager}', '{$contact->assistant}', '{$contact->spouse}', '{$contact->category}', '{$contact->service}', $func, '{$contact->title}', {$contact->mailok}, {$contact->newsletter}, {$contact->archive}, $date, '{$contact->comment}', '{$contact->comment2}', '{$contact->comment3}', '{$GLOBALS['c_origin_web']}', '{$addressbook->id}' )"; display_debug_msg($query, $cdg_sql, 'OBM_Contact:create(1)'); $obm_q = new DB_OBM; $retour = $obm_q->query($query); $contact->id = $obm_q->lastid(); if ($contact->id > 0) { if (($cgp_show['module']['company']) && ($retour)) { run_query_global_company_contact_number_update($comp_id); } $contact->entity_id = of_entity_insert('contact',$contact->id); // Birthday & Anniversary support //FIXME: do it better if (!is_null($contact->birthday)) { self::storeAnniversary('birthday', $contact->id, $uid, null, $contact->display_name(), null, $contact->birthday); } if (!is_null($contact->anniversary)) { self::storeAnniversary('anniversary', $contact->id, $uid, null, $contact->display_name(), null, $contact->anniversary); } //FIXME: do it better self::storeCoords($contact); of_userdata_query_update('contact', $contact->id, $data); } OBM_AddressBook::timestamp($addressbook->id); $ret = OBM_Contact::get($contact->id); // Indexing Contact self::solrStore($ret); return $ret; }