| Current Path : /home/smartconb/www/armencom33/administrator/components/com_jmailalerts/models/ |
| Current File : /home/smartconb/www/armencom33/administrator/components/com_jmailalerts/models/dashboard.php |
<?php
/**
* @version SVN: <svn_id>
* @package JMailAlerts
* @author Techjoomla <extensions@techjoomla.com>
* @copyright Copyright (c) 2009-2015 Techjoomla. All rights reserved.
* @license GNU General Public License version 2 or later.
*/
// No direct access.
defined('_JEXEC') or die();
jimport('joomla.application.component.model');
/**
* Model class for JMailAlerts control panel.
*
* @package JMailAlerts
*
* @since 3.0
*/
class JmailalertsModelDashboard extends JModelLegacy
{
/**
* Constructor
*
* @since 3.0
*/
public function __construct()
{
// Get download id
$params = JComponentHelper::getParams('com_jmailalerts');
$this->downloadid = $params->get('downloadid');
// Setup vars
$this->updateStreamName = 'JMailAlerts';
$this->updateStreamType = 'extension';
$this->updateStreamUrl = "https://techjoomla.com/component/ars/updates/components/jmailalerts?format=xml&dummy=extension.xml";
$this->extensionElement = 'com_jmailalerts';
$this->extensionType = 'component';
// Call the parents constructor
parent::__construct();
}
/**
* Get extension id for tis extension
*
* @return string
*
* @since 3.2.5
*/
public function getExtensionId()
{
$db = $this->getDbo();
// Get current extension ID
$query = $db->getQuery(true)
->select($db->qn('extension_id'))
->from($db->qn('#__extensions'))
->where($db->qn('type') . ' = ' . $db->q($this->extensionType))
->where($db->qn('element') . ' = ' . $db->q($this->extensionElement));
$db->setQuery($query);
$extension_id = $db->loadResult();
if (empty($extension_id))
{
return 0;
}
else
{
return $extension_id;
}
}
/**
* Refreshes the Joomla! update sites for this extension as needed
*
* @return void
*/
public function refreshUpdateSite()
{
// Extra query for Joomla 3.0 onwards
$extra_query = null;
if (preg_match('/^([0-9]{1,}:)?[0-9a-f]{32}$/i', $this->downloadid))
{
$extra_query = 'dlid=' . $this->downloadid;
}
// Setup update site array for storing in database
$update_site = array(
'name' => $this->updateStreamName,
'type' => $this->updateStreamType,
'location' => $this->updateStreamUrl,
'enabled' => 1,
'last_check_timestamp' => 0,
'extra_query' => $extra_query
);
// For joomla versions < 3.0
if (version_compare(JVERSION, '3.0.0', 'lt'))
{
unset($update_site['extra_query']);
}
$db = $this->getDbo();
// Get current extension ID
$extension_id = $this->getExtensionId();
if (!$extension_id)
{
return;
}
// Get the update sites for current extension
$query = $db->getQuery(true)
->select($db->qn('update_site_id'))
->from($db->qn('#__update_sites_extensions'))
->where($db->qn('extension_id') . ' = ' . $db->q($extension_id));
$db->setQuery($query);
$updateSiteIDs = $db->loadColumn(0);
if (!count($updateSiteIDs))
{
// No update sites defined. Create a new one.
$newSite = (object) $update_site;
$db->insertObject('#__update_sites', $newSite);
$id = $db->insertid();
$updateSiteExtension = (object) array(
'update_site_id' => $id,
'extension_id' => $extension_id,
);
$db->insertObject('#__update_sites_extensions', $updateSiteExtension);
}
else
{
// Loop through all update sites
foreach ($updateSiteIDs as $id)
{
$query = $db->getQuery(true)
->select('*')
->from($db->qn('#__update_sites'))
->where($db->qn('update_site_id') . ' = ' . $db->q($id));
$db->setQuery($query);
$aSite = $db->loadObject();
// Does the name and location match?
if (($aSite->name == $update_site['name']) && ($aSite->location == $update_site['location']))
{
// Do we have the extra_query property (J 3.2+) and does it match?
if (property_exists($aSite, 'extra_query'))
{
if ($aSite->extra_query == $update_site['extra_query'])
{
continue;
}
}
else
{
// Joomla! 3.1 or earlier. Updates may or may not work.
continue;
}
}
$update_site['update_site_id'] = $id;
$newSite = (object) $update_site;
$db->updateObject('#__update_sites', $newSite, 'update_site_id', true);
}
}
}
/**
* Get latest version fetched by joomla updater
*
* @return string
*
* @since 3.2.5
*/
public function getLatestVersion()
{
// Get current extension ID
$extension_id = $this->getExtensionId();
if (!$extension_id)
{
return 0;
}
$db = $this->getDbo();
// Get current extension ID
$query = $db->getQuery(true)
->select($db->qn(array('version', 'infourl')))
->from($db->qn('#__updates'))
->where($db->qn('extension_id') . ' = ' . $db->q($extension_id));
$db->setQuery($query);
$latestVersion = $db->loadObject();
if (empty($latestVersion))
{
return 0;
}
else
{
return $latestVersion;
}
}
}