/**
  * Handle the index ID to alias convert
  *
  * @param $value
  *
  * @return string
  */
 protected function id2alias($value)
 {
     $databaseConnection = HelperUtility::getDatabaseConnection();
     $row = $databaseConnection->exec_SELECTgetSingleRow('value_alias', 'tx_realurl_uniqalias', 'tablename=' . $databaseConnection->fullQuoteStr(IndexerService::TABLE_NAME, IndexerService::TABLE_NAME) . ' AND value_id=' . (int) $value);
     if (isset($row['value_alias'])) {
         return $row['value_alias'];
     }
     /** @var IndexRepository $indexRepository */
     $indexRepository = HelperUtility::create('HDNET\\Calendarize\\Domain\\Repository\\IndexRepository');
     $index = $indexRepository->findByUid($value);
     if (!$index instanceof Index) {
         $alias = 'idx-' . $value;
     } else {
         $originalObject = $index->getOriginalObject();
         if (!$originalObject instanceof RealUrlInterface) {
             $alias = 'idx-' . $value;
         } else {
             $alias = $this->generateRealUrl($originalObject->getRealUrlAliasBase(), $index);
         }
     }
     $databaseConnection = HelperUtility::getDatabaseConnection();
     $entry = ['tstamp' => time(), 'tablename' => IndexerService::TABLE_NAME, 'field_alias' => 'title', 'field_id' => 'uid', 'value_alias' => $alias, 'value_id' => $value];
     $databaseConnection->exec_INSERTquery('tx_realurl_uniqalias', $entry);
     return $alias;
 }
 /**
  * Calendarize indexer for ke_search
  *
  * @param array $indexerConfig Configuration from TYPO3 Backend
  * @param \tx_kesearch_indexer $indexerObject Reference to indexer class.
  * @return string|null
  */
 public function customIndexer(&$indexerConfig, &$indexerObject)
 {
     if ($indexerConfig['type'] !== 'calendarize') {
         return null;
     }
     /** @var \HDNET\Calendarize\Domain\Repository\IndexRepository $indexRepository */
     $indexRepository = HelperUtility::create('HDNET\\Calendarize\\Domain\\Repository\\IndexRepository');
     // @todo select only $indexerConfig['storagepid']
     $indexObjects = $indexRepository->findList()->toArray();
     foreach ($indexObjects as $index) {
         /** @var $index Index */
         /** @var KeSearchIndexInterface $originalObject */
         $originalObject = $index->getOriginalObject();
         if (!$originalObject instanceof KeSearchIndexInterface) {
             continue;
         }
         $title = strip_tags($originalObject->getKeSearchTitle($index));
         $abstract = strip_tags($originalObject->getKeSearchAbstract($index));
         $content = strip_tags($originalObject->getKeSearchContent($index));
         $fullContent = $title . "\n" . $abstract . "\n" . $content;
         // @todo Add year and month information
         $additionalFields = [];
         $indexerObject->storeInIndex($indexerConfig['storagepid'], $title, 'calendarize', $indexerConfig['targetpid'], $fullContent, '', '&tx_calendarize_calendar[index]=' . $index->getUid(), $abstract, 0, 0, 0, '', false, $additionalFields);
     }
     return '<p><b>Custom Indexer "' . $indexerConfig['title'] . '": ' . sizeof($indexObjects) . ' elements have been indexed.</b></p>';
 }
 /**
  * Build the configuration handler
  *
  * @param Configuration $configuration
  *
  * @return bool|AbstractTimeTable
  */
 protected function buildConfigurationHandler(Configuration $configuration)
 {
     $handler = 'HDNET\\Calendarize\\Service\\TimeTable\\' . ucfirst($configuration->getType()) . 'TimeTable';
     if (!class_exists($handler)) {
         return false;
     }
     return HelperUtility::create($handler);
 }
Example #4
0
 /**
  * Check if we can reduce the amount of results
  *
  * @signalClass \HDNET\Calendarize\Domain\Repository\IndexRepository
  * @signalName findBySearchPre
  *
  * @param array          $indexIds
  * @param \DateTime|NULL $startDate
  * @param \DateTime|NULL $endDate
  * @param array          $customSearch
  *
  * @return array|void
  */
 public function setIdsByCustomSearch(array $indexIds, \DateTime $startDate = null, \DateTime $endDate = null, array $customSearch)
 {
     if (!isset($customSearch['fullText'])) {
         return null;
     }
     /** @var EventRepository $eventRepository */
     $eventRepository = HelperUtility::create('HDNET\\Calendarize\\Domain\\Repository\\EventRepository');
     return ['indexIds' => $eventRepository->getIdsBySearchTerm($customSearch['fullText']), 'startDate' => $startDate, 'endDate' => $endDate, 'customSearch' => $customSearch];
 }
Example #5
0
 /**
  * @param $username
  *
  * @return bool|\HDNET\Calendarize\Domain\Model\CalDav
  */
 protected function findMatchingCalDavConfiguration($username)
 {
     $userRecord = $this->getUserRow($username);
     if (!isset($userRecord['pid'])) {
         return false;
     }
     /** @var CalDavRepository $repository */
     $repository = HelperUtility::create('HDNET\\Calendarize\\Domain\\Repository\\CalDavRepository');
     return $repository->findByUserStorage($userRecord['pid']);
 }
 /**
  * Run the delete action
  *
  * @param string      $table
  * @param int         $id
  * @param             $recordToDelete
  * @param             $recordWasDeleted
  * @param DataHandler $dataHandler
  */
 public function processCmdmap_deleteAction($table, $id, $recordToDelete, &$recordWasDeleted, DataHandler $dataHandler)
 {
     $register = Register::getRegister();
     foreach ($register as $key => $configuration) {
         if ($configuration['tableName'] == $table) {
             $indexer = HelperUtility::create('HDNET\\Calendarize\\Service\\IndexerService');
             $dataHandler->deleteEl($table, $id);
             $recordWasDeleted = TRUE;
             $indexer->reindex($key, $table, $id);
         }
     }
 }
 /**
  * Process the reindex after all operations
  *
  * @param DataHandler $dataHandler
  *
  * @return void
  */
 public function processDatamap_afterAllOperations(DataHandler $dataHandler)
 {
     if (!$this->indexItems) {
         return;
     }
     $register = Register::getRegister();
     /** @var \HDNET\Calendarize\Service\IndexerService $indexer */
     $indexer = HelperUtility::create('HDNET\\Calendarize\\Service\\IndexerService');
     foreach ($register as $key => $configuration) {
         foreach ($this->indexItems as $table => $identifiers) {
             if ($table === $configuration['tableName']) {
                 foreach ($identifiers as $uid) {
                     $indexer->reindex($key, $table, $uid);
                 }
             }
         }
     }
     $this->indexItems = array();
 }
Example #8
0
 /**
  * Store to the DB
  */
 protected function persist()
 {
     /** @var $persist PersistenceManager */
     $persist = HelperUtility::create('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager');
     $persist->persistAll();
 }