/administrator/components/com_jce/controller.php
PHP | 327 lines | 208 code | 79 blank | 40 comment | 33 complexity | fd4d6970809ce53d03f8eecbbd3c84fe MD5 | raw file
- <?php
- /**
- * @package JCE
- * @copyright Copyright (c) 2009-2016 Ryan Demmer. All rights reserved.
- * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- * JCE is free software. This version may have been modified pursuant
- * to the GNU General Public License, and as distributed it includes or
- * is derivative of works licensed under the GNU General Public License or
- * other free or open source software licenses.
- */
- defined('_JEXEC') or die('RESTRICTED');
- wfimport('admin.classes.controller');
- class WFController extends WFControllerBase {
- /**
- * Custom Constructor
- */
- public function __construct($default = array()) {
- parent::__construct($default);
- // load helpers
- wfimport('admin.helpers.parameter');
- wfimport('admin.helpers.extension');
- wfimport('admin.helpers.xml');
- }
- private function loadMenu() {
- $view = JRequest::getWord('view', 'cpanel');
- wfimport('admin.models.model');
- JSubMenuHelper::addEntry(WFText::_('WF_CPANEL'), 'index.php?option=com_jce&view=cpanel', $view == 'cpanel');
- $subMenus = array(
- 'WF_CONFIGURATION' => 'config',
- 'WF_PROFILES' => 'profiles',
- 'WF_INSTALL' => 'installer'
- );
- if (JPluginHelper::isEnabled('system', 'jcemediabox')) {
- $subMenus['WF_MEDIABOX'] = 'mediabox';
- }
- foreach ($subMenus as $menu => $item) {
- if (WFModel::authorize($item)) {
- JSubMenuHelper::addEntry(WFText::_($menu), 'index.php?option=com_jce&view=' . $item, $view == $item);
- }
- }
- }
- /**
- * Create the View.
- * This is an overloaded function of JController::getView
- * and includes addition of the JDocument Object with required scripts and styles
- * @return object
- */
- public function getView($name = '', $type = '', $prefix = '', $config = array()) {
- $language = JFactory::getLanguage();
- $language->load('com_jce', JPATH_ADMINISTRATOR);
- $document = JFactory::getDocument();
- if (!$name) {
- $name = JRequest::getWord('view', 'cpanel');
- }
- if (!$type) {
- $type = $document->getType();
- }
- if (empty($config)) {
- $config = array(
- 'base_path' => dirname(__FILE__)
- );
- }
- $model = $this->getModel($name);
- $view = parent::getView($name, $type, $prefix, $config);
- $document = JFactory::getDocument();
- // set device-width meta
- $document->setMetaData('meta', 'width=device-width, initial-scale=1.0');
- $version = new JVersion;
- if ($version->isCompatible('3.0')) {
- // Include jQuery
- JHtml::_('jquery.framework');
- } else {
- // JQuery
- $view->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/jquery/js/jquery.min.js');
- // jQuery noConflict
- $view->addScriptDeclaration('jQuery.noConflict();');
- }
- // JQuery UI
- $view->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/jquery/js/jquery-ui.min.js');
- $scripts = array();
- switch ($name) {
- case 'help':
- $view->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/js/help.js');
- break;
- default:
- $view->addStyleSheet(JURI::root(true) . '/administrator/components/com_jce/media/css/global.css');
- // load Joomla! core javascript
- if (method_exists('JHtml', 'core')) {
- JHtml::core();
- }
- require_once(JPATH_ADMINISTRATOR . '/includes/toolbar.php');
- JToolBarHelper::title(WFText::_('WF_ADMINISTRATION') . ' :: ' . WFText::_('WF_' . strtoupper($name)), 'logo.png');
- $params = WFParameterHelper::getComponentParams();
- $theme = $params->get('preferences.theme', 'jce');
- $view->addScript(JURI::root(true) . '/administrator/components/com_jce/media/js/core.js');
- $options = array(
- 'labels' => array(
- 'ok' => WFText::_('WF_LABEL_OK'),
- 'cancel' => WFText::_('WF_LABEL_CANCEL'),
- 'select' => WFText::_('WF_LABEL_SELECT'),
- 'save' => WFText::_('WF_LABEL_SAVE'),
- 'saveclose' => WFText::_('WF_LABEL_SAVECLOSE'),
- 'alert' => WFText::_('WF_LABEL_ALERT'),
- 'required' => WFText::_('WF_MESSAGE_REQUIRED')
- )
- );
- $view->addScriptDeclaration('jQuery.jce.options = ' . json_encode($options) . ';');
- $view->addHelperPath(dirname(__FILE__) . '/helpers');
- $this->addModelPath(dirname(__FILE__) . '/models');
- $view->loadHelper('toolbar');
- $view->loadHelper('xml');
- $view->loadHelper($name);
- $this->loadMenu();
- break;
- }
- if ($model = $this->getModel($name)) {
- $view->setModel($model, true);
- }
- $view->assignRef('document', $document);
- return $view;
- }
- protected function getStyles() {
- jimport('joomla.filesystem.folder');
- jimport('joomla.filesystem.file');
- wfimport('admin.helpers.extension');
- $view = JRequest::getCmd('view', 'cpanel');
- $component = WFExtensionHelper::getComponent();
- $params = new WFParameter($component->params);
- $theme = $params->get('preferences.theme', 'jce');
- $site_path = JPATH_SITE . '/component/com_jce/editor/libraries/css';
- // Load styles
- $styles = array();
- if (!JFolder::exists($site_path . '/jquery/' . $theme)) {
- $theme = 'jce';
- }
- // admin global css
- $styles = array_merge($styles, array(
- 'administrator/components/com_jce/media/css/global.css'
- ));
- return $styles;
- }
- public function pack() {
-
- }
- /**
- * Display View
- * @return
- */
- public function display($cachable = false, $params = false) {
- $view = $this->getView();
- $view->display();
- }
- /**
- * Generic cancel method
- * @return
- */
- public function cancel() {
- // Check for request forgeries
- JRequest::checkToken() or die('Invalid Token');
- $this->setRedirect(JRoute::_('index.php?option=com_jce&view=cpanel', false));
- }
- public function check() {
- // we already no its broken..
- if (JRequest::getCmd('task') == 'repair') {
- return;
- }
- wfimport('admin.models.profiles');
- $profiles = new WFModelProfiles();
- $state = $profiles->checkTable();
- // Check Profiles DB
- if (!$state) {
- $link = JHTML::link('index.php?option=com_jce&task=repair&type=tables', WFText::_('WF_DB_CREATE_RESTORE'));
- self::_redirect(WFText::_('WF_DB_PROFILES_ERROR') . ' - ' . $link, 'error');
- }
- if ($state) {
- if (!$profiles->checkTableContents()) {
- $link = JHTML::link('index.php?option=com_jce&task=repair&type=tables', WFText::_('WF_DB_CREATE_RESTORE'));
- self::_redirect(WFText::_('WF_DB_PROFILES_ERROR') . ' - ' . $link, 'error');
- }
- }
- jimport('joomla.plugin.helper');
- // Check Editor is installed
- if (JPluginHelper::getPlugin('editors', 'jce') === false) {
- $link = JHTML::link('index.php?option=com_jce&task=repair&type=editor', WFText::_('WF_EDITOR_INSTALL'));
- self::_redirect(WFText::_('WF_EDITOR_INSTALLED_MANUAL_ERROR') . ' - ' . $link, 'error');
- }
- }
- public function repair() {
- $app = JFactory::getApplication();
- $type = JRequest::getWord('type', 'tables');
- switch ($type) {
- case 'tables' :
- wfimport('admin.models.profiles');
- $profiles = new WFModelProfiles();
- $profiles->installProfiles();
- $this->setRedirect(JRoute::_('index.php?option=com_jce&view=cpanel', false));
- break;
- case 'editor' :
- $source = dirname(__FILE__) . '/packages/editors';
- if (is_dir($source)) {
- jimport('joomla.installer.installer');
- $installer = new JInstaller();
- if ($installer->install($source)) {
- $app->enqueueMessage(WFText::_('WF_EDITOR_INSTALL_SUCCESS'));
- } else {
- $app->enqueueMessage(WFText::_('WF_EDITOR_INSTALL_FAILED'));
- }
- $this->setRedirect(JRoute::_('index.php?option=com_jce&view=cpanel', false));
- }
- break;
- }
- }
- public function authorize($task) {
- wfimport('admin.models.model');
- // map updates/blank/cpanel task to manage
- if (empty($task) || $task == 'cpanel' || $task == 'updates') {
- $task = 'manage';
- }
- if (WFModel::authorize($task) === false) {
- $this->setRedirect('index.php', WFText::_('ALERTNOTAUTH'), 'error');
- return false;
- }
- return true;
- }
- private static function _redirect($msg = '', $state = '') {
- $app = JFactory::getApplication();
- if ($msg) {
- $app->enqueueMessage($msg, $state);
- }
- JRequest::setVar('view', 'cpanel');
- JRequest::setVar('task', '');
- return false;
- }
- public function cleanInput($input, $method = 'string') {
- $filter = JFilterInput::getInstance();
- $input = (array) $input;
- foreach ($input as $k => $v) {
- if (!empty($v)) {
- if (is_array($v)) {
- $input[$k] = $this->cleanInput($v, $method);
- } else {
- $input[$k] = $filter->clean($v, $method);
- }
- }
- }
- return $input;
- }
- }
- ?>