Esempio n. 1
0
 /**
  * Switch off the function to store hooks and delete all stored hooks.
  * Always call this after using otherwise we get a severe memory.
  * @param $leaveAlive boolean Set this to true if you only want to
  *   delete hooks stored so far but if you want to record future
  *   hook calls, too.
  */
 function resetCalledHooks($leaveAlive = false)
 {
     if (!$leaveAlive) {
         HookRegistry::rememberCalledHooks(false, false);
     }
     $calledHooks =& HookRegistry::getCalledHooks();
     $calledHooks = array();
 }
Esempio n. 2
0
 /**
  * @covers ArticleSearchIndex
  */
 public function testIndexSubmissionFilesViaPluginHook()
 {
     // Diverting to the search plugin hook.
     HookRegistry::register('ArticleSearchIndex::submissionFilesChanged', array($this, 'callbackIndexSubmissionFiles'));
     // The file DAOs should not be called.
     $this->registerFileDAOs(false);
     // Simulate indexing via hook.
     $article = new Article();
     $articleSearchIndex = new ArticleSearchIndex();
     $articleSearchIndex->submissionFilesChanged($article);
     // Test whether the hook was called.
     $calledHooks = HookRegistry::getCalledHooks();
     $lastHook = array_pop($calledHooks);
     self::assertEquals('ArticleSearchIndex::submissionFilesChanged', $lastHook[0]);
     // Remove the test hook.
     HookRegistry::clear('ArticleSearchIndex::submissionFilesChanged');
 }
 /**
  * @covers PKPRequest::getProtocol
  */
 public function testGetProtocolNoHttpsVariable()
 {
     $_SERVER = array();
     self::assertEquals('http', $this->request->getProtocol());
     // The hook should have been triggered once.
     self::assertEquals(array(array('Request::getProtocol', array('http'))), HookRegistry::getCalledHooks());
     // Calling getProtocol() twice should return the same
     // result without triggering the hook again.
     HookRegistry::resetCalledHooks();
     self::assertEquals('http', $this->request->getProtocol());
     self::assertEquals(array(), HookRegistry::getCalledHooks());
 }
Esempio n. 4
0
 /**
  * @covers ArticleSearch
  */
 public function testRetrieveResultsViaPluginHook()
 {
     // Diverting a search to the search plugin hook.
     HookRegistry::register('SubmissionSearch::retrieveResults', array($this, 'callbackRetrieveResults'));
     $testCases = array(array(null => 'query'), array('1' => 'author'), array('2' => 'title'), array(null => 'query', 1 => 'author', 2 => 'title'));
     $testFromDate = date('Y-m-d H:i:s', strtotime('2011-03-15 00:00:00'));
     $testToDate = date('Y-m-d H:i:s', strtotime('2012-03-15 18:30:00'));
     $error = '';
     foreach ($testCases as $testCase) {
         // Test a simple search with the simulated callback.
         $journal = new Journal();
         $keywords = $testCase;
         $articleSearch = new ArticleSearch();
         $searchResult = $articleSearch->retrieveResults($journal, $keywords, $error, $testFromDate, $testToDate);
         // Check the parameters passed into the callback.
         $expectedPage = 1;
         $expectedItemsPerPage = 20;
         $expectedTotalResults = 3;
         $expectedError = '';
         $expectedParams = array($journal, $testCase, $testFromDate, $testToDate, $expectedPage, $expectedItemsPerPage, $expectedTotalResults, $expectedError);
         self::assertEquals($expectedParams, $this->_retrieveResultsParams);
         // Test and clear the call history of the hook registry.
         $calledHooks = HookRegistry::getCalledHooks();
         self::assertEquals('SubmissionSearch::retrieveResults', $calledHooks[0][0]);
         HookRegistry::resetCalledHooks(true);
         // Test whether the result from the hook is being returned.
         self::assertInstanceOf('VirtualArrayIterator', $searchResult);
         // Test the total count.
         self::assertEquals(3, $searchResult->getCount());
         // Test the search result.
         $firstResult = $searchResult->next();
         self::assertArrayHasKey('article', $firstResult);
         self::assertEquals(SUBMISSION_SEARCH_TEST_ARTICLE_FROM_PLUGIN, $firstResult['article']->getId());
         self::assertEquals('', $error);
     }
     // Remove the test hook.
     HookRegistry::clear('SubmissionSearch::retrieveResults');
 }
Esempio n. 5
0
 /**
  * @covers PKPRouter::getIndexUrl
  */
 public function testGetIndexUrl()
 {
     $this->_setUpMockEnvironment();
     $this->setTestConfiguration('request1', 'classes/core/config', false);
     // no restful URLs
     $_SERVER = array('HOSTNAME' => 'mydomain.org', 'SCRIPT_NAME' => '/base/index.php');
     HookRegistry::resetCalledHooks();
     self::assertEquals('http://mydomain.org/base/index.php', $this->router->getIndexUrl($this->request));
     // Several hooks should have been triggered.
     self::assertEquals(array(array('Request::getServerHost', array('mydomain.org')), array('Request::getProtocol', array('http')), array('Request::getBasePath', array('/base')), array('Request::getBaseUrl', array('http://mydomain.org/base')), array('Router::getIndexUrl', array('http://mydomain.org/base/index.php'))), HookRegistry::getCalledHooks());
     // Calling getIndexUrl() twice should return the same
     // result without triggering the hooks again.
     HookRegistry::resetCalledHooks();
     self::assertEquals('http://mydomain.org/base/index.php', $this->router->getIndexUrl($this->request));
     self::assertEquals(array(), HookRegistry::getCalledHooks());
 }