_init(); $this->_loadPluginTextDomain(); $this->_addFilters(); $this->_addActions(); $this->_addActivationHooks(); } private function _init() { define('TUBEPRESS_ROOT', dirname(__FILE__)); $this->_baseName = basename(TUBEPRESS_ROOT); } private function _loadPluginTextDomain() { /** @noinspection PhpUndefinedFunctionInspection */ load_plugin_textdomain('tubepress', false, $this->_baseName . '/src/translations'); } private function _addFilters() { $filterCallback = array($this, '__onFilter'); /** @noinspection PhpUndefinedFunctionInspection */ add_filter('the_content', $filterCallback); /** @noinspection PhpUndefinedFunctionInspection */ add_filter($this->_calculateMetaRowsFilterPoint(), $filterCallback, 10, 2); /** @noinspection PhpUndefinedFunctionInspection */ add_filter('upgrader_pre_install', $filterCallback, 10, 2); } private function _addActions() { $actionCallback = array($this, '__onAction'); $interestingActions = array( 'admin_enqueue_scripts', 'admin_head', 'admin_menu', 'admin_notices', 'init', 'in_plugin_update_message-' . $this->_baseName . '/tubepress.php', 'widgets_init', 'wp_ajax_nopriv_tubepress', 'wp_ajax_tubepress', 'wp_head', ); foreach ($interestingActions as $interestingAction) { /** @noinspection PhpUndefinedFunctionInspection */ add_action($interestingAction, $actionCallback); } } private function _addActivationHooks() { /** @noinspection PhpUndefinedFunctionInspection */ register_activation_hook($this->_baseName . '/tubepress.php', array($this, '__onActivation')); } public function __onFilter() { try { $callback = $this->_getCallback(); /** @noinspection PhpUndefinedFunctionInspection */ $currentFilter = current_filter(); $args = func_get_args(); return $callback->onFilter($currentFilter, $args); } catch (Exception $e) { $this->_handleException($e); return func_get_arg(0); } } public function __onAction() { try { $callback = $this->_getCallback(); /** @noinspection PhpUndefinedFunctionInspection */ $currentFilter = current_filter(); $args = func_get_args(); $callback->onAction($currentFilter, $args); } catch (Exception $e) { $this->_handleException($e); } } public function __onActivation() { try { $callback = $this->_getCallback(); $args = func_get_args(); $callback->onPluginActivation($args); } catch (Exception $e) { $this->_handleException($e); } } private function _calculateMetaRowsFilterPoint() { global $wp_version; if (version_compare($wp_version, '2.8.alpha', '>')) { return 'plugin_row_meta'; } return 'plugin_action_links'; } /** * @return tubepress_wordpress_impl_Callback */ private function _getCallback() { /** @noinspection PhpIncludeInspection */ /** * @var $serviceContainer tubepress_platform_api_ioc_ContainerInterface */ $serviceContainer = require 'src/platform/scripts/boot.php'; return $serviceContainer->get('tubepress_wordpress_impl_Callback'); } private function _handleException(Exception $e) { /** @noinspection PhpIncludeInspection */ /** * @var $serviceContainer tubepress_platform_api_ioc_ContainerInterface */ $serviceContainer = require 'src/platform/scripts/boot.php'; $logger = $serviceContainer->get(tubepress_platform_api_log_LoggerInterface::_); $logger->error($e->getMessage()); } } $apiIntegrator = new tubepress_wordpress_ApiIntegrator(); $apiIntegrator->load();