예제 #1
0
  /**
   * Doing a : oldArchivedContact.each {|contact_id| do_something }
   *
   * @param Object $obj
   * @param String $method_callback
   */
  function EachOldArchivedContact($obj, $method_callback) {
    $this->logger->debug("For each old archived contacts");

    $obm_q = new DB_OBM;
    $query = "SELECT contact_id FROM Contact
      WHERE contact_archive = '1'
        AND #MONTHDIFF(contact_timeupdate,now()) >= ". $this->expiration;
    $this->logger->core($query);
    $obm_q->xquery($query);
    
    while ($obm_q->next_record()) {
      $obj->$method_callback($obm_q->f('contact_id'));
    }
    
    $this->logger->info($obm_q->nf()." contacts deleted.");
  }
예제 #2
0
파일: OBM.php 프로젝트: Kervinou/OBM
 function getEventAttendees($eventId){
   $db = new DB_OBM;
   $query =  "SELECT     userobm.*
              FROM       event
              INNER JOIN eventlink ON event.event_id = eventlink.eventlink_event_id
              INNER JOIN userentity ON eventlink.eventlink_entity_id = userentity.userentity_entity_id
              INNER JOIN userobm ON userentity.userentity_user_id = userobm.userobm_id
              WHERE      event_id = '".$eventId."'";
   $db->query($query);
   if($db->nf() == 0)
     return null;
   
   $attendees = array();
   while($db->next_record()){
     $attendees[$db->f("userobm_id")] = $this->db->Record;
   }
   return $attendees;
 }
