/** * Add the configurations to the given Plugin configuration * * @param array $config * * @return array */ public function addConfig($config) { foreach (Register::getRegister() as $key => $configuration) { $config['items'][] = array($configuration['title'], $key); } return $config; }
/** * Handle CMD * * @param string $command * @param string $table * @param int $id * @param $value * @param DataHandler $handler * @param $pasteUpdate * @param $pasteDatamap */ public function processCmdmap_postProcess($command, $table, $id, $value, $handler, $pasteUpdate, $pasteDatamap) { $register = Register::getRegister(); foreach ($register as $key => $configuration) { if ($configuration['tableName'] == $table) { $indexer = GeneralUtility::makeInstance('HDNET\\Calendarize\\Service\\IndexerService'); $indexer->reindex($key, $table, $id); } } }
/** * Get the calendarize string for the registered tables * * @return string */ protected function getCalendarizeDatabaseString() { $sql = []; foreach (Register::getRegister() as $configuration) { $sql[] = 'CREATE TABLE ' . $configuration['tableName'] . ' ( calendarize tinytext );'; } return implode(LF, $sql); }
/** * 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(); }
/** * Remove index Items of configurations that are not valid anymore * * @return bool */ protected function removeInvalidConfigurationIndex() { $validKeys = array_keys(Register::getRegister()); $databaseConnection = HelperUtility::getDatabaseConnection(); if ($validKeys) { foreach ($validKeys as $key => $value) { $validKeys[$key] = $databaseConnection->fullQuoteStr($value, IndexerService::TABLE_NAME); } return (bool) $databaseConnection->exec_DELETEquery(self::TABLE_NAME, 'unique_register_key NOT IN (' . implode(',', $validKeys) . ')'); } return (bool) $databaseConnection->exec_TRUNCATEquery(self::TABLE_NAME); }
/** * Get the current configurations * * @return array */ protected function getCurrentConfigurations() { $configurations = GeneralUtility::trimExplode(',', $this->settings['configuration'], TRUE); $return = array(); foreach (Register::getRegister() as $key => $configuration) { if (in_array($key, $configurations)) { $return[] = $configuration; } } return $return; }
/** * Get the current configuration * * @return null|array */ public function getConfiguration() { foreach (Register::getRegister() as $key => $configuration) { if ($this->getUniqueRegisterKey() == $key) { return $configuration; } } return NULL; }
<?php /** * General ext_tables file and also an example for your own extension * * @category Extension * @package Calendarize * @author Tim Lochmüller */ if (!defined('TYPO3_MODE')) { die('Access denied.'); } \HDNET\Autoloader\Loader::extTables('HDNET', 'calendarize', \HDNET\Calendarize\Register::getDefaultAutoloader()); if (!(bool) \HDNET\Calendarize\Utility\ConfigurationUtility::get('disableDefaultEvent')) { \HDNET\Calendarize\Register::extTables(\HDNET\Calendarize\Register::getDefaultCalendarizeConfiguration()); \TYPO3\CMS\Core\Category\CategoryRegistry::getInstance()->add('calendarize', 'tx_calendarize_domain_model_event'); } \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin('calendarize', 'Calendar', \HDNET\Calendarize\Utility\TranslateUtility::get('pluginName')); if (\TYPO3\CMS\Core\Utility\GeneralUtility::compat_version('7.0.0')) { $GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['calendarize_calendar'] .= ',categories'; } // module icon $extensionIcon = \HDNET\Autoloader\Utility\IconUtility::getByExtensionKey('calendarize', true); if (\TYPO3\CMS\Core\Utility\GeneralUtility::compat_version('7.0')) { /** @var \TYPO3\CMS\Core\Imaging\IconRegistry $iconRegistry */ $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Imaging\\IconRegistry'); $iconRegistry->registerIcon('apps-pagetree-folder-contains-calendarize', 'TYPO3\\CMS\\Core\\Imaging\\IconProvider\\BitmapIconProvider', ['source' => $extensionIcon]); } else { $extensionRelPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('calendarize'); \TYPO3\CMS\Backend\Sprite\SpriteManager::addTcaTypeIcon('pages', 'contains-calendar', str_replace('EXT:calendarize/', $extensionRelPath, $extensionIcon)); }
<?php /** * General ext_localconf file and also an example for your own extension * * @category Extension * @package Calendarize * @author Tim Lochmüller */ if (!defined('TYPO3_MODE')) { die('Access denied.'); } \HDNET\Autoloader\Loader::extLocalconf('HDNET', 'calendarize', \HDNET\Calendarize\Register::getDefaultAutoloader()); if (!(bool) \HDNET\Calendarize\Utility\ConfigurationUtility::get('disableDefaultEvent')) { \HDNET\Calendarize\Register::extLocalconf(\HDNET\Calendarize\Register::getDefaultCalendarizeConfiguration()); } \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin('HDNET.calendarize', 'Calendar', array('Calendar' => 'list,year,month,week,day,detail,search'), array('Calendar' => 'list,year,month,week,day,detail,search'));