Exemple #1
0
 private function _list_events_between(&$data_array, $person, $from, $to)
 {
     // List user's event memberships
     $qb = midcom_db_eventmember::new_query_builder();
     $qb->add_constraint('uid', '=', $person);
     // Find all events that occur during [$from, $end]
     $qb->begin_group('OR');
     // The event begins during [$from, $to]
     $qb->begin_group('AND');
     $qb->add_constraint('eid.start', '>=', $from);
     $qb->add_constraint('eid.start', '<=', $to);
     $qb->end_group();
     // The event begins before and ends after [$from, $to]
     $qb->begin_group('AND');
     $qb->add_constraint('eid.start', '<=', $from);
     $qb->add_constraint('eid.end', '>=', $to);
     $qb->end_group();
     // The event ends during [$from, $to]
     $qb->begin_group("AND");
     $qb->add_constraint('eid.end', '>=', $from);
     $qb->add_constraint('eid.end', '<=', $to);
     $qb->end_group();
     $qb->end_group();
     $eventmembers = $qb->execute();
     foreach ($eventmembers as $eventmember) {
         $event = new org_openpsa_calendar_event_dba($eventmember->eid);
         $time = $event->start;
         $date = date('Y-m-d', $time);
         if (!array_key_exists($date, $data_array)) {
             $data_array[$date] = array();
         }
         if (!array_key_exists($time, $data_array[$date])) {
             $data_array[$date][$time] = array();
         }
         $data_array[$date][$time][$event->guid] = $event;
     }
 }
Exemple #2
0
 /**
  * Deletes all group and event memberships of the original person record. SUDO privileges
  * are used at this point, since only memberships are associated to the groups, not persons
  * and event memberships belong to the event, again not to the person.
  */
 public function _on_deleted()
 {
     if (!midcom::get('auth')->request_sudo('midcom')) {
         debug_add('Failed to get SUDO privileges, skipping membership deletion silently.', MIDCOM_LOG_ERROR);
         return;
     }
     // Delete group memberships
     $qb = midcom_db_member::new_query_builder();
     $qb->add_constraint('uid', '=', $this->id);
     $result = $qb->execute();
     if ($result) {
         foreach ($result as $membership) {
             if (!$membership->delete()) {
                 debug_add("Failed to delete membership record {$membership->id}, last Midgard error was: " . midcom_connection::get_error_string(), MIDCOM_LOG_ERROR);
             }
         }
     }
     // Delete event memberships
     $qb = midcom_db_eventmember::new_query_builder();
     $qb->add_constraint('uid', '=', $this->id);
     $result = $qb->execute();
     if ($result) {
         foreach ($result as $membership) {
             if (!$membership->delete()) {
                 debug_add("Failed to delete event membership record {$membership->id}, last Midgard error was: " . midcom_connection::get_error_string(), MIDCOM_LOG_ERROR);
             }
         }
     }
     midcom::get('auth')->drop_sudo();
 }
Exemple #3
0
 /**
  * Returns a prepared query builder which lists all eventmember records for this event.
  * No translation to persons is done.
  *
  * @return midcom_core_querybuilder A prepared QB instance.
  */
 function get_event_members_qb()
 {
     $qb = midcom_db_eventmember::new_query_builder();
     $qb->add_constraint('eid', '=', $this->id);
     return $qb;
 }