156 lines
4.6 KiB
PHP
156 lines
4.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* This file is part of Zwii.
|
|
*
|
|
* For full copyright and license information, please see the LICENSE
|
|
* file that was distributed with this source code.
|
|
*
|
|
* @author Frédéric Tempez <frederic.tempez@outlook.com>
|
|
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
|
|
* @license GNU General Public License, version 3
|
|
* @link http://zwiicms.com/
|
|
*/
|
|
|
|
class i18n extends common {
|
|
|
|
public static $actions = [
|
|
'index' => self::GROUP_MODERATOR,
|
|
'add' => self::GROUP_MODERATOR,
|
|
'lang' => self::GROUP_VISITOR
|
|
];
|
|
|
|
|
|
/**
|
|
* Ajouter une localisation
|
|
*/
|
|
public function add() {
|
|
// Soumission du formulaire
|
|
if($this->isPost()) {
|
|
// Mode Création
|
|
// Récupérer les données du formulaire
|
|
$create = $this->getInput('i18nAddSelect');
|
|
$copyFrom = $this->getInput('i18nAddCopyFrom');
|
|
$notification = '';
|
|
$success = array ('create' => false,'remove'=> false);
|
|
if (!empty ($create)) {
|
|
// Mode création de langue
|
|
// La langue est déja créée ?
|
|
if (in_array($create,$this->i18nInstalled()) === false) {
|
|
$copyFrom = $copyFrom === '' ? 'core/module/i18n/ressource/' : self::DATA_DIR . $copyFrom . '/';
|
|
// Créer le dossier
|
|
if (is_dir(self::DATA_DIR . $create) === false ) {
|
|
$success ['create'] = mkdir (self::DATA_DIR . $create);
|
|
} else {
|
|
$success ['create'] = true;
|
|
}
|
|
// Copier les données par défaut
|
|
$success ['create'] = (copy ($copyFrom . 'module.json', self::DATA_DIR . $create . '/module.json') === true && $success ['create'] === true) ? true : false;
|
|
$success ['create'] = (copy ($copyFrom . 'page.json', self::DATA_DIR . $create . '/page.json') === true && $success ['create'] === true) ? true : false;
|
|
}
|
|
// Valeurs en sortie
|
|
$notification = $success['create'] === true ? self::$i18nList[$create] . ' installée' : self::$i18nList[$create] . ' déjà installée' ;
|
|
}
|
|
$this->addOutput([
|
|
'notification' => $notification,
|
|
'title' => 'Ajouter une langue',
|
|
'view' => 'add',
|
|
'state' => $success ['create']
|
|
]);
|
|
|
|
} else {
|
|
// Valeurs en sortie sans post
|
|
$this->addOutput([
|
|
'title' => 'Ajouter une langue',
|
|
'view' => 'add'
|
|
]);
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Config : gestion des langues
|
|
*/
|
|
public function index() {
|
|
// Soumission du formulaire
|
|
if($this->isPost()) {
|
|
// Et faire un backup
|
|
|
|
// Récupérer les données du formulaire
|
|
$remove = $this->getInput('i18nLanguageRemove');
|
|
$notification = '';
|
|
$success = array ('create' => false,'remove'=> false);
|
|
|
|
// Mode effacement
|
|
if (!empty ($remove)) {
|
|
|
|
// Une notification existe déjà, insérer un séparateur
|
|
if ($notification) {
|
|
$notification .= ' | ';
|
|
}
|
|
// Suppression impossible langue actuelle ou fr
|
|
if ( $remove !== $this->geti18n()) {
|
|
// Le dossier existe ?
|
|
if (is_dir(self::DATA_DIR . $remove) === true) {
|
|
$success ['remove'] = unlink (self::DATA_DIR . $remove . '/module.json');
|
|
$success ['remove'] = (unlink (self::DATA_DIR . $remove . '/page.json') && $success ['remove'] === true) ? true : false ;
|
|
$success ['remove'] = (rmdir (self::DATA_DIR . $remove) === true && $success ['remove'] === true) ? true : false ;
|
|
}
|
|
// Valeurs en sortie
|
|
$notification .= $success['remove'] === true ? self::$i18nList[$remove] .' effacée' : self::$i18nList[$remove] . ' n\'existe pas' ;
|
|
} else {
|
|
// Valeurs en sortie
|
|
$success ['remove'] = false;
|
|
$notification .= self::$i18nList[$remove] . ' est active, effacement impossible';
|
|
}
|
|
}
|
|
|
|
$this->addOutput([
|
|
'notification' => $notification,
|
|
'title' => 'Internationalisation',
|
|
'view' => 'index',
|
|
'state' => $success ['remove']
|
|
]);
|
|
|
|
} else {
|
|
// Valeurs en sortie sans post
|
|
$this->addOutput([
|
|
'title' => 'Internationalisation',
|
|
'view' => 'index'
|
|
]);
|
|
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Traitement du changement de langues
|
|
*/
|
|
public function lang() {
|
|
if ( isset($_POST)) {
|
|
// Clic dans le menu par l'utilisateur
|
|
if (strlen(array_keys($_POST)[0]) === 4) {
|
|
$lan = substr(array_keys($_POST)[0],0,2);
|
|
// Clic dans le menu de la barre d'administration
|
|
} elseif ( isset($_POST['i18nSelect'])) {
|
|
$lan = $_POST['i18nSelect'];
|
|
}
|
|
}
|
|
// Traitement du changement de langue
|
|
if (isset($lan)) {
|
|
$this->seti18n($lan);
|
|
// Valeurs en sortie sans post
|
|
$this->addOutput([
|
|
'redirect' => helper::baseUrl(false),
|
|
'notification' => 'Langue modifiée',
|
|
'state' => true
|
|
]);
|
|
} else {
|
|
$this->addOutput([
|
|
'redirect' => helper::baseUrl(false)
|
|
]);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
} |