Esempio n. 1
0
 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();
 }
Esempio n. 2
0
 /**
  * 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'));
 }
Esempio n. 3
0
 /**
  * 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;
 }
Esempio n. 4
0
 /**
  * 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;
 }