Hallo Geraldo
Danke für das Feedback. Ich bin in der letzten Zeit nicht faul gewesen und habe den CMSInstaller weiter entwickelt. Mittlerweile bin ich bei der Version 0.3.2 angelangt.
Hier gibt es die aktuelle Version:
http://dl.dropbox.com/u/1392406/cmsinst ... taller.php
Die Anregung von dir habe ich integriert. Ich schau mal, dass ich eine alternative zu Curl einbaue. Mal schauen ob es einen dritten Weg zwischen Curl und file_get_contents. Curl ist nicht immer geladen und file_get_contents hat ein Problem mit url_allow_fopen.
Hier das Changelog:
/*-----------------------------------------------------------
| Changelog
|
| v0.3.2
| Fehlermeldung wenn curl nicht eingebunden ist
| Warnhinweis wenn exec nicht aktiv ist
| Einbinden von Meldungsfenstern für Hinweise, Erfolg, etc.
| Backup Zip per exec erstellen (kein Memory Problem mehr)
| API-Key zum externen Abfragen der installierten CMS Version
| Sicherheitseinstellungen zum Unterbinden des Downloads einer Backup Datei in die .htaccess schreiben
| verfeinerte Auswahl was nach der Installation gelöscht werden soll
| Download der bestehenden Backupfiles direkt auf der Startseite
|
| v0.3.1
| chmod Problem nach dem entpacken gelöst. (chmod in der archive Class deaktiviert)
| Secure Download der Backupfiles (Files können im .htaccess gesperrt werden)
| Hinweis wie das .htaccess File zum Schutz der Backups erweitert werden muss
| loading Grafik eingebunden während dem Laden der Seite
| beim Backup werden nur die CMS spezifischen Ordner ohne "uploads" gesichert
| jquery direkt im File integriert, damit eine Fremdladezeit weniger
|
| v0.3
| Dropbox Upload des Backups
| Auswahl der Version des Updates (>= aktuell installierte Version)
| Checkbox ob Default-Template Dateien beim Bereinigen gelöscht werden sollen
| Bei Update und Installation admin Ordner umbenennen können
| Beim Backup werden nur die CMSMS spezifischen Ordner gesichert
|
| v0.2.1
| Betriebsystem Erkennung -> exec funktioniert unter Win nicht
| Admin-Ordner während der Installation umbenennen
|
| v0.2
| Entpacken des tar.gz Archivs mittels exec wenn diese Funktion
| zur Verfügung steht -> Derzeit Probleme mit den Berechtigungen
| beim entpacken mittels archive_class
|
| v0.1
| Initial Release
+----------------------------------------------------------*/
In der aktuellen Version habe ich die Möglichkeit geschaffen die installierte CMS Version von extern abzufragen. Dazu habe ich folgendes Plugin geschrieben:
function.cmsinstallerapi.php
http://dl.dropbox.com/u/1392406/cmsinst ... lerapi.php
Code: Select all
<?php
class getInstalledCMSVersion {
protected $url;
protected $apikey;
protected $errors = array();
public function __construct($url, $apikey) {
if (strpos($this->url,"/cmsinstaller.php") === FALSE)
$this->url = $url."/cmsinstaller.php";
else
$this->url = $url;
if (strpos($this->url ,"http://") === FALSE)
$this->url = "http://".$this->url;
$this->apikey = $apikey;
}
public function getVersion()
{
$version = $this->getData();
$retval = "<p><strong>". parse_url($this->url, PHP_URL_HOST)."</strong><br />\n";
$retval .= "Version: " . $version . "<br />\n";
$retval .= "<a href=\"".$this->url."\" target=\"_blank\">zum CMSInstaller</a></p>\n";
if (count($this->errors) > 0) {
echo "<p><strong>Fehler - ". parse_url($this->url, PHP_URL_HOST)."<strong><br />\n";
print_r($this->errors);
foreach ($this->errors as $error) {
echo $error . "<br />\n";
}
return;
}
echo $retval;
}
protected function getData() {
if ($this-url == "") {
$this->errors[] = "Es ist keine URL definiert";
return;
}
if (strlen($this->apikey) != 40) {
$this->errors[] = "Der API Key muss 40 Zeichen enthalten";
return;
}
$getData = array();
$getData = array('get' => 'version', 'api' => $this->apikey);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$this->url."?get=version&api=".$this->apikey);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
$output = curl_exec($ch);
$len = curl_getinfo($ch,CURLINFO_SIZE_DOWNLOAD);
if ($len == 0) {
$this->errors[] = "Die Version konnte nicht ermittelt werden - ".$this->url."?get=version&api=".$this->apikey."\n";
return "";
}
return $output;
}
}
function smarty_cms_function_cmsinstallerapi($params, &$smarty)
{
$cmsinstaller= new getInstalledCMSVersion($params['url'],$params['apikey']);
$cmsinstaller->getVersion();
}
function smarty_cms_help_function_cmsinstallerapi() {
?>
<h3>What does this do?</h3>
<p>Display the Version of a CMS Version by cmsinstaller.php. </p>
<h3>How do I use it?</h3>
<p>Just insert the tag into your template/page like <code>{cmsinstallerapi url="" apikey=""}</code>.</p>
<h3>What parameters does it take?</h3>
<p>
<ul>
<li><em>(require)</em> <tt>url</tt> - of the CMSMS Installation</li>
<li><em>(require)</em> <tt>apikey</tt> - the apikey from cmsinstaller.php.</li>
</ul>
</p>
<?php
}
function smarty_cms_about_function_cmsinstallerapi() {
?>
<p>Author: Lukas Blatter <<a href="mailto:lukas.blatter@gmail.com">lukas.blatter@gmail.com</a>>
</p>
<p>Version 0.1</p>
<p>Change History:<br />
0.1 - Alpha version released.
</p>
<?php
}
?>
Das ganze kann z.B. auf einer geschützten Seite des eigenen CMS eingebunden werden. Damit hat man in der Übersicht welche Version bei den verschiedenen Installationen genutzt wird und ist schneller im Updaten.