public function getStatistics($statistic_name, $date_start, $date_end)
 {
     $statistics_data = array();
     $params = array('statistic_name' => $statistic_name, 'date_start' => $date_start, 'date_end' => $date_end, 'result' => &$statistics_data);
     $this->event_manager->processEvent('get_statistics_aggregation', $params);
     return $statistics_data;
 }
 public function getProcessForQueue($request_queue)
 {
     $owner = SystemEvent::OWNER_APP;
     $custom_queues = array();
     $this->event_manager->processEvent(Event::SYSTEM_EVENT_GET_CUSTOM_QUEUES, array('queues' => &$custom_queues));
     if (isset($custom_queues[$request_queue])) {
         $this->logger = $custom_queues[$request_queue]->getLogger();
         $this->logger->debug('Processing ' . $request_queue . ' queue.');
         $process = new SystemEventProcessCustomQueue($request_queue);
         $owner = $custom_queues[$request_queue]->getOwner();
     } else {
         switch ($request_queue) {
             case SystemEvent::OWNER_APP:
                 $this->logger->debug('Processing default queue as app user.');
                 $process = new SystemEventProcessApplicationOwnerDefaultQueue();
                 break;
             case SystemEvent::DEFAULT_QUEUE:
                 $this->logger->debug('Processing default queue as root user.');
                 $owner = SystemEvent::OWNER_ROOT;
                 $process = new SystemEventProcessRootDefaultQueue();
                 break;
             default:
                 $this->logger->debug('Ignoring ' . $request_queue . ' queue.');
                 exit(0);
         }
     }
     if ($owner === SystemEvent::OWNER_APP) {
         return new SystemEventProcessor_ApplicationOwner($process, $this->system_event_manager, new SystemEventDao(), $this->logger);
     }
     return new SystemEventProcessor_Root($process, $this->system_event_manager, new SystemEventDao(), $this->logger, Backend::instance('Aliases'), Backend::instance('CVS'), Backend::instance('SVN'), Backend::instance('System'), new SiteCache($this->logger));
 }
 private function getModFromPlugins(array $project_info, $requested_authentication_method, $project_authorizes_tokens)
 {
     $svn_apache_auth = null;
     $params = array('svn_apache_auth' => &$svn_apache_auth, 'svn_conf_auth' => $requested_authentication_method, 'project_authorizes_tokens' => $project_authorizes_tokens, 'project_info' => $project_info);
     $this->event_manager->processEvent(Event::SVN_APACHE_AUTH, $params);
     return $svn_apache_auth;
 }
 public function getMilestoneRepresentation(Planning_Milestone $milestone, PFUser $user)
 {
     $milestone_representation = new MilestoneRepresentation();
     $milestone_representation->build($milestone, $this->milestone_factory->getMilestoneStatusCount($user, $milestone), $this->getBacklogTrackers($milestone), $this->milestone_factory->userCanChangePrioritiesInMilestone($milestone, $user));
     $this->event_manager->processEvent(AGILEDASHBOARD_EVENT_REST_GET_MILESTONE, array('version' => 'v1', 'user' => $user, 'milestone' => $milestone, 'milestone_representation' => &$milestone_representation));
     return $milestone_representation;
 }
 public function update(Codendi_Request $request, Response $response)
 {
     $emailgateway_mode = $request->get('emailgateway_mode');
     if ($emailgateway_mode && $this->config->setEmailgatewayMode($emailgateway_mode)) {
         $response->addFeedback(Feedback::INFO, $GLOBALS['Language']->getText('plugin_tracker_config', 'successfully_updated'));
     }
     $this->event_manager->processEvent(Event::UPDATE_ALIASES, null);
     $response->redirect($_SERVER['REQUEST_URI']);
 }
 /**
  * Import cardwall ontop from XML input
  *
  * @param SimpleXMLElement $xml_input
  * @throws CardwallFromXmlImportCannotBeEnabledException
  */
 public function import(SimpleXMLElement $xml_input)
 {
     if (!$xml_input->{CardwallConfigXml::NODE_CARDWALL}) {
         return;
     }
     $rng_path = realpath(CARDWALL_BASE_DIR . '/../www/resources/xml_project_cardwall.rng');
     $this->xml_validator->validate($xml_input->{CardwallConfigXml::NODE_CARDWALL}, $rng_path);
     $this->importCardwalls($xml_input->{CardwallConfigXml::NODE_CARDWALL});
     $this->event_manager->processEvent(Event::IMPORT_XML_PROJECT_CARDWALL_DONE, array('project_id' => $this->group_id, 'xml_content' => $xml_input, 'mapping' => $this->mapping));
 }
 private function allowSVNTokensForProject($project_to_migrate)
 {
     $project = $this->project_manager->getProjectFromAutocompleter($project_to_migrate);
     if ($project && $this->token_manager->canAuthorizeTokens($project)) {
         $this->token_manager->setProjectAuthorizesTokens($project);
         $this->event_manager->processEvent(Event::SVN_AUTHORIZE_TOKENS, array('group_id' => $project->getID()));
         $GLOBALS['Response']->addFeedback(Feedback::INFO, $GLOBALS['Language']->getText('svn_tokens', 'allowed_project_allow_project'));
     } else {
         $this->sendUpdateProjectListError();
     }
 }
 private function importContent($project_id, $file_contents)
 {
     $this->logger->info("Importing project in project {$project_id}");
     $this->checkFileIsValidXML($file_contents);
     $xml_element = simplexml_load_string($file_contents);
     $project = $this->getProject($project_id);
     $this->importUgroups($project, $xml_element);
     $this->logger->info("Ask to plugin to import data from XML");
     $this->event_manager->processEvent(Event::IMPORT_XML_PROJECT, array('project' => $project, 'xml_content' => $xml_element));
     $this->logger->info("Finish importing project in project {$project_id}");
 }
 public function updateAccess($new_value, $old_value)
 {
     if ($new_value === $old_value) {
         return;
     }
     $property_name = ForgeAccess::CONFIG;
     $this->config_dao->save($property_name, $new_value);
     $this->event_manager->processEvent(Event::SITE_ACCESS_CHANGE, array('new_value' => $new_value, 'old_value' => $old_value));
     if ($old_value === ForgeAccess::RESTRICTED || $new_value === ForgeAccess::RESTRICTED) {
         $this->project_manager->disableAllowRestrictedForAll();
         $this->permission_manager->disableRestrictedAccess();
     }
 }
 private function importContent(Project $project, $xml_contents, $extraction_path)
 {
     $project_id = $project->getID();
     $this->logger->info("Importing project in project {$project_id}");
     $this->checkFileIsValidXML($xml_contents);
     $xml_element = simplexml_load_string($xml_contents);
     $this->importUgroups($project, $xml_element);
     $svn = new SVNXMLImporter($this->logger, $this->xml_validator);
     $svn->import($project, $xml_element, $extraction_path);
     $this->logger->info("Ask to plugin to import data from XML");
     $this->event_manager->processEvent(Event::IMPORT_XML_PROJECT, array('project' => $project, 'xml_content' => $xml_element, 'extraction_path' => $extraction_path, 'user_finder' => $this->user_finder));
     $this->logger->info("Finish importing project in project {$project_id}");
 }
 /**
  * Return the group_id of an artifact_id
  * 
  * @param Integer $artifact_id
  *
  * @return Integer
  */
 protected function getGroupIdFromArtifactIdForCallbackFunction($artifact_id)
 {
     $group_id = $this->getGroupIdFromArtifactId($artifact_id);
     if ($group_id === false) {
         $this->eventManager->processEvent(Event::GET_ARTIFACT_REFERENCE_GROUP_ID, array('artifact_id' => $artifact_id, 'group_id' => &$group_id));
     }
     return $group_id;
 }
 public function itFallbackToCallHookIfGivenCallbackDoesNotExist()
 {
     $event = 'an_event';
     $params = array('some_params');
     $listener = new Event2MockEventListener($this);
     stub($listener)->CallHook($event, $params)->once();
     $em = new EventManager();
     $em->addListener($event, $listener, 'doSomething', false);
     $em->processEvent($event, $params);
 }
 private function importContent(Project $project, SimpleXMLElement $xml_element, $extraction_path)
 {
     $this->logger->info("Importing project in project " . $project->getUnixName());
     $this->importUgroups($project, $xml_element);
     $svn = new SVNXMLImporter($this->logger, $this->xml_validator);
     $svn->import($project, $xml_element, $extraction_path);
     $this->logger->info("Ask to plugin to import data from XML");
     $this->event_manager->processEvent(Event::IMPORT_XML_PROJECT, array('logger' => $this->logger, 'project' => $project, 'xml_content' => $xml_element, 'extraction_path' => $extraction_path, 'user_finder' => $this->user_finder));
     $this->logger->info("Finish importing project in project " . $project->getUnixName());
 }
 private function authenticateFromDatabase(PFUser $user, $password)
 {
     $is_auth_valid = false;
     if ($this->verifyPassword($user, $password)) {
         $user->setPassword($password);
         $this->checkPasswordStorageConformity($user);
         $is_auth_valid = true;
         $this->event_manager->processEvent(Event::SESSION_AFTER_LOGIN, array('user' => $user, 'allow_codendi_login' => &$is_auth_valid));
     }
     return $is_auth_valid;
 }
 /**
  * attach a callable directly
  *
  * @covers Phossa\Event\EventManager::attachListener
  */
 public function testAttachListener4()
 {
     // attach a callable
     $this->object->attachListener(function (Event $evt) {
         $evt->setProperty('xxx', 'bingo');
         return 10;
     }, 'bingoEvent');
     $evt = new Event('bingoEvent');
     $this->object->processEvent($evt);
     $this->assertArrayHasKey('xxx', $evt->getProperties());
 }
 private function getReference($key, $value, $ref_gid)
 {
     $reference = null;
     $project_manager = ProjectManager::instance();
     $project = $project_manager->getProject($ref_gid);
     $this->eventManager->processEvent(Event::GET_REFERENCE, array('reference_manager' => $this, 'project' => $project, 'keyword' => $key, 'value' => $value, 'group_id' => $ref_gid, 'reference' => &$reference));
     if (!$reference) {
         $num_args = substr_count($value, '/') + 1;
         $reference = $this->_getReferenceFromKeywordAndNumArgs($key, $ref_gid, $num_args);
     }
     return $reference;
 }
