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')); }
/** * Handle the delete phase * * @param String $handler_id Name of the request handler * @param array $args Variable arguments * @param array &$data Public request data, passed by reference */ public function _handler_delete($handler_id, array $args, array &$data) { // Get the event $this->_event = new org_openpsa_calendar_event_dba($args[0]); $this->_event->require_do('midgard:delete'); $this->_request_data['delete_succeeded'] = false; // Cancel pressed if (isset($_POST['org_openpsa_calendar_delete_cancel'])) { return new midcom_response_relocate("event/{$this->_event->guid}/"); } // Delete confirmed, remove the event if (isset($_POST['org_openpsa_calendar_deleteok'])) { $this->_request_data['delete_succeeded'] = true; $this->_event->delete(); midcom::get('head')->add_jsonload('window.opener.location.reload();'); midcom::get('head')->add_jsonload('window.close();'); } $this->_request_data['event'] =& $this->_event; }
/** * Prepare the indexer client */ public function _on_reindex($topic, $config, &$indexer) { $root_event = self::find_root_event(); $qb = org_openpsa_calendar_event_dba::new_query_builder(); $qb->add_constraint('up', '=', $root_event->id); $schemadb = midcom_helper_datamanager2_schema::load_database($config->get('schemadb')); $indexer = new org_openpsa_calendar_midcom_indexer($topic, $indexer); $indexer->add_query('events', $qb, $schemadb); return $indexer; }