Esempio n. 1
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_day($handler_id, array $args, array &$data)
 {
     // Generate start/end timestamps for the day
     $requested_time = @strtotime($args[0]);
     if (!$requested_time) {
         throw new midcom_error('could not generate time from ' . $args[0]);
     }
     // Use calendar widget for time calculations
     $this->_request_data['calendar'] = new org_openpsa_widgets_calendar(date('Y', $requested_time), date('m', $requested_time), date('d', $requested_time));
     $this->_request_data['calendar']->type = org_openpsa_widgets_calendar::DAY;
     $from = $this->_request_data['calendar']->get_day_start();
     $to = $this->_request_data['calendar']->get_day_end();
     // List user's event memberships
     $mc = midcom_db_eventmember::new_collector('uid', midcom_connection::get_user());
     // Find all events that occur during [$from, $end]
     $mc->begin_group("OR");
     // The event begins during [$from, $to]
     $mc->begin_group("AND");
     $mc->add_constraint("eid.start", ">=", $from);
     $mc->add_constraint("eid.start", "<=", $to);
     $mc->end_group();
     // The event begins before and ends after [$from, $to]
     $mc->begin_group("AND");
     $mc->add_constraint("eid.start", "<=", $from);
     $mc->add_constraint("eid.end", ">=", $to);
     $mc->end_group();
     // The event ends during [$from, $to]
     $mc->begin_group("AND");
     $mc->add_constraint("eid.end", ">=", $from);
     $mc->add_constraint("eid.end", "<=", $to);
     $mc->end_group();
     $mc->end_group();
     $eventmembers = $mc->get_values('eid');
     $this->_request_data['events'] = array();
     foreach ($eventmembers as $eid) {
         $this->_request_data['events'][] = new org_openpsa_calendar_event_dba($eid);
     }
 }
Esempio n. 2
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;
     }
 }
Esempio n. 3
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();
 }
Esempio n. 4
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;
 }