Tamam, dün yazdığım şey buydu.
Yalnızca Joomla 2.5 ve 3.x için
- Ön
http://
ekin URL'de bulunup bulunmadığını kontrol edin . Öyleyse, ekler. Bu durumda ben ki Not değil alınan https://
dikkate.
- Daha sonra Joomla manifest dosyasını almaya çalışır ve var olup olmadığını / okunabilir olup olmadığını kontrol eder.
- Varsa, değeri
<version>
etiketten alır.
- XML dosyası okunamıyorsa, TinyMCE sürümünü almak için bir yedek yazdım. Yine,
<version>
etiketten değeri okumaya çalışacaktır .
- Buradan sonra, hangi sürümlerin bir TinyMCE güncellemesine sahip olduğunu görmek için her Joomla sürümü için sürüm notlarını gözden geçirerek oldukça uzun zaman geçirdim. Yapanlar, ben
switch
daha fazla kod kendi blok ekledi . Bu yaklaşım, 2 sürüm dışında tam sürümü vermeyecek, ancak ortalama verecektir. JQuery sürümünü tespit etmeyi düşünüyordum, ancak daha sonra birçok insanın çekirdek sürümü en son sürüme güncellediğini fark etti ve bu da sonuçların yanlış olmasını sağlayacaktır.
- TinyMCE sürümü bulunamazsa (temel olarak Joomla olmayan bir site), işlev geri döner
Unknown
.
Not: Bu komut dosyası kullanır, CURL
bu nedenle sunucunuzda etkinleştirildiğinden emin olun.
class JoomlaVersions
{
public function getJoomlaVersion($site)
{
// Add http prefix if missing
if (strpos($site,'http://') === false)
{
$site = 'http://'.$site;
}
// Get the number value from the <version> tag in the XML file
$dom = new DOMDocument;
$url = $site . '/administrator/manifests/files/joomla.xml';
libxml_use_internal_errors(true);
$exists = $this->XMLexists($url);
if( $exists )
{
$dom->load($url);
$versions = $dom->getElementsByTagName('version');
foreach ($versions as $version)
{
return $version->nodeValue;
}
}
else
{
$mce = $this->getTinyMCEversion($site);
if($mce)
{
// Base Joomla version on the TinyMCE version
switch ($mce)
{
case '3.5.6':
$joomla = '3.0.0 - 3.1.6';
break;
case '4.0.10':
$joomla = '3.2.0 - 3.2.1';
break;
case '4.0.12':
$joomla = '3.2.2';
break;
case '4.0.18':
$joomla = '3.2.3 - 3.2.4';
break;
case '4.0.22':
$joomla = '3.3.0';
break;
case '4.0.28':
$joomla = '3.3.1 - 3.3.6';
break;
case '4.1.7':
$joomla = '3.4.0';
break;
default:
$joomla = '3.x';
}
return $joomla;
}
else
{
return 'Unknown';
}
}
}
// Get TinyMCE Version
private function getTinyMCEversion($site)
{
$tinymce = $site . '/plugins/editors/tinymce/tinymce.xml';
libxml_use_internal_errors(true);
$exists = $this->XMLexists($tinymce);
if( $exists )
{
$dom->load($tinymce);
$vTag = $dom->getElementsByTagName('version');
foreach ($vTag as $tag)
{
return $tag->nodeValue;
}
}
}
// Check file exists using CURL
private function XMLexists($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$getinfo = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $getinfo;
}
}
Sonra işlevi şöyle çağırın:
$version = new JoomlaVersions;
echo $version->getJoomlaVersion('http://joomla.org');
Web sitemde diğer kullanıcılar için bir Araç olarak bir modül oluşturdum:
Joomla Sürüm Tespit Aracı
Çatallamak veya çekme istekleri göndermek isterseniz de bir Github deposu oluşturdum:
Joomla Sürümü Algılama Github Repo
Her neyse, bazılarınızın bildiği gibi, ben bir arka uç geliştirici değilim, bu yüzden muhtemelen kodda yapılabilecek birçok iyileştirme var. Başka bir çözümünüz varsa veya şu anda sahip olduğumu güncelleyebiliyorsanız, yeni bir yanıt olarak gönderdiğinizden emin olun.