Current Directory: /home/astoriaah/www/old15/plugins/installer/sh404sef
Viewing File: /home/astoriaah/www/old15/plugins/installer/sh404sef/sh404sef.php
<?php
/**
* sh404SEF - SEO extension for Joomla!
*
* @author Yannick Gaultier
* @copyright (c) Yannick Gaultier 2014
* @package sh404SEF
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @version 4.4.4.1791
* @date 2014-07-01
*/
defined('_JEXEC') or die;
/**
* Handle commercial extension update authorization
*
* @since 2.5
*/
class PlgInstallerSh404sef extends JPlugin
{
/**
* @var String base update url, to decide whether to process the event or not
* @since 2.5
*/
private $baseUrl = 'http://u1.weeblr.com/dist/sh404sef/full';
/**
* @var String extension identifier, to retrieve its params
* @since 2.5
*/
private $extension = 'com_sh404sef';
/**
* @var String An id for your product, to be used by the web site when deciding to allow access
* Not mandatory, depends on subscription management system
* @since 2.5
*/
private $productId = 'sh404sef';
/**
* @var String An edition type (full, free, lite,...) for the product
* Not mandatory, depends on subscription management system
* @since 2.5
*/
private $productEdition = 'full';
/**
* Handle adding credentials to package download request
*
* @param string $url url from which package is going to be downloaded
* @param array $headers headers to be sent along the download request (key => value format)
*
* @return boolean true always true
*
* @since 2.5
*/
public function onInstallerBeforePackageDownload(&$url, &$headers)
{
// are we trying to update our extension?
if (strpos($url, $this->baseUrl) !== 0)
{
return true;
}
// read credentials from extension params or any other source
$credentials = $this->fetchCredentials($url, $headers);
// bind credentials to request, either in the urls, or using headers
// or a combination of both
$this->bindCredentials($credentials, $url, $headers);
return true;
}
/**
* Bind credentials to the download request.
*
* @param array $credentials whatever credentials were retrieved for the current user/website
* @param string $url url from which package is going to be downloaded
* @param array $headers headers to be sent along the download request (key => value format)
*
* @return void
*/
private function bindCredentials($credentials, &$url, &$headers)
{
$headers['X-download-auth-ts'] = time();
$headers['X-download-auth-id'] = $credentials['id'];
$headers['X-download-auth-token'] = sha1($headers['X-download-auth-ts'] . mt_rand() . $credentials['secret'] . $url);
$headers['X-download-auth-sig'] = sha1(
$credentials['id'] . $headers['X-download-auth-token'] . $credentials['secret'] . $headers['X-download-auth-ts'] . $this->productId
. $this->productEdition);
}
/**
* Retrieve user credentials
*
* @return mixed an array with credentials (id, secret), or null if none found
*/
private function fetchCredentials($url, $headers)
{
$credentials = null;
// fetch credentials from extension parameters
// Get the component information from the #__extensions table
JLoader::import('joomla.application.component.helper');
$component = JComponentHelper::getComponent($this->extension);
$credentials = array('id' => trim($component->params->get('update_credentials_access', '')),
'secret' => trim($component->params->get('update_credentials_secret', '')));
return $credentials;
}
}