/** * 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."); }
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; }
} 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);
/** * 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; }
/** * 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"); }