コード例 #1
0
ファイル: of_contact.php プロジェクト: Kervinou/OBM
  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;
  }