public function testCRUD() { midcom::get('auth')->request_sudo('org.openpsa.calendar'); $event = new org_openpsa_calendar_event_dba(); $stat = $event->create(); $this->assertTrue($stat); $this->register_object($event); $root_event = org_openpsa_calendar_interface::find_root_event(); $this->assertEquals($root_event->id, $event->up); $stat = $event->update(); $this->assertFalse($stat); $start = $this->_mktime(time() - 60 * 60); $event->start = $start; $stat = $event->update(); $this->assertFalse($stat); $end = $this->_mktime(time() + 60 * 60); $event->end = $end; $stat = $event->update(); $this->assertTrue($stat); $this->assertEquals($start + 1, $event->start); $this->assertEquals($end, $event->end); $stat = $event->delete(); $this->assertTrue($stat); midcom::get('auth')->drop_sudo(); }
/** * Display possible available resources * * @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_resourcing($handler_id, array $args, array &$data) { $this->_task = new org_openpsa_projects_task_dba($args[0]); $this->_task->require_do('midgard:create'); if (array_key_exists('org_openpsa_projects_prospects', $_POST) && $_POST['save']) { foreach ($_POST['org_openpsa_projects_prospects'] as $prospect_guid => $slots) { try { $prospect = new org_openpsa_projects_task_resource_dba($prospect_guid); } catch (midcom_error $e) { continue; } $update_prospect = false; foreach ($slots as $slotdata) { if (!array_key_exists('used', $slotdata) || empty($slotdata['used'])) { // Slot not selected, skip continue; } $prospect->orgOpenpsaObtype = ORG_OPENPSA_OBTYPE_PROJECTRESOURCE; $update_prospect = true; // Create event from slot $event = new org_openpsa_calendar_event_dba(); $event->start = $slotdata['start']; $event->end = $slotdata['end']; $event->search_relatedtos = false; $event->title = sprintf($this->_l10n->get('work for task %s'), $this->_task->title); if (!$event->create()) { // TODO: error reporting continue; } $participant = new org_openpsa_calendar_event_member_dba(); $participant->orgOpenpsaObtype = ORG_OPENPSA_OBTYPE_EVENTPARTICIPANT; $participant->uid = $prospect->person; $participant->eid = $event->id; $participant->create(); // create relatedto if (!org_openpsa_relatedto_plugin::create($event, 'org.openpsa.calendar', $this->_task, 'org.openpsa.projects')) { // TODO: delete event ??? } } } if ($update_prospect) { if (!$prospect->update()) { // TODO: error handling } } return new midcom_response_relocate("task/{$this->_task->guid}/"); } else { if (!empty($_POST['cancel'])) { return new midcom_response_relocate("task/{$this->_task->guid}/"); } } $this->_prepare_request_data($handler_id); midcom::get('head')->set_pagetitle($this->_task->title); $this->bind_view_to_object($this->_task); org_openpsa_projects_viewer::add_breadcrumb_path($data['task'], $this); $this->add_breadcrumb("task/resourcing/{$this->_task->guid}/", $this->_l10n->get('resourcing')); }