Exemple #17
0
 protected function fetchArtifactReferencesSidebar()
 {
     $html = '';
     $linked_artifacts = $this->artifact->getLinkedArtifacts($this->user);
     $reference_information = array();
     $this->event_manager->processEvent(TRACKER_EVENT_COMPLEMENT_REFERENCE_INFORMATION, array('artifact' => $this->artifact, 'reference_information' => &$reference_information));
     if (!empty($reference_information) || count($linked_artifacts) > 0) {
         $html .= '<div class="artifact-references">';
         $html .= '<div class="grip"><i class="icon-double-angle-left"></i></div>';
         $html .= '<div class="artifact-references-content">';
         foreach ($reference_information as $information) {
             $html .= '<div>';
             $html .= '<h2>' . $information['title'] . '</h2>';
             foreach ($information['links'] as $link) {
                 $html .= '<img src="' . $link['icon'] . '"/>';
                 $html .= '<a href="' . $link['link'] . '">' . $link['label'] . '</a>';
             }
             $html .= '</div>';
         }
         if (count($linked_artifacts) > 0) {
             $html .= '<div>';
             $html .= '<h2>' . $GLOBALS['Language']->getText('plugin_tracker_artifact', 'references_title') . '</h2>';
             $html .= '<ul>';
             foreach ($linked_artifacts as $artifact) {
                 $link = '/goto?key=' . $artifact->getTracker()->getItemName() . '&val=' . $artifact->getId() . '&group_id=' . $artifact->getTracker()->getProject()->getID();
                 $html .= '<li>';
                 $html .= '<a href="' . $link . '">' . $artifact->getXRefAndTitle() . '</a>';
                 $html .= '</li>';
             }
             $html .= '</ul>';
             $html .= '</div>';
         }
         $html .= '</div>';
         $html .= '</div>';
     }
     return $html;
 }
 private function getSearchPresenter(Search_SearchQuery $query, $results)
 {
     $project_search_types = array();
     $site_search_types = array();
     $additional_search_tabs = array();
     $redirect_to_services = true;
     $this->event_manager->processEvent(Event::SEARCH_TYPES_PRESENTERS, array('project' => $query->getProject(), 'words' => $query->getWords(), 'project_presenters' => &$project_search_types, 'site_presenters' => &$site_search_types, 'redirect_to_services' => &$redirect_to_services));
     $additional_project_search_types = $this->getAdditionnalProjectWidePresentersIfNeeded($query->getProject(), $query->getWords(), $redirect_to_services);
     $project_search_types = array_merge($additional_project_search_types, $project_search_types);
     $search_panes = array();
     if (!$query->getProject()->isError()) {
         $project_name = util_unconvert_htmlspecialchars($query->getProject()->getPublicName());
         $search_panes[] = new Search_SearchPanePresenter($GLOBALS['Language']->getText('search_index', 'project_wide_search', $project_name), $project_search_types, $GLOBALS['Language']->getText('search_index', 'no_searchable_services'));
     }
     $search_panes[] = $this->getSiteWidePane($site_search_types);
     $this->event_manager->processEvent(Event::FETCH_ADDITIONAL_SEARCH_TABS, array('additional_search_tabs' => &$additional_search_tabs));
     return new Search_Presenter_SearchPresenter($query->getTypeOfSearch(), $query->getWords(), $results, $search_panes, $additional_search_tabs, $query->getProject());
 }
 /**
  * @param int $group_id
  * @param SimpleXMLElement $xml_input
  *
  * @throws XML_ParseException
  * @return Tracker[]
  */
 public function import($group_id, SimpleXMLElement $xml_input)
 {
     if (!$xml_input->trackers) {
         return;
     }
     $this->xmlFieldsMapping = array();
     $created_trackers_list = array();
     $this->rng_validator->validate($xml_input->trackers, dirname(TRACKER_BASE_DIR) . '/www/resources/trackers.rng');
     foreach ($this->getAllXmlTrackers($xml_input) as $xml_tracker_id => $xml_tracker) {
         $created_tracker = $this->instanciateTrackerFromXml($group_id, $xml_tracker_id, $xml_tracker);
         $created_trackers_list = array_merge($created_trackers_list, $created_tracker);
     }
     $this->importHierarchy($xml_input, $created_trackers_list);
     if (isset($xml_input->trackers->triggers)) {
         $this->trigger_rulesmanager->createFromXML($xml_input->trackers->triggers, $this->xmlFieldsMapping);
     }
     $this->event_manager->processEvent(Event::IMPORT_XML_PROJECT_TRACKER_DONE, array('project_id' => $group_id, 'xml_content' => $xml_input, 'mapping' => $created_trackers_list));
     return $created_trackers_list;
 }
