コード例 #1
0
 /**
  * Tests the setState method with an invalid data object
  *
  * @return  void
  *
  * @since   3.0
  */
 public function testSetStateBadData()
 {
     // Set up our test object
     $test = new Registry();
     $test->set('string', 'Testing FinderIndexer::setState()');
     // Attempt to set the state
     $this->assertFalse(FinderIndexer::setState($test), 'setState method is not compatible with Registry');
 }
コード例 #2
0
ファイル: indexer.json.php プロジェクト: grlf/eyedock
 /**
  * Method to run the next batch of content through the indexer.
  *
  * @return  void
  *
  * @since   2.5
  */
 public function batch()
 {
     static $log;
     $params = JComponentHelper::getParams('com_finder');
     if ($params->get('enable_logging', '0')) {
         if ($log == null) {
             $options['format'] = '{DATE}\\t{TIME}\\t{LEVEL}\\t{CODE}\\t{MESSAGE}';
             $options['text_file'] = 'indexer.php';
             $log = JLog::addLogger($options);
         }
     }
     // Log the start
     JLog::add('Starting the indexer batch process', JLog::INFO);
     // We don't want this form to be cached.
     header('Pragma: no-cache');
     header('Cache-Control: no-cache');
     header('Expires: -1');
     // Check for a valid token. If invalid, send a 403 with the error message.
     JSession::checkToken('request') or $this->sendResponse(new Exception(JText::_('JINVALID_TOKEN'), 403));
     // Put in a buffer to silence noise.
     ob_start();
     // Remove the script time limit.
     @set_time_limit(0);
     // Get the indexer state.
     $state = FinderIndexer::getState();
     // Reset the batch offset.
     $state->batchOffset = 0;
     // Update the indexer state.
     FinderIndexer::setState($state);
     // Import the finder plugins.
     JPluginHelper::importPlugin('finder');
     /*
      * We are going to swap out the raw document object with an HTML document
      * in order to work around some plugins that don't do proper environment
      * checks before trying to use HTML document functions.
      */
     $raw = clone JFactory::getDocument();
     $lang = JFactory::getLanguage();
     // Get the document properties.
     $attributes = array('charset' => 'utf-8', 'lineend' => 'unix', 'tab' => '  ', 'language' => $lang->getTag(), 'direction' => $lang->isRtl() ? 'rtl' : 'ltr');
     // Get the HTML document.
     $html = JDocument::getInstance('html', $attributes);
     $doc = JFactory::getDocument();
     // Swap the documents.
     $doc = $html;
     // Get the admin application.
     $admin = clone JFactory::getApplication();
     // Get the site app.
     $site = JApplication::getInstance('site');
     // Swap the app.
     $app = JFactory::getApplication();
     $app = $site;
     // Start the indexer.
     try {
         // Trigger the onBeforeIndex event.
         JEventDispatcher::getInstance()->trigger('onBeforeIndex');
         // Trigger the onBuildIndex event.
         JEventDispatcher::getInstance()->trigger('onBuildIndex');
         // Get the indexer state.
         $state = FinderIndexer::getState();
         $state->start = 0;
         $state->complete = 0;
         // Swap the documents back.
         $doc = $raw;
         // Swap the applications back.
         $app = $admin;
         // Send the response.
         $this->sendResponse($state);
     } catch (Exception $e) {
         // Swap the documents back.
         $doc = $raw;
         // Send the response.
         $this->sendResponse($e);
     }
 }
コード例 #3
0
 /**
  * Tests the setState method with an invalid data object
  *
  * @return  void
  *
  * @since   3.0
  */
 public function testSetStateBadData()
 {
     // Override the database in this method
     $this->saveFactoryDatabase();
     // Set up our test object
     $test = new JRegistry();
     $test->set('string', 'Testing FinderIndexer::setState()');
     // Attempt to set the state
     $this->assertThat(FinderIndexer::setState($test), $this->isFalse(), 'setState method is not compatible with JRegistry');
     // Restore the database
     $this->restoreFactoryDatabase();
 }
コード例 #4
0
ファイル: adapter.php プロジェクト: fur81/zofaxiopeu
 /**
  * Method to index a batch of content items. This method can be called by
  * the indexer many times throughout the indexing process depending on how
  * much content is available for indexing. It is important to track the
  * progress correctly so we can display it to the user.
  *
  * @return  boolean  True on success.
  *
  * @since   2.5
  * @throws  Exception on error.
  */
 public function onBuildIndex()
 {
     // Get the indexer and adapter state.
     $iState = FinderIndexer::getState();
     $aState = $iState->pluginState[$this->context];
     // Check the progress of the indexer and the adapter.
     if ($iState->batchOffset == $iState->batchSize || $aState['offset'] == $aState['total']) {
         return true;
     }
     // Get the batch offset and size.
     $offset = (int) $aState['offset'];
     $limit = (int) ($iState->batchSize - $iState->batchOffset);
     // Get the content items to index.
     $items = $this->getItems($offset, $limit);
     // Iterate through the items and index them.
     for ($i = 0, $n = count($items); $i < $n; $i++) {
         // Index the item.
         $this->index($items[$i]);
         // Adjust the offsets.
         $offset++;
         $iState->batchOffset++;
         $iState->totalItems--;
     }
     // Update the indexer state.
     $aState['offset'] = $offset;
     $iState->pluginState[$this->context] = $aState;
     FinderIndexer::setState($iState);
     return true;
 }
コード例 #5
0
ファイル: kunena.php プロジェクト: giabmf11/Kunena-Forum
 /**
  * Method to index a batch of content items. This method can be called by
  * the indexer many times throughout the indexing process depending on how
  * much content is available for indexing. It is important to track the
  * progress correctly so we can display it to the user.
  *
  * @return  boolean  True on success.
  *
  * @since   2.5
  * @throws  Exception on error.
  */
 public function onBuildIndex()
 {
     JLog::add('FinderIndexerAdapter::onBuildIndex', JLog::INFO);
     // Get the indexer and adapter state.
     $iState = FinderIndexer::getState();
     $aState = $iState->pluginState[$this->context];
     // Check the progress of the indexer and the adapter.
     if ($iState->batchOffset == $iState->batchSize || $aState['offset'] == $aState['total']) {
         return true;
     }
     // Get the batch offset and size.
     $offset = (int) $aState['offset'];
     $limit = (int) ($iState->batchSize - $iState->batchOffset);
     // Get the content items to index.
     $items = $this->getItems($offset, $limit);
     // Iterate through the items and index them.
     $item = null;
     foreach ($items as $item) {
         $this->index($item);
     }
     if ($item) {
         // Adjust the offsets.
         $iState->batchOffset = $iState->batchSize;
         $iState->totalItems -= $item->id - $offset;
         // Update the indexer state.
         $aState['offset'] = $item->id;
         $iState->pluginState[$this->context] = $aState;
         FinderIndexer::setState($iState);
     }
     unset($items, $item);
     return true;
 }