Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /var/www/andreassugianto.com/public_html/plugins/system/atoolsjupdatecheck/ |
Upload File : |
<?php /** * @package AdminTools * @subpackage UpdateCheck * @copyright Copyright (c)2011-2013 Nicholas K. Dionysopoulos * @license GNU General Public License version 3, or later */ defined('_JEXEC') or die(); // Uncomment the following line to enable debug mode //define('ATJUPDATEDEBUG',1); // PHP version check if(defined('PHP_VERSION')) { $version = PHP_VERSION; } elseif(function_exists('phpversion')) { $version = phpversion(); } else { $version = '5.0.0'; // all bets are off! } if(!version_compare($version, '5.2.7', 'ge')) return; // You can't fix stupid… but you can try working around it if( (!function_exists('json_encode')) || (!function_exists('json_decode')) ) { require_once JPATH_ADMINISTRATOR . '/components/com_admintools/helpers/jsonlib.php'; } JLoader::import('joomla.application.plugin'); class plgSystemAtoolsjupdatecheck extends JPlugin { public function onAfterRender() { // Is the One Click Action plugin enabled? $app = JFactory::getApplication(); $jResponse = $app->triggerEvent('onOneClickActionEnabled'); if (empty($jResponse)) { return; } $status = false; foreach ($jResponse as $response) { $status = $status || $response; } if (!$status) { return; } // Get the timeout for Joomla! updates jimport('joomla.application.component.helper'); $component = JComponentHelper::getComponent('com_installer'); $params = $component->params; $cache_timeout = $params->get('cachetimeout', 6, 'int'); $cache_timeout = 3600 * $cache_timeout; // Do we need to run? $last = $this->params->get('lastrun', 0); $now = time(); if (!defined('ATJUPDATEDEBUG') && (abs($now - $last) < $cache_timeout)) { return; } // Update last run status $params->set('lastrun', $now); $db = JFactory::getDBO(); $data = $params->toString('JSON'); $sql = $db->getQuery(true) ->update($db->qn('#__extensions')) ->set($db->qn('params').' = '.$db->q($data)) ->where($db->qn('type').' = '.$db->q('plugin')) ->where($db->qn('folder').' = '.$db->q('system')) ->where($db->qn('element').' = '.$db->q('atoolsjupdatecheck')); $db->setQuery($sql); try { $result = $db->execute(); } catch (Exception $exc) { $result = false; } if (!$result) { return; } // This is the extension ID for Joomla! itself $eid = 700; // Get any available updates $updater = JUpdater::getInstance(); $results = $updater->findUpdates(array($eid), $cache_timeout); if (!$results) { return; } require_once JPATH_ADMINISTRATOR . '/components/com_installer/models/update.php'; $model = JModelLegacy::getInstance('Update','InstallerModel'); $model->setState('filter.extension_id', $eid); $updates = $model->getItems(); if (empty($updates)) { return; } $update = array_pop($updates); // If we're here, we have updates. Let's create an OTP. $uri = JURI::base(); $uri = rtrim($uri,'/'); $uri .= (substr($uri,-13) != 'administrator') ? '/administrator/' : '/'; $link = 'index.php?option=com_joomlaupdate'; $superAdmins = array(); $superAdminEmail = $this->params->get('email', ''); if (!empty($superAdminEmail)) { $superAdmins = $this->_getSuperAdministrators($superAdminEmail); } if (empty($superAdmins)) { $superAdmins = $this->_getSuperAdministrators(); } if (empty($superAdmins)) { return; } $this->loadLanguage(); $email_subject = JText::_('PLG_ATOOLSJUPDATECHECK_EMAIL_SUBJECT'); $email_body = JText::_('PLG_ATOOLSJUPDATECHECK_EMAIL_BODY'); $newVersion = $update->version; $jVersion = new JVersion; $currentVersion = $jVersion->getShortVersion(); $jconfig = JFactory::getConfig(); $sitename = $jconfig->get('sitename'); $substitutions = array( '[NEWVERSION]' => $newVersion, '[CURVERSION]' => $currentVersion, '[SITENAME]' => $sitename ); // If Admin Tools Professional is installed, fetch the administrator secret key as well $adminpw = ''; $modelFile = JPATH_ROOT.'/administrator/components/com_admintools/models/storage.php'; if (@file_exists($modelFile)) { include_once $modelFile; if (class_exists('AdmintoolsModelStorage')) { $model = JModelLegacy::getInstance('Storage','AdmintoolsModel'); $adminpw = $model->getValue('adminpw',''); } } foreach($superAdmins as $sa) { $otp = plgSystemOneclickaction::addAction($sa->id, $link); if (is_null($otp)) { // If the OTP is null, a database error occurred return; } elseif (empty($otp)) { // If the OTP is empty, an OTP for the same action was already // created and it hasn't expired. continue; } $emaillink = $uri.'index.php?oneclickaction='.$otp; if (!empty($adminpw)) { $emaillink .= '&'.urlencode($adminpw); } $substitutions['[LINK]'] = $emaillink."\n\n".JText::_('PLG_ATOOLSJUPDATECHECK_EMAIL_IMPORTANTNOTES'); foreach ($substitutions as $k => $v) { $email_subject = str_replace($k, $v, $email_subject); $email_body = str_replace($k, $v, $email_body); } $mailer = JFactory::getMailer(); $mailfrom = $jconfig->get('mailfrom'); $fromname = $jconfig->get('fromname'); $mailer->setSender(array( $mailfrom, $fromname )); $mailer->addRecipient($sa->email); $mailer->setSubject($email_subject); $mailer->setBody($email_body); $mailer->Send(); } } private function _getSuperAdministrators($email = null) { $db = JFactory::getDBO(); $sql = $db->getQuery(true) ->select(array( $db->qn('u').'.'.$db->qn('id'), $db->qn('u').'.'.$db->qn('email') ))->from($db->qn('#__user_usergroup_map').' AS '.$db->qn('g')) ->join( 'INNER', $db->qn('#__users').' AS '.$db->qn('u').' ON ('. $db->qn('g').'.'.$db->qn('user_id').' = '.$db->qn('u').'.'.$db->qn('id').')' )->where($db->qn('g').'.'.$db->qn('group_id').' = '.$db->q('8')) ->where($db->qn('u').'.'.$db->qn('sendEmail').' = '.$db->q('1')) ; if (!empty($email)) { $sql->where($db->qn('u').'.'.$db->qn('email').' = '.$db->q($email)); } $db->setQuery($sql); return $db->loadObjectList(); } }