/administrator/components/com_widgetkit/helpers/system.php
PHP | 300 lines | 128 code | 65 blank | 107 comment | 23 complexity | 49b8770c8db06f72c923f7913be71111 MD5 | raw file
Possible License(s): LGPL-3.0, GPL-2.0, MIT, BSD-3-Clause, LGPL-2.1
- <?php
- /**
- * @package Widgetkit
- * @author YOOtheme http://www.yootheme.com
- * @copyright Copyright (C) YOOtheme GmbH
- * @license http://www.gnu.org/licenses/gpl.html GNU/GPL
- */
- /*
- Class: SystemWidgetkitHelper
- System helper class
- */
- class SystemWidgetkitHelper extends WidgetkitHelper {
- /* application */
- public $application;
- /* document */
- public $document;
- /* language */
- public $language;
- /* system path */
- public $path;
- /* system url */
- public $url;
-
- /* options */
- public $options;
- /* cache path */
- public $cache_path;
- /* CSRF token */
- public $token;
- /*
- Function: Constructor
- Class Constructor.
- */
- public function __construct($widgetkit) {
- parent::__construct($widgetkit);
- // init vars
- $this->application = JFactory::getApplication();
- $this->document = JFactory::getDocument();
- $this->language = JFactory::getLanguage();
- $this->path = JPATH_ROOT;
- $this->url = rtrim(JURI::root(false), '/');
- $this->options = $this['data']->create($this->_getParams());
- $this->cache_path = $this->path.'/cache/widgetkit';
- // set cache directory
- if (!file_exists($this->cache_path)) {
- JFolder::create($this->cache_path);
- }
- }
- /*
- Function: init
- Initialize system
-
- Returns:
- Void
- */
- public function init() {
- // set translations
- $this->language->load('widgetkit', $this['path']->path('widgetkit:'), null, true);
- // set paths
- $this['path']->register($this->path, 'site');
- $this['path']->register($this->path.'/media/widgetkit', 'widgetkit');
- $this['path']->register($this->path.'/media/widgetkit/widgets', 'widgets');
- $this['path']->register($this->path.'/modules', 'modules');
- $this['path']->register($this->path.'/'.JComponentHelper::getParams('com_media')->get('file_path'), 'media');
- $this['path']->register($this->cache_path, 'cache');
-
- // load widgets
- foreach ($this['path']->dirs('widgets:') as $name) {
- if ($file = $this['path']->path("widgets:{$name}/{$name}.php")) {
- require_once($file);
- }
- }
- // is admin ?
- if ($this->application->isAdmin() && $this['request']->get('option', 'string') == 'com_widgetkit') {
-
- // get token
- $this->token = JFactory::getSession()->getFormToken();
- // cache writable ?
- if (!file_exists($this->cache_path) || !is_writable($this->cache_path)) {
- $this->application->enqueueMessage("Widgetkit cache folder is not writable! Please check directory permissions ({$this->cache_path})", 'notice');
- }
-
- // load editor
- $this['editor']->init();
-
- // add stylesheets/javascripts
- $this['asset']->addFile('css', 'widgetkit:css/admin.css');
- $this['asset']->addFile('css', 'widgetkit:css/system.css');
- $this['asset']->addFile('js', 'widgetkit:js/jquery.ui.js');
- $this['asset']->addFile('js', 'widgetkit:js/jquery.plugins.js');
- $this['asset']->addFile('js', 'widgetkit:js/admin.js');
- $this['asset']->addString('js', 'var widgetkitajax = "'.$this['system']->link(array('ajax' => true)).'";');
-
- // get request vars
- $task = $this['request']->get('task', 'string');
- // get version
- $this["version"] = ($path = $this['path']->path('widgetkit:widgetkit.xml')) && ($xml = simplexml_load_file($path)) ? (string) $xml->version[0] : '';
- // trigger event
- $this['event']->trigger('admin');
- // execute task
- echo $this['template']->render($task ? 'task' : 'dashboard', compact('task'));
- // add assets
- $this['template']->render('assets');
- // check for updates
- if ($xmlpath = $this['path']->path('widgetkit:widgetkit.xml')) {
-
- $xml = $this['dom']->create($xmlpath, 'xml');
- // update check
- if ($url = $xml->first('updateUrl')->text()) {
- // create check url
- $url = sprintf('%s?application=%s&version=%s&format=raw', $url, 'widgetkit_j17', urlencode($xml->first('version')->text()));
- // only check once a day
- $hash = md5($url.date('Y-m-d'));
- if ($this['option']->get("update_check") != $hash) {
- if ($request = $this['http']->get($url)) {
- $this['option']->set("update_check", $hash);
- $this['option']->set("update_data", $request['body']);
- }
- }
- // decode response and set message
- if (($data = json_decode($this['option']->get("update_data"))) && $data->status == 'update-available') {
- $this->application->enqueueMessage($data->message, 'notice');
- }
- }
-
- }
- }
- // is site ?
- if ($this->application->isSite() && is_a($this->document, 'JDocumentHTML')) {
- $this['asset']->addString("js", 'window["WIDGETKIT_URL"]="'.$this['path']->url("widgetkit:").'";');
- $this['asset']->addString("js", 'function wk_ajax_render_url(widgetid){ return "'.JRoute::_("index.php?option=com_widgetkit&tmpl=raw&id=").'"+widgetid}');
-
- // set direction
- $this->options->set('direction', $this->document->direction);
- // add stylesheets/javascripts
- $this['asset']->addFile('css', 'widgetkit:css/widgetkit.css');
- $this['asset']->addFile('js', 'widgetkit:js/jquery.plugins.js');
- $this['asset']->addFile('js', 'widgetkit:js/responsive.js');
- if ($this->options->get('direction') == 'rtl') {
- $this['asset']->addFile('css', 'widgetkit:css/rtl.css');
- }
- // trigger event
- $this['event']->trigger('site');
- // add assets
- $this['template']->render('assets');
- $this['event']->bind('widgetoutput', array($this,"_applycontentplugins"));
- }
- }
- /*
- Function: link
- Get link to system related resources.
- Parameters:
- $query - HTTP query options
-
- Returns:
- String
- */
- public function link($query = array()) {
- // build query
- $query = array_merge(array('option' => $this['request']->get('option', 'string')), $query);
- if (isset($query['ajax'])) {
- $query = array_merge(array('format' => 'raw'), $query);
- }
- return $this->url.'/administrator/index.php?'.http_build_query($query, '', '&');
- }
-
- /*
- Function: saveOptions
- Save plugin options
- Returns:
- Void
- */
- public function saveOptions() {
- $this->_setParams((string) $this->options);
- }
- /*
- Function: checkToken
- Checks the CSRF token
- Returns:
- Boolean
- */
- public function checkToken($token){
- return $this->token == $token;
- }
-
- /*
- Function: __
- Retrieve translated strings
- Returns:
- String
- */
- public function __($string) {
- return JText::_($string);
- }
- /*
- Function: _getParams
- Get parameter from database
- Returns:
- String
- */
- protected function _getParams() {
- $db = JFactory::getDBO();
- $db->setQuery("SELECT params FROM #__extensions AS e WHERE e.element='com_widgetkit'");
- return $db->loadResult();
- }
- /*
- Function: _saveParams
- Set parameter in database
- Returns:
- Boolean
- */
- protected function _setParams($params) {
- $db = JFactory::getDBO();
- $db->setQuery(sprintf("UPDATE #__extensions AS e SET e.params='%s' WHERE e.element='com_widgetkit'", $db->getEscaped($params)));
- return $db->query();
- }
- /*
- Function: _applycontentplugins
- Apply content plugins
- Returns:
- Void
- */
- public function _applycontentplugins(&$text) {
-
- jimport('joomla.html.parameter');
- if (!class_exists("plgContentWidgetkit_Content")) {
- JPluginHelper::importPlugin('content');
- }
- $params = new JParameter();
- $article = new stdClass();
- $dispatcher = JDispatcher::getInstance();
- $wkplugin = new plgContentWidgetkit_Content($dispatcher);
- $posplugin = new plgContentLoadmodule($dispatcher);
- $article->text = $text;
-
- $posplugin->params = $params;
-
- $posplugin->onContentPrepare('widgetkit', $article, $params, 0);
- $wkplugin->onContentPrepare('widgetkit', $article, $params, 0);
- $text = $article->text;
- }
- }