예제 #3
0
파일: contact.php 프로젝트: Kervinou/OBM
} elseif (!isset($options['w']) || !isset($options['e']) || !isset($options['t'])) {
    echo "-wet do delete -dry for dry run. You must specified one of this two options\n";
    exit;
}
if (is_numeric($options['u'])) {
    $userobm = "WHERE userobm_id = {$options['u']}";
}
$query = "SELECT userobm_id, userobm_login, id, name from UserObm INNER JOIN AddressBook ON owner = userobm_id {$userobm} GROUP BY userobm_id";
$obm_q = new DB_OBM();
$obm_q->query($query);
$obm_q2 = new DB_OBM();
while ($obm_q->next_record()) {
    $query = "SELECT \n    contact_id, contact_lastname, contact_firstname, \n    e1.email_address as contact_email,\n    e2.email_address as contact_email2,\n    WorkPhone.phone_number as contact_phone,\n    MobilePhone.phone_number as contact_mobilephone,\n    HomePhone.phone_number as contact_homephone,\n    contact_archive,\n    OtherPhone.phone_number as contact_otherphone\n    FROM Contact \n    INNER JOIN ContactEntity ON contactentity_contact_id = contact_id\n    LEFT JOIN Email e1 ON e1.email_entity_id = contactentity_entity_id AND e1.email_label = 'INTERNET;X-OBM-Ref1'\n    LEFT JOIN Email e2 ON e2.email_entity_id = contactentity_entity_id AND e2.email_label = 'INTERNET;X-OBM-Ref1'\n    LEFT JOIN Phone as WorkPhone ON WorkPhone.phone_entity_id = contactentity_entity_id AND WorkPhone.phone_label = 'WORK;VOICE;X-OBM-Ref1'\n    LEFT JOIN Phone as MobilePhone ON MobilePhone.phone_entity_id = contactentity_entity_id  AND MobilePhone.phone_label = 'CELL;VOICE;X-OBM-Ref1'\n    LEFT JOIN Phone as HomePhone ON HomePhone.phone_entity_id = contactentity_entity_id  AND HomePhone.phone_label = 'HOME;VOICE;X-OBM-Ref1'\n    LEFT JOIN Phone as OtherPhone ON OtherPhone.phone_entity_id = contactentity_entity_id  AND OtherPhone.phone_label = 'OTHER;VOICE;X-OBM-Ref1'\n    WHERE contact_addressbook_id = " . $obm_q->f('id') . " \n    ORDER BY contact_id";
    $obm_q2->query($query);
    echo "===================================================\n";
    echo "For user " . $obm_q->f('userobm_login') . " (" . $obm_q->f('userobm_id') . "), Addressbook " . $obm_q->f('name') . " (" . $obm_q->f('id') . ") : " . $obm_q2->nf() . " contacts\n";
    $contacts = array();
    while ($obm_q2->next_record()) {
        $datas = array_map('clean_values', $obm_q2->Record);
        $contacts[$obm_q2->f('contact_id')] = $datas;
    }
    $duples = array_duples($contacts);
    echo count($duples) . " contacts to delete\n";
    if (count($duples) > 0 && !$dry) {
        $query = "INSERT INTO DeletedContact SELECT contact_id, contact_usercreate, NOW() , 'kill' FROM Contact WHERE contact_id IN (" . implode(',', $duples) . ")";
        $obm_q2->query($query);
    }
}
if (!$dry) {
    $query = "DELETE FROM Entity WHERE entity_id IN (SELECT contactentity_entity_id FROM ContactEntity INNER JOIN DeletedContact ON deletedcontact_contact_id = contactentity_contact_id)";
    $obm_q->query($query);
예제 #4
0
  /**
   * getVacationToInsert 
   * 
   * @param mixed $end_time 
   * @access public
   * @return void
   */
  function getVacationToRemove($date) {
    $vacation = array();
    $obm_q = new DB_OBM;
    $db_type = $obm_q->type;
    $vacation_dateend = sql_date_format($db_type,"userobm_vacation_dateend");

    $obm_q = new DB_OBM;
    $query = "SELECT userobm_id, userobm_login, userobm_domain_id, userobm_vacation_enable FROM UserObm
      WHERE userobm_mail_perms = 1 AND userobm_vacation_dateend <= '$date' AND userobm_vacation_dateend IS NOT NULL";
    $this->logger->core($query);
    $obm_q->query($query);
    $this->logger->info($obm_q->nf()." vacations to disable");
    while($obm_q->next_record()) {
      $vacation[$obm_q->f('userobm_id')] = array("login" => $obm_q->f('userobm_login'), "domain" => $obm_q->f('userobm_domain_id'), "enable" => $obm_q->f('userobm_vacation_enable'));
    }
    $this->logger->info('List of vacation to disable : '.implode(',', array_keys($vacation)));
    return $vacation;
  }  
예제 #5
0
 /**
  * deleteDeprecatedAlerts 
  * 
  * @param mixed $date 
  * @access public
  * @return void
  */
 function deleteDeprecatedAlerts($datetime) {
   $obm_q = new DB_OBM;
   $obm2_q = new DB_OBM;
   $db_type = $obm_q->type;
   $this->logger->debug("Deleting alerts older than $datetime");
   $date = clone $datetime;
   $date = $date->setHour(0)->setMinute(0)->setSecond(0);
   $query = "
     SELECT eventalert_user_id, eventalert_event_id FROM EventAlert
     LEFT JOIN Event ON event_id = eventalert_event_id 
     WHERE 
     event_id IS NULL 
     OR (#SUBSECONDS(event_date , eventalert_duration) <= '$datetime' AND event_repeatkind = 'none')
     OR (event_endrepeat < '$date' AND event_repeatkind != 'none')";
   $obm_q = new DB_OBM;
   $this->logger->core($query);
   $obm_q->xquery($query);
   while($obm_q->next_record()) {
     $query = "DELETE FROM EventAlert WHERE eventalert_event_id = ".$obm_q->f('eventalert_event_id')."
               AND eventalert_user_id = ".$obm_q->f('eventalert_user_id');
     $this->logger->core($query);
     $obm2_q->query($query);
   }
   $this->logger->info($obm_q->nf()." alerts deleted");
 }