public function index() { ipAddJs('Ip/Internal/Core/assets/js/jquery-ui/jquery-ui.js'); ipAddCss('Ip/Internal/Core/assets/js/jquery-ui/jquery-ui.css'); ipAddJs('Ip/Internal/Core/assets/js/easyXDM/easyXDM.min.js'); ipAddJs('Ip/Internal/Design/assets/options.js'); ipAddJs('Ip/Internal/Design/assets/market.js'); ipAddJs('Ip/Internal/Design/assets/design.js'); ipAddJs('Ip/Internal/Design/assets/pluginInstall.js'); ipAddJs('Ip/Internal/System/assets/market.js'); $model = Model::instance(); $themes = $model->getAvailableThemes(); $model = Model::instance(); $theme = $model->getTheme(ipConfig()->theme()); $options = $theme->getOptionsAsArray(); $themePlugins = $model->getThemePlugins(); $installedPlugins = \Ip\Internal\Plugins\Service::getActivePluginNames(); $notInstalledPlugins = array(); //filter plugins that are already installed foreach ($themePlugins as $plugin) { if (!empty($plugin['name']) && (!in_array($plugin['name'], $installedPlugins) || !is_dir(ipFile('Plugin/' . $plugin['name'])))) { $notInstalledPlugins[] = $plugin; } } if (isset($_SESSION['module']['design']['pluginNote'])) { $pluginNote = $_SESSION['module']['design']['pluginNote']; unset($_SESSION['module']['design']['pluginNote']); } else { $pluginNote = ''; } $data = array('pluginNote' => $pluginNote, 'theme' => $model->getTheme(ipConfig()->theme()), 'plugins' => $notInstalledPlugins, 'availableThemes' => $themes, 'marketUrl' => $model->getMarketUrl(), 'showConfiguration' => !empty($options), 'contentManagementUrl' => ipConfig()->baseUrl() . '?aa=Content.index', 'contentManagementText' => __('Manage content', 'Ip-admin', false)); $contentView = ipView('view/layout.php', $data); ipResponse()->setLayoutVariable('removeAdminContentWrapper', true); return $contentView->render(); }
protected static function getAdminNavbarHtml() { $requestData = \Ip\ServiceLocator::request()->getRequest(); $curModTitle = ''; $curModUrl = ''; $curModIcon = ''; if (!empty($requestData['aa'])) { $parts = explode('.', $requestData['aa']); $curModule = $parts[0]; } else { $curModule = "Content"; } if (isset($curModule) && $curModule) { $title = $curModule; $plugin = \Ip\Internal\Plugins\Service::getPluginConfig($curModule); if ($plugin) { $title = $plugin['title']; } $curModTitle = __($title, 'Ip-admin', false); $curModUrl = ipActionUrl(array('aa' => $curModule . '.index')); $curModIcon = Model::getAdminMenuItemIcon($curModule); } $navbarButtons = array(array('text' => '', 'hint' => __('Logout', 'Ip-admin', false), 'url' => ipActionUrl(array('sa' => 'Admin.logout')), 'class' => 'ipsAdminLogout', 'faIcon' => 'fa-power-off')); $navbarButtons = ipFilter('ipAdminNavbarButtons', $navbarButtons); $navbarCenterElements = ipFilter('ipAdminNavbarCenterElements', array()); $data = array('menuItems' => Model::instance()->getAdminMenuItems($curModule), 'curModTitle' => $curModTitle, 'curModUrl' => $curModUrl, 'curModIcon' => $curModIcon, 'navbarButtons' => array_reverse($navbarButtons), 'navbarCenterElements' => $navbarCenterElements); $html = ipView('view/navbar.php', $data)->render(); return $html; }
private static function getPluginWidgetDirs() { $answer = array(); $plugins = \Ip\Internal\Plugins\Service::getActivePluginNames(); foreach ($plugins as $plugin) { $answer = array_merge($answer, static::findPluginWidgets($plugin)); } return $answer; }
/** * @param string $currentModule Name of the current (active) module * @return \Ip\Internal\Admin\MenuItem[] */ public function getAdminMenuItems($currentModule) { $answer = array(); $modules = \Ip\Internal\Plugins\Model::getModules(); foreach ($modules as $module) { // skipping modules that don't have 'index' (default) action in AdminController $controllerClass = 'Ip\\Internal\\' . $module . '\\AdminController'; if (!class_exists($controllerClass) || !method_exists($controllerClass, 'index')) { continue; } $moduleItem = new \Ip\Internal\Admin\MenuItem(); $moduleItem->setTitle(__($module, 'Ip-admin', false)); $moduleItem->setUrl(ipActionUrl(array('aa' => $module . '.index'))); $moduleItem->setIcon($this->getAdminMenuItemIcon($module)); if ($module == $currentModule) { $moduleItem->markAsCurrent(true); } if (ipAdminPermission($module)) { $answer[] = $moduleItem; } } $plugins = \Ip\Internal\Plugins\Service::getActivePlugins(); foreach ($plugins as $plugin) { $controllerClass = '\\Plugin\\' . $plugin['name'] . '\\AdminController'; if (!class_exists($controllerClass) || !method_exists($controllerClass, 'index')) { continue; } $moduleItem = new \Ip\Internal\Admin\MenuItem(); $moduleItem->setTitle(__($plugin['title'], 'Ip-admin', false)); $moduleItem->setUrl(ipActionUrl(array('aa' => $plugin['name']))); $moduleItem->setIcon($this->getAdminMenuItemIcon($plugin['name'])); if ($plugin['name'] == $currentModule) { $moduleItem->markAsCurrent(true); } if (ipAdminPermission($plugin['name'])) { $answer[] = $moduleItem; } } $answer = ipFilter('ipAdminMenu', $answer); return $answer; }
public function installThemePlugin($pluginName) { $toDir = ipFile('Plugin/' . $pluginName . '/'); $fromDir = ipThemeFile('Plugin/' . $pluginName . '/'); if (is_dir($toDir)) { throw new \Ip\Exception('This plugin has been already installed'); } if (!is_dir($fromDir)) { throw new \Ip\Exception('Plugin is missing.'); } $pluginConfiguration = \Ip\Internal\Plugins\Service::parsePluginConfigFile($fromDir); if (!$pluginConfiguration) { throw new \Ip\Exception('Can\'t read plugin configuration file.'); } if (!is_writable(ipFile('Plugin/'))) { throw new \Ip\Exception('Please make plugin dir writable (' . esc($this->getThemePluginDir()) . ')'); } $helper = Helper::instance(); $helper->cpDir($fromDir, $toDir); \Ip\Internal\Plugins\Service::activatePlugin($pluginName); }
/** * @ignore */ public function modulesInit() { $translator = \Ip\ServiceLocator::translator(); $overrideDir = ipFile("file/translations/override/"); $plugins = \Ip\Internal\Plugins\Service::getActivePluginNames(); foreach ($plugins as $plugin) { $translationsDir = ipFile("Plugin/{$plugin}/translations/"); $translator->addTranslationFilePattern('json', $translationsDir, "{$plugin}-%s.json", $plugin); $translator->addTranslationFilePattern('json', $overrideDir, "{$plugin}-%s.json", $plugin); $translator->addTranslationFilePattern('json', $translationsDir, "{$plugin}-admin-%s.json", $plugin . '-admin'); $translator->addTranslationFilePattern('json', $overrideDir, "{$plugin}-admin-%s.json", $plugin . '-admin'); } foreach ($plugins as $plugin) { $routesFile = ipFile("Plugin/{$plugin}/routes.php"); $this->addFileRoutes($routesFile, $plugin); } $this->addFileRoutes(ipFile('Ip/Internal/Ecommerce/routes.php'), 'Ecommerce'); }
/** * @ignore */ public function _bindApplicationEvents() { // Parse event files: $coreModules = \Ip\Internal\Plugins\Model::getModules(); foreach ($coreModules as $module) { $this->bindPluginEvents($module, '\\Ip\\Internal'); } $plugins = \Ip\Internal\Plugins\Service::getActivePluginNames(); foreach ($plugins as $plugin) { $this->bindPluginEvents($plugin); } }
public static function sendUsageStatistics($data = array(), $timeout = 3) { if (!function_exists('curl_init')) { return; } if (!isset($data['action'])) { $data['action'] = 'Ping.default'; } if (!isset($data['php'])) { $data['php'] = phpversion(); } if (!isset($data['db'])) { $data['db'] = null; // todo: make a db type/version check stable to work during install and later on // if (class_exists('PDO')) { // $pdo = ipDb()->getConnection(); // if ($pdo) { // $data['db'] = $pdo->getAttribute(\PDO::ATTR_SERVER_VERSION); // } // } } if (!isset($data['developmentEnvironment'])) { $data['developmentEnvironment'] = ipConfig()->get('developmentEnvironment'); } if (!isset($data['showErrors'])) { $data['showErrors'] = ipConfig()->get('showErrors'); } if (!isset($data['debugMode'])) { $data['debugMode'] = ipConfig()->get('debugMode'); } if (!isset($data['timezone'])) { $data['timezone'] = ipConfig()->get('timezone'); } if (!isset($data['data'])) { $data['data'] = array(); } if (!isset($data['websiteId'])) { $data['websiteId'] = ipStorage()->get('Ip', 'websiteId'); } if (!isset($data['websiteUrl'])) { $data['websiteUrl'] = ipConfig()->baseUrl(); } if (!isset($data['version'])) { $data['version'] = \Ip\Application::getVersion(); } if (!isset($data['locale'])) { $data['locale'] = \Ip\ServiceLocator::translator()->getAdminLocale(); } if (!isset($data['doSupport'])) { $data['doSupport'] = ipStorage()->get('Ip', 'getImpressPagesSupport'); } if (!isset($data['administrators'])) { $administrators = \Ip\Internal\Administrators\Model::getAll(); $adminCollection = array(); foreach ($administrators as $admin) { $permissions = \Ip\Internal\AdminPermissionsModel::getUserPermissions($admin['id']); $adminCollection[] = array('id' => $admin['id'], 'email' => $admin['email'], 'permissions' => $permissions); } $data['administrators'] = $adminCollection; } if (!isset($data['themes'])) { $data['themes'] = array('active' => ipConfig()->theme(), 'all' => \Ip\Internal\Design\Model::instance()->getAvailableThemes()); } if (!isset($data['plugins'])) { $plugins = \Ip\Internal\Plugins\Model::getAllPluginNames(); $activePlugins = \Ip\Internal\Plugins\Service::getActivePluginNames(); $pluginCollection = array(); foreach ($plugins as $pluginName) { $pluginCollection[] = array('name' => $pluginName, 'active' => in_array($pluginName, $activePlugins) ? true : false); } $data['plugins'] = $pluginCollection; } if (!isset($data['languages'])) { $data['languages'] = ipContent()->getLanguages(); } if (!isset($data['pages'])) { $result = array(); try { $table = ipTable('page'); $sql = "\n SELECT\n `languageCode` AS `language`, COUNT( 1 ) AS `quantity`\n FROM\n {$table}\n GROUP BY\n `languageCode`\n "; $result = ipDb()->fetchAll($sql); } catch (\Exception $e) { // Do nothing. } $data['pages'] = $result; } $postFields = 'data=' . urlencode(serialize($data)); // Use sockets instead of CURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, ipConfig()->get('usageStatisticsUrl', 'http://service.impresspages.org/stats')); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); // curl_setopt($ch, CURLOPT_REFERER, ipConfig()->baseUrl()); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_exec($ch); }