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