/** * 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); }
/** * 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]; }
/** * @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(); }
/** * Store to the DB */ protected function persist() { /** @var $persist PersistenceManager */ $persist = HelperUtility::create('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager'); $persist->persistAll(); }