Exemple #20
0
 function testProcessEvent1()
 {
     //The listeners
     $l1 = new Event1MockEventListener($this);
     $l1->expectOnce('doSomething');
     $l2 = new Event1MockEventListener($this);
     $l2->expectOnce('doSomething');
     $l3 = new Event2MockEventListener($this);
     $l3->expectNever('CallHook');
     //The events
     $e1 = 'event1';
     $e2 = 'event2';
     //The event Manager
     $m = new EventManager();
     //We register the listeners for the type
     $m->addListener($e1, $l1, 'doSomething', false, 0);
     $m->addListener($e1, $l2, 'doSomething', false, 0);
     $m->addListener($e2, $l3, 'CallHook', true, 0);
     //We process event
     $params = array();
     $m->processEvent($e1, $params);
 }
 /**
  * @return SimpleXMLElement
  */
 private function exportOtherPlugins(Project $project, SimpleXMLElement $into_xml)
 {
     $this->event_manager->processEvent(AGILEDASHBOARD_EXPORT_XML, array('project' => $project, 'into_xml' => $into_xml));
 }
 protected function enhanceRedirect(Codendi_Request $request)
 {
     $this->event_manager->processEvent(TRACKER_EVENT_BUILD_ARTIFACT_FORM_ACTION, array('request' => $request, 'redirect' => $this->redirect));
 }
 private function exportPlugins(Project $project, SimpleXMLElement $into_xml, array $options, PFUser $user, ZipArchive $archive)
 {
     $this->logger->info("Export plugins");
     $params = array('project' => $project, 'options' => $options, 'into_xml' => $into_xml, 'user' => $user, 'archive' => $archive);
     $this->event_manager->processEvent(Event::EXPORT_XML_PROJECT, $params);
 }
 public function search(Search_SearchQuery $query, Search_SearchResults $results)
 {
     $params = array('query' => $query, 'results' => $results);
     $this->event_manager->processEvent(Event::SEARCH_TYPE, $params);
 }