わかりましたので、これは私が昨日書いたものです。
Joomla 2.5および3.xのみ
http://
プレフィックスがURLにないかどうかを確認します。ある場合は、追加します。この場合、私がしたことを注意しませ取らhttps://
考慮。
- 次に、Joomlaマニフェストファイルの取得を試み、が存在するか、読み取り可能かどうかを確認します。
- 存在する場合は、
<version>
タグから値を取得します。
- XMLファイルが読み込めない場合は、TinyMCEバージョンを取得するためのフォールバックを作成しました。繰り返しになりますが、
<version>
タグから値を読み取ろうとします。
- ここからは、Joomlaの各バージョンのリリースノートを調べて、どのバージョンにTinyMCEの更新があるかを確認するのにかなりの時間を費やしました。そうしたものは、私
switch
はコードにさらに独自のブロックを追加しました。このアプローチは、2つを除いて正確なバージョンを提供しませんが、平均を提供します。jQueryのバージョンを検出することを考えていましたが、多くの人がコアバージョンを最新に更新すると、結果が不正確になることに気付きました。
- TinyMCEバージョンが見つからない場合(つまり、Joomla以外のサイトの場合)、関数はを返し
Unknown
ます。
注:このスクリプトはを使用するCURL
ため、サーバーで有効になっていることを確認してください。
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;
}
}
次に、次のように関数を呼び出します。
$version = new JoomlaVersions;
echo $version->getJoomlaVersion('http://joomla.org');
他のユーザーのためのツールとして、自分のWebサイトにモジュールを作成しました。
Joomlaバージョン検出ツール
フォークしたり、プルリクエストを送信したりする場合は、Githubリポジトリも作成しました。
Joomlaバージョン検出Githubリポジトリ
とにかく、ご存じのように、私はバックエンドの開発者ではないので、コードに多くの改善を加えることができます。別の解決策があるか、現在持っているものを更新できる場合は、必ず新しい回答として投稿してください。