%PDF- %PDF-
| Direktori : /home/lightco1/luminero.com.au/libraries/compojoom/model/ |
| Current File : /home/lightco1/luminero.com.au/libraries/compojoom/model/stats.php |
<?php
/**
* @package Lib_Compojoom
* @author DanielDimitrov <daniel@compojoom.com>
* @date 17.09.2014
*
* @copyright Copyright (C) 2008 - 2013 compojoom.com . All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('_JEXEC') or die('Restricted access');
/**
* Class CompojoomModelUpdate
*
* This class is based onF0FUtilsUpdate so all creadits go to F0F
*
* @since 4.0
*/
abstract class CompojoomModelStats extends JModelLegacy
{
protected $extension = '';
protected $exclude = array(
'downloadid'
);
/**
* Constructor
*
* @param array $config An array of configuration options (name, state, dbo, table_path, ignore_request).
*
* @since 12.2
* @throws Exception
*/
public function __construct($config)
{
if ($this->extension == '')
{
throw new Exception('You need to provide an extension');
}
parent::__construct($config);
}
/**
* Get the necessary data for our stats report
*
* @return array
*/
public function getData()
{
$data = array();
$db = JFactory::getDbo();
$data['php'] = phpversion();
$data['mysql'] = $db->getVersion() . ' ' . $db->name;
$data['domain'] = Juri::root();
$data['joomla'] = JVERSION;
$data['os'] = php_uname();
$data['server'] = $_SERVER['SERVER_SOFTWARE'] . ' ' . (function_exists('php_sapi_name') ? php_sapi_name() : '');
$data['language'] = implode(',', array_keys(JLanguage::getKnownLanguages(JPATH_BASE)));
$data['timezone'] = JFactory::getConfig()->get('offset');
$data['extension'] = $this->extension;
$data['version'] = CompojoomComponentHelper::getManifest($this->extension)->get('version');
$data['config'] = $this->getConfig();
$customData = $this->getCustomExtensionData();
if ($customData)
{
$data = array_merge($data, $customData);
}
return $data;
}
/**
* This function should return any specific extension data that we want to send
*
* @return mixed
*/
abstract public function getCustomExtensionData();
/**
* We've gathered the data and all we need to do is to update the time for the last report
*
* @return void
*/
public function dataGathered()
{
$data = CompojoomComponentHelper::getComponentCustomData($this->extension);
$data->set('update_report_sent', JFactory::getDate()->toSql());
CompojoomComponentHelper::updateComponentCustomData($this->extension, $data);
}
/**
* Get the component config by respecting the exclude options
*
* @return string
*/
private function getConfig()
{
$config = JComponentHelper::getParams($this->extension);
// Remove the values for any excluded option
foreach ($this->exclude as $value)
{
$config->set($value, null);
}
return $config->toString();
}
/**
* Do we need to update the statistics on this site?
*
* @return bool
*/
public function needsUpdate()
{
$config = JComponentHelper::getParams($this->extension);
// Has the user enabled stat reports?
if ($config->get('update_stats', 1))
{
// When was the last time we've send a report?
$customData = CompojoomComponentHelper::getComponentCustomData($this->extension);
$reportSent = $customData->get('update_report_sent', '');
// We haven't set anything, then we need to update
if ($reportSent == '')
{
return true;
}
// We have a date?
$now = JFactory::getDate();
$reportSentDate = JFactory::getDate($reportSent);
$diff = $now->diff($reportSentDate);
if ($diff->days > 7)
{
return true;
}
}
return false;
}
}