|
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();
}
}