示例#1
0
  public function solrStore($contact) {

    $doc = new Apache_Solr_Document();

    $doc->setField('id', $contact->id);
    $doc->setField('timecreate', $contact->timecreate->format('Y-m-d\TH:i:s\Z'));
    $doc->setField('timeupdate', $contact->timeupdate->format('Y-m-d\TH:i:s\Z'));
    $doc->setField('usercreate', $contact->usercreate);
    $doc->setField('userupdate', $contact->userupdate);
    $doc->setField('datasource', $contact->datasource_id);
    $doc->setField('domain', $GLOBALS['obm']['domain_id']);
    $doc->setField('in', $contact->addressbook);
    $doc->setField('addressbookId', $contact->addressbook_id);
    $doc->setField('company', $contact->company);
    $doc->setField('companyId', $contact->company_id);
    $doc->setField('commonname', $contact->commonname);
    $doc->setField('lastname', $contact->lastname);
    $doc->setField('firstname', $contact->firstname);
    $doc->setField('middlename', $contact->mname);
    $doc->setField('sortable', $contact->lastname." ".$contact->firstname);
    $doc->setField('suffix', $contact->suffix);
    $doc->setField('aka', $contact->aka);
    $doc->setField('kind', $contact->kind);
    //$doc->setField('kind', $db->f('kind_header'));
    $doc->setField('manager', $contact->manager);
    $doc->setField('assistant', $contact->assistant);
    $doc->setField('spouse', $contact->spouse);
    $doc->setField('birthdayId', $contact->birthday_event);
    $doc->setField('anniversaryId', $contact->anniversary_event);
    if($contact->birthday) $doc->setField('birthday', $contact->birthday->format('Y-m-d\TH:i:s\Z'));
    if($contact->anniversary) $doc->setField('anniversary', $contact->anniversary->format('Y-m-d\TH:i:s\Z'));
    $doc->setField('category', $contact->category);
    foreach($contact->categories as $category) {
      foreach($category as $c) {
        $doc->setMultiValue('categoryId', $c['id']);
      }
    }
    $doc->setField('service', $contact->service);
    $doc->setField('function', $contact->function);
    $doc->setField('title', $contact->title);
    if ($contact->archive) {
      $doc->setField('is', 'archive');
    }
    if ($contact->collected) {
      $doc->setField('is', 'collected');
    }
    if ($contact->mailok) {
      $doc->setField('is', 'mailing');
    }        
    if ($contact->newsletter) {
      $doc->setField('is', 'newsletter');
    }
    if($contact->date) $doc->setField('date', $contact->date->format('Y-m-d\TH:i:s\Z'));
    $doc->setField('comment', $contact->comment);
    $doc->setField('comment2', $contact->comment2);
    $doc->setField('comment3', $contact->comment3);
    $doc->setField('from', $contact->origin);

    foreach($contact->email as $email) {
      $doc->setMultiValue('email', $email['address']);
    }

    foreach($contact->phone as $phone) {
      $doc->setMultiValue('phone', $phone['number']);
    }

    foreach($contact->im as $im) {
      $doc->setMultiValue('jabber', $im['address']);
    }

    foreach($contact->address as $address) {
      $doc->setMultiValue('street', $address['street']);
      $doc->setMultiValue('zipcode', $address['zipcode']);
      $doc->setMultiValue('expresspostal', $address['expresspostal']);
      $doc->setMultiValue('town', $address['town']);
      $doc->setMultiValue('country', $address['country']);
    }

    if($contact->hasACalendarUrl()){
      $doc->setField('hasACalendar', "true");
    }
    else {
      $doc->setField('hasACalendar', "false");
    }

    OBM_IndexingService::store('contact', array($doc));
  }