File manager - Edit - /home/jardides/www/Jardi-design/j37/administrator/components/com_templateck/controller.php
Back
<?php /** * @name Template Creator CK 3 * @package com_templateck * @copyright Copyright (C) 2013. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @author Cedric Keiflin - http://www.template-creator.com - http://www.joomlack.fr */ // No direct access defined('_JEXEC') or die; jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); class TemplateckController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * @since 1.5 */ public function display($cachable = false, $urlparams = false) { $input = JFactory::getApplication()->input; require_once JPATH_COMPONENT . '/helpers/templateck.php'; // Load the left sidebar. TemplateckHelper::addSubmenu($input->get('view', 'templates', 'cmd')); // echo JHtmlSidebar::render(); $input = new JInput(); $view = $input->get('view', 'templates'); $input->set('view', $view); parent::display(); return $this; } /** * Check updates for the component, module, or plugins */ public function check_update() { error_reporting(0); // to avoid errors to be triggered if ( version_compare(self::get_latest_version(), self::get_current_version() ) > 0 ) { $update_status = '<span class="badge-alertck">' . JText::_('CK_UPDATE_NOTIFICATION') . '</span>'; } else { $update_status = ''; } echo $update_status; die; } /** * Check if a new version is available * * @return false, or the latest version */ public static function get_latest_version() { $release_notes = self::get_release_notes(); $latest_version = false; if ($release_notes !== false) { $test_version = preg_match('/\*(.*?)\n/', $release_notes, $results); $latest_version = trim($results[1]); // $is_uptodate = version_compare($latest_version, self::get_current_version() ) > 0 ? false : true; } return $latest_version; } /* * Get a variable from the manifest file (actually, from the manifest cache). * * @return the current version */ public static function get_current_version() { $db = JFactory::getDbo(); $db->setQuery('SELECT manifest_cache FROM #__extensions WHERE name = "com_templateck"'); $manifest = json_decode($db->loadResult(), true); return $manifest['version']; } /** * Get the release notes content * * @return false or the file content */ public static function get_release_notes() { $url = 'http://www.template-creator.com/tck_update.txt'; return @file_get_contents($url); } /** * Check if you have the latest version * * @return boolean, true if outdated */ public static function is_outdated() { return version_compare(self::get_latest_version(), self::get_current_version() ) > 0; } /* * Due to issues when uninstalling and reinstalling, we need to propose a manual way to create the tables */ public function fixSqlTable() { $sql = file_get_contents(JPATH_SITE . '/administrator/components/com_templateck/sql/install.mysql.utf8.sql'); $queries = explode(';', $sql); $db = JFactory::getDbo(); foreach ($queries as $q) { if (stristr($q, 'DROP') || ! $q) continue; try { $query = $db->getQuery(true); $db->setQuery(trim($q) . ';'); $db->query(); } catch (Exception $e) { echo '<div class="alert"><b>SQL ERROR FROM TEMPLATE CREATOR CK - FIXTABLE : </b>', $e->getMessage(), "</div>\n"; die; } } $this->setRedirect('index.php?option=com_templateck', false); } /** * Get the file and store it on the server * * @return mixed, the method return */ public function ajaxAddPicture() { require_once JPATH_SITE . '/administrator/components/com_templateck/helpers/ckbrowse.php'; CKBrowse::ajaxAddPicture(); } /** * Load the backup file * * @return string, the html content */ public function ajaxDoRestoration() { $input = JFactory::getApplication()->input; $id = $input->get('id', 0, 'int'); $name = $input->get('name','', 'string'); $isLocked = $input->get('isLocked', 0, 'int'); $filename = ($isLocked ? 'locked' : 'backup') . '_' . $id . '_' . $name . '.tck3'; $path = JPATH_ROOT . '/administrator/components/com_templateck/backup/' . $id . '_bak'; $content = JFile::read($path . '/' . $filename); $backup = json_decode($content); echo str_replace('|URIROOT|', JUri::root(true), $backup->htmlcode); exit(); } public function ajaxInstallWidget($url = '', $name = '') { require_once(dirname(__FILE__) . '/helpers/ckinstaller.php'); $input = JFactory::getApplication()->input; $url = $input->get('url', $url, 'string'); $name = $input->get('name', $name, 'string'); // $type = $input->get('type', $type, 'string'); $installer = new CKInstaller(); $result = $installer->install($url, $name); echo $result; exit(); } public function ajaxEditWidget($name = '') { require_once(dirname(__FILE__) . '/helpers/ckwidgets.php'); $input = JFactory::getApplication()->input; $name = $input->get('name', $name, 'string'); $edition = CKWidgets::loadEdition($name); echo $edition; exit(); } /*public function ajaxInstallPlugin($url = '', $name = '') { require_once(dirname(__FILE__) . '/helpers/ckinstaller.php'); $input = JFactory::getApplication()->input; $url = $input->get('url', $url, 'string'); $name = $input->get('name', $name, 'string'); $installer = new CKInstaller(); $installer->install($url, $name, 'plugin'); echo $installer; exit(); }*/ public function ajaxCheckWidgetUpdate() { require_once(dirname(__FILE__) . '/helpers/ckwidgets.php'); $widgets = CKWidgets::getWidgets(); $widgetsVersions = Array(); foreach ($widgets as $widget) { $widgetsVersions[$widget->name] = (int) CKWidgets::updateAvailable($widget->name); } echo json_encode($widgetsVersions); die; } public function ajaxCallWidgetAction() { $input = JFactory::getApplication()->input; $name = $input->get('name', '', 'string'); $func = $input->get('func', '', 'string'); // load the widget language require_once(dirname(__FILE__) . '/helpers/ckwidgets.php'); CKWidgets::loadWidgetLanguage($name); require_once(dirname(__FILE__) . '/widgets/' . $name . '/' . $name . '.php'); $widgetClassName = 'TCK_Widget' . ucfirst($name); $widgetClass = new $widgetClassName; echo $widgetClass->$func(); exit(); } public function ajaxAddWidgetManually() { // check why it does not work if (! JSession::checkToken('get')) { $msg = JText::_('JINVALID_TOKEN'); echo '{"error" : "' . $msg . '"}'; exit; } $app = JFactory::getApplication(); $input = $app->input; // $file = $input->files->get('file', '', 'array'); $fileInput = new JInput($_FILES); $file = $fileInput->get('file', null, 'array'); if (!is_array($file)) { $msg = JText::_('CK_NO_FILE_RECEIVED'); echo '{"error" : "' . $msg . '"}'; exit; } $filename = JFile::makeSafe($file['name']); //Set up the source and destination of the file $src = $file['tmp_name']; // check if the file exists if (!$src || !JFile::exists($src)) { $msg = JText::_('CK_FILE_NOT_EXISTS'); echo '{"error" : "' . $msg . '"}'; exit; } require_once(dirname(__FILE__) . '/helpers/ckinstaller.php'); $result = CKInstaller::extractWidgetPackage($src, JFile::stripExt($filename)); // $this->ajaxInstallWidget($src, $filename); // write the file // if (! JFile::copy($src, JPATH_SITE . '/administrator/components/com_templateck/widgets/' . $filename)) { // $msg = JText::_('CK_UNABLE_WRITE_FILE'); // echo '{"error" : "' . $msg . '"}'; // exit; // } echo '{"success" : "' . $result . '", "name" : "' . JFile::stripExt($filename) . '"}'; // echo $result; exit; } public function ajaxInstallModule($url = '', $name = '') { $this->ajaxSecurityCheck(false); require_once(dirname(__FILE__) . '/helpers/ckinstaller.php'); require_once(dirname(__FILE__) . '/helpers/ckmodules.php'); $input = JFactory::getApplication()->input; $name = $input->get('name', $name, 'string'); // $url = $input->get('url', $url, 'string'); $url = CKModules::getInstance($name)->url; $installer = new CKInstaller(); $result = $installer->install($url, $name, 'module'); echo $result; exit(); } private function ajaxSecurityCheck($json = true) { if (! JSession::checkToken('get')) { $msg = JText::_('JINVALID_TOKEN'); echo ($json ? '{"status" : 0, "message" : "' . $msg . '"}' : $msg); exit; } } public function ajaxPublishModule() { $this->ajaxSecurityCheck(); $input = JFactory::getApplication()->input; $type = $input->get('type', '', 'string'); $position = $input->get('blockposition', '', 'string'); $templateid = $input->get('templateid', '', 'int'); // Import table JLoader::register('JTableModule', JPATH_PLATFORM . '/joomla/database/table/module.php'); $module = str_replace('mod_', '', $type); $table = JTable::getInstance('Module', 'JTable'); $table->position = $position; $table->module = $type; $table->access = '1'; $table->published = '1'; $table->ordering = '1'; $table->showtitle = '0'; $table->client_id = '0'; $table->language = '*'; $table->title = ucfirst($module); $table->params = ''; // Store the data. if (!$table->store()) { $msg = $table->getError(); echo '{"status" : 0, "message" : "'.$msg.'"}'; exit; } // Now we need to handle the module assignments $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('menuid')) ->from($db->quoteName('#__modules_menu')) ->where($db->quoteName('moduleid') . ' = ' . $table->id); $db->setQuery($query); $menus = $db->loadColumn(); if (empty($menus)) { $menus[] = '0'; } // Insert the new records into the table foreach ($menus as $menu) { $query->clear() ->insert($db->quoteName('#__modules_menu')) ->columns(array($db->quoteName('moduleid'), $db->quoteName('menuid'))) ->values($table->id . ', ' . $menu); $db->setQuery($query); $db->execute(); } // store the infos of the module for the template // $query->clear() // ->insert($db->quoteName('#__templateck_modules')) // ->columns(array($db->quoteName('module_id'), $db->quoteName('template_id'))) // ->values($table->id . ', ' . $templateid); // $db->setQuery($query); // $db->execute(); // success echo '{"status" : "1", "id" : "'.$table->id.'"}'; exit; } public function ajaxSearchExistingModules() { $this->ajaxSecurityCheck(); $input = JFactory::getApplication()->input; $type = $input->get('type', '', 'string'); $position = $input->get('position', '', 'string'); // $module = str_replace('module-', 'mod_', $type); $db = JFactory::getDbo(); $q = "SELECT COUNT(*) FROM #__modules WHERE module='" . $type . "' AND published = 1 AND position='" . $position . "' AND client_id=0;"; try { $query = $db->getQuery(true); $db->setQuery($q); $nbModules = $db->loadResult(); } catch (Exception $e) { echo '{"status" : "0", "message" : "<div class=alert><b>SQL ERROR FROM TEMPLATE CREATOR CK - LIST OF MODULES : </b>'. $e->getMessage().'</div>"}'; exit; } echo '{"status" : "1", "count" : "' . $nbModules . '"}'; exit; } public function ajaxSearchExistingModule() { $this->ajaxSecurityCheck(); $input = JFactory::getApplication()->input; $type = $input->get('type', '', 'string'); $position = $input->get('position', '', 'string'); $moduleid = $input->get('moduleid', 0, 'int'); // $module = str_replace('module-', '', $type); // $module = 'mod_' . $type; $db = JFactory::getDbo(); $q = "SELECT COUNT(*) FROM #__modules WHERE module='" . $type . "' AND published = 1 AND position='" . $position . "' AND id='" . (int)$moduleid . "' AND client_id=0;"; try { $query = $db->getQuery(true); $db->setQuery($q); $nbModules = $db->loadResult(); } catch (Exception $e) { echo '{"status" : "0", "message" : "<div class=alert><b>SQL ERROR FROM TEMPLATE CREATOR CK - LIST OF MODULES : </b>'. $e->getMessage().'</div>"}'; exit; } echo '{"status" : "1", "count" : "' . $nbModules . '"}'; exit; } public function ajaxToggleModuleState() { $this->ajaxSecurityCheck(); $input = JFactory::getApplication()->input; $id = $input->get('moduleid', '', 'int'); $state = $input->get('state', '', 'int'); // Import table JLoader::register('JTableModule', JPATH_PLATFORM . '/joomla/database/table/module.php'); $table = JTable::getInstance('Module', 'JTable'); // Get the data. if (!$table->load($id)) { $msg = $table->getError(); echo '{"status" : 0, "message" : "'.$msg.'"}'; exit; } $table->published = !(int)$state; // Store the data. if (!$table->store()) { $msg = $table->getError(); echo '{"status" : 0, "message" : "'.$msg.'"}'; exit; } // success echo '{"status" : "1", "state" : "'.$table->published.'"}'; exit; } public function ajaxAutoCreateThumbs() { $this->ajaxSecurityCheck(); $app = JFactory::getApplication(); $input = $app->input; $data = $input->get('data', '', 'raw'); $templatename = $input->get('templatename', '', 'string'); $data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)); $path = JPATH_SITE . '/templates/' . $templatename; if (file_exists($path)) { file_put_contents($path . '/template_preview.png', $data); file_put_contents($path . '/template_thumbnail.png', $data); } exit; } public function ajaxSetTemplateOptions() { // $this->ajaxSecurityCheck(); $app = JFactory::getApplication(); $input = $app->input; $templatename = $input->get('templatename', '', 'string'); $blocid = $input->get('blocid', '', 'string'); $logoalt = $input->get('logoalt', '', 'string'); $logolink = $input->get('logolink', '', 'string'); $uselogodesc = $input->get('uselogodesc', '', 'string'); $logodesctext = $input->get('logodesctext', '', 'string'); $logoimg = trim($input->get('logoimg', '', 'string'), '/'); $logowidth = $input->get('logowidth', '', 'string'); $logoheight = $input->get('logoheight', '', 'string'); // get the template object $template = $this->getTemplateByName($templatename); if (! $template) exit; $logodesc = $uselogodesc == 'uselogodescyes' ? $logodesctext : ''; // Store the template and its params to the config $template->params->set($blocid . '_logoimgsrc', $logoimg); $template->params->set($blocid . '_logoheight', $logoheight); $template->params->set($blocid . '_logowidth', $logowidth); $template->params->set($blocid . '_logolink', $logolink); $template->params->set($blocid . '_logotitle', $logoalt); $template->params->set($blocid . '_logodescription', $logodesc); $params = $template->params->toString(); // store the template options $db = JFactory::getDbo(); $query = 'UPDATE #__template_styles SET params = ' . $db->quote($params) . ' WHERE template = ' . $db->quote($templatename); $db->setQuery($query); $db->execute(); exit; } public function getTemplateByName($name) { // Load styles $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('s.params') ->from('#__template_styles as s') ->where('s.client_id = 0') ->where('s.template = ' . $db->quote($name)); // ->join('LEFT', '#__extensions as e ON e.element=s.template AND e.type=' . $db->quote('template') . ' AND e.client_id=s.client_id'); $db->setQuery($query); $template = $db->loadObject(); if (! $template) return false; $registry = new JRegistry; $registry->loadString($template->params); $template->params = $registry; return $template; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings