File size: 3.39Kb
<?php
namespace xenMade\ACPE\Repository;
use XF\Mvc\Entity\Finder;
use XF\Mvc\Entity\Repository;
class SoftwareVersions extends Repository
{
protected $_xfProducts = ['XF', 'XFMG', 'XFRM', 'XFES'];
public function getSoftwareVersions()
{
$versions = [];
try
{
/** @var \GuzzleHttp\Client $client */
$client = \XF::app()->http()->client();
$request = $client->createRequest('get', 'https://xenmade.com/getxfversions', [
'timeout' => 20,
'exceptions' => false,
'headers' => ['User-Agent' => 'ACPPlus2 XF Versions Checker']
]);
$response = $client->send($request);
if ($response && $response->getStatusCode() == 200)
{
$xml = $response->xml();
if($xml instanceof \SimpleXMLElement)
{
if($xml->children() instanceof \SimpleXMLElement)
{
foreach($xml->children() as $child)
{
$product = (string)$child->getName();
$addOnId = 'unknow';
switch($product)
{
case 'XenForo':
$addOnId = 'XF';
break;
case 'XenES':
$addOnId = 'XFES';
break;
case 'XenResource':
$addOnId = 'XFRM';
break;
case 'XenGallery':
$addOnId = 'XFMG';
break;
}
$versions[$addOnId] = (string)$child['version'];
}
}
}
}
}
catch(\GuzzleHttp\Exception\RequestException $e)
{
\XF::logException($e, false, 'ACPE XF Versions Check: ');
return true;
}
$cache = \XF::app()->simpleCache()->ACPE;
$cache->software_versions = $versions;
return true;
}
public function getVersionsList($onlyXF = false)
{
\XF::app()->addOnManager()->_acpe = true;
$addOns = \XF::app()->addOnManager()->getInstalledAddOns();
$softwareVersions = \XF::app()->simpleCache()->ACPE->software_versions;
$products = [];
foreach ($addOns as $addOnId => $addOn)
{
if(isset($softwareVersions[$addOnId]))
{
if(!in_array($addOnId, $this->_xfProducts))
continue;
$products[$addOnId] =
[
'addon_id' => $addOnId,
'title' => $addOn['title'],
'version_string' => $addOn['version_string'],
'current_string' => $softwareVersions[$addOnId],
'update_exists' => version_compare($softwareVersions[$addOnId], $addOn['version_string']),
];
}
}
return $products;
}
}