* allow comments inside plugin json file

* updated German translation (by German native speaker)
This commit is contained in:
slawkens 2018-01-08 16:15:34 +01:00
parent f29758939c
commit 5aa1ae003e
6 changed files with 59 additions and 32 deletions

View File

@ -6,13 +6,21 @@
"contact": "nobody@example.org", "contact": "nobody@example.org",
"require": { "require": {
"myaac": "0.4.3", "myaac": "0.4.3",
"php": "5.2.0" "myaac_": ">=0.7,<1.0", // support for defining versions like in composer (since 0.8.0)
"php": "5.2.0",
"php_": ">5.4,<7.0", // support for defining versions like in composer (since 0.8.0)
"database": "21"
}, },
"install": "plugins/example/install.php", "install": "plugins/example/install.php",
"uninstall": [ "uninstall": [
"plugins/example.json", "plugins/example.json",
"plugins/example/install.php", "plugins/example-directory",
"plugins/example/before.php" "templates/other-directory"
/***
this is example of multi line comment
1. list example
2. something
****/
], ],
"hooks": { "hooks": {
"Example Hook": { "Example Hook": {

View File

@ -29,7 +29,7 @@ if(Plugins::install($path_to_file)) {
echo 'WARNING: ' . $warning; echo 'WARNING: ' . $warning;
} }
$info = Plugins::getPluginInfo(); $info = Plugins::getPlugin();
echo (isset($info['name']) ? $info['name'] . ' p' : 'P') . 'lugin has been successfully installed.'; echo (isset($info['name']) ? $info['name'] . ' p' : 'P') . 'lugin has been successfully installed.';
} }
else else

View File

@ -41,7 +41,7 @@ spl_autoload_register(function ($class) {
class Plugins { class Plugins {
private static $warnings = array(); private static $warnings = array();
private static $error = null; private static $error = null;
private static $pluginInfo = array(); private static $plugin = array();
public static function install($file) { public static function install($file) {
global $db, $cache; global $db, $cache;
@ -67,8 +67,9 @@ class Plugins {
} }
else { else {
$string = file_get_contents($file_name); $string = file_get_contents($file_name);
$string = Plugins::removeComments($string);
$plugin = json_decode($string, true); $plugin = json_decode($string, true);
self::$pluginInfo = $plugin; self::$plugin = $plugin;
if ($plugin == null) { if ($plugin == null) {
self::$warnings[] = 'Cannot load ' . $file_name . '. File might be not a valid json code.'; self::$warnings[] = 'Cannot load ' . $file_name . '. File might be not a valid json code.';
} }
@ -221,6 +222,7 @@ class Plugins {
} }
else { else {
$string = file_get_contents($filename); $string = file_get_contents($filename);
$string = self::removeComments($string);
$plugin_info = json_decode($string, true); $plugin_info = json_decode($string, true);
if($plugin_info == false) { if($plugin_info == false) {
self::$error = 'Cannot load plugin info ' . $plugin_name . '.json'; self::$error = 'Cannot load plugin info ' . $plugin_name . '.json';
@ -298,7 +300,23 @@ class Plugins {
return self::$error; return self::$error;
} }
public static function getPluginInfo() { public static function getPlugin() {
return self::$pluginInfo; return self::$plugin;
}
public static function removeComments($string) {
$string = preg_replace('!/\*.*?\*/!s', '', $string);
$string = preg_replace('/\n\s*\n/', "\n", $string);
// Removes multi-line comments and does not create
// a blank line, also treats white spaces/tabs
$string = preg_replace('!^[ \t]*/\*.*?\*/[ \t]*[\r\n]!s', '', $string);
// Removes single line '//' comments, treats blank characters
$string = preg_replace('![ \t]*//.*[ \t]*[\r\n]!', '', $string);
// Strip blank lines
$string = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $string);
return $string;
} }
} }

View File

@ -17,7 +17,7 @@ $locale['off'] = 'Aus';
$locale['loaded'] = 'Geladen'; $locale['loaded'] = 'Geladen';
$locale['not_loaded'] = 'Nicht geladen'; $locale['not_loaded'] = 'Nicht geladen';
$locale['please_fill_all'] = 'Bitte alle Felder ausfüllen!'; $locale['please_fill_all'] = 'Bitte füllen Sie alle Felder aus!';
$locale['already_installed'] = 'MyAAC wurde bereits installiert. Bitte löschen <b>install/<b/> Verzeichnis.'; $locale['already_installed'] = 'MyAAC wurde bereits installiert. Bitte löschen <b>install/<b/> Verzeichnis.';
// welcome // welcome
@ -41,7 +41,7 @@ $locale['step_requirements_extension'] = '$EXTENSION$ PHP Erweiterung';
$locale['step_config'] = 'Konfiguration'; $locale['step_config'] = 'Konfiguration';
$locale['step_config_title'] = 'Grundkonfiguration'; $locale['step_config_title'] = 'Grundkonfiguration';
$locale['step_config_server_path'] = 'Serverpfad'; $locale['step_config_server_path'] = 'Serverpfad';
$locale['step_config_server_path_desc'] = 'Pfad zu Ihrem TFS-Hauptverzeichnis, in dem Sie sich config.lua befinden.'; $locale['step_config_server_path_desc'] = 'Pfad zu Ihrem TFS-Hauptverzeichnis, in dem sich die config.lua befinden.';
$locale['step_config_mail_admin'] = 'Admin E-Mail'; $locale['step_config_mail_admin'] = 'Admin E-Mail';
$locale['step_config_mail_admin_desc'] = 'Adresse, an die E-Mails aus dem Kontaktformular gesendet werden, z. B. admin@gmail.com'; $locale['step_config_mail_admin_desc'] = 'Adresse, an die E-Mails aus dem Kontaktformular gesendet werden, z. B. admin@gmail.com';
$locale['step_config_mail_admin_error'] = 'Admin E-Mail ist nicht korrekt.'; $locale['step_config_mail_admin_error'] = 'Admin E-Mail ist nicht korrekt.';
@ -63,7 +63,7 @@ $locale['step_database'] = 'Schema importieren';
$locale['step_database_title'] = 'MySQL schema importieren'; $locale['step_database_title'] = 'MySQL schema importieren';
$locale['step_database_importing'] = 'Ihre Datenbank ist MySQL. Schema wird jetzt importiert...'; $locale['step_database_importing'] = 'Ihre Datenbank ist MySQL. Schema wird jetzt importiert...';
$locale['step_database_error_path'] = 'Bitte geben Sie den Serverpfad an.'; $locale['step_database_error_path'] = 'Bitte geben Sie den Serverpfad an.';
$locale['step_database_error_config'] = 'Datei config.lua kann nicht gefunden werden. Ist der Serverpfad korrekt? Geh zurück und überprüfe noch einmal.'; $locale['step_database_error_config'] = 'Datei config.lua kann nicht gefunden werden. Ist der Serverpfad korrekt? Gehen Sie zurück und überprüfen Sie noch einmal.';
$locale['step_database_error_database_empty'] = 'Der Datenbanktyp kann nicht aus config.lua ermittelt werden. Ihr OTS wird von diesem AAC nicht unterstützt.'; $locale['step_database_error_database_empty'] = 'Der Datenbanktyp kann nicht aus config.lua ermittelt werden. Ihr OTS wird von diesem AAC nicht unterstützt.';
$locale['step_database_error_only_mysql'] = 'Dieser AAC unterstützt nur MySQL. Aus Ihrer Konfigurationsdatei scheint Ihr OTS die Datenbank $DATABASE_TYPE$ zu verwenden. Bitte ändern Sie Ihre Datenbank in MySQL und folgen Sie dann der Installation erneut.'; $locale['step_database_error_only_mysql'] = 'Dieser AAC unterstützt nur MySQL. Aus Ihrer Konfigurationsdatei scheint Ihr OTS die Datenbank $DATABASE_TYPE$ zu verwenden. Bitte ändern Sie Ihre Datenbank in MySQL und folgen Sie dann der Installation erneut.';
$locale['step_database_error_table'] = 'Die Tabelle $TABLE$ existiert nicht. Bitte importieren Sie zuerst Ihr OTS-Datenbankschema.'; $locale['step_database_error_table'] = 'Die Tabelle $TABLE$ existiert nicht. Bitte importieren Sie zuerst Ihr OTS-Datenbankschema.';
@ -71,15 +71,15 @@ $locale['step_database_error_table_exist'] = 'Die Tabelle $TABLE$ existiert bere
$locale['step_database_error_schema'] = 'Fehler beim Importieren des Schemas:'; $locale['step_database_error_schema'] = 'Fehler beim Importieren des Schemas:';
$locale['step_database_success_schema'] = '$PREFIX$ Tabellen wurden erfolgreich installiert.'; $locale['step_database_success_schema'] = '$PREFIX$ Tabellen wurden erfolgreich installiert.';
$locale['step_database_error_file'] = '$FILE$ konnte nicht geöffnet werden. Bitte kopieren Sie diesen Inhalt und fügen Sie ihn dort ein:'; $locale['step_database_error_file'] = '$FILE$ konnte nicht geöffnet werden. Bitte kopieren Sie diesen Inhalt und fügen Sie ihn dort ein:';
$locale['step_database_adding_field'] = 'Feld hinzufügen'; $locale['step_database_adding_field'] = 'Folgendes Feld wurde hinzugefügt: ';
$locale['step_database_modifying_field'] = 'Ändern Feld'; $locale['step_database_modifying_field'] = 'Folgendes Feld wurde geändert: ';
$locale['step_database_changing_field'] = 'Ändern $FIELD$ zu $FIELD_NEW$...'; $locale['step_database_changing_field'] = 'Änderung von $FIELD$ zu $FIELD_NEW$...';
$locale['step_database_imported_players'] = 'Importierte Spielerproben...'; $locale['step_database_imported_players'] = 'Spielerproben wurden importiert...';
$locale['step_database_loaded_monsters'] = 'Geladen Monsters...'; $locale['step_database_loaded_monsters'] = 'Monster wurden geladen...';
$locale['step_database_error_monsters'] = 'Beim Laden der Datei monsters.xml sind einige Probleme aufgetreten. Bitte überprüfen Sie $LOG$ für weitere Informationen.'; $locale['step_database_error_monsters'] = 'Beim Laden der Datei monsters.xml sind einige Probleme aufgetreten. Bitte überprüfen Sie $LOG$ für weitere Informationen.';
$locale['step_database_loaded_spells'] = 'Geladen Zauber...'; $locale['step_database_loaded_spells'] = 'Zauber wurden geladen...';
$locale['step_database_created_account'] = 'Administratorkonto erstellt...'; $locale['step_database_created_account'] = 'Administratorkonto wurde erstellt...';
$locale['step_database_created_news'] = 'Erstellt newses...'; $locale['step_database_created_news'] = 'Neuigkeiten wurden erstellt...';
// admin account // admin account
$locale['step_admin'] = 'Administratorkonto'; $locale['step_admin'] = 'Administratorkonto';
@ -88,21 +88,21 @@ $locale['step_admin_account'] = 'Name des Administratorkontos';
$locale['step_admin_account_desc'] = 'Name Ihres Admin-Accounts, der für die Anmeldung an der Website und dem Server verwendet wird.'; $locale['step_admin_account_desc'] = 'Name Ihres Admin-Accounts, der für die Anmeldung an der Website und dem Server verwendet wird.';
$locale['step_admin_account_error_format'] = 'Ungültiges Kontonamensformat. Verwenden Sie nur a-Z und Ziffern 0-9. Mindestens 3, maximal 32 Zeichen.'; $locale['step_admin_account_error_format'] = 'Ungültiges Kontonamensformat. Verwenden Sie nur a-Z und Ziffern 0-9. Mindestens 3, maximal 32 Zeichen.';
$locale['step_admin_account_error_same'] = 'Das Passwort darf nicht mit dem Kontonamen übereinstimmen.'; $locale['step_admin_account_error_same'] = 'Das Passwort darf nicht mit dem Kontonamen übereinstimmen.';
$locale['step_admin_account_id'] = 'Administratorkontonummer'; $locale['step_admin_account_id'] = 'Administrator Kontonummer';
$locale['step_admin_account_id_desc'] = 'Nummer Ihres Admin-Accounts, der für die Anmeldung bei der Website und dem Server verwendet wird.'; $locale['step_admin_account_id_desc'] = 'Nummer Ihres Admin-Accounts, der für die Anmeldung bei der Website und dem Server verwendet wird.';
$locale['step_admin_account_id_error_format'] = 'Ungültiges Kontonummernformat. Bitte benutzen Sie nur die Nummern 0-9. Mindestens 6, maximal 10 Zeichen.'; $locale['step_admin_account_id_error_format'] = 'Ungültiges Kontonummernformat. Bitte benutzen Sie nur die Nummern 0-9. Mindestens 6, maximal 10 Zeichen.';
$locale['step_admin_account_id_error_same'] = 'Das Passwort darf nicht mit dem Kontonummer übereinstimmen'; $locale['step_admin_account_id_error_same'] = 'Das Passwort darf nicht mit der Kontonummer übereinstimmen';
$locale['step_admin_password'] = 'Administratorkontokennwort'; $locale['step_admin_password'] = 'Administrator Konto Passwort';
$locale['step_admin_password_desc'] = 'Passwort für Ihr Administratorkonto.'; $locale['step_admin_password_desc'] = 'Passwort für Ihr Administratorkonto.';
$locale['step_admin_password_error_empty'] = 'Bitte geben Sie das Passwort für Ihr neues Konto ein.'; $locale['step_admin_password_error_empty'] = 'Bitte geben Sie das Passwort für Ihr neues Konto ein.';
$locale['step_admin_password_error_format'] = 'Ungültiges Passwortformat. Verwenden Sie nur a-Z und Ziffern 0-9. Mindestens 8, maximal 30 Zeichen.'; $locale['step_admin_password_error_format'] = 'Ungültiges Passwortformat. Verwenden Sie nur a-Z und Ziffern 0-9. Mindestens 8, maximal 30 Zeichen.';
// finish // finish
$locale['step_finish_admin_panel'] = 'Admin-Panel'; $locale['step_finish_admin_panel'] = 'Admin Bereich';
$locale['step_finish_homepage'] = 'Homepage'; $locale['step_finish_homepage'] = 'Startseite';
$locale['step_finish'] = 'Finish'; $locale['step_finish'] = 'Fertig';
$locale['step_finish_title'] = 'Installation beendet!'; $locale['step_finish_title'] = 'Installation beendet!';
$locale['step_finish_desc'] = 'Herzliche Glückwünsche! <b>MyAAC</b> ist bereit zu verwenden!<br/>Sie können sich jetzt im $ADMIN_PANEL$ anmelden, oder die $HOMEPAGE$ besuchen.<br/><br/> $locale['step_finish_desc'] = 'Herzlichen Glückwunsch! <b>MyAAC</b> ist bereit zu verwenden!<br/>Sie können sich jetzt im $ADMIN_PANEL$ anmelden, oder die $HOMEPAGE$ besuchen.<br/><br/>
<font color="red">Bitte lösche install/ Verzeichnis.</font><br/><br/> <font color="red">Bitte lösche install/ Verzeichnis.</font><br/><br/>
Sende Fehler und Vorschläge bei $LINK$, danke!'; Bitte senden Sie Fehler und Vorschläge zu $LINK$, Vielen Dank!';
?> ?>

View File

@ -74,12 +74,12 @@ $locale['step_database_error_file'] = '$FILE$ couldn\'t be opened. Please copy t
$locale['step_database_adding_field'] = 'Adding field'; $locale['step_database_adding_field'] = 'Adding field';
$locale['step_database_modifying_field'] = 'Modifying field'; $locale['step_database_modifying_field'] = 'Modifying field';
$locale['step_database_changing_field'] = 'Changing $FIELD$ to $FIELD_NEW$...'; $locale['step_database_changing_field'] = 'Changing $FIELD$ to $FIELD_NEW$...';
$locale['step_database_imported_players'] = 'Imported player samples...'; $locale['step_database_imported_players'] = 'Player samples has been imported...';
$locale['step_database_loaded_monsters'] = 'Loaded monsters...'; $locale['step_database_loaded_monsters'] = 'Monsters has been loaded...';
$locale['step_database_error_monsters'] = 'There were some problems loading your monsters.xml file. Please check $LOG$ for more info.'; $locale['step_database_error_monsters'] = 'There were some problems loading your monsters.xml file. Please check $LOG$ for more info.';
$locale['step_database_loaded_spells'] = 'Loaded spells...'; $locale['step_database_loaded_spells'] = 'Spells has been loaded...';
$locale['step_database_created_account'] = 'Created admin account...'; $locale['step_database_created_account'] = 'Created admin account...';
$locale['step_database_created_news'] = 'Created newses...'; $locale['step_database_created_news'] = 'Newses has been created...';
// admin account // admin account
$locale['step_admin'] = 'Admin Account'; $locale['step_admin'] = 'Admin Account';

View File

@ -74,7 +74,7 @@ else if(isset($_FILES["plugin"]["name"]))
warning($warning); warning($warning);
} }
$info = Plugins::getPluginInfo(); $info = Plugins::getPlugin();
success((isset($info['name']) ? '<strong>' . $info['name'] . '</strong> p' : 'P') . 'lugin has been successfully installed.'); success((isset($info['name']) ? '<strong>' . $info['name'] . '</strong> p' : 'P') . 'lugin has been successfully installed.');
} }
else { else {
@ -101,6 +101,7 @@ $plugins = array();
foreach(get_plugins() as $plugin) foreach(get_plugins() as $plugin)
{ {
$string = file_get_contents(BASE . 'plugins/' . $plugin . '.json'); $string = file_get_contents(BASE . 'plugins/' . $plugin . '.json');
$string = Plugins::removeComments($string);
$plugin_info = json_decode($string, true); $plugin_info = json_decode($string, true);
if($plugin_info == false) { if($plugin_info == false) {
warning('Cannot load plugin info ' . $plugin . '.json'); warning('Cannot load plugin info ' . $plugin . '.json');