forked from ZwiiCMS-Team/ZwiiCMS
Normalisation + bugs de variables
This commit is contained in:
parent
32b4f3b7de
commit
469581e37f
@ -1,13 +1,15 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
class template {
|
class template
|
||||||
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* retourne un texte traduit
|
* retourne un texte traduit
|
||||||
*/
|
*/
|
||||||
public static function topic($text) {
|
public static function topic($text)
|
||||||
|
{
|
||||||
$text = helper::translate($text);
|
$text = helper::translate($text);
|
||||||
return $text ;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -16,7 +18,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function button($nameId, array $attributes = []) {
|
public static function button($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'class' => '',
|
'class' => '',
|
||||||
@ -40,7 +43,7 @@ class template {
|
|||||||
$attributes['disabled'] ? 'disabled' : '',
|
$attributes['disabled'] ? 'disabled' : '',
|
||||||
$attributes['class'],
|
$attributes['class'],
|
||||||
$attributes['uniqueSubmission'] ? 'uniqueSubmission' : '',
|
$attributes['uniqueSubmission'] ? 'uniqueSubmission' : '',
|
||||||
$attributes['help'] ? ' title="' . $attributes['help'] . '" ': '',
|
$attributes['help'] ? ' title="' . $attributes['help'] . '" ' : '',
|
||||||
($attributes['ico'] ? template::ico($attributes['ico'], ['margin' => 'right']) : '') . $attributes['value']
|
($attributes['ico'] ? template::ico($attributes['ico'], ['margin' => 'right']) : '') . $attributes['value']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -51,7 +54,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function captcha($nameId, array $attributes = []) {
|
public static function captcha($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'class' => '',
|
'class' => '',
|
||||||
@ -61,21 +65,21 @@ class template {
|
|||||||
'name' => $nameId,
|
'name' => $nameId,
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'limit' => false, // captcha simple
|
'limit' => false, // captcha simple
|
||||||
'type'=> 'alpha' // num(érique) ou alpha(bétique)
|
'type' => 'alpha' // num(érique) ou alpha(bétique)
|
||||||
], $attributes);
|
], $attributes);
|
||||||
// Traduction de l'aide et de l'étiquette
|
// Traduction de l'aide et de l'étiquette
|
||||||
// $attributes['value'] = helper::translate($attributes['value']);
|
// $attributes['value'] = helper::translate($attributes['value']);
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
// Captcha quatre opérations
|
// Captcha quatre opérations
|
||||||
// Limite addition et soustraction selon le type de captcha
|
// Limite addition et soustraction selon le type de captcha
|
||||||
$numbers = [0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20];
|
$numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20];
|
||||||
$letters = ['u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'];
|
$letters = ['u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];
|
||||||
$limit = $attributes['limit'] ? count($letters)-1 : 10;
|
$limit = $attributes['limit'] ? count($letters) - 1 : 10;
|
||||||
|
|
||||||
// Tirage de l'opération
|
// Tirage de l'opération
|
||||||
mt_srand((float) microtime()*1000000);
|
mt_srand((float) microtime() * 1000000);
|
||||||
// Captcha simple limité à l'addition
|
// Captcha simple limité à l'addition
|
||||||
$operator = $attributes['limit'] ? mt_rand (1, 4) : 1;
|
$operator = $attributes['limit'] ? mt_rand(1, 4) : 1;
|
||||||
|
|
||||||
// Limite si multiplication ou division
|
// Limite si multiplication ou division
|
||||||
if ($operator > 2) {
|
if ($operator > 2) {
|
||||||
@ -83,10 +87,10 @@ class template {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Tirage des nombres
|
// Tirage des nombres
|
||||||
mt_srand((float) microtime()*1000000);
|
mt_srand((float) microtime() * 1000000);
|
||||||
$firstNumber = mt_rand (1, $limit);
|
$firstNumber = mt_rand(1, $limit);
|
||||||
mt_srand((float) microtime()*1000000);
|
mt_srand((float) microtime() * 1000000);
|
||||||
$secondNumber = mt_rand (1, $limit);
|
$secondNumber = mt_rand(1, $limit);
|
||||||
|
|
||||||
// Permutation si addition ou soustraction
|
// Permutation si addition ou soustraction
|
||||||
if (($operator < 3) and ($firstNumber < $secondNumber)) {
|
if (($operator < 3) and ($firstNumber < $secondNumber)) {
|
||||||
@ -113,9 +117,9 @@ class template {
|
|||||||
$operator = template::ico('divide');
|
$operator = template::ico('divide');
|
||||||
$limit2 = [10, 10, 6, 5, 4, 3, 2, 2, 2, 2];
|
$limit2 = [10, 10, 6, 5, 4, 3, 2, 2, 2, 2];
|
||||||
for ($i = 1; $i <= $firstNumber; $i++) {
|
for ($i = 1; $i <= $firstNumber; $i++) {
|
||||||
$limit = $limit2[$i-1];
|
$limit = $limit2[$i - 1];
|
||||||
}
|
}
|
||||||
mt_srand((float) microtime()*1000000);
|
mt_srand((float) microtime() * 1000000);
|
||||||
$secondNumber = mt_rand(1, $limit);
|
$secondNumber = mt_rand(1, $limit);
|
||||||
$firstNumber = $firstNumber * $secondNumber;
|
$firstNumber = $firstNumber * $secondNumber;
|
||||||
$result = $firstNumber / $secondNumber;
|
$result = $firstNumber / $secondNumber;
|
||||||
@ -130,21 +134,24 @@ class template {
|
|||||||
$secondLetter = uniqid();
|
$secondLetter = uniqid();
|
||||||
|
|
||||||
// Masquage image source pour éviter un décodage
|
// Masquage image source pour éviter un décodage
|
||||||
copy ('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$firstNumber] . '.png', 'site/tmp/' . $firstLetter . '.png');
|
copy('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$firstNumber] . '.png', 'site/tmp/' . $firstLetter . '.png');
|
||||||
copy ('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$secondNumber] . '.png', 'site/tmp/' . $secondLetter . '.png');
|
copy('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$secondNumber] . '.png', 'site/tmp/' . $secondLetter . '.png');
|
||||||
|
|
||||||
|
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="captcha inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="captcha inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Label
|
// Label
|
||||||
$html .= self::label($attributes['id'],
|
$html .= self::label(
|
||||||
'<img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $firstLetter . '.png" /> <strong>' . $operator . '</strong> <img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $secondLetter . '.png" /> en chiffres ?', [
|
$attributes['id'],
|
||||||
|
'<img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $firstLetter . '.png" /> <strong>' . $operator . '</strong> <img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $secondLetter . '.png" /> en chiffres ?',
|
||||||
|
[
|
||||||
'help' => $attributes['help']
|
'help' => $attributes['help']
|
||||||
]);
|
]
|
||||||
|
);
|
||||||
|
|
||||||
// Notice
|
// Notice
|
||||||
$notice = '';
|
$notice = '';
|
||||||
if(array_key_exists($attributes['id'], common::$inputNotices)) {
|
if (array_key_exists($attributes['id'], common::$inputNotices)) {
|
||||||
$notice = common::$inputNotices[$attributes['id']];
|
$notice = common::$inputNotices[$attributes['id']];
|
||||||
$attributes['class'] .= ' notice';
|
$attributes['class'] .= ' notice';
|
||||||
}
|
}
|
||||||
@ -177,7 +184,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function checkbox($nameId, $value, $label, array $attributes = []) {
|
public static function checkbox($nameId, $value, $label, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'before' => true,
|
'before' => true,
|
||||||
@ -193,14 +201,14 @@ class template {
|
|||||||
$label = helper::translate($label);
|
$label = helper::translate($label);
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
// Sauvegarde des données en cas d'erreur
|
// Sauvegarde des données en cas d'erreur
|
||||||
if($attributes['before'] AND array_key_exists($attributes['id'], common::$inputBefore)) {
|
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
||||||
$attributes['checked'] = (bool) common::$inputBefore[$attributes['id']];
|
$attributes['checked'] = (bool) common::$inputBefore[$attributes['id']];
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Notice
|
// Notice
|
||||||
$notice = '';
|
$notice = '';
|
||||||
if(array_key_exists($attributes['id'], common::$inputNotices)) {
|
if (array_key_exists($attributes['id'], common::$inputNotices)) {
|
||||||
$notice = common::$inputNotices[$attributes['id']];
|
$notice = common::$inputNotices[$attributes['id']];
|
||||||
$attributes['class'] .= ' notice';
|
$attributes['class'] .= ' notice';
|
||||||
}
|
}
|
||||||
@ -227,7 +235,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function date($nameId, array $attributes = []) {
|
public static function date($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'autocomplete' => 'on',
|
'autocomplete' => 'on',
|
||||||
@ -249,23 +258,22 @@ class template {
|
|||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
|
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
|
||||||
// Sauvegarde des données en cas d'erreur
|
// Sauvegarde des données en cas d'erreur
|
||||||
if($attributes['before'] AND array_key_exists($attributes['id'], common::$inputBefore)) {
|
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
||||||
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$attributes['value'] = ($attributes['value'] ? helper::filter($attributes['value'], helper::FILTER_TIMESTAMP) : '');
|
$attributes['value'] = ($attributes['value'] ? helper::filter($attributes['value'], helper::FILTER_TIMESTAMP) : '');
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Label
|
// Label
|
||||||
if($attributes['label']) {
|
if ($attributes['label']) {
|
||||||
$html .= self::label($attributes['id'], $attributes['label'], [
|
$html .= self::label($attributes['id'], $attributes['label'], [
|
||||||
'help' => $attributes['help']
|
'help' => $attributes['help']
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Notice
|
// Notice
|
||||||
$notice = '';
|
$notice = '';
|
||||||
if(array_key_exists($attributes['id'], common::$inputNotices)) {
|
if (array_key_exists($attributes['id'], common::$inputNotices)) {
|
||||||
$notice = common::$inputNotices[$attributes['id']];
|
$notice = common::$inputNotices[$attributes['id']];
|
||||||
$attributes['class'] .= ' notice';
|
$attributes['class'] .= ' notice';
|
||||||
}
|
}
|
||||||
@ -295,7 +303,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function file($nameId, array $attributes = []) {
|
public static function file($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'before' => true,
|
'before' => true,
|
||||||
@ -316,20 +325,20 @@ class template {
|
|||||||
$attributes['value'] = helper::translate($attributes['value']);
|
$attributes['value'] = helper::translate($attributes['value']);
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
// Sauvegarde des données en cas d'erreur
|
// Sauvegarde des données en cas d'erreur
|
||||||
if($attributes['before'] AND array_key_exists($attributes['id'], common::$inputBefore)) {
|
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
||||||
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Notice
|
// Notice
|
||||||
$notice = '';
|
$notice = '';
|
||||||
if(array_key_exists($attributes['id'], common::$inputNotices)) {
|
if (array_key_exists($attributes['id'], common::$inputNotices)) {
|
||||||
$notice = common::$inputNotices[$attributes['id']];
|
$notice = common::$inputNotices[$attributes['id']];
|
||||||
$attributes['class'] .= ' notice';
|
$attributes['class'] .= ' notice';
|
||||||
}
|
}
|
||||||
$html .= self::notice($attributes['id'], $notice);
|
$html .= self::notice($attributes['id'], $notice);
|
||||||
// Label
|
// Label
|
||||||
if($attributes['label']) {
|
if ($attributes['label']) {
|
||||||
$html .= self::label($attributes['id'], $attributes['label'], [
|
$html .= self::label($attributes['id'], $attributes['label'], [
|
||||||
'help' => $attributes['help']
|
'help' => $attributes['help']
|
||||||
]);
|
]);
|
||||||
@ -350,7 +359,7 @@ class template {
|
|||||||
'?relative_url=1' .
|
'?relative_url=1' .
|
||||||
'&field_id=' . $attributes['id'] .
|
'&field_id=' . $attributes['id'] .
|
||||||
'&type=' . $attributes['type'] .
|
'&type=' . $attributes['type'] .
|
||||||
'&akey=' . md5_file(core::DATA_DIR.'core.json') .
|
'&akey=' . md5_file(core::DATA_DIR . 'core.json') .
|
||||||
($attributes['extensions'] ? '&extensions=' . $attributes['extensions'] : '')
|
($attributes['extensions'] ? '&extensions=' . $attributes['extensions'] : '')
|
||||||
. '"
|
. '"
|
||||||
class="inputFile %s %s"
|
class="inputFile %s %s"
|
||||||
@ -380,7 +389,8 @@ class template {
|
|||||||
* Ferme un formulaire
|
* Ferme un formulaire
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function formClose() {
|
public static function formClose()
|
||||||
|
{
|
||||||
return '</form>';
|
return '</form>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -389,7 +399,8 @@ class template {
|
|||||||
* @param string $id Id du formulaire
|
* @param string $id Id du formulaire
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function formOpen($id) {
|
public static function formOpen($id)
|
||||||
|
{
|
||||||
// Ouverture formulaire
|
// Ouverture formulaire
|
||||||
$html = '<form id="' . $id . '" method="post">';
|
$html = '<form id="' . $id . '" method="post">';
|
||||||
// Stock le token CSRF
|
// Stock le token CSRF
|
||||||
@ -407,7 +418,8 @@ class template {
|
|||||||
* @param string $text Texte de l'aide
|
* @param string $text Texte de l'aide
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function help($text) {
|
public static function help($text)
|
||||||
|
{
|
||||||
return '<span class="helpButton" data-tippy-content="' . $text . '">' . self::ico('help') . '<!----></span>';
|
return '<span class="helpButton" data-tippy-content="' . $text . '">' . self::ico('help') . '<!----></span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -417,7 +429,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function hidden($nameId, array $attributes = []) {
|
public static function hidden($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'before' => true,
|
'before' => true,
|
||||||
@ -429,7 +442,7 @@ class template {
|
|||||||
'value' => ''
|
'value' => ''
|
||||||
], $attributes);
|
], $attributes);
|
||||||
// Sauvegarde des données en cas d'erreur
|
// Sauvegarde des données en cas d'erreur
|
||||||
if($attributes['before'] AND array_key_exists($attributes['id'], common::$inputBefore)) {
|
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
||||||
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
||||||
}
|
}
|
||||||
// Texte
|
// Texte
|
||||||
@ -451,7 +464,8 @@ class template {
|
|||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
// public static function ico($ico, $margin = '', $animate = false, $fontSize = '1em') {
|
// public static function ico($ico, $margin = '', $animate = false, $fontSize = '1em') {
|
||||||
public static function ico($ico, array $attributes = []) {
|
public static function ico($ico, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'margin' => '',
|
'margin' => '',
|
||||||
@ -465,7 +479,7 @@ class template {
|
|||||||
// Traduction de l'aide
|
// Traduction de l'aide
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
// Contenu de l'icône
|
// Contenu de l'icône
|
||||||
$item = $attributes['href'] ? '<a id="' . $attributes['id']. '" data-tippy-content="' . $attributes['help'] . '" href="' . $attributes['href'] . '" ' . $attributes['attr']. ' >' : '';
|
$item = $attributes['href'] ? '<a id="' . $attributes['id'] . '" data-tippy-content="' . $attributes['help'] . '" href="' . $attributes['href'] . '" ' . $attributes['attr'] . ' >' : '';
|
||||||
$item .= '<span class="zwiico-' . $ico . ($attributes['margin'] ? ' zwiico-margin-' . $attributes['margin'] : '') . ($attributes['animate'] ? ' animate-spin' : '') . '" style="font-size:' . $attributes['fontSize'] . '"><!----></span>';
|
$item .= '<span class="zwiico-' . $ico . ($attributes['margin'] ? ' zwiico-margin-' . $attributes['margin'] : '') . ($attributes['animate'] ? ' animate-spin' : '') . '" style="font-size:' . $attributes['fontSize'] . '"><!----></span>';
|
||||||
$item .= ($attributes['href']) ? '</a>' : '';
|
$item .= ($attributes['href']) ? '</a>' : '';
|
||||||
return $item;
|
return $item;
|
||||||
@ -477,26 +491,26 @@ class template {
|
|||||||
* @param string size en pixels ou en rem
|
* @param string size en pixels ou en rem
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function flag($langId, $size = 'auto') {
|
public static function flag($langId, $size = 'auto')
|
||||||
|
{
|
||||||
switch ($langId) {
|
switch ($langId) {
|
||||||
case '':
|
case '':
|
||||||
$lang = 'fr_FR';
|
$lang = 'fr_FR';
|
||||||
break;
|
break;
|
||||||
case in_array($langId,core::$languages):
|
case in_array($langId, core::$languages):
|
||||||
$lang = $langId;
|
$lang = $langId;
|
||||||
break;
|
break;
|
||||||
case 'selected':
|
case 'selected':
|
||||||
if ( isset($_COOKIE['ZWII_I18N_SITE'])
|
if (isset($_COOKIE['ZWII_I18N_SITE'])) {
|
||||||
) {
|
|
||||||
$lang = $_COOKIE['ZWII_I18N_SITE'];
|
$lang = $_COOKIE['ZWII_I18N_SITE'];
|
||||||
} else {
|
} else {
|
||||||
$lang = 'fr_FR';
|
$lang = 'fr_FR';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return '<img class="flag" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $langId . '.png"
|
return '<img class="flag" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $langId . '.png"
|
||||||
width="' . $size .'"
|
width="' . $size . '"
|
||||||
height="' . $size .'"
|
height="' . $size . '"
|
||||||
title="' . $langId .'"
|
title="' . $langId . '"
|
||||||
alt="(' . $langId . ')"/>';
|
alt="(' . $langId . ')"/>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -507,7 +521,8 @@ class template {
|
|||||||
* @param string $text Texte du label
|
* @param string $text Texte du label
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function label($for, $text, array $attributes = []) {
|
public static function label($for, $text, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'class' => '',
|
'class' => '',
|
||||||
@ -515,12 +530,13 @@ class template {
|
|||||||
'help' => ''
|
'help' => ''
|
||||||
], $attributes);
|
], $attributes);
|
||||||
// Traduction de l'étiquette si déjà appelée par une fonction de template
|
// Traduction de l'étiquette si déjà appelée par une fonction de template
|
||||||
; if (
|
;
|
||||||
|
if (
|
||||||
get_called_class() !== 'template'
|
get_called_class() !== 'template'
|
||||||
) {
|
) {
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
}
|
}
|
||||||
if($attributes['help'] !== '') {
|
if ($attributes['help'] !== '') {
|
||||||
$text = $text . self::help($attributes['help']);
|
$text = $text . self::help($attributes['help']);
|
||||||
}
|
}
|
||||||
// Retourne le html
|
// Retourne le html
|
||||||
@ -537,7 +553,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function mail($nameId, array $attributes = []) {
|
public static function mail($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'autocomplete' => 'on',
|
'autocomplete' => 'on',
|
||||||
@ -560,20 +577,20 @@ class template {
|
|||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
|
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
|
||||||
// Sauvegarde des données en cas d'erreur
|
// Sauvegarde des données en cas d'erreur
|
||||||
if($attributes['before'] AND array_key_exists($attributes['id'], common::$inputBefore)) {
|
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
||||||
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Label
|
// Label
|
||||||
if($attributes['label']) {
|
if ($attributes['label']) {
|
||||||
$html .= self::label($attributes['id'], $attributes['label'], [
|
$html .= self::label($attributes['id'], $attributes['label'], [
|
||||||
'help' => $attributes['help']
|
'help' => $attributes['help']
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Notice
|
// Notice
|
||||||
$notice = '';
|
$notice = '';
|
||||||
if(array_key_exists($attributes['id'], common::$inputNotices)) {
|
if (array_key_exists($attributes['id'], common::$inputNotices)) {
|
||||||
$notice = common::$inputNotices[$attributes['id']];
|
$notice = common::$inputNotices[$attributes['id']];
|
||||||
$attributes['class'] .= ' notice';
|
$attributes['class'] .= ' notice';
|
||||||
}
|
}
|
||||||
@ -595,7 +612,8 @@ class template {
|
|||||||
* @param string $notice Notice
|
* @param string $notice Notice
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function notice($id, $notice) {
|
public static function notice($id, $notice)
|
||||||
|
{
|
||||||
return ' <span id="' . $id . 'Notice" class="notice ' . ($notice ? '' : 'displayNone') . '">' . $notice . '</span>';
|
return ' <span id="' . $id . 'Notice" class="notice ' . ($notice ? '' : 'displayNone') . '">' . $notice . '</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -605,7 +623,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function password($nameId, array $attributes = []) {
|
public static function password($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'autocomplete' => 'on',
|
'autocomplete' => 'on',
|
||||||
@ -628,14 +647,14 @@ class template {
|
|||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Label
|
// Label
|
||||||
if($attributes['label']) {
|
if ($attributes['label']) {
|
||||||
$html .= self::label($attributes['id'], $attributes['label'], [
|
$html .= self::label($attributes['id'], $attributes['label'], [
|
||||||
'help' => $attributes['help']
|
'help' => $attributes['help']
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Notice
|
// Notice
|
||||||
$notice = '';
|
$notice = '';
|
||||||
if(array_key_exists($attributes['id'], common::$inputNotices)) {
|
if (array_key_exists($attributes['id'], common::$inputNotices)) {
|
||||||
$notice = common::$inputNotices[$attributes['id']];
|
$notice = common::$inputNotices[$attributes['id']];
|
||||||
$attributes['class'] .= ' notice';
|
$attributes['class'] .= ' notice';
|
||||||
}
|
}
|
||||||
@ -658,7 +677,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function select($nameId, array $options, array $attributes = []) {
|
public static function select($nameId, array $options, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'before' => true,
|
'before' => true,
|
||||||
@ -682,29 +702,30 @@ class template {
|
|||||||
$attributes['fonts'] = [];
|
$attributes['fonts'] = [];
|
||||||
}
|
}
|
||||||
// Sauvegarde des données en cas d'erreur
|
// Sauvegarde des données en cas d'erreur
|
||||||
if($attributes['before'] AND array_key_exists($attributes['id'], common::$inputBefore)) {
|
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
||||||
$attributes['selected'] = common::$inputBefore[$attributes['id']];
|
$attributes['selected'] = common::$inputBefore[$attributes['id']];
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Label
|
// Label
|
||||||
if($attributes['label']) {
|
if ($attributes['label']) {
|
||||||
$html .= self::label($attributes['id'], $attributes['label'], [
|
$html .= self::label($attributes['id'], $attributes['label'], [
|
||||||
'help' => $attributes['help']
|
'help' => $attributes['help']
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Notice
|
// Notice
|
||||||
$notice = '';
|
$notice = '';
|
||||||
if(array_key_exists($attributes['id'], common::$inputNotices)) {
|
if (array_key_exists($attributes['id'], common::$inputNotices)) {
|
||||||
$notice = common::$inputNotices[$attributes['id']];
|
$notice = common::$inputNotices[$attributes['id']];
|
||||||
$attributes['class'] .= ' notice';
|
$attributes['class'] .= ' notice';
|
||||||
}
|
}
|
||||||
$html .= self::notice($attributes['id'], $notice);
|
$html .= self::notice($attributes['id'], $notice);
|
||||||
// Début sélection
|
// Début sélection
|
||||||
$html .= sprintf('<select %s>',
|
$html .= sprintf(
|
||||||
|
'<select %s>',
|
||||||
helper::sprintAttributes($attributes)
|
helper::sprintAttributes($attributes)
|
||||||
);
|
);
|
||||||
foreach($options as $value => $text) {
|
foreach ($options as $value => $text) {
|
||||||
// Select des liste de fontes
|
// Select des liste de fontes
|
||||||
$html .= isset($fonts) ? sprintf(
|
$html .= isset($fonts) ? sprintf(
|
||||||
'<option value="%s"%s style="font-family: %s;">%s</option>',
|
'<option value="%s"%s style="font-family: %s;">%s</option>',
|
||||||
@ -733,8 +754,9 @@ class template {
|
|||||||
* @param string $text Texte de la bulle
|
* @param string $text Texte de la bulle
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function speech($text) {
|
public static function speech($text)
|
||||||
return '<div class="speech"><div class="speechBubble">' . $text . '</div>' . template::ico('mimi speechMimi', ['fontSize'=> '7em']) . '</div>';
|
{
|
||||||
|
return '<div class="speech"><div class="speechBubble">' . $text . '</div>' . template::ico('mimi speechMimi', ['fontSize' => '7em']) . '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -743,7 +765,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function submit($nameId, array $attributes = []) {
|
public static function submit($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'class' => '',
|
'class' => '',
|
||||||
@ -775,7 +798,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function table(array $cols = [], array $body = [], array $head = [], array $attributes = [], array $rowsId = []) {
|
public static function table(array $cols = [], array $body = [], array $head = [], array $attributes = [], array $rowsId = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'class' => '',
|
'class' => '',
|
||||||
@ -783,20 +807,20 @@ class template {
|
|||||||
'id' => ''
|
'id' => ''
|
||||||
], $attributes);
|
], $attributes);
|
||||||
// Traduction de l'aide et de l'étiquette
|
// Traduction de l'aide et de l'étiquette
|
||||||
foreach($head as $value) {
|
foreach ($head as $value) {
|
||||||
$head[array_search($value,$head)] = helper::translate($value);
|
$head[array_search($value, $head)] = helper::translate($value);
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="tableWrapper ' . $attributes['classWrapper']. '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="tableWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Début tableau
|
// Début tableau
|
||||||
$html .= '<table id="' . $attributes['id'] . '" class="table ' . $attributes['class']. '">';
|
$html .= '<table id="' . $attributes['id'] . '" class="table ' . $attributes['class'] . '">';
|
||||||
// Entêtes
|
// Entêtes
|
||||||
if($head) {
|
if ($head) {
|
||||||
// Début des entêtes
|
// Début des entêtes
|
||||||
$html .= '<thead>';
|
$html .= '<thead>';
|
||||||
$html .= '<tr class="nodrag">';
|
$html .= '<tr class="nodrag">';
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach($head as $th) {
|
foreach ($head as $th) {
|
||||||
$html .= '<th class="col' . $cols[$i++] . '">' . $th . '</th>';
|
$html .= '<th class="col' . $cols[$i++] . '">' . $th . '</th>';
|
||||||
}
|
}
|
||||||
// Fin des entêtes
|
// Fin des entêtes
|
||||||
@ -805,15 +829,15 @@ class template {
|
|||||||
}
|
}
|
||||||
// Pas de tableau d'Id transmis, générer une numérotation
|
// Pas de tableau d'Id transmis, générer une numérotation
|
||||||
if (empty($rowsId)) {
|
if (empty($rowsId)) {
|
||||||
$rowsId = range(0,count($body));
|
$rowsId = range(0, count($body));
|
||||||
}
|
}
|
||||||
// Début contenu
|
// Début contenu
|
||||||
$j = 0;
|
$j = 0;
|
||||||
foreach($body as $tr) {
|
foreach ($body as $tr) {
|
||||||
// Id de ligne pour les tableaux drag and drop
|
// Id de ligne pour les tableaux drag and drop
|
||||||
$html .= '<tr id="' . $rowsId[$j++] . '">';
|
$html .= '<tr id="' . $rowsId[$j++] . '">';
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach($tr as $td) {
|
foreach ($tr as $td) {
|
||||||
$html .= '<td class="col' . $cols[$i++] . '">' . $td . '</td>';
|
$html .= '<td class="col' . $cols[$i++] . '">' . $td . '</td>';
|
||||||
}
|
}
|
||||||
$html .= '</tr>';
|
$html .= '</tr>';
|
||||||
@ -834,7 +858,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function text($nameId, array $attributes = []) {
|
public static function text($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'autocomplete' => 'on',
|
'autocomplete' => 'on',
|
||||||
@ -857,20 +882,20 @@ class template {
|
|||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
|
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
|
||||||
// Sauvegarde des données en cas d'erreur
|
// Sauvegarde des données en cas d'erreur
|
||||||
if($attributes['before'] AND array_key_exists($attributes['id'], common::$inputBefore)) {
|
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
||||||
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Label
|
// Label
|
||||||
if($attributes['label']) {
|
if ($attributes['label']) {
|
||||||
$html .= self::label($attributes['id'], $attributes['label'], [
|
$html .= self::label($attributes['id'], $attributes['label'], [
|
||||||
'help' => $attributes['help']
|
'help' => $attributes['help']
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Notice
|
// Notice
|
||||||
$notice = '';
|
$notice = '';
|
||||||
if(array_key_exists($attributes['id'], common::$inputNotices)) {
|
if (array_key_exists($attributes['id'], common::$inputNotices)) {
|
||||||
$notice = common::$inputNotices[$attributes['id']];
|
$notice = common::$inputNotices[$attributes['id']];
|
||||||
$attributes['class'] .= ' notice';
|
$attributes['class'] .= ' notice';
|
||||||
}
|
}
|
||||||
@ -892,7 +917,8 @@ class template {
|
|||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function textarea($nameId, array $attributes = []) {
|
public static function textarea($nameId, array $attributes = [])
|
||||||
|
{
|
||||||
// Attributs par défaut
|
// Attributs par défaut
|
||||||
$attributes = array_merge([
|
$attributes = array_merge([
|
||||||
'before' => true,
|
'before' => true,
|
||||||
@ -912,20 +938,20 @@ class template {
|
|||||||
$attributes['label'] = helper::translate($attributes['label']);
|
$attributes['label'] = helper::translate($attributes['label']);
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
// Sauvegarde des données en cas d'erreur
|
// Sauvegarde des données en cas d'erreur
|
||||||
if($attributes['before'] AND array_key_exists($attributes['id'], common::$inputBefore)) {
|
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
||||||
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
// Label
|
// Label
|
||||||
if($attributes['label']) {
|
if ($attributes['label']) {
|
||||||
$html .= self::label($attributes['id'], $attributes['label'], [
|
$html .= self::label($attributes['id'], $attributes['label'], [
|
||||||
'help' => $attributes['help']
|
'help' => $attributes['help']
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Notice
|
// Notice
|
||||||
$notice = '';
|
$notice = '';
|
||||||
if(array_key_exists($attributes['id'], common::$inputNotices)) {
|
if (array_key_exists($attributes['id'], common::$inputNotices)) {
|
||||||
$notice = common::$inputNotices[$attributes['id']];
|
$notice = common::$inputNotices[$attributes['id']];
|
||||||
$attributes['class'] .= ' notice';
|
$attributes['class'] .= ' notice';
|
||||||
}
|
}
|
||||||
|
1448
core/core.php
1448
core/core.php
File diff suppressed because it is too large
Load Diff
@ -1,53 +1,54 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mises à jour suivant les versions de Zwii
|
* Mises à jour suivant les versions de Zwii
|
||||||
*/
|
*/
|
||||||
if($this->getData(['core', 'dataVersion']) < 9227) {
|
if ($this->getData(['core', 'dataVersion']) < 9227) {
|
||||||
// Arrêt du script
|
// Arrêt du script
|
||||||
exit('ZwiiCMS version 12 est incompatible avec la base de données installée. L\'installation d\'une version intermédiaire 10 ou 11 est nécessaire.');
|
exit('ZwiiCMS version 12 est incompatible avec la base de données installée. L\'installation d\'une version intermédiaire 10 ou 11 est nécessaire.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Version 10.0.00
|
// Version 10.0.00
|
||||||
if($this->getData(['core', 'dataVersion']) < 10000) {
|
if ($this->getData(['core', 'dataVersion']) < 10000) {
|
||||||
$this->setData(['config', 'faviconDark','faviconDark.ico']);
|
$this->setData(['config', 'faviconDark', 'faviconDark.ico']);
|
||||||
|
|
||||||
//----------------------------------------
|
//----------------------------------------
|
||||||
// Mettre à jour les données des galeries
|
// Mettre à jour les données des galeries
|
||||||
$pageList = array();
|
$pageList = array();
|
||||||
foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) {
|
foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
|
||||||
$pageList [] = $parentKey;
|
$pageList[] = $parentKey;
|
||||||
foreach ($parentValue as $childKey) {
|
foreach ($parentValue as $childKey) {
|
||||||
$pageList [] = $childKey;
|
$pageList[] = $childKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Mise à jour des données pour la galerie v2
|
// Mise à jour des données pour la galerie v2
|
||||||
foreach ($pageList as $parentKey => $parent) {
|
foreach ($pageList as $parentKey => $parent) {
|
||||||
//La page a une galerie
|
//La page a une galerie
|
||||||
if ($this->getData(['page',$parent,'moduleId']) === 'gallery' ) {
|
if ($this->getData(['page', $parent, 'moduleId']) === 'gallery') {
|
||||||
// Parcourir les dossiers de la galerie
|
// Parcourir les dossiers de la galerie
|
||||||
$tempData = $this->getData(['module', $parent]);
|
$tempData = $this->getData(['module', $parent]);
|
||||||
$i = 1;
|
$i = 1;
|
||||||
foreach ($tempData as $galleryKey => $galleryItem) {
|
foreach ($tempData as $galleryKey => $galleryItem) {
|
||||||
// Ordre de tri des galeries
|
// Ordre de tri des galeries
|
||||||
if ( $this->getdata(['module',$parent,$galleryKey,'config','sort']) === NULL) {
|
if ($this->getdata(['module', $parent, $galleryKey, 'config', 'sort']) === NULL) {
|
||||||
$this->setdata(['module',$parent,$galleryKey,'config','sort','SORT_ASC']);
|
$this->setdata(['module', $parent, $galleryKey, 'config', 'sort', 'SORT_ASC']);
|
||||||
}
|
}
|
||||||
// Position de la galerie, tri manuel
|
// Position de la galerie, tri manuel
|
||||||
if ( $this->getdata(['module',$parent,$galleryKey,'config','position']) === NULL) {
|
if ($this->getdata(['module', $parent, $galleryKey, 'config', 'position']) === NULL) {
|
||||||
$this->setdata(['module',$parent,$galleryKey,'config','position',$i++]);
|
$this->setdata(['module', $parent, $galleryKey, 'config', 'position', $i++]);
|
||||||
}
|
}
|
||||||
// Positions des images, tri manuel
|
// Positions des images, tri manuel
|
||||||
if ( $this->getdata(['module',$parent,$galleryKey,'positions']) === NULL) {
|
if ($this->getdata(['module', $parent, $galleryKey, 'positions']) === NULL) {
|
||||||
$c = count($this->getdata(['module',$parent,$galleryKey,'legend']));
|
$c = count($this->getdata(['module', $parent, $galleryKey, 'legend']));
|
||||||
$this->setdata(['module',$parent,$galleryKey,'positions', range(0,$c-1) ]);
|
$this->setdata(['module', $parent, $galleryKey, 'positions', range(0, $c - 1)]);
|
||||||
}
|
}
|
||||||
// Image de couverture
|
// Image de couverture
|
||||||
if ( $this->getdata(['module',$parent,$galleryKey,'config','homePicture']) === NULL) {
|
if ($this->getdata(['module', $parent, $galleryKey, 'config', 'homePicture']) === NULL) {
|
||||||
if (is_dir($this->getdata(['module',$parent,$galleryKey,'config','directory']))) {
|
if (is_dir($this->getdata(['module', $parent, $galleryKey, 'config', 'directory']))) {
|
||||||
$iterator = new DirectoryIterator($this->getdata(['module',$parent,$galleryKey,'config','directory']));
|
$iterator = new DirectoryIterator($this->getdata(['module', $parent, $galleryKey, 'config', 'directory']));
|
||||||
foreach($iterator as $fileInfos) {
|
foreach ($iterator as $fileInfos) {
|
||||||
if($fileInfos->isDot() === false AND $fileInfos->isFile() AND @getimagesize($fileInfos->getPathname())) {
|
if ($fileInfos->isDot() === false and $fileInfos->isFile() and @getimagesize($fileInfos->getPathname())) {
|
||||||
$this->setdata(['module',$parent,$galleryKey,'config','homePicture',$fileInfos->getFilename()]);
|
$this->setdata(['module', $parent, $galleryKey, 'config', 'homePicture', $fileInfos->getFilename()]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,7 +59,7 @@ if($this->getData(['core', 'dataVersion']) < 10000) {
|
|||||||
}
|
}
|
||||||
// Contrôle des options php.ini pour la mise à jour auto
|
// Contrôle des options php.ini pour la mise à jour auto
|
||||||
if (helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version') === false) {
|
if (helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version') === false) {
|
||||||
$this->setData(['config','autoUpdate',false]);
|
$this->setData(['config', 'autoUpdate', false]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setData(['core', 'dataVersion', 10000]);
|
$this->setData(['core', 'dataVersion', 10000]);
|
||||||
@ -70,72 +71,74 @@ if ($this->getData(['core', 'dataVersion']) < 10092) {
|
|||||||
$dir = getcwd();
|
$dir = getcwd();
|
||||||
chdir('core/vendor/fullpage');
|
chdir('core/vendor/fullpage');
|
||||||
$files = glob('*');
|
$files = glob('*');
|
||||||
foreach($files as $file) unlink($file);
|
foreach ($files as $file) unlink($file);
|
||||||
chdir($dir);
|
chdir($dir);
|
||||||
rmdir ('core/vendor/fullpage/');
|
rmdir('core/vendor/fullpage/');
|
||||||
}
|
}
|
||||||
if (file_exists('core/vendor/tinymce/templates/fullPageSections.html')) {
|
if (file_exists('core/vendor/tinymce/templates/fullPageSections.html')) {
|
||||||
unlink ('core/vendor/tinymce/templates/fullPageSections.html'); }
|
unlink('core/vendor/tinymce/templates/fullPageSections.html');
|
||||||
|
}
|
||||||
if (file_exists('core/vendor/tinymce/templates/fullPageSlides.html')) {
|
if (file_exists('core/vendor/tinymce/templates/fullPageSlides.html')) {
|
||||||
unlink ('core/vendor/tinymce/templates/fullPageSlides.html'); }
|
unlink('core/vendor/tinymce/templates/fullPageSlides.html');
|
||||||
|
}
|
||||||
$this->setData(['core', 'dataVersion', 10092]);
|
$this->setData(['core', 'dataVersion', 10092]);
|
||||||
}
|
}
|
||||||
// Version 10.0.93
|
// Version 10.0.93
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10093) {
|
if ($this->getData(['core', 'dataVersion']) < 10093) {
|
||||||
// Déplacement du fichier admin.css dans data
|
// Déplacement du fichier admin.css dans data
|
||||||
if (file_exists('core/layout/admin.css')) {
|
if (file_exists('core/layout/admin.css')) {
|
||||||
copy('core/layout/admin.css',self::DATA_DIR.'admin.css');
|
copy('core/layout/admin.css', self::DATA_DIR . 'admin.css');
|
||||||
unlink('core/layout/admin.css');
|
unlink('core/layout/admin.css');
|
||||||
}
|
}
|
||||||
//Déplacement d'un fichier de ressources
|
//Déplacement d'un fichier de ressources
|
||||||
if (file_exists('core/module/config/ressource/.htaccess')) {
|
if (file_exists('core/module/config/ressource/.htaccess')) {
|
||||||
unlink('core/module/config/ressource/.htaccess');
|
unlink('core/module/config/ressource/.htaccess');
|
||||||
rmdir ('core/module/config/ressource');
|
rmdir('core/module/config/ressource');
|
||||||
}
|
}
|
||||||
$this->setData(['core', 'dataVersion', 10093]);
|
$this->setData(['core', 'dataVersion', 10093]);
|
||||||
// Réorganisation du thème
|
// Réorganisation du thème
|
||||||
$this->setData(['theme','text','linkTextColor',$this->getData(['theme','link', 'textColor'])]);
|
$this->setData(['theme', 'text', 'linkTextColor', $this->getData(['theme', 'link', 'textColor'])]);
|
||||||
}
|
}
|
||||||
// Version 10.1.04
|
// Version 10.1.04
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10104) {
|
if ($this->getData(['core', 'dataVersion']) < 10104) {
|
||||||
$this->setData(['theme','text','linkColor','rgba(74, 105, 189, 1)']);
|
$this->setData(['theme', 'text', 'linkColor', 'rgba(74, 105, 189, 1)']);
|
||||||
$this->deleteData(['theme','text','linkTextColor']);
|
$this->deleteData(['theme', 'text', 'linkTextColor']);
|
||||||
$this->setdata(['theme','block','backgroundColor','rgba(236, 239, 241, 1)']);
|
$this->setdata(['theme', 'block', 'backgroundColor', 'rgba(236, 239, 241, 1)']);
|
||||||
$this->setdata(['theme','block','borderColor','rgba(236, 239, 241, 1)']);
|
$this->setdata(['theme', 'block', 'borderColor', 'rgba(236, 239, 241, 1)']);
|
||||||
$this->setdata(['theme','menu','radius','0px']);
|
$this->setdata(['theme', 'menu', 'radius', '0px']);
|
||||||
$this->setData(['core', 'dataVersion', 10104]);
|
$this->setData(['core', 'dataVersion', 10104]);
|
||||||
}
|
}
|
||||||
// Version 10.2.00
|
// Version 10.2.00
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10200) {
|
if ($this->getData(['core', 'dataVersion']) < 10200) {
|
||||||
// Paramètres du compte connecté
|
// Paramètres du compte connecté
|
||||||
if ($this->getUser('id')) {
|
if ($this->getUser('id')) {
|
||||||
$this->setData(['user', $this->getUser('id'), 'connectFail',0]);
|
$this->setData(['user', $this->getUser('id'), 'connectFail', 0]);
|
||||||
$this->setData(['user', $this->getUser('id'), 'connectTimeout',0]);
|
$this->setData(['user', $this->getUser('id'), 'connectTimeout', 0]);
|
||||||
$this->setData(['user', $this->getUser('id'), 'accessTimer',0]);
|
$this->setData(['user', $this->getUser('id'), 'accessTimer', 0]);
|
||||||
$this->setData(['user', $this->getUser('id'), 'accessUrl','']);
|
$this->setData(['user', $this->getUser('id'), 'accessUrl', '']);
|
||||||
$this->setData(['user', $this->getUser('id'), 'accessCsrf',$_SESSION['csrf']]);
|
$this->setData(['user', $this->getUser('id'), 'accessCsrf', $_SESSION['csrf']]);
|
||||||
}
|
}
|
||||||
// Paramètres de sécurité
|
// Paramètres de sécurité
|
||||||
$this->setData(['config', 'connect', 'attempt',999]);
|
$this->setData(['config', 'connect', 'attempt', 999]);
|
||||||
$this->setData(['config', 'connect', 'timeout',0]);
|
$this->setData(['config', 'connect', 'timeout', 0]);
|
||||||
$this->setData(['config', 'connect', 'log',false]);
|
$this->setData(['config', 'connect', 'log', false]);
|
||||||
// Thème
|
// Thème
|
||||||
$this->deleteData(['admin','colorButtonText']);
|
$this->deleteData(['admin', 'colorButtonText']);
|
||||||
// Remettre à zéro le thème pour la génération du CSS du blog
|
// Remettre à zéro le thème pour la génération du CSS du blog
|
||||||
if (file_exists(self::DATA_DIR . 'theme.css')) {
|
if (file_exists(self::DATA_DIR . 'theme.css')) {
|
||||||
unlink(self::DATA_DIR . 'theme.css');
|
unlink(self::DATA_DIR . 'theme.css');
|
||||||
}
|
}
|
||||||
// Créer les en-têtes du journal
|
// Créer les en-têtes du journal
|
||||||
$d = 'Date;Heure;IP;Id;Action' . PHP_EOL;
|
$d = 'Date;Heure;IP;Id;Action' . PHP_EOL;
|
||||||
file_put_contents(self::DATA_DIR . 'journal.log',$d);
|
file_put_contents(self::DATA_DIR . 'journal.log', $d);
|
||||||
// Init préservation htaccess
|
// Init préservation htaccess
|
||||||
$this->setData(['config','autoUpdateHtaccess',false]);
|
$this->setData(['config', 'autoUpdateHtaccess', false]);
|
||||||
// Options de barre de membre simple
|
// Options de barre de membre simple
|
||||||
$this->setData(['theme','menu','memberBar',true]);
|
$this->setData(['theme', 'menu', 'memberBar', true]);
|
||||||
|
|
||||||
// Thème Menu : couleur de page active non définie
|
// Thème Menu : couleur de page active non définie
|
||||||
if (!$this->getData(['theme','menu','activeTextColor']) ) {
|
if (!$this->getData(['theme', 'menu', 'activeTextColor'])) {
|
||||||
$this->setData(['theme','menu','activeTextColor', $this->getData(['theme','menu','textColor']) ]);
|
$this->setData(['theme', 'menu', 'activeTextColor', $this->getData(['theme', 'menu', 'textColor'])]);
|
||||||
}
|
}
|
||||||
$this->setData(['core', 'updateAvailable', false]);
|
$this->setData(['core', 'updateAvailable', false]);
|
||||||
$this->setData(['core', 'dataVersion', 10200]);
|
$this->setData(['core', 'dataVersion', 10200]);
|
||||||
@ -143,52 +146,52 @@ if ($this->getData(['core', 'dataVersion']) < 10200) {
|
|||||||
// Version 10.2.01
|
// Version 10.2.01
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10201) {
|
if ($this->getData(['core', 'dataVersion']) < 10201) {
|
||||||
// Options de barre de membre simple
|
// Options de barre de membre simple
|
||||||
$this->setData(['theme','footer','displayMemberBar',false]);
|
$this->setData(['theme', 'footer', 'displayMemberBar', false]);
|
||||||
$this->deleteData(['theme','footer','displayMemberAccount']);
|
$this->deleteData(['theme', 'footer', 'displayMemberAccount']);
|
||||||
$this->deleteData(['theme','footer','displayMemberLogout']);
|
$this->deleteData(['theme', 'footer', 'displayMemberLogout']);
|
||||||
$this->setData(['core', 'dataVersion', 10201]);
|
$this->setData(['core', 'dataVersion', 10201]);
|
||||||
}
|
}
|
||||||
// Version 10.3.00
|
// Version 10.3.00
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10300) {
|
if ($this->getData(['core', 'dataVersion']) < 10300) {
|
||||||
// Options de barre de membre simple
|
// Options de barre de membre simple
|
||||||
$this->setData(['config','page404','none']);
|
$this->setData(['config', 'page404', 'none']);
|
||||||
$this->setData(['config','page403','none']);
|
$this->setData(['config', 'page403', 'none']);
|
||||||
$this->setData(['config','page302','none']);
|
$this->setData(['config', 'page302', 'none']);
|
||||||
// Module de recherche
|
// Module de recherche
|
||||||
// Suppression du dossier search
|
// Suppression du dossier search
|
||||||
if (is_dir('core/module/search')) {
|
if (is_dir('core/module/search')) {
|
||||||
$dir = getcwd();
|
$dir = getcwd();
|
||||||
chdir('core/module/search');
|
chdir('core/module/search');
|
||||||
$files = glob('*');
|
$files = glob('*');
|
||||||
foreach($files as $file) unlink($file);
|
foreach ($files as $file) unlink($file);
|
||||||
chdir($dir);
|
chdir($dir);
|
||||||
rmdir ('core/module/search/');
|
rmdir('core/module/search/');
|
||||||
}
|
}
|
||||||
// Désactivation de l'option dans le pied de page
|
// Désactivation de l'option dans le pied de page
|
||||||
$this->setData(['theme','footer','displaySearch',false]);
|
$this->setData(['theme', 'footer', 'displaySearch', false]);
|
||||||
// Inscription des nouvelles variables
|
// Inscription des nouvelles variables
|
||||||
$this->setData(['config','searchPageId','']);
|
$this->setData(['config', 'searchPageId', '']);
|
||||||
|
|
||||||
// Mettre à jour les données des galeries
|
// Mettre à jour les données des galeries
|
||||||
$pageList = array();
|
$pageList = array();
|
||||||
foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) {
|
foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
|
||||||
$pageList [] = $parentKey;
|
$pageList[] = $parentKey;
|
||||||
foreach ($parentValue as $childKey) {
|
foreach ($parentValue as $childKey) {
|
||||||
$pageList [] = $childKey;
|
$pageList[] = $childKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Mise à jour des données de thème de la galerie
|
// Mise à jour des données de thème de la galerie
|
||||||
// Les données de thème sont communes au site
|
// Les données de thème sont communes au site
|
||||||
foreach ($pageList as $parentKey => $parent) {
|
foreach ($pageList as $parentKey => $parent) {
|
||||||
//La page a une galerie
|
//La page a une galerie
|
||||||
if ($this->getData(['page',$parent,'moduleId']) === 'gallery' ) {
|
if ($this->getData(['page', $parent, 'moduleId']) === 'gallery') {
|
||||||
foreach ( $this->getData(['module', $parent]) as $galleryKey => $galleryItem) {
|
foreach ($this->getData(['module', $parent]) as $galleryKey => $galleryItem) {
|
||||||
// Transfert du theme dans une structure unique
|
// Transfert du theme dans une structure unique
|
||||||
if ( is_array($this->getdata(['theme',$parent])) ) {
|
if (is_array($this->getdata(['theme', $parent]))) {
|
||||||
$this->setdata(['theme','gallery',$this->getdata(['theme',$parent])]);
|
$this->setdata(['theme', 'gallery', $this->getdata(['theme', $parent])]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->deleteData(['theme',$parent]);
|
$this->deleteData(['theme', $parent]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,18 +201,18 @@ if ($this->getData(['core', 'dataVersion']) < 10300) {
|
|||||||
// Version 10.3.01
|
// Version 10.3.01
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10301) {
|
if ($this->getData(['core', 'dataVersion']) < 10301) {
|
||||||
// Inscription des nouvelles variables
|
// Inscription des nouvelles variables
|
||||||
if ($this->getData(['config','searchPageId']) === '') {
|
if ($this->getData(['config', 'searchPageId']) === '') {
|
||||||
$this->setData(['config','searchPageId','none']);
|
$this->setData(['config', 'searchPageId', 'none']);
|
||||||
}
|
}
|
||||||
if ($this->getData(['config','legalPageId']) === '') {
|
if ($this->getData(['config', 'legalPageId']) === '') {
|
||||||
$this->setData(['config','legalPageId','none']);
|
$this->setData(['config', 'legalPageId', 'none']);
|
||||||
}
|
}
|
||||||
$this->setData(['core', 'dataVersion', 10301]);
|
$this->setData(['core', 'dataVersion', 10301]);
|
||||||
}
|
}
|
||||||
// Version 10.3.02
|
// Version 10.3.02
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10302) {
|
if ($this->getData(['core', 'dataVersion']) < 10302) {
|
||||||
// Activation par défaut du captcha à la connexion
|
// Activation par défaut du captcha à la connexion
|
||||||
$this->setData(['config', 'connect','captcha', true]);
|
$this->setData(['config', 'connect', 'captcha', true]);
|
||||||
$this->setData(['core', 'dataVersion', 10302]);
|
$this->setData(['core', 'dataVersion', 10302]);
|
||||||
}
|
}
|
||||||
// Version 10.3.03
|
// Version 10.3.03
|
||||||
@ -221,10 +224,10 @@ if ($this->getData(['core', 'dataVersion']) < 10303) {
|
|||||||
// Version 10.3.04
|
// Version 10.3.04
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10304) {
|
if ($this->getData(['core', 'dataVersion']) < 10304) {
|
||||||
// Couleur des sous menus
|
// Couleur des sous menus
|
||||||
$this->setData(['theme', 'menu', 'backgroundColorSub', $this->getData(['theme', 'menu', 'backgroundColor']) ]);
|
$this->setData(['theme', 'menu', 'backgroundColorSub', $this->getData(['theme', 'menu', 'backgroundColor'])]);
|
||||||
// Nettoyage du fichier de thème pour forcer une régénération
|
// Nettoyage du fichier de thème pour forcer une régénération
|
||||||
if (file_exists(self::DATA_DIR . '/theme.css')) { // On ne sait jamais
|
if (file_exists(self::DATA_DIR . '/theme.css')) { // On ne sait jamais
|
||||||
unlink (self::DATA_DIR . '/theme.css');
|
unlink(self::DATA_DIR . '/theme.css');
|
||||||
}
|
}
|
||||||
$this->setData(['core', 'dataVersion', 10304]);
|
$this->setData(['core', 'dataVersion', 10304]);
|
||||||
}
|
}
|
||||||
@ -232,35 +235,39 @@ if ($this->getData(['core', 'dataVersion']) < 10304) {
|
|||||||
if ($this->getData(['core', 'dataVersion']) < 10306) {
|
if ($this->getData(['core', 'dataVersion']) < 10306) {
|
||||||
// Liste des pages
|
// Liste des pages
|
||||||
$pageList = array();
|
$pageList = array();
|
||||||
foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) {
|
foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
|
||||||
$pageList [] = $parentKey;
|
$pageList[] = $parentKey;
|
||||||
foreach ($parentValue as $childKey) {
|
foreach ($parentValue as $childKey) {
|
||||||
$pageList [] = $childKey;
|
$pageList[] = $childKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Mettre à jour les données des blogs les articles sont dans posts
|
// Mettre à jour les données des blogs les articles sont dans posts
|
||||||
foreach ($pageList as $parentKey => $parent) {
|
foreach ($pageList as $parentKey => $parent) {
|
||||||
//La page a un blog
|
//La page a un blog
|
||||||
if ($this->getData(['page',$parent,'moduleId']) === 'blog' ) {
|
if ($this->getData(['page', $parent, 'moduleId']) === 'blog') {
|
||||||
if (is_array($this->getData(['module', $parent]))) {
|
if (is_array($this->getData(['module', $parent]))) {
|
||||||
foreach ( $this->getData(['module', $parent]) as $blogKey => $blogItem) {
|
foreach ($this->getData(['module', $parent]) as $blogKey => $blogItem) {
|
||||||
if ($blogKey === 'posts' OR $blogKey === 'config') {continue;}
|
if ($blogKey === 'posts' or $blogKey === 'config') {
|
||||||
$data = $this->getdata(['module',$parent,$blogKey]);
|
continue;
|
||||||
$this->deleteData(['module',$parent, $blogKey]);
|
}
|
||||||
$this->setData([ 'module', $parent, 'posts', $blogKey, $data ]);
|
$data = $this->getdata(['module', $parent, $blogKey]);
|
||||||
|
$this->deleteData(['module', $parent, $blogKey]);
|
||||||
|
$this->setData(['module', $parent, 'posts', $blogKey, $data]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($pageList as $parentKey => $parent) {
|
foreach ($pageList as $parentKey => $parent) {
|
||||||
//La page a une news
|
//La page a une news
|
||||||
if ($this->getData(['page',$parent,'moduleId']) === 'news' ) {
|
if ($this->getData(['page', $parent, 'moduleId']) === 'news') {
|
||||||
if (is_array($this->getData(['module', $parent]))) {
|
if (is_array($this->getData(['module', $parent]))) {
|
||||||
foreach ( $this->getData(['module', $parent]) as $newsKey => $newsItem) {
|
foreach ($this->getData(['module', $parent]) as $newsKey => $newsItem) {
|
||||||
if ($blogKey === 'posts' OR $blogKey === 'config') {continue;}
|
if ($blogKey === 'posts' or $blogKey === 'config') {
|
||||||
$data = $this->getdata(['module',$parent,$newsKey]);
|
continue;
|
||||||
$this->deleteData(['module',$parent, $newsKey]);
|
}
|
||||||
$this->setData([ 'module', $parent, 'posts', $newsKey, $data ]);
|
$data = $this->getdata(['module', $parent, $newsKey]);
|
||||||
|
$this->deleteData(['module', $parent, $newsKey]);
|
||||||
|
$this->setData(['module', $parent, 'posts', $newsKey, $data]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -271,103 +278,101 @@ if ($this->getData(['core', 'dataVersion']) < 10306) {
|
|||||||
// Version 10.3.08
|
// Version 10.3.08
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10308) {
|
if ($this->getData(['core', 'dataVersion']) < 10308) {
|
||||||
// RAZ la mise à jour auto bug 10.3.07
|
// RAZ la mise à jour auto bug 10.3.07
|
||||||
$this->setData(['core','updateAvailable', false]);
|
$this->setData(['core', 'updateAvailable', false]);
|
||||||
$this->setData(['core', 'dataVersion', 10308]);
|
$this->setData(['core', 'dataVersion', 10308]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Version 10.4.00
|
// Version 10.4.00
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10400) {
|
if ($this->getData(['core', 'dataVersion']) < 10400) {
|
||||||
// Ajouter le prénom comme pseudo et le pseudo comme signature
|
// Ajouter le prénom comme pseudo et le pseudo comme signature
|
||||||
foreach($this->getData(['user']) as $userId => $userIds){
|
foreach ($this->getData(['user']) as $userId => $userIds) {
|
||||||
$this->setData(['user',$userId,'pseudo',$this->getData(['user',$userId,'firstname'])]);
|
$this->setData(['user', $userId, 'pseudo', $this->getData(['user', $userId, 'firstname'])]);
|
||||||
$this->setData(['user',$userId,'signature',2]);
|
$this->setData(['user', $userId, 'signature', 2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ajouter les champs de blog v3
|
// Ajouter les champs de blog v3
|
||||||
// Liste des pages dans pageList
|
// Liste des pages dans pageList
|
||||||
$pageList = array();
|
$pageList = array();
|
||||||
foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) {
|
foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
|
||||||
$pageList [] = $parentKey;
|
$pageList[] = $parentKey;
|
||||||
foreach ($parentValue as $childKey) {
|
foreach ($parentValue as $childKey) {
|
||||||
$pageList [] = $childKey;
|
$pageList[] = $childKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Parcourir pageList et rechercher les modules de blog
|
// Parcourir pageList et rechercher les modules de blog
|
||||||
|
|
||||||
foreach ($pageList as $parentKey => $parent) {
|
foreach ($pageList as $parentKey => $parent) {
|
||||||
//La page est un blog
|
//La page est un blog
|
||||||
if ($this->getData(['page',$parent,'moduleId']) === 'blog' ) {
|
if ($this->getData(['page', $parent, 'moduleId']) === 'blog') {
|
||||||
$articleIds = array_keys(helper::arrayColumn($this->getData(['module', $parent, 'posts']), 'publishedOn', 'SORT_DESC'));
|
$articleIds = array_keys(helper::arrayColumn($this->getData(['module', $parent, 'posts']), 'publishedOn', 'SORT_DESC'));
|
||||||
foreach ($articleIds as $key => $article) {
|
foreach ($articleIds as $key => $article) {
|
||||||
// Droits les deux groupes
|
// Droits les deux groupes
|
||||||
$this->setData(['module', $parent, 'posts', $article,'editConsent', 3]);
|
$this->setData(['module', $parent, 'posts', $article, 'editConsent', 3]);
|
||||||
// Limite de taille 500
|
// Limite de taille 500
|
||||||
$this->setData(['module', $parent, 'posts', $article,'commentMaxlength', '500']);
|
$this->setData(['module', $parent, 'posts', $article, 'commentMaxlength', '500']);
|
||||||
// Pas d'approbation des commentaires
|
// Pas d'approbation des commentaires
|
||||||
$this->setData(['module', $parent, 'posts', $article,'commentApproved', false ]);
|
$this->setData(['module', $parent, 'posts', $article, 'commentApproved', false]);
|
||||||
// pas de notification
|
// pas de notification
|
||||||
$this->setData(['module', $parent, 'posts', $article,'commentNotification', false ]);
|
$this->setData(['module', $parent, 'posts', $article, 'commentNotification', false]);
|
||||||
// groupe de notification
|
// groupe de notification
|
||||||
$this->setData(['module', $parent, 'posts', $article,'commentGroupNotification', 3 ]);
|
$this->setData(['module', $parent, 'posts', $article, 'commentGroupNotification', 3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Traitement des commentaires
|
// Traitement des commentaires
|
||||||
if ( is_array($this->getData(['module', $parent, 'posts', $article,'comment'])) ) {
|
if (is_array($this->getData(['module', $parent, 'posts', $article, 'comment']))) {
|
||||||
foreach($this->getData(['module', $parent, 'posts', $article,'comment']) as $commentId => $comment) {
|
foreach ($this->getData(['module', $parent, 'posts', $article, 'comment']) as $commentId => $comment) {
|
||||||
// Approbation
|
// Approbation
|
||||||
$this->setData(['module', $parent, 'posts', $article,'comment', $commentId, 'approval', true ]);
|
$this->setData(['module', $parent, 'posts', $article, 'comment', $commentId, 'approval', true]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Création du fichier locale.json
|
// Création du fichier locale.json
|
||||||
$this->setData(['locale','homePageId',$this->getData(['config','homePageId'])]);
|
$this->setData(['locale', 'homePageId', $this->getData(['config', 'homePageId'])]);
|
||||||
$this->setData(['locale','page404',$this->getData(['config','page404'])]);
|
$this->setData(['locale', 'page404', $this->getData(['config', 'page404'])]);
|
||||||
$this->setData(['locale','page403',$this->getData(['config','page403'])]);
|
$this->setData(['locale', 'page403', $this->getData(['config', 'page403'])]);
|
||||||
$this->setData(['locale','page302',$this->getData(['config','page302'])]);
|
$this->setData(['locale', 'page302', $this->getData(['config', 'page302'])]);
|
||||||
$this->setData(['locale','legalPageId',$this->getData(['config','legalPageId'])]);
|
$this->setData(['locale', 'legalPageId', $this->getData(['config', 'legalPageId'])]);
|
||||||
$this->setData(['locale','searchPageId',$this->getData(['config','searchPageId'])]);
|
$this->setData(['locale', 'searchPageId', $this->getData(['config', 'searchPageId'])]);
|
||||||
$this->setData(['locale','metaDescription',$this->getData(['config','metaDescription'])]);
|
$this->setData(['locale', 'metaDescription', $this->getData(['config', 'metaDescription'])]);
|
||||||
$this->setData(['locale','title',$this->getData(['config','title'])]);
|
$this->setData(['locale', 'title', $this->getData(['config', 'title'])]);
|
||||||
|
|
||||||
// Renommer les fichier de backup
|
// Renommer les fichier de backup
|
||||||
if ($this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN) === false) {
|
if ($this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN) === false) {
|
||||||
$path = realpath('site/data');
|
$path = realpath('site/data');
|
||||||
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
|
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) {
|
||||||
{
|
if (strpos($filename, 'back.json')) {
|
||||||
if (strpos($filename,'back.json')) {
|
rename($filename, str_replace('back.json', 'backup.json', $filename));
|
||||||
rename($filename, str_replace('back.json','backup.json',$filename));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Supprimer les fichiers CSS devenus inutiles du module search
|
// Supprimer les fichiers CSS devenus inutiles du module search
|
||||||
if (file_exists('module/search/ressource/theme.css') )
|
if (file_exists('module/search/ressource/theme.css'))
|
||||||
unlink('module/search/ressource/theme.css');
|
unlink('module/search/ressource/theme.css');
|
||||||
if (file_exists('module/search/ressource/vartheme.css') )
|
if (file_exists('module/search/ressource/vartheme.css'))
|
||||||
unlink('module/search/ressource/vartheme.css');
|
unlink('module/search/ressource/vartheme.css');
|
||||||
$this->deleteData(['theme','search','keywordColor']);
|
$this->deleteData(['theme', 'search', 'keywordColor']);
|
||||||
|
|
||||||
// Nettoyer les modules avec des données null
|
// Nettoyer les modules avec des données null
|
||||||
|
|
||||||
$modules = $this->getData(['module']);
|
$modules = $this->getData(['module']);
|
||||||
foreach($modules as $key => $value) {
|
foreach ($modules as $key => $value) {
|
||||||
if (is_null($value) ) {
|
if (is_null($value)) {
|
||||||
unset($modules[$key]);
|
unset($modules[$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->setData (['module',$modules]);
|
$this->setData(['module', $modules]);
|
||||||
|
|
||||||
$this->setData(['core', 'dataVersion', 10400]);
|
$this->setData(['core', 'dataVersion', 10400]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Version 10.5.02
|
// Version 10.5.02
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10502) {
|
if ($this->getData(['core', 'dataVersion']) < 10502) {
|
||||||
// Forcer la régénération du thème
|
// Forcer la régénération du thème
|
||||||
if (file_exists(self::DATA_DIR.'theme.css')) {
|
if (file_exists(self::DATA_DIR . 'theme.css')) {
|
||||||
unlink (self::DATA_DIR.'theme.css');
|
unlink(self::DATA_DIR . 'theme.css');
|
||||||
}
|
}
|
||||||
$this->setData(['core', 'dataVersion', 10502]);
|
$this->setData(['core', 'dataVersion', 10502]);
|
||||||
}
|
}
|
||||||
@ -379,57 +384,56 @@ if ($this->getData(['core', 'dataVersion']) < 10600) {
|
|||||||
|
|
||||||
// Liste des pages dans pageList
|
// Liste des pages dans pageList
|
||||||
$pageList = array();
|
$pageList = array();
|
||||||
foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) {
|
foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
|
||||||
$pageList [] = $parentKey;
|
$pageList[] = $parentKey;
|
||||||
foreach ($parentValue as $childKey) {
|
foreach ($parentValue as $childKey) {
|
||||||
$pageList [] = $childKey;
|
$pageList[] = $childKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Parcourir pageList et rechercher les modules au CSS autonomes
|
// Parcourir pageList et rechercher les modules au CSS autonomes
|
||||||
foreach ($pageList as $parentKey => $parent) {
|
foreach ($pageList as $parentKey => $parent) {
|
||||||
if (
|
if (
|
||||||
$this->getData(['page',$parent,'moduleId']) === 'search'
|
$this->getData(['page', $parent, 'moduleId']) === 'search'
|
||||||
|| $this->getData(['page',$parent,'moduleId']) === 'gallery'
|
|| $this->getData(['page', $parent, 'moduleId']) === 'gallery'
|
||||||
|| $this->getData(['page',$parent,'moduleId']) === 'news'
|
|| $this->getData(['page', $parent, 'moduleId']) === 'news'
|
||||||
){
|
) {
|
||||||
if(class_exists($parent)) {
|
if (class_exists($parent)) {
|
||||||
$module = new $moduleId;
|
$module = new $moduleId;
|
||||||
$module->update($parent);
|
$module->update($parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Suppression de l'option d'objets par page gérées par les modules
|
// Suppression de l'option d'objets par page gérées par les modules
|
||||||
$this->deleteData(['config','itemsperPage']);
|
$this->deleteData(['config', 'itemsperPage']);
|
||||||
|
|
||||||
$this->setData(['core', 'dataVersion', 10600]);
|
$this->setData(['core', 'dataVersion', 10600]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Version 11.0.00
|
// Version 11.0.00
|
||||||
if ($this->getData(['core', 'dataVersion']) < 11000) {
|
if ($this->getData(['core', 'dataVersion']) < 11000) {
|
||||||
|
|
||||||
// Option de déconnexion auto activée
|
// Option de déconnexion auto activée
|
||||||
$this->setData(['config','autoDisconnect',true]);
|
$this->setData(['config', 'autoDisconnect', true]);
|
||||||
|
|
||||||
// Mettre à jour les données de langue
|
// Mettre à jour les données de langue
|
||||||
$this->setData(['config', 'i18n', 'enable', true ]);
|
$this->setData(['config', 'i18n', 'enable', true]);
|
||||||
$this->setData(['config', 'i18n','scriptGoogle', false ]);
|
$this->setData(['config', 'i18n', 'scriptGoogle', false]);
|
||||||
$this->setData(['config', 'i18n','showCredits', false ]);
|
$this->setData(['config', 'i18n', 'showCredits', false]);
|
||||||
$this->setData(['config', 'i18n','autoDetect', false ]);
|
$this->setData(['config', 'i18n', 'autoDetect', false]);
|
||||||
$this->setData(['config', 'i18n','admin', false ]);
|
$this->setData(['config', 'i18n', 'admin', false]);
|
||||||
$this->setData(['config', 'i18n','fr', 'none' ]);
|
$this->setData(['config', 'i18n', 'fr', 'none']);
|
||||||
$this->setData(['config', 'i18n','de', 'none' ]);
|
$this->setData(['config', 'i18n', 'de', 'none']);
|
||||||
$this->setData(['config', 'i18n','en', 'none' ]);
|
$this->setData(['config', 'i18n', 'en', 'none']);
|
||||||
$this->setData(['config', 'i18n','es', 'none' ]);
|
$this->setData(['config', 'i18n', 'es', 'none']);
|
||||||
$this->setData(['config', 'i18n','it', 'none' ]);
|
$this->setData(['config', 'i18n', 'it', 'none']);
|
||||||
$this->setData(['config', 'i18n','nl', 'none' ]);
|
$this->setData(['config', 'i18n', 'nl', 'none']);
|
||||||
$this->setData(['config', 'i18n','pt', 'none' ]);
|
$this->setData(['config', 'i18n', 'pt', 'none']);
|
||||||
|
|
||||||
// Supprimer les fichiers de backup
|
// Supprimer les fichiers de backup
|
||||||
if (file_exists('site/data/.backup')) unlink('site/data/.backup');
|
if (file_exists('site/data/.backup')) unlink('site/data/.backup');
|
||||||
$path = realpath('site/data');
|
$path = realpath('site/data');
|
||||||
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
|
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) {
|
||||||
{
|
if (strpos($filename, 'backup.json')) {
|
||||||
if (strpos($filename,'backup.json')) {
|
|
||||||
unlink($filename);
|
unlink($filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -441,10 +445,10 @@ if ($this->getData(['core', 'dataVersion']) < 11000) {
|
|||||||
if (!is_dir(self::DATA_DIR . self::$i18nContent . '/content')) {
|
if (!is_dir(self::DATA_DIR . self::$i18nContent . '/content')) {
|
||||||
mkdir(self::DATA_DIR . self::$i18nContent . '/content', 0755);
|
mkdir(self::DATA_DIR . self::$i18nContent . '/content', 0755);
|
||||||
}
|
}
|
||||||
foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) {
|
foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
|
||||||
$pageList [] = $parentKey;
|
$pageList[] = $parentKey;
|
||||||
foreach ($parentValue as $childKey) {
|
foreach ($parentValue as $childKey) {
|
||||||
$pageList [] = $childKey;
|
$pageList[] = $childKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($pageList as $parentKey => $parent) {
|
foreach ($pageList as $parentKey => $parent) {
|
||||||
@ -455,7 +459,7 @@ if ($this->getData(['core', 'dataVersion']) < 11000) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Référencement
|
// Référencement
|
||||||
$this->setData(['config','seo','robots',true]);
|
$this->setData(['config', 'seo', 'robots', true]);
|
||||||
|
|
||||||
$this->setData(['core', 'dataVersion', 11000]);
|
$this->setData(['core', 'dataVersion', 11000]);
|
||||||
}
|
}
|
||||||
@ -466,7 +470,7 @@ if ($this->getData(['core', 'dataVersion']) < 11010) {
|
|||||||
// Renommer une variable
|
// Renommer une variable
|
||||||
$data = $this->getData(['config', 'i18n', 'active']);
|
$data = $this->getData(['config', 'i18n', 'active']);
|
||||||
$this->deleteData(['config', 'i18n', 'active']);
|
$this->deleteData(['config', 'i18n', 'active']);
|
||||||
$this->setData(['config', 'i18n', 'enable', $data ]);
|
$this->setData(['config', 'i18n', 'enable', $data]);
|
||||||
|
|
||||||
$this->setData(['core', 'dataVersion', 11010]);
|
$this->setData(['core', 'dataVersion', 11010]);
|
||||||
}
|
}
|
||||||
@ -475,7 +479,7 @@ if ($this->getData(['core', 'dataVersion']) < 11010) {
|
|||||||
if ($this->getData(['core', 'dataVersion']) < 11100) {
|
if ($this->getData(['core', 'dataVersion']) < 11100) {
|
||||||
|
|
||||||
// Anonymat des adresses iP de la journalisation
|
// Anonymat des adresses iP de la journalisation
|
||||||
$this->setData(['config', 'connect', 'anonymousIp', 2 ]);
|
$this->setData(['config', 'connect', 'anonymousIp', 2]);
|
||||||
|
|
||||||
// Nouvelles options de contenu pour les écrans réduits
|
// Nouvelles options de contenu pour les écrans réduits
|
||||||
if ($this->getData(['theme', 'menu', 'burgerTitle'])) {
|
if ($this->getData(['theme', 'menu', 'burgerTitle'])) {
|
||||||
@ -499,14 +503,14 @@ if ($this->getData(['core', 'dataVersion']) < 11200) {
|
|||||||
$this->setData(['config', 'connect', 'captchaType', 'alpha']);
|
$this->setData(['config', 'connect', 'captchaType', 'alpha']);
|
||||||
|
|
||||||
// Ajout de la variable shortTitle basée sur Title
|
// Ajout de la variable shortTitle basée sur Title
|
||||||
foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) {
|
foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
|
||||||
$pageList [] = $parentKey;
|
$pageList[] = $parentKey;
|
||||||
foreach ($parentValue as $childKey) {
|
foreach ($parentValue as $childKey) {
|
||||||
$pageList [] = $childKey;
|
$pageList[] = $childKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($pageList as $parentKey => $parent) {
|
foreach ($pageList as $parentKey => $parent) {
|
||||||
$this->setData(['page', $parent, 'shortTitle', $this->getData(['page', $parent, 'title']) ]);
|
$this->setData(['page', $parent, 'shortTitle', $this->getData(['page', $parent, 'title'])]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Incorporer les nouveaux champs du header et du menu
|
// Incorporer les nouveaux champs du header et du menu
|
||||||
@ -524,7 +528,7 @@ if ($this->getData(['core', 'dataVersion']) < 11200) {
|
|||||||
$this->setData(['locale', 'cookies', 'cookiesButtonText', 'J\'ai compris']);
|
$this->setData(['locale', 'cookies', 'cookiesButtonText', 'J\'ai compris']);
|
||||||
|
|
||||||
// Supppression de l'option de traduction en mode connecté
|
// Supppression de l'option de traduction en mode connecté
|
||||||
$this->setData(['config','i18n', 'admin', false]);
|
$this->setData(['config', 'i18n', 'admin', false]);
|
||||||
|
|
||||||
// Option de dévoilement du mdp
|
// Option de dévoilement du mdp
|
||||||
$this->setData(['config', 'connect', 'showPassword', true]);
|
$this->setData(['config', 'connect', 'showPassword', true]);
|
||||||
@ -537,12 +541,12 @@ if ($this->getData(['core', 'dataVersion']) < 11200) {
|
|||||||
if ($this->getData(['core', 'dataVersion']) < 11202) {
|
if ($this->getData(['core', 'dataVersion']) < 11202) {
|
||||||
|
|
||||||
// Renommer les champs
|
// Renommer les champs
|
||||||
$this->setData(['locale', 'cookies', 'mainLabel', $this->getData(['locale', 'cookies', 'cookiesZwiiText']) ]);
|
$this->setData(['locale', 'cookies', 'mainLabel', $this->getData(['locale', 'cookies', 'cookiesZwiiText'])]);
|
||||||
$this->setData(['locale', 'cookies', 'gaLabel', $this->getData(['locale', 'cookies', 'cookiesGaText']) ]);
|
$this->setData(['locale', 'cookies', 'gaLabel', $this->getData(['locale', 'cookies', 'cookiesGaText'])]);
|
||||||
$this->setData(['locale', 'cookies', 'titleLabel', $this->getData(['locale', 'cookies', 'cookiesTitleText']) ]);
|
$this->setData(['locale', 'cookies', 'titleLabel', $this->getData(['locale', 'cookies', 'cookiesTitleText'])]);
|
||||||
$this->setData(['locale', 'cookies', 'linkLegalLabel', $this->getData(['locale', 'cookies', 'cookiesLinkMlText']) ]);
|
$this->setData(['locale', 'cookies', 'linkLegalLabel', $this->getData(['locale', 'cookies', 'cookiesLinkMlText'])]);
|
||||||
$this->setData(['locale', 'cookies', 'checkboxGaLabel', $this->getData(['locale', 'cookies', 'cookiesCheckboxGaText']) ]);
|
$this->setData(['locale', 'cookies', 'checkboxGaLabel', $this->getData(['locale', 'cookies', 'cookiesCheckboxGaText'])]);
|
||||||
$this->setData(['locale', 'cookies', 'buttonValidLabel',$this->getData(['locale', 'cookies', 'cookiesButtonText']) ]);
|
$this->setData(['locale', 'cookies', 'buttonValidLabel', $this->getData(['locale', 'cookies', 'cookiesButtonText'])]);
|
||||||
// Effacer les anciens champs
|
// Effacer les anciens champs
|
||||||
$this->deleteData(['locale', 'cookies', 'cookiesZwiiText']);
|
$this->deleteData(['locale', 'cookies', 'cookiesZwiiText']);
|
||||||
$this->deleteData(['locale', 'cookies', 'cookiesGaText']);
|
$this->deleteData(['locale', 'cookies', 'cookiesGaText']);
|
||||||
@ -558,28 +562,28 @@ if ($this->getData(['core', 'dataVersion']) < 11202) {
|
|||||||
// Version 11.2.03
|
// Version 11.2.03
|
||||||
if ($this->getData(['core', 'dataVersion']) < 11203) {
|
if ($this->getData(['core', 'dataVersion']) < 11203) {
|
||||||
// Supprimer l'information de redirection
|
// Supprimer l'information de redirection
|
||||||
$old = str_replace('?','',$this->getData(['core', 'baseUrl']));
|
$old = str_replace('?', '', $this->getData(['core', 'baseUrl']));
|
||||||
$new = '';
|
$new = '';
|
||||||
$c3 = 0;
|
$c3 = 0;
|
||||||
$success = false ;
|
$success = false;
|
||||||
// Boucler sur les pages
|
// Boucler sur les pages
|
||||||
foreach($this->getHierarchy(null,null,null) as $parentId => $childIds) {
|
foreach ($this->getHierarchy(null, null, null) as $parentId => $childIds) {
|
||||||
$content = $this->getPage($parentId, self::$i18nContent);
|
$content = $this->getPage($parentId, self::$i18nContent);
|
||||||
$titre = $this->getData(['page', $parentId, 'title']);
|
$titre = $this->getData(['page', $parentId, 'title']);
|
||||||
$content = $titre . ' ' . $content ;
|
$content = $titre . ' ' . $content;
|
||||||
$replace = str_replace( 'href="' . $old , 'href="'. $new , stripslashes($content),$c1) ;
|
$replace = str_replace('href="' . $old, 'href="' . $new, stripslashes($content), $c1);
|
||||||
$replace = str_replace( 'src="' . $old , 'src="'. $new , stripslashes($replace),$c2) ;
|
$replace = str_replace('src="' . $old, 'src="' . $new, stripslashes($replace), $c2);
|
||||||
|
|
||||||
if ($c1 > 0 || $c2 > 0) {
|
if ($c1 > 0 || $c2 > 0) {
|
||||||
$success = true;
|
$success = true;
|
||||||
$this->setPage($parentId, $replace, self::$i18nContent);
|
$this->setPage($parentId, $replace, self::$i18nContent);
|
||||||
$c3 += $c1 + $c2;
|
$c3 += $c1 + $c2;
|
||||||
}
|
}
|
||||||
foreach($childIds as $childId) {
|
foreach ($childIds as $childId) {
|
||||||
$content = $this->getPage($childId, self::$i18nContent);
|
$content = $this->getPage($childId, self::$i18nContent);
|
||||||
$content = $titre . ' ' . $content ;
|
$content = $titre . ' ' . $content;
|
||||||
$replace = str_replace( 'href="' . $old , 'href="'. $new , stripslashes($content),$c1) ;
|
$replace = str_replace('href="' . $old, 'href="' . $new, stripslashes($content), $c1);
|
||||||
$replace = str_replace( 'src="' . $old , 'src="'. $new , stripslashes($replace),$c2) ;
|
$replace = str_replace('src="' . $old, 'src="' . $new, stripslashes($replace), $c2);
|
||||||
if ($c1 > 0 || $c2 > 0) {
|
if ($c1 > 0 || $c2 > 0) {
|
||||||
$success = true;
|
$success = true;
|
||||||
$this->setPage($childId, $replace, self::$i18nContent);
|
$this->setPage($childId, $replace, self::$i18nContent);
|
||||||
@ -589,10 +593,10 @@ if ($this->getData(['core', 'dataVersion']) < 11203) {
|
|||||||
}
|
}
|
||||||
// Traiter les modules dont la redirection
|
// Traiter les modules dont la redirection
|
||||||
$content = $this->getdata(['module']);
|
$content = $this->getdata(['module']);
|
||||||
$replace = $this->recursive_array_replace('href="' . $old , 'href="'. $new, $content, $c1);
|
$replace = $this->recursive_array_replace('href="' . $old, 'href="' . $new, $content, $c1);
|
||||||
$replace = $this->recursive_array_replace('src="' . $old , 'src="'. $new, $replace, $c2);
|
$replace = $this->recursive_array_replace('src="' . $old, 'src="' . $new, $replace, $c2);
|
||||||
if ($content !== $replace) {
|
if ($content !== $replace) {
|
||||||
$this->setdata(['module',$replace]);
|
$this->setdata(['module', $replace]);
|
||||||
$c3 += $c1 + $c2;
|
$c3 += $c1 + $c2;
|
||||||
$success = true;
|
$success = true;
|
||||||
}
|
}
|
||||||
@ -619,19 +623,19 @@ if ($this->getData(['core', 'dataVersion']) < 11300) {
|
|||||||
'Droid+Serif' => 'droid-serif-2',
|
'Droid+Serif' => 'droid-serif-2',
|
||||||
'Fira+Sans' => 'fira-sans',
|
'Fira+Sans' => 'fira-sans',
|
||||||
'Inconsolata' => 'inconsolata-2',
|
'Inconsolata' => 'inconsolata-2',
|
||||||
'Indie+Flower' =>'indie-flower',
|
'Indie+Flower' => 'indie-flower',
|
||||||
'Josefin+Slab' => 'josefin-sans-std',
|
'Josefin+Slab' => 'josefin-sans-std',
|
||||||
'Lobster' => 'lobster-2',
|
'Lobster' => 'lobster-2',
|
||||||
'Lora' => 'lora',
|
'Lora' => 'lora',
|
||||||
'Lato' =>'lato',
|
'Lato' => 'lato',
|
||||||
'Marvel' => 'montserrat-ace',
|
'Marvel' => 'montserrat-ace',
|
||||||
'Old+Standard+TT' => 'old-standard-tt-3',
|
'Old+Standard+TT' => 'old-standard-tt-3',
|
||||||
'Open+Sans' =>'open-sans',
|
'Open+Sans' => 'open-sans',
|
||||||
// Corriger l'erreur de nom de police installée par défaut, il manquait un O en majuscule
|
// Corriger l'erreur de nom de police installée par défaut, il manquait un O en majuscule
|
||||||
'open+Sans' =>'open-sans',
|
'open+Sans' => 'open-sans',
|
||||||
'Oswald' =>'oswald-4',
|
'Oswald' => 'oswald-4',
|
||||||
'PT+Mono' => 'pt-mono',
|
'PT+Mono' => 'pt-mono',
|
||||||
'PT+Serif' =>'pt-serif',
|
'PT+Serif' => 'pt-serif',
|
||||||
'Raleway' => 'raleway-5',
|
'Raleway' => 'raleway-5',
|
||||||
'Rancho' => 'rancho',
|
'Rancho' => 'rancho',
|
||||||
'Roboto' => 'Roboto',
|
'Roboto' => 'Roboto',
|
||||||
@ -640,13 +644,13 @@ if ($this->getData(['core', 'dataVersion']) < 11300) {
|
|||||||
'Vollkorn' => 'vollkorn'
|
'Vollkorn' => 'vollkorn'
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->setData(['theme', 'footer', 'font', $fonts[$this->getData (['theme', 'footer', 'font']) ] ]);
|
$this->setData(['theme', 'footer', 'font', $fonts[$this->getData(['theme', 'footer', 'font'])]]);
|
||||||
$this->setData(['theme', 'header', 'font', $fonts[$this->getData (['theme', 'header', 'font' ]) ] ]);
|
$this->setData(['theme', 'header', 'font', $fonts[$this->getData(['theme', 'header', 'font'])]]);
|
||||||
$this->setData(['theme', 'menu', 'font', $fonts[$this->getData (['theme', 'menu', 'font' ]) ] ]);
|
$this->setData(['theme', 'menu', 'font', $fonts[$this->getData(['theme', 'menu', 'font'])]]);
|
||||||
$this->setData(['theme', 'text', 'font', $fonts[$this->getData (['theme', 'text', 'font' ]) ] ]);
|
$this->setData(['theme', 'text', 'font', $fonts[$this->getData(['theme', 'text', 'font'])]]);
|
||||||
$this->setData(['theme', 'title', 'font', $fonts[ $this->getData (['theme', 'title', 'font' ]) ] ]);
|
$this->setData(['theme', 'title', 'font', $fonts[$this->getData(['theme', 'title', 'font'])]]);
|
||||||
$this->setData(['admin', 'fontTitle', $fonts[ $this->getData (['admin', 'fontTitle' ]) ] ]);
|
$this->setData(['admin', 'fontTitle', $fonts[$this->getData(['admin', 'fontTitle'])]]);
|
||||||
$this->setData(['admin', 'fontText', $fonts[$this->getData (['admin','fontText' ]) ] ]);
|
$this->setData(['admin', 'fontText', $fonts[$this->getData(['admin', 'fontText'])]]);
|
||||||
|
|
||||||
unlink(self::DATA_DIR . 'admin.css');
|
unlink(self::DATA_DIR . 'admin.css');
|
||||||
unlink(self::DATA_DIR . 'theme.css');
|
unlink(self::DATA_DIR . 'theme.css');
|
||||||
@ -659,10 +663,10 @@ if ($this->getData(['core', 'dataVersion']) < 11300) {
|
|||||||
if ($this->getData(['core', 'dataVersion']) < 11303) {
|
if ($this->getData(['core', 'dataVersion']) < 11303) {
|
||||||
|
|
||||||
// Ajout de la variable shortTitle basée sur Title
|
// Ajout de la variable shortTitle basée sur Title
|
||||||
foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) {
|
foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
|
||||||
$pageList [] = $parentKey;
|
$pageList[] = $parentKey;
|
||||||
foreach ($parentValue as $childKey) {
|
foreach ($parentValue as $childKey) {
|
||||||
$pageList [] = $childKey;
|
$pageList[] = $childKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($pageList as $parentKey => $parent) {
|
foreach ($pageList as $parentKey => $parent) {
|
||||||
@ -674,13 +678,13 @@ if ($this->getData(['core', 'dataVersion']) < 11303) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Version 11.3.06
|
// Version 11.3.06
|
||||||
if ($this->getData(['core', 'dataVersion']) < 11306) {
|
if ($this->getData(['core', 'dataVersion']) < 11306) {
|
||||||
|
|
||||||
// Supprime les fontes déclarées en double par la version précédentes
|
// Supprime les fontes déclarées en double par la version précédentes
|
||||||
$files = $this->getData(['fonts', 'files']);
|
$files = $this->getData(['fonts', 'files']);
|
||||||
foreach ($files as $fontId => $fontFile) {
|
foreach ($files as $fontId => $fontFile) {
|
||||||
if ( !is_null($this->getData(['fonts', 'imported', $fontId])) ) {
|
if (!is_null($this->getData(['fonts', 'imported', $fontId]))) {
|
||||||
$this->deleteData(['fonts', 'imported', $fontId]);
|
$this->deleteData(['fonts', 'imported', $fontId]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -692,13 +696,13 @@ if ($this->getData(['core', 'dataVersion']) < 11306) {
|
|||||||
if ($this->getData(['core', 'dataVersion']) < 11400) {
|
if ($this->getData(['core', 'dataVersion']) < 11400) {
|
||||||
|
|
||||||
// Effacer le dossier
|
// Effacer le dossier
|
||||||
if (is_dir('core/module/addon') ) {
|
if (is_dir('core/module/addon')) {
|
||||||
$this->removeDir('core/module/addon');
|
$this->removeDir('core/module/addon');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$fonts = [
|
$fonts = [
|
||||||
'arimo'=> [
|
'arimo' => [
|
||||||
'name' => 'Arimo',
|
'name' => 'Arimo',
|
||||||
'font-family' => 'Arimo, sans-serif',
|
'font-family' => 'Arimo, sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/arimo'
|
'resource' => 'https://fonts.cdnfonts.com/css/arimo'
|
||||||
@ -708,17 +712,17 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
|
|||||||
'font-family' => '\'Dancing Script\', sans-serif',
|
'font-family' => '\'Dancing Script\', sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/dancing-script'
|
'resource' => 'https://fonts.cdnfonts.com/css/dancing-script'
|
||||||
],
|
],
|
||||||
'droid-sans-2'=> [
|
'droid-sans-2' => [
|
||||||
'name' => 'Droid Sans',
|
'name' => 'Droid Sans',
|
||||||
'font-family' => '\'Droid Sans\', sans-serif',
|
'font-family' => '\'Droid Sans\', sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/droid-sans-2'
|
'resource' => 'https://fonts.cdnfonts.com/css/droid-sans-2'
|
||||||
],
|
],
|
||||||
'droid-serif-2'=> [
|
'droid-serif-2' => [
|
||||||
'name' => 'Droid Serif',
|
'name' => 'Droid Serif',
|
||||||
'font-family' => '\'Droid Serif\', serif',
|
'font-family' => '\'Droid Serif\', serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/droid-serif-2'
|
'resource' => 'https://fonts.cdnfonts.com/css/droid-serif-2'
|
||||||
],
|
],
|
||||||
'indie-flower'=> [
|
'indie-flower' => [
|
||||||
'name' => 'Indie Flower',
|
'name' => 'Indie Flower',
|
||||||
'font-family' => '\'Indie Flower\', sans-serif',
|
'font-family' => '\'Indie Flower\', sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/indie-flower'
|
'resource' => 'https://fonts.cdnfonts.com/css/indie-flower'
|
||||||
@ -728,27 +732,27 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
|
|||||||
'font-family' => '\'Fira Sans\', sans-serif',
|
'font-family' => '\'Fira Sans\', sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/fira-sans'
|
'resource' => 'https://fonts.cdnfonts.com/css/fira-sans'
|
||||||
],
|
],
|
||||||
'liberation-sans'=> [
|
'liberation-sans' => [
|
||||||
'name' => 'Liberation Sans',
|
'name' => 'Liberation Sans',
|
||||||
'font-family' => '\'Liberation Sans\', sans-serif',
|
'font-family' => '\'Liberation Sans\', sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/liberation-sans'
|
'resource' => 'https://fonts.cdnfonts.com/css/liberation-sans'
|
||||||
],
|
],
|
||||||
'liberation-serif'=> [
|
'liberation-serif' => [
|
||||||
'name' => 'Liberation Serif',
|
'name' => 'Liberation Serif',
|
||||||
'font-family' => '\'Liberation Serif\', serif',
|
'font-family' => '\'Liberation Serif\', serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/liberation-serif'
|
'resource' => 'https://fonts.cdnfonts.com/css/liberation-serif'
|
||||||
],
|
],
|
||||||
'lobster-2'=> [
|
'lobster-2' => [
|
||||||
'name' => 'Lobster',
|
'name' => 'Lobster',
|
||||||
'font-family' => 'Lobster, sans-serif',
|
'font-family' => 'Lobster, sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/lobster-2'
|
'resource' => 'https://fonts.cdnfonts.com/css/lobster-2'
|
||||||
],
|
],
|
||||||
'lato'=> [
|
'lato' => [
|
||||||
'name' => 'lato',
|
'name' => 'lato',
|
||||||
'font-family' => 'Lato, sans-serif',
|
'font-family' => 'Lato, sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/lato'
|
'resource' => 'https://fonts.cdnfonts.com/css/lato'
|
||||||
],
|
],
|
||||||
'old-standard-tt-3'=> [
|
'old-standard-tt-3' => [
|
||||||
'name' => 'Old Standard TT',
|
'name' => 'Old Standard TT',
|
||||||
'font-family' => '\'Old Standard TT\', serif',
|
'font-family' => '\'Old Standard TT\', serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/old-standard-tt-3'
|
'resource' => 'https://fonts.cdnfonts.com/css/old-standard-tt-3'
|
||||||
@ -758,32 +762,32 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
|
|||||||
'font-family' => '\'Open Sans\', sans-serif',
|
'font-family' => '\'Open Sans\', sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/open-sans'
|
'resource' => 'https://fonts.cdnfonts.com/css/open-sans'
|
||||||
],
|
],
|
||||||
'oswald-4'=> [
|
'oswald-4' => [
|
||||||
'name' => 'Oswald',
|
'name' => 'Oswald',
|
||||||
'font-family' => 'Oswald, sans-serif',
|
'font-family' => 'Oswald, sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/oswald-4'
|
'resource' => 'https://fonts.cdnfonts.com/css/oswald-4'
|
||||||
],
|
],
|
||||||
'pt-mono'=> [
|
'pt-mono' => [
|
||||||
'name' => 'PT Mono',
|
'name' => 'PT Mono',
|
||||||
'font-family' => '\'PT Mono\', monospace',
|
'font-family' => '\'PT Mono\', monospace',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/pt-mono'
|
'resource' => 'https://fonts.cdnfonts.com/css/pt-mono'
|
||||||
],
|
],
|
||||||
'pt-serif'=> [
|
'pt-serif' => [
|
||||||
'name' => 'PR Serif',
|
'name' => 'PR Serif',
|
||||||
'font-family' => '\'PT Serif\', serif',
|
'font-family' => '\'PT Serif\', serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/pt-serif'
|
'resource' => 'https://fonts.cdnfonts.com/css/pt-serif'
|
||||||
],
|
],
|
||||||
'rancho'=> [
|
'rancho' => [
|
||||||
'name' => 'Rancho',
|
'name' => 'Rancho',
|
||||||
'font-family' => 'Rancho, sans-serif',
|
'font-family' => 'Rancho, sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/rancho'
|
'resource' => 'https://fonts.cdnfonts.com/css/rancho'
|
||||||
],
|
],
|
||||||
'ubuntu'=> [
|
'ubuntu' => [
|
||||||
'name' => 'Ubuntu',
|
'name' => 'Ubuntu',
|
||||||
'font-family' => 'Ubuntu, sans-serif',
|
'font-family' => 'Ubuntu, sans-serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/ubuntu'
|
'resource' => 'https://fonts.cdnfonts.com/css/ubuntu'
|
||||||
],
|
],
|
||||||
'vollkorn'=> [
|
'vollkorn' => [
|
||||||
'name' => 'Vollkorn',
|
'name' => 'Vollkorn',
|
||||||
'font-family' => 'Vollkorn, serif',
|
'font-family' => 'Vollkorn, serif',
|
||||||
'resource' => 'https://fonts.cdnfonts.com/css/vollkorn'
|
'resource' => 'https://fonts.cdnfonts.com/css/vollkorn'
|
||||||
@ -794,11 +798,13 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
|
|||||||
$files = $this->getData(['fonts', 'files']);
|
$files = $this->getData(['fonts', 'files']);
|
||||||
if (is_array($files)) {
|
if (is_array($files)) {
|
||||||
foreach ($files as $fontId => $fontName) {
|
foreach ($files as $fontId => $fontName) {
|
||||||
if ( gettype($fontName) === 'string'
|
if (
|
||||||
&& file_exists(self::DATA_DIR . 'fonts/' . $fontName)) {
|
gettype($fontName) === 'string'
|
||||||
|
&& file_exists(self::DATA_DIR . 'fonts/' . $fontName)
|
||||||
|
) {
|
||||||
$this->setData(['fonts', 'files', $fontId, [
|
$this->setData(['fonts', 'files', $fontId, [
|
||||||
'name' => ucfirst($fontId),
|
'name' => ucfirst($fontId),
|
||||||
'font-family'=> '\'' . ucfirst($fontId) . '\', sans-serif',
|
'font-family' => '\'' . ucfirst($fontId) . '\', sans-serif',
|
||||||
'resource' => $fontName
|
'resource' => $fontName
|
||||||
]]);
|
]]);
|
||||||
}
|
}
|
||||||
@ -809,10 +815,10 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
|
|||||||
$imported = $this->getData(['fonts', 'imported']);
|
$imported = $this->getData(['fonts', 'imported']);
|
||||||
if (is_array($imported)) {
|
if (is_array($imported)) {
|
||||||
foreach ($imported as $fontId => $fontUrl) {
|
foreach ($imported as $fontId => $fontUrl) {
|
||||||
if ( gettype($fontUrl) === 'string' ) {
|
if (gettype($fontUrl) === 'string') {
|
||||||
$this->setData(['fonts', 'imported', $fontId, [
|
$this->setData(['fonts', 'imported', $fontId, [
|
||||||
'name' => ucfirst($fontId),
|
'name' => ucfirst($fontId),
|
||||||
'font-family'=> '\'' . ucfirst($fontId) . '\', sans-serif',
|
'font-family' => '\'' . ucfirst($fontId) . '\', sans-serif',
|
||||||
'resource' => 'https:\\fonts.cdnfonts.com\css' . $fontUrl
|
'resource' => 'https:\\fonts.cdnfonts.com\css' . $fontUrl
|
||||||
]]);
|
]]);
|
||||||
}
|
}
|
||||||
@ -860,7 +866,7 @@ if ($this->getData(['core', 'dataVersion']) < 11600) {
|
|||||||
'pt' => 'pt_PT'
|
'pt' => 'pt_PT'
|
||||||
];
|
];
|
||||||
// COnvertit les dossiers vers la nouvelle structure
|
// COnvertit les dossiers vers la nouvelle structure
|
||||||
foreach($languages as $key => $value) {
|
foreach ($languages as $key => $value) {
|
||||||
if (is_dir(self::DATA_DIR . $key)) {
|
if (is_dir(self::DATA_DIR . $key)) {
|
||||||
$this->copyDir(self::DATA_DIR . $key, self::DATA_DIR . $value);
|
$this->copyDir(self::DATA_DIR . $key, self::DATA_DIR . $value);
|
||||||
$this->removeDir(self::DATA_DIR . $key);
|
$this->removeDir(self::DATA_DIR . $key);
|
||||||
@ -874,8 +880,8 @@ if ($this->getData(['core', 'dataVersion']) < 11600) {
|
|||||||
$this->deleteData(['core', 'baseUrl']);
|
$this->deleteData(['core', 'baseUrl']);
|
||||||
|
|
||||||
// Suppression de GA
|
// Suppression de GA
|
||||||
$this->deleteData(['config', 'seo' ,'analyticsId']);
|
$this->deleteData(['config', 'seo', 'analyticsId']);
|
||||||
$this->deleteData(['config','analyticsId']);
|
$this->deleteData(['config', 'analyticsId']);
|
||||||
$this->deleteData(['locale', 'cookies', 'gaLabel']);
|
$this->deleteData(['locale', 'cookies', 'gaLabel']);
|
||||||
$this->deleteData(['locale', 'cookies', 'checkboxGaLabel']);
|
$this->deleteData(['locale', 'cookies', 'checkboxGaLabel']);
|
||||||
|
|
||||||
|
@ -14,12 +14,13 @@
|
|||||||
* @link http://zwiicms.fr/
|
* @link http://zwiicms.fr/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class config extends common {
|
class config extends common
|
||||||
|
{
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'backup' => self::GROUP_ADMIN,
|
'backup' => self::GROUP_ADMIN,
|
||||||
'copyBackups'=> self::GROUP_ADMIN,
|
'copyBackups' => self::GROUP_ADMIN,
|
||||||
'delBackups'=> self::GROUP_ADMIN,
|
'delBackups' => self::GROUP_ADMIN,
|
||||||
'configMetaImage' => self::GROUP_ADMIN,
|
'configMetaImage' => self::GROUP_ADMIN,
|
||||||
'siteMap' => self::GROUP_ADMIN,
|
'siteMap' => self::GROUP_ADMIN,
|
||||||
'index' => self::GROUP_ADMIN,
|
'index' => self::GROUP_ADMIN,
|
||||||
@ -27,7 +28,7 @@ class config extends common {
|
|||||||
'updateBaseUrl' => self::GROUP_ADMIN,
|
'updateBaseUrl' => self::GROUP_ADMIN,
|
||||||
'script' => self::GROUP_ADMIN,
|
'script' => self::GROUP_ADMIN,
|
||||||
'logReset' => self::GROUP_ADMIN,
|
'logReset' => self::GROUP_ADMIN,
|
||||||
'logDownload'=> self::GROUP_ADMIN,
|
'logDownload' => self::GROUP_ADMIN,
|
||||||
'blacklistReset' => self::GROUP_ADMIN,
|
'blacklistReset' => self::GROUP_ADMIN,
|
||||||
'blacklistDownload' => self::GROUP_ADMIN
|
'blacklistDownload' => self::GROUP_ADMIN
|
||||||
];
|
];
|
||||||
@ -201,7 +202,8 @@ class config extends common {
|
|||||||
* Sitemap compressé et non compressé
|
* Sitemap compressé et non compressé
|
||||||
* Robots.txt
|
* Robots.txt
|
||||||
*/
|
*/
|
||||||
public function siteMap() {
|
public function siteMap()
|
||||||
|
{
|
||||||
|
|
||||||
// Mettre à jour le site map
|
// Mettre à jour le site map
|
||||||
$successSitemap = $this->createSitemap();
|
$successSitemap = $this->createSitemap();
|
||||||
@ -218,18 +220,19 @@ class config extends common {
|
|||||||
/**
|
/**
|
||||||
* Sauvegarde des données
|
* Sauvegarde des données
|
||||||
*/
|
*/
|
||||||
public function backup() {
|
public function backup()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Creation du ZIP
|
// Creation du ZIP
|
||||||
$filter = $this->getInput('configBackupOption',helper::FILTER_BOOLEAN) === true ? ['backup','tmp'] : ['backup','tmp','file'];
|
$filter = $this->getInput('configBackupOption', helper::FILTER_BOOLEAN) === true ? ['backup', 'tmp'] : ['backup', 'tmp', 'file'];
|
||||||
$fileName = helper::autoBackup(self::TEMP_DIR,$filter);
|
$fileName = helper::autoBackup(self::TEMP_DIR, $filter);
|
||||||
// Créer le répertoire manquant
|
// Créer le répertoire manquant
|
||||||
if (!is_dir(self::FILE_DIR.'source/backup')) {
|
if (!is_dir(self::FILE_DIR . 'source/backup')) {
|
||||||
mkdir(self::FILE_DIR.'source/backup', 0755);
|
mkdir(self::FILE_DIR . 'source/backup', 0755);
|
||||||
}
|
}
|
||||||
// Copie dans les fichiers
|
// Copie dans les fichiers
|
||||||
$success = copy (self::TEMP_DIR . $fileName , self::FILE_DIR.'source/backup/' . $fileName);
|
$success = copy(self::TEMP_DIR . $fileName, self::FILE_DIR . 'source/backup/' . $fileName);
|
||||||
// Détruire le temporaire
|
// Détruire le temporaire
|
||||||
unlink(self::TEMP_DIR . $fileName);
|
unlink(self::TEMP_DIR . $fileName);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -249,9 +252,10 @@ class config extends common {
|
|||||||
/**
|
/**
|
||||||
* Réalise une copie d'écran du site
|
* Réalise une copie d'écran du site
|
||||||
*/
|
*/
|
||||||
public function configMetaImage() {
|
public function configMetaImage()
|
||||||
|
{
|
||||||
// fonction désactivée pour un site local
|
// fonction désactivée pour un site local
|
||||||
if ( strpos(helper::baseUrl(false),'localhost') > 0 OR strpos(helper::baseUrl(false),'127.0.0.1') > 0) {
|
if (strpos(helper::baseUrl(false), 'localhost') > 0 or strpos(helper::baseUrl(false), '127.0.0.1') > 0) {
|
||||||
$site = 'https://zwiicms.fr/';
|
$site = 'https://zwiicms.fr/';
|
||||||
} else {
|
} else {
|
||||||
$site = helper::baseUrl(false);
|
$site = helper::baseUrl(false);
|
||||||
@ -265,9 +269,9 @@ class config extends common {
|
|||||||
$data = false;
|
$data = false;
|
||||||
|
|
||||||
// lire l'API si le token est fourni
|
// lire l'API si le token est fourni
|
||||||
if (!empty($token) ) {
|
if (!empty($token)) {
|
||||||
// Tente de connecter 5 fois l'API
|
// Tente de connecter 5 fois l'API
|
||||||
for ($i=0; $i < 5 ; $i++) {
|
for ($i = 0; $i < 5; $i++) {
|
||||||
$data = helper::getUrlContents('https://shot.screenshotapi.net/screenshot?token=' . $token . '&url=' . $site . '&width=1200&height=627&output=json&file_type=jpeg&no_cookie_banners=true&wait_for_event=load');
|
$data = helper::getUrlContents('https://shot.screenshotapi.net/screenshot?token=' . $token . '&url=' . $site . '&width=1200&height=627&output=json&file_type=jpeg&no_cookie_banners=true&wait_for_event=load');
|
||||||
if ($data !== false) {
|
if ($data !== false) {
|
||||||
break;
|
break;
|
||||||
@ -278,17 +282,17 @@ class config extends common {
|
|||||||
|
|
||||||
|
|
||||||
// Traitement des données reçues valides.
|
// Traitement des données reçues valides.
|
||||||
if ( !empty($token) && $data !== false) {
|
if (!empty($token) && $data !== false) {
|
||||||
$data = json_decode($data, true);
|
$data = json_decode($data, true);
|
||||||
$img = $data['screenshot'];
|
$img = $data['screenshot'];
|
||||||
// Effacer l'image et la miniature png
|
// Effacer l'image et la miniature png
|
||||||
if (file_exists(self::FILE_DIR .'thumb/screenshot.jpg')) {
|
if (file_exists(self::FILE_DIR . 'thumb/screenshot.jpg')) {
|
||||||
unlink (self::FILE_DIR .'thumb/screenshot.jpg');
|
unlink(self::FILE_DIR . 'thumb/screenshot.jpg');
|
||||||
}
|
}
|
||||||
if (file_exists(self::FILE_DIR .'source/screenshot.jpg')) {
|
if (file_exists(self::FILE_DIR . 'source/screenshot.jpg')) {
|
||||||
unlink (self::FILE_DIR .'source/screenshot.jpg');
|
unlink(self::FILE_DIR . 'source/screenshot.jpg');
|
||||||
}
|
}
|
||||||
$success = copy ($img, self::FILE_DIR .'source/screenshot.jpg');
|
$success = copy($img, self::FILE_DIR . 'source/screenshot.jpg');
|
||||||
}
|
}
|
||||||
|
|
||||||
$notification = empty($token)
|
$notification = empty($token)
|
||||||
@ -299,20 +303,21 @@ class config extends common {
|
|||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'config',
|
'redirect' => helper::baseUrl() . 'config',
|
||||||
'notification' => $notification,
|
'notification' => $notification,
|
||||||
'state' => ($success === false OR empty($token)) ? false : true
|
'state' => ($success === false or empty($token)) ? false : true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Procédure d'importation
|
* Procédure d'importation
|
||||||
*/
|
*/
|
||||||
public function restore() {
|
public function restore()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost() ) {
|
if ($this->isPost()) {
|
||||||
|
|
||||||
$success = false;
|
$success = false;
|
||||||
|
|
||||||
if ($this->getInput('configRestoreImportFile', null, true) ) {
|
if ($this->getInput('configRestoreImportFile', null, true)) {
|
||||||
|
|
||||||
$fileZip = $this->getInput('configRestoreImportFile');
|
$fileZip = $this->getInput('configRestoreImportFile');
|
||||||
$file_parts = pathinfo($fileZip);
|
$file_parts = pathinfo($fileZip);
|
||||||
@ -338,20 +343,20 @@ class config extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Lire le contenu de l'archive dans le tableau files
|
// Lire le contenu de l'archive dans le tableau files
|
||||||
for( $i = 0; $i < $zip->numFiles; $i++ ){
|
for ($i = 0; $i < $zip->numFiles; $i++) {
|
||||||
$stat = $zip->statIndex( $i );
|
$stat = $zip->statIndex($i);
|
||||||
$files [] = ( basename( $stat['name'] ));
|
$files[] = (basename($stat['name']));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lire la dataversion
|
// Lire la dataversion
|
||||||
$tmpDir = uniqid(4);
|
$tmpDir = uniqid(4);
|
||||||
$success = $zip->extractTo( self::TEMP_DIR . $tmpDir );
|
$success = $zip->extractTo(self::TEMP_DIR . $tmpDir);
|
||||||
$data = file_get_contents( self::TEMP_DIR . $tmpDir . '/data/core.json');
|
$data = file_get_contents(self::TEMP_DIR . $tmpDir . '/data/core.json');
|
||||||
$obj = json_decode($data);
|
$obj = json_decode($data);
|
||||||
$dataVersion = strval ($obj->core->dataVersion);
|
$dataVersion = strval($obj->core->dataVersion);
|
||||||
switch (strlen($dataVersion)) {
|
switch (strlen($dataVersion)) {
|
||||||
case 4:
|
case 4:
|
||||||
if (substr($dataVersion,0,1) === '9' ) {
|
if (substr($dataVersion, 0, 1) === '9') {
|
||||||
// Valeurs en sortie erreur
|
// Valeurs en sortie erreur
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Restaurer',
|
'title' => 'Restaurer',
|
||||||
@ -364,17 +369,17 @@ class config extends common {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
$version = substr($dataVersion,0,2);
|
$version = substr($dataVersion, 0, 2);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$version = 0;
|
$version = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$this->removeDir(self::TEMP_DIR . $tmpDir );
|
$this->removeDir(self::TEMP_DIR . $tmpDir);
|
||||||
|
|
||||||
if ($version >= 10 ) {
|
if ($version >= 10) {
|
||||||
// Option active, les users sont stockées
|
// Option active, les users sont stockées
|
||||||
if ($this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true ) {
|
if ($this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true) {
|
||||||
$users = $this->getData(['user']);
|
$users = $this->getData(['user']);
|
||||||
}
|
}
|
||||||
} elseif ($version === 0) { // Version invalide
|
} elseif ($version === 0) { // Version invalide
|
||||||
@ -388,25 +393,29 @@ class config extends common {
|
|||||||
}
|
}
|
||||||
// Extraire le zip ou 'site/'
|
// Extraire le zip ou 'site/'
|
||||||
$this->removeDir(self::DATA_DIR);
|
$this->removeDir(self::DATA_DIR);
|
||||||
$success = $zip->extractTo( 'site/' );
|
$success = $zip->extractTo('site/');
|
||||||
// Fermer l'archive
|
// Fermer l'archive
|
||||||
$zip->close();
|
$zip->close();
|
||||||
|
|
||||||
// Restaurer les users originaux d'une v10 si option cochée
|
// Restaurer les users originaux d'une v10 si option cochée
|
||||||
if (!empty($users) &&
|
if (
|
||||||
|
!empty($users) &&
|
||||||
$version >= 10 &&
|
$version >= 10 &&
|
||||||
$this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true) {
|
$this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true
|
||||||
$this->setData(['user',$users]);
|
) {
|
||||||
|
$this->setData(['user', $users]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Conversion vers des Url relatives
|
// Conversion vers des Url relatives
|
||||||
|
/*
|
||||||
if ($this->getData(['core', 'baseUrl'])) {
|
if ($this->getData(['core', 'baseUrl'])) {
|
||||||
$url = str_replace('?','',$this->getData(['core', 'baseUrl']));
|
$url = str_replace('?', '', $this->getData(['core', 'baseUrl']));
|
||||||
// Suppresion de la base Url
|
// Suppression de la base Url
|
||||||
$this->updateBaseUrl($url);
|
$this->updateBaseUrl($url);
|
||||||
// Effacer la baseUrl
|
// Effacer la baseUrl
|
||||||
$this->deleteData(['core', 'baseUrl']);
|
$this->deleteData(['core', 'baseUrl']);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Message de notification
|
// Message de notification
|
||||||
$notification = $success === true ? 'Restaurer effectuée avec succès' : 'Erreur inconnue';
|
$notification = $success === true ? 'Restaurer effectuée avec succès' : 'Erreur inconnue';
|
||||||
@ -432,14 +441,17 @@ class config extends common {
|
|||||||
/**
|
/**
|
||||||
* Configuration
|
* Configuration
|
||||||
*/
|
*/
|
||||||
public function index() {
|
public function index()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
|
|
||||||
// Basculement en mise à jour auto, remise à 0 du compteur
|
// Basculement en mise à jour auto, remise à 0 du compteur
|
||||||
if ($this->getData(['config','autoUpdate']) === false &&
|
if (
|
||||||
$this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN) === true) {
|
$this->getData(['config', 'autoUpdate']) === false &&
|
||||||
$this->setData(['core','lastAutoUpdate',0]);
|
$this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN) === true
|
||||||
|
) {
|
||||||
|
$this->setData(['core', 'lastAutoUpdate', 0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -457,7 +469,7 @@ class config extends common {
|
|||||||
'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN),
|
'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN),
|
||||||
'proxyType' => $this->getInput('configProxyType'),
|
'proxyType' => $this->getInput('configProxyType'),
|
||||||
'proxyUrl' => $this->getInput('configProxyUrl'),
|
'proxyUrl' => $this->getInput('configProxyUrl'),
|
||||||
'proxyPort' => $this->getInput('configProxyPort',helper::FILTER_INT),
|
'proxyPort' => $this->getInput('configProxyPort', helper::FILTER_INT),
|
||||||
'social' => [
|
'social' => [
|
||||||
'facebookId' => $this->getInput('socialFacebookId'),
|
'facebookId' => $this->getInput('socialFacebookId'),
|
||||||
'linkedinId' => $this->getInput('socialLinkedinId'),
|
'linkedinId' => $this->getInput('socialLinkedinId'),
|
||||||
@ -469,30 +481,30 @@ class config extends common {
|
|||||||
'githubId' => $this->getInput('socialGithubId')
|
'githubId' => $this->getInput('socialGithubId')
|
||||||
],
|
],
|
||||||
'smtp' => [
|
'smtp' => [
|
||||||
'enable' => $this->getInput('smtpEnable',helper::FILTER_BOOLEAN),
|
'enable' => $this->getInput('smtpEnable', helper::FILTER_BOOLEAN),
|
||||||
'host' => $this->getInput('smtpHost',helper::FILTER_STRING_SHORT,$this->getInput('smtpEnable',helper::FILTER_BOOLEAN)),
|
'host' => $this->getInput('smtpHost', helper::FILTER_STRING_SHORT, $this->getInput('smtpEnable', helper::FILTER_BOOLEAN)),
|
||||||
'port' => $this->getInput('smtpPort',helper::FILTER_INT,$this->getInput('smtpEnable',helper::FILTER_BOOLEAN)),
|
'port' => $this->getInput('smtpPort', helper::FILTER_INT, $this->getInput('smtpEnable', helper::FILTER_BOOLEAN)),
|
||||||
'auth' => $this->getInput('smtpAuth',helper::FILTER_BOOLEAN),
|
'auth' => $this->getInput('smtpAuth', helper::FILTER_BOOLEAN),
|
||||||
'secure' => $this->getInput('smtpSecure',helper::FILTER_BOOLEAN),
|
'secure' => $this->getInput('smtpSecure', helper::FILTER_BOOLEAN),
|
||||||
'username' => $this->getInput('smtpUsername',helper::FILTER_STRING_SHORT,$this->getInput('smtpAuth',helper::FILTER_BOOLEAN)),
|
'username' => $this->getInput('smtpUsername', helper::FILTER_STRING_SHORT, $this->getInput('smtpAuth', helper::FILTER_BOOLEAN)),
|
||||||
'password' =>helper::encrypt($this->getData(['config','smtp','username']),$this->getInput('smtpPassword',null,$this->getInput('smtpAuth',helper::FILTER_BOOLEAN))),
|
'password' => helper::encrypt($this->getData(['config', 'smtp', 'username']), $this->getInput('smtpPassword', null, $this->getInput('smtpAuth', helper::FILTER_BOOLEAN))),
|
||||||
'sender' => $this->getInput('smtpSender',helper::FILTER_MAIL)
|
'sender' => $this->getInput('smtpSender', helper::FILTER_MAIL)
|
||||||
],
|
],
|
||||||
'seo' => [
|
'seo' => [
|
||||||
'robots' => $this->getInput('seoRobots',helper::FILTER_BOOLEAN),
|
'robots' => $this->getInput('seoRobots', helper::FILTER_BOOLEAN),
|
||||||
'keyApi' => $this->getInput('seoKeyApi',helper::FILTER_STRING_SHORT),
|
'keyApi' => $this->getInput('seoKeyApi', helper::FILTER_STRING_SHORT),
|
||||||
],
|
],
|
||||||
'connect' => [
|
'connect' => [
|
||||||
'attempt' => $this->getInput('connectAttempt',helper::FILTER_INT),
|
'attempt' => $this->getInput('connectAttempt', helper::FILTER_INT),
|
||||||
'timeout' => $this->getInput('connectTimeout',helper::FILTER_INT),
|
'timeout' => $this->getInput('connectTimeout', helper::FILTER_INT),
|
||||||
'log' => $this->getInput('connectLog',helper::FILTER_BOOLEAN),
|
'log' => $this->getInput('connectLog', helper::FILTER_BOOLEAN),
|
||||||
'anonymousIp' => $this->getInput('connectAnonymousIp',helper::FILTER_INT),
|
'anonymousIp' => $this->getInput('connectAnonymousIp', helper::FILTER_INT),
|
||||||
'captcha' => $this->getInput('connectCaptcha',helper::FILTER_BOOLEAN),
|
'captcha' => $this->getInput('connectCaptcha', helper::FILTER_BOOLEAN),
|
||||||
'captchaStrong' => $this->getInput('connectCaptchaStrong',helper::FILTER_BOOLEAN),
|
'captchaStrong' => $this->getInput('connectCaptchaStrong', helper::FILTER_BOOLEAN),
|
||||||
'autoDisconnect' => $this->getInput('connectAutoDisconnect',helper::FILTER_BOOLEAN),
|
'autoDisconnect' => $this->getInput('connectAutoDisconnect', helper::FILTER_BOOLEAN),
|
||||||
'captchaType' => $this->getInput('connectCaptchaType'),
|
'captchaType' => $this->getInput('connectCaptchaType'),
|
||||||
'showPassword' => $this->getInput('connectShowPassword',helper::FILTER_BOOLEAN),
|
'showPassword' => $this->getInput('connectShowPassword', helper::FILTER_BOOLEAN),
|
||||||
'redirectLogin' => $this->getInput('connectRedirectLogin',helper::FILTER_BOOLEAN)
|
'redirectLogin' => $this->getInput('connectRedirectLogin', helper::FILTER_BOOLEAN)
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
@ -500,9 +512,8 @@ class config extends common {
|
|||||||
// Efface les fichiers de backup lorsque l'option est désactivée
|
// Efface les fichiers de backup lorsque l'option est désactivée
|
||||||
if ($this->getInput('configFileBackup', helper::FILTER_BOOLEAN) === false) {
|
if ($this->getInput('configFileBackup', helper::FILTER_BOOLEAN) === false) {
|
||||||
$path = realpath('site/data');
|
$path = realpath('site/data');
|
||||||
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
|
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) {
|
||||||
{
|
if (strpos($filename, 'backup.json')) {
|
||||||
if (strpos($filename,'backup.json')) {
|
|
||||||
unlink($filename);
|
unlink($filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -511,12 +522,12 @@ class config extends common {
|
|||||||
touch('site/data/.backup');
|
touch('site/data/.backup');
|
||||||
}
|
}
|
||||||
// Notice
|
// Notice
|
||||||
if(self::$inputNotices === []) {
|
if (self::$inputNotices === []) {
|
||||||
// Active la réécriture d'URL
|
// Active la réécriture d'URL
|
||||||
$rewrite = $this->getInput('configRewrite', helper::FILTER_BOOLEAN);
|
$rewrite = $this->getInput('configRewrite', helper::FILTER_BOOLEAN);
|
||||||
if(
|
if (
|
||||||
$rewrite
|
$rewrite
|
||||||
AND helper::checkRewrite() === false
|
and helper::checkRewrite() === false
|
||||||
) {
|
) {
|
||||||
// Ajout des lignes dans le .htaccess
|
// Ajout des lignes dans le .htaccess
|
||||||
$fileContent = file_get_contents('.htaccess');
|
$fileContent = file_get_contents('.htaccess');
|
||||||
@ -528,8 +539,8 @@ class config extends common {
|
|||||||
"\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL .
|
"\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL .
|
||||||
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
|
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
|
||||||
"\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL .
|
"\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL .
|
||||||
'</IfModule>'. PHP_EOL .
|
'</IfModule>' . PHP_EOL .
|
||||||
'# URL rewriting' . PHP_EOL ;
|
'# URL rewriting' . PHP_EOL;
|
||||||
$fileContent = str_replace('# URL rewriting', $rewriteData, $fileContent);
|
$fileContent = str_replace('# URL rewriting', $rewriteData, $fileContent);
|
||||||
file_put_contents(
|
file_put_contents(
|
||||||
'.htaccess',
|
'.htaccess',
|
||||||
@ -539,9 +550,9 @@ class config extends common {
|
|||||||
helper::$rewriteStatus = true;
|
helper::$rewriteStatus = true;
|
||||||
}
|
}
|
||||||
// Désactive la réécriture d'URL
|
// Désactive la réécriture d'URL
|
||||||
elseif(
|
elseif (
|
||||||
$rewrite === false
|
$rewrite === false
|
||||||
AND helper::checkRewrite()
|
and helper::checkRewrite()
|
||||||
) {
|
) {
|
||||||
// Suppression des lignes dans le .htaccess
|
// Suppression des lignes dans le .htaccess
|
||||||
$fileContent = file_get_contents('.htaccess');
|
$fileContent = file_get_contents('.htaccess');
|
||||||
@ -561,7 +572,7 @@ class config extends common {
|
|||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Configuration du site',
|
'title' => 'Configuration du site',
|
||||||
'view' => 'index',
|
'view' => 'index',
|
||||||
'notification' => 'Modifications enregistrées ' ,
|
'notification' => 'Modifications enregistrées ',
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@ -569,7 +580,7 @@ class config extends common {
|
|||||||
// Variable de version
|
// Variable de version
|
||||||
self::$onlineVersion = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version');
|
self::$onlineVersion = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version');
|
||||||
if (self::$onlineVersion > common::ZWII_VERSION) {
|
if (self::$onlineVersion > common::ZWII_VERSION) {
|
||||||
self::$updateButtonText = "Mettre à jour" ;
|
self::$updateButtonText = "Mettre à jour";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -580,19 +591,20 @@ class config extends common {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function script() {
|
public function script()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Ecrire les fichiers de script
|
// Ecrire les fichiers de script
|
||||||
if ($this->geturl(2) === 'head') {
|
if ($this->geturl(2) === 'head') {
|
||||||
file_put_contents(self::DATA_DIR . 'head.inc.html',$this->getInput('configScriptHead',null));
|
file_put_contents(self::DATA_DIR . 'head.inc.html', $this->getInput('configScriptHead', null));
|
||||||
}
|
}
|
||||||
if ($this->geturl(2) === 'body') {
|
if ($this->geturl(2) === 'body') {
|
||||||
file_put_contents(self::DATA_DIR . 'body.inc.html',$this->getInput('configScriptBody',null));
|
file_put_contents(self::DATA_DIR . 'body.inc.html', $this->getInput('configScriptBody', null));
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Éditeur de script dans ' . ucfirst($this->geturl(2)) ,
|
'title' => 'Éditeur de script dans ' . ucfirst($this->geturl(2)),
|
||||||
'vendor' => [
|
'vendor' => [
|
||||||
'codemirror'
|
'codemirror'
|
||||||
],
|
],
|
||||||
@ -602,7 +614,7 @@ class config extends common {
|
|||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Éditeur de script dans ' . ucfirst($this->geturl(2)) ,
|
'title' => 'Éditeur de script dans ' . ucfirst($this->geturl(2)),
|
||||||
'vendor' => [
|
'vendor' => [
|
||||||
'codemirror'
|
'codemirror'
|
||||||
],
|
],
|
||||||
@ -615,12 +627,13 @@ class config extends common {
|
|||||||
* Vider le fichier de log
|
* Vider le fichier de log
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function logReset() {
|
public function logReset()
|
||||||
if ( file_exists(self::DATA_DIR . 'journal.log') ) {
|
{
|
||||||
|
if (file_exists(self::DATA_DIR . 'journal.log')) {
|
||||||
unlink(self::DATA_DIR . 'journal.log');
|
unlink(self::DATA_DIR . 'journal.log');
|
||||||
// Créer les en-têtes des journaux
|
// Créer les en-têtes des journaux
|
||||||
$d = 'Date;Heure;IP;Id;Action' . PHP_EOL;
|
$d = 'Date;Heure;IP;Id;Action' . PHP_EOL;
|
||||||
file_put_contents(self::DATA_DIR . 'journal.log',$d);
|
file_put_contents(self::DATA_DIR . 'journal.log', $d);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Configuration du site',
|
'title' => 'Configuration du site',
|
||||||
@ -637,7 +650,6 @@ class config extends common {
|
|||||||
'state' => false
|
'state' => false
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -645,7 +657,8 @@ class config extends common {
|
|||||||
/**
|
/**
|
||||||
* Télécharger le fichier de log
|
* Télécharger le fichier de log
|
||||||
*/
|
*/
|
||||||
public function logDownload() {
|
public function logDownload()
|
||||||
|
{
|
||||||
$fileName = self::DATA_DIR . 'journal.log';
|
$fileName = self::DATA_DIR . 'journal.log';
|
||||||
if (file_exists($fileName)) {
|
if (file_exists($fileName)) {
|
||||||
ob_start();
|
ob_start();
|
||||||
@ -654,7 +667,7 @@ class config extends common {
|
|||||||
header('Content-Length: ' . filesize($fileName));
|
header('Content-Length: ' . filesize($fileName));
|
||||||
ob_clean();
|
ob_clean();
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
readfile( $fileName);
|
readfile($fileName);
|
||||||
exit();
|
exit();
|
||||||
} else {
|
} else {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -670,27 +683,28 @@ class config extends common {
|
|||||||
/**
|
/**
|
||||||
* Tableau des IP blacklistés
|
* Tableau des IP blacklistés
|
||||||
*/
|
*/
|
||||||
public function blacklistDownload () {
|
public function blacklistDownload()
|
||||||
|
{
|
||||||
ob_start();
|
ob_start();
|
||||||
$fileName = self::TEMP_DIR . 'blacklist.log';
|
$fileName = self::TEMP_DIR . 'blacklist.log';
|
||||||
$d = 'Date dernière tentative;Heure dernière tentative;Id;Adresse IP;Nombre d\'échecs' . PHP_EOL;
|
$d = 'Date dernière tentative;Heure dernière tentative;Id;Adresse IP;Nombre d\'échecs' . PHP_EOL;
|
||||||
file_put_contents($fileName,$d);
|
file_put_contents($fileName, $d);
|
||||||
if ( file_exists($fileName) ) {
|
if (file_exists($fileName)) {
|
||||||
$d = $this->getData(['blacklist']);
|
$d = $this->getData(['blacklist']);
|
||||||
$data = '';
|
$data = '';
|
||||||
foreach ($d as $key => $item) {
|
foreach ($d as $key => $item) {
|
||||||
$data .= mb_detect_encoding(strftime('%d/%m/%y',$item['lastFail']), 'UTF-8', true)
|
$data .= mb_detect_encoding(strftime('%d/%m/%y', $item['lastFail']), 'UTF-8', true)
|
||||||
? strftime('%d/%m/%y',$item['lastFail']) . ';' . utf8_encode(strftime('%R',$item['lastFail'])) . ';'
|
? strftime('%d/%m/%y', $item['lastFail']) . ';' . utf8_encode(strftime('%R', $item['lastFail'])) . ';'
|
||||||
: utf8_encode(strftime('%d/%m/%y',$item['lastFail'])) . ';' . utf8_encode(strftime('%R',$item['lastFail'])) . ';' ;
|
: utf8_encode(strftime('%d/%m/%y', $item['lastFail'])) . ';' . utf8_encode(strftime('%R', $item['lastFail'])) . ';';
|
||||||
$data .= $key . ';' . $item['ip'] . ';' . $item['connectFail'] . PHP_EOL;
|
$data .= $key . ';' . $item['ip'] . ';' . $item['connectFail'] . PHP_EOL;
|
||||||
}
|
}
|
||||||
file_put_contents($fileName,$data,FILE_APPEND);
|
file_put_contents($fileName, $data, FILE_APPEND);
|
||||||
header('Content-Type: application/octet-stream');
|
header('Content-Type: application/octet-stream');
|
||||||
header('Content-Disposition: attachment; filename="' . $fileName . '"');
|
header('Content-Disposition: attachment; filename="' . $fileName . '"');
|
||||||
header('Content-Length: ' . filesize($fileName));
|
header('Content-Length: ' . filesize($fileName));
|
||||||
ob_clean();
|
ob_clean();
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
readfile( $fileName);
|
readfile($fileName);
|
||||||
unlink(self::TEMP_DIR . 'blacklist.log');
|
unlink(self::TEMP_DIR . 'blacklist.log');
|
||||||
exit();
|
exit();
|
||||||
} else {
|
} else {
|
||||||
@ -708,9 +722,10 @@ class config extends common {
|
|||||||
* Réinitialiser les ip blacklistées
|
* Réinitialiser les ip blacklistées
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function blacklistReset() {
|
public function blacklistReset()
|
||||||
if ( file_exists(self::DATA_DIR . 'blacklist.json') ) {
|
{
|
||||||
$this->setData(['blacklist',[]]);
|
if (file_exists(self::DATA_DIR . 'blacklist.json')) {
|
||||||
|
$this->setData(['blacklist', []]);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Configuration du site',
|
'title' => 'Configuration du site',
|
||||||
@ -732,9 +747,10 @@ class config extends common {
|
|||||||
/**
|
/**
|
||||||
* Récupération des backups auto dans le gestionnaire de fichiers
|
* Récupération des backups auto dans le gestionnaire de fichiers
|
||||||
*/
|
*/
|
||||||
public function copyBackups() {
|
public function copyBackups()
|
||||||
|
{
|
||||||
|
|
||||||
$success = $this->copyDir(self::BACKUP_DIR, self::FILE_DIR . 'source/backup' );
|
$success = $this->copyDir(self::BACKUP_DIR, self::FILE_DIR . 'source/backup');
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -748,15 +764,15 @@ class config extends common {
|
|||||||
/**
|
/**
|
||||||
* Vider le dosser des sauvegardes automatisées
|
* Vider le dosser des sauvegardes automatisées
|
||||||
*/
|
*/
|
||||||
public function delBackups() {
|
public function delBackups()
|
||||||
|
{
|
||||||
$path = realpath(self::BACKUP_DIR);
|
$path = realpath(self::BACKUP_DIR);
|
||||||
$success = $fail = 0;
|
$success = $fail = 0;
|
||||||
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
|
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) {
|
||||||
{
|
if (strpos($filename, '.zip')) {
|
||||||
if (strpos($filename,'.zip')) {
|
|
||||||
|
|
||||||
$r = unlink($filename);
|
$r = unlink($filename);
|
||||||
$success = $r === true ? $succes + 1 : $success;
|
$success = $r === true ? $success + 1 : $success;
|
||||||
$fail = $r === false ? $fail + 1 : $fail;
|
$fail = $r === false ? $fail + 1 : $fail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -768,7 +784,4 @@ class config extends common {
|
|||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
* @link http://zwiicms.fr/
|
* @link http://zwiicms.fr/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$( document).ready(function() {
|
$(document).ready(function () {
|
||||||
$("#configBackupForm").submit( function(e){
|
$("#configBackupForm").submit(function (e) {
|
||||||
//$("#configBackupSubmit").addClass("disabled").prop("disabled", true);
|
//$("#configBackupSubmit").addClass("disabled").prop("disabled", true);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var url = "<?php echo helper::baseUrl() . $this->getUrl(0); ?>/backup";
|
var url = "<?php echo helper::baseUrl() . $this->getUrl(0); ?>/backup";
|
||||||
@ -22,15 +22,15 @@ $( document).ready(function() {
|
|||||||
type: "POST",
|
type: "POST",
|
||||||
url: url,
|
url: url,
|
||||||
data: $("form").serialize(),
|
data: $("form").serialize(),
|
||||||
success: function(data){
|
success: function (data) {
|
||||||
$('body, .button').css('cursor', 'default');
|
$('body, .button').css('cursor', 'default');
|
||||||
core.alert(message_success);
|
core.alert(message_success);
|
||||||
},
|
},
|
||||||
error: function(data){
|
error: function (data) {
|
||||||
$('body, .button').css('cursor', 'default');
|
$('body, .button').css('cursor', 'default');
|
||||||
core.alert(message_error);
|
core.alert(message_error);
|
||||||
},
|
},
|
||||||
complete: function(){
|
complete: function () {
|
||||||
$("#configBackupSubmit").removeClass("disabled").prop("disabled", false);
|
$("#configBackupSubmit").removeClass("disabled").prop("disabled", false);
|
||||||
$("#configBackupSubmit").removeClass("uniqueSubmission").prop("uniqueSubmission", false);
|
$("#configBackupSubmit").removeClass("uniqueSubmission").prop("uniqueSubmission", false);
|
||||||
$("#configBackupSubmit span").removeClass("zwiico-spin animate-spin");
|
$("#configBackupSubmit span").removeClass("zwiico-spin animate-spin");
|
||||||
@ -43,10 +43,10 @@ $( document).ready(function() {
|
|||||||
/**
|
/**
|
||||||
* Confirmation de sauvegarde complète
|
* Confirmation de sauvegarde complète
|
||||||
*/
|
*/
|
||||||
$("#configBackupSubmit").on("click", function() {
|
$("#configBackupSubmit").on("click", function () {
|
||||||
if ($("input[name=configBackupOption]").is(':checked')) {
|
if ($("input[name=configBackupOption]").is(':checked')) {
|
||||||
var message_warning = "<?php echo template::topic('La sauvegarde des fichiers peut prendre du temps. Continuer ?'); ?>";
|
var message_warning = "<?php echo template::topic('La sauvegarde des fichiers peut prendre du temps. Continuer ?'); ?>";
|
||||||
return core.confirm(message_warning, function() {
|
return core.confirm(message_warning, function () {
|
||||||
//$(location).attr("href", _this.attr("href"));
|
//$(location).attr("href", _this.attr("href"));
|
||||||
$('body, .button').css('cursor', 'wait');
|
$('body, .button').css('cursor', 'wait');
|
||||||
$('form#configBackupForm').submit();
|
$('form#configBackupForm').submit();
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset9">
|
<div class="col2 offset9">
|
||||||
<?php echo template::submit('configBackupSubmit',[
|
<?php echo template::submit('configBackupSubmit', [
|
||||||
'value' => 'Sauvegarder',
|
'value' => 'Sauvegarder',
|
||||||
'uniqueSubmission' => true
|
'uniqueSubmission' => true
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -28,7 +28,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<em>L'archive est générée dans <a href="<?php echo helper::baseUrl(false); ?>core/vendor/filemanager/dialog.php?fldr=backup&type=0&akey=<?php echo md5_file(self::DATA_DIR.'core.json'); ?>" data-lity>le dossier Backup</a> du gestionnaire de fichiers.</em>
|
<em>L'archive est générée dans <a href="<?php echo helper::baseUrl(false); ?>core/vendor/filemanager/dialog.php?fldr=backup&type=0&akey=<?php echo md5_file(self::DATA_DIR . 'core.json'); ?>" data-lity>le dossier Backup</a> du gestionnaire de fichiers.</em>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo template::topic('Sécurité de la connexion');?>
|
<h4><?php echo template::topic('Sécurité de la connexion'); ?>
|
||||||
<span id="specialeHelpButton" class="helpDisplayButton">
|
<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/connexion" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/connexion" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -32,13 +32,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::select('connectAttempt', $module::$connectAttempt , [
|
<?php echo template::select('connectAttempt', $module::$connectAttempt, [
|
||||||
'label' => 'Limitation des tentatives',
|
'label' => 'Limitation des tentatives',
|
||||||
'selected' => $this->getData(['config', 'connect', 'attempt'])
|
'selected' => $this->getData(['config', 'connect', 'attempt'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::select('connectTimeout', $module::$connectTimeout , [
|
<?php echo template::select('connectTimeout', $module::$connectTimeout, [
|
||||||
'label' => 'Blocage après échecs',
|
'label' => 'Blocage après échecs',
|
||||||
'selected' => $this->getData(['config', 'connect', 'timeout'])
|
'selected' => $this->getData(['config', 'connect', 'timeout'])
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -47,7 +47,8 @@
|
|||||||
<label id="helpBlacklist">Liste noire :
|
<label id="helpBlacklist">Liste noire :
|
||||||
<?php echo template::help(
|
<?php echo template::help(
|
||||||
'La liste noire énumère les tentatives de connexion à partir de comptes inexistants. Sont stockés : la date, l\'heure, le nom du compte et l\'IP.
|
'La liste noire énumère les tentatives de connexion à partir de comptes inexistants. Sont stockés : la date, l\'heure, le nom du compte et l\'IP.
|
||||||
Après le nombre de tentatives autorisées, l\'IP et le compte sont bloqués.');
|
Après le nombre de tentatives autorisées, l\'IP et le compte sont bloqués.'
|
||||||
|
);
|
||||||
?>
|
?>
|
||||||
</label>
|
</label>
|
||||||
<?php echo template::button('ConnectBlackListDownload', [
|
<?php echo template::button('ConnectBlackListDownload', [
|
||||||
@ -68,7 +69,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::checkbox('connectCaptcha', true, 'Captcha à la connexion', [
|
<?php echo template::checkbox('connectCaptcha', true, 'Captcha à la connexion', [
|
||||||
'checked' => $this->getData(['config', 'connect','captcha'])
|
'checked' => $this->getData(['config', 'connect', 'captcha'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
@ -78,7 +79,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::select('connectCaptchaType', $module::$captchaTypes , [
|
<?php echo template::select('connectCaptchaType', $module::$captchaTypes, [
|
||||||
'label' => 'Type de captcha',
|
'label' => 'Type de captcha',
|
||||||
'selected' => $this->getData(['config', 'connect', 'captchaType'])
|
'selected' => $this->getData(['config', 'connect', 'captchaType'])
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -90,10 +91,10 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo template::topic('Journalisation');?>
|
<h4><?php echo template::topic('Journalisation'); ?>
|
||||||
<span id="specialeHelpButton" class="helpDisplayButton">
|
<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/journalisation" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/journalisation" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab ~ .tabContent {
|
.tab~.tabContent {
|
||||||
margin-top: -10px;
|
margin-top: -10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?php echo template::formOpen('configForm');?>
|
<?php echo template::formOpen('configForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('configBack', [
|
<?php echo template::button('configBack', [
|
||||||
@ -14,7 +14,7 @@
|
|||||||
'target' => '_blank',
|
'target' => '_blank',
|
||||||
'value' => template::ico('help'),
|
'value' => template::ico('help'),
|
||||||
'help' => 'Consulter l\'aide en ligne'
|
'help' => 'Consulter l\'aide en ligne'
|
||||||
]); */?>
|
]); */ ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset8">
|
<div class="col2 offset8">
|
||||||
<?php echo template::submit('Submit'); ?>
|
<?php echo template::submit('Submit'); ?>
|
||||||
@ -42,8 +42,8 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php include ('core/module/config/view/setup/setup.php') ?>
|
<?php include('core/module/config/view/setup/setup.php') ?>
|
||||||
<?php include ('core/module/config/view/social/social.php') ?>
|
<?php include('core/module/config/view/social/social.php') ?>
|
||||||
<?php include ('core/module/config/view/connect/connect.php') ?>
|
<?php include('core/module/config/view/connect/connect.php') ?>
|
||||||
<?php include ('core/module/config/view/network/network.php') ?>
|
<?php include('core/module/config/view/network/network.php') ?>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -2,10 +2,10 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo template::topic('Paramètres');?>
|
<h4><?php echo template::topic('Paramètres'); ?>
|
||||||
<span id="specialeHelpButton" class="helpDisplayButton">
|
<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/reseau" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/reseau" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -37,17 +37,17 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo template::topic('SMTP');?>
|
<h4><?php echo template::topic('SMTP'); ?>
|
||||||
<span id="specialeHelpButton" class="helpDisplayButton">
|
<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/smtp" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/smtp" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::checkbox('smtpEnable', true, 'Activer SMTP', [
|
<?php echo template::checkbox('smtpEnable', true, 'Activer SMTP', [
|
||||||
'checked' => $this->getData(['config', 'smtp','enable']),
|
'checked' => $this->getData(['config', 'smtp', 'enable']),
|
||||||
'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.'
|
'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
@ -58,20 +58,20 @@
|
|||||||
<?php echo template::text('smtpHost', [
|
<?php echo template::text('smtpHost', [
|
||||||
'label' => 'Adresse SMTP',
|
'label' => 'Adresse SMTP',
|
||||||
'placeholder' => 'smtp.fr',
|
'placeholder' => 'smtp.fr',
|
||||||
'value' => $this->getData(['config', 'smtp','host'])
|
'value' => $this->getData(['config', 'smtp', 'host'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2">
|
<div class="col2">
|
||||||
<?php echo template::text('smtpPort', [
|
<?php echo template::text('smtpPort', [
|
||||||
'label' => 'Port SMTP',
|
'label' => 'Port SMTP',
|
||||||
'placeholder' => '589',
|
'placeholder' => '589',
|
||||||
'value' => $this->getData(['config', 'smtp','port'])
|
'value' => $this->getData(['config', 'smtp', 'port'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2">
|
<div class="col2">
|
||||||
<?php echo template::select('smtpAuth', $module::$SMTPauth, [
|
<?php echo template::select('smtpAuth', $module::$SMTPauth, [
|
||||||
'label' => 'Authentification',
|
'label' => 'Authentification',
|
||||||
'selected' => $this->getData(['config', 'smtp','auth'])
|
'selected' => $this->getData(['config', 'smtp', 'auth'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -80,20 +80,20 @@
|
|||||||
<div class="col5">
|
<div class="col5">
|
||||||
<?php echo template::text('smtpUsername', [
|
<?php echo template::text('smtpUsername', [
|
||||||
'label' => 'Nom utilisateur',
|
'label' => 'Nom utilisateur',
|
||||||
'value' => $this->getData(['config', 'smtp','username' ])
|
'value' => $this->getData(['config', 'smtp', 'username'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col5">
|
<div class="col5">
|
||||||
<?php echo template::password('smtpPassword', [
|
<?php echo template::password('smtpPassword', [
|
||||||
'label' => 'Mot de passe',
|
'label' => 'Mot de passe',
|
||||||
'autocomplete' => 'off',
|
'autocomplete' => 'off',
|
||||||
'value' => $this->getData(['config', 'smtp','username' ]) ? helper::decrypt ($this->getData(['config', 'smtp','username' ]),$this->getData(['config','smtp','password'])) : ''
|
'value' => $this->getData(['config', 'smtp', 'username']) ? helper::decrypt($this->getData(['config', 'smtp', 'username']), $this->getData(['config', 'smtp', 'password'])) : ''
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2">
|
<div class="col2">
|
||||||
<?php echo template::select('smtpSecure', $module::$SMTPEnc , [
|
<?php echo template::select('smtpSecure', $module::$SMTPEnc, [
|
||||||
'label' => 'Sécurité',
|
'label' => 'Sécurité',
|
||||||
'selected' => $this->getData(['config', 'smtp','secure'])
|
'selected' => $this->getData(['config', 'smtp', 'secure'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset8">
|
<div class="col2 offset8">
|
||||||
<?php echo template::submit('configRestoreSubmit',[
|
<?php echo template::submit('configRestoreSubmit', [
|
||||||
'value' => 'Restaurer',
|
'value' => 'Restaurer',
|
||||||
'uniqueSubmission' => true,
|
'uniqueSubmission' => true,
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo template::topic('Archive à restaurer');?>
|
<?php echo template::topic('Archive à restaurer'); ?>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col10 offset1">
|
<div class="col10 offset1">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('configScript'); ?>
|
<?php echo template::formOpen('configScript'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col2">
|
<div class="col2">
|
||||||
<?php echo template::button('configManageBack', [
|
<?php echo template::button('configManageBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -9,30 +9,30 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset8">
|
<div class="col2 offset8">
|
||||||
<?php echo template::submit('configManageSubmit',[
|
<?php echo template::submit('configManageSubmit', [
|
||||||
'value' => 'Valider',
|
'value' => 'Valider',
|
||||||
'ico' => 'check'
|
'ico' => 'check'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php if ($this->geturl(2) === 'head'): ?>
|
<?php if ($this->geturl(2) === 'head') : ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::textarea('configScriptHead', [
|
<?php echo template::textarea('configScriptHead', [
|
||||||
'value' => file_exists( self::DATA_DIR . 'head.inc.html') ? file_get_contents (self::DATA_DIR . 'head.inc.html') : '' ,
|
'value' => file_exists(self::DATA_DIR . 'head.inc.html') ? file_get_contents(self::DATA_DIR . 'head.inc.html') : '',
|
||||||
'class' => 'editor'
|
'class' => 'editor'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
<?php if ($this->geturl(2) === 'body'): ?>
|
<?php if ($this->geturl(2) === 'body') : ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::textarea('configScriptBody', [
|
<?php echo template::textarea('configScriptBody', [
|
||||||
'value' => file_exists( self::DATA_DIR . 'body.inc.html') ? file_get_contents (self::DATA_DIR . 'body.inc.html') : '' ,
|
'value' => file_exists(self::DATA_DIR . 'body.inc.html') ? file_get_contents(self::DATA_DIR . 'body.inc.html') : '',
|
||||||
'class' => 'editor'
|
'class' => 'editor'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -2,10 +2,10 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo template::topic('Paramétres');?>
|
<h4><?php echo template::topic('Paramétres'); ?>
|
||||||
<span id="setupHelpButton" class="helpDisplayButton">
|
<span id="setupHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/parametres" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/parametres" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -56,10 +56,10 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo template::topic('Mise à jour automatisée');?>
|
<?php echo template::topic('Mise à jour automatisée'); ?>
|
||||||
<span id="updateHelpButton" class="helpDisplayButton">
|
<span id="updateHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/mise-a-jour" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/mise-a-jour" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -81,8 +81,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo '<pre>Version installée : <strong>' . common::ZWII_VERSION . '</strong></pre>' ; ?>
|
<?php echo '<pre>Version installée : <strong>' . common::ZWII_VERSION . '</strong></pre>'; ?>
|
||||||
<?php echo $module::$onlineVersion ? '<pre>Version en ligne : <strong>' . $module::$onlineVersion . '</strong></pre>' : '' ;?>
|
<?php echo $module::$onlineVersion ? '<pre>Version en ligne : <strong>' . $module::$onlineVersion . '</strong></pre>' : ''; ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4 verticalAlignBottom">
|
<div class="col4 verticalAlignBottom">
|
||||||
<?php echo template::button('configUpdateForced', [
|
<?php echo template::button('configUpdateForced', [
|
||||||
@ -103,7 +103,7 @@
|
|||||||
<h4>Maintenance
|
<h4>Maintenance
|
||||||
<span id="maintenanceHelpButton" class="helpDisplayButton">
|
<span id="maintenanceHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/mode-maintenance" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/mode-maintenance" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -162,7 +162,7 @@
|
|||||||
<h4>Scripts externes
|
<h4>Scripts externes
|
||||||
<span id="specialeHelpButton" class="helpDisplayButton">
|
<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/scripts-externes" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/scripts-externes" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo template::topic('Capture d\'écran Open Graph');?>
|
<?php echo template::topic('Capture d\'écran Open Graph'); ?>
|
||||||
<span id="specialeHelpButton" class="helpDisplayButton">
|
<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/referencement" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/referencement" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -31,13 +31,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6 offset1">
|
<div class="col6 offset1">
|
||||||
<?php if (file_exists(self::FILE_DIR.'source/screenshot.jpg')): ?>
|
<?php if (file_exists(self::FILE_DIR . 'source/screenshot.jpg')) : ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col8 offset2 textAlignCenter">
|
<div class="col8 offset2 textAlignCenter">
|
||||||
<img src="<?php echo helper::baseUrl(false) . self::FILE_DIR.'source/screenshot.jpg';?>" data-tippy-content="Cette capture d'écran est nécessaire aux partages sur les réseaux sociaux. Elle est régénérée lorsque le fichier 'screenshot.jpg' est effacé du gestionnaire de fichiers." />
|
<img src="<?php echo helper::baseUrl(false) . self::FILE_DIR . 'source/screenshot.jpg'; ?>" data-tippy-content="Cette capture d'écran est nécessaire aux partages sur les réseaux sociaux. Elle est régénérée lorsque le fichier 'screenshot.jpg' est effacé du gestionnaire de fichiers." />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endif;?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -47,7 +47,7 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo template::topic('Référencement');?>
|
<?php echo template::topic('Référencement'); ?>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4 offset1">
|
<div class="col4 offset1">
|
||||||
@ -58,7 +58,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col4 offset1">
|
<div class="col4 offset1">
|
||||||
<?php echo template::checkbox('seoRobots', true, 'Autoriser les robots à référencer le site', [
|
<?php echo template::checkbox('seoRobots', true, 'Autoriser les robots à référencer le site', [
|
||||||
'checked' => $this->getData(['config', 'seo','robots'])
|
'checked' => $this->getData(['config', 'seo', 'robots'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -69,10 +69,10 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo template::topic('Réseaux sociaux');?>
|
<?php echo template::topic('Réseaux sociaux'); ?>
|
||||||
<span id="specialeHelpButton" class="helpDisplayButton">
|
<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/reseaux-sociaux" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/reseaux-sociaux" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
class install extends common {
|
class install extends common
|
||||||
|
{
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'index' => self::GROUP_VISITOR,
|
'index' => self::GROUP_VISITOR,
|
||||||
@ -41,9 +42,10 @@ class install extends common {
|
|||||||
/**
|
/**
|
||||||
* Pré-installation - choix de la langue
|
* Pré-installation - choix de la langue
|
||||||
*/
|
*/
|
||||||
public function index() {
|
public function index()
|
||||||
|
{
|
||||||
// Accès refusé
|
// Accès refusé
|
||||||
if($this->getData(['user']) !== []) {
|
if ($this->getData(['user']) !== []) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'access' => false
|
'access' => false
|
||||||
@ -52,7 +54,7 @@ class install extends common {
|
|||||||
// Accès autorisé
|
// Accès autorisé
|
||||||
else {
|
else {
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
self::$i18nUI = $this->getInput('installLanguage');
|
self::$i18nUI = $this->getInput('installLanguage');
|
||||||
$this->setData(['config', 'i18n', 'interface', self::$i18nUI]);
|
$this->setData(['config', 'i18n', 'interface', self::$i18nUI]);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -68,7 +70,7 @@ class install extends common {
|
|||||||
chdir(self::I18N_DIR);
|
chdir(self::I18N_DIR);
|
||||||
$files = glob('*.json');
|
$files = glob('*.json');
|
||||||
// Ajouter une clé au tableau avec le code de langue
|
// Ajouter une clé au tableau avec le code de langue
|
||||||
foreach( $files as $file) {
|
foreach ($files as $file) {
|
||||||
// La langue est-elle référencée ?
|
// La langue est-elle référencée ?
|
||||||
if (array_key_exists(basename($file, '.json'), self::$languages)) {
|
if (array_key_exists(basename($file, '.json'), self::$languages)) {
|
||||||
self::$i18nFiles[basename($file, '.json')] = self::$languages[basename($file, '.json')];
|
self::$i18nFiles[basename($file, '.json')] = self::$languages[basename($file, '.json')];
|
||||||
@ -87,9 +89,10 @@ class install extends common {
|
|||||||
/**
|
/**
|
||||||
* post Installation
|
* post Installation
|
||||||
*/
|
*/
|
||||||
public function postInstall() {
|
public function postInstall()
|
||||||
|
{
|
||||||
// Accès refusé
|
// Accès refusé
|
||||||
if($this->getData(['user']) !== []) {
|
if ($this->getData(['user']) !== []) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'access' => false
|
'access' => false
|
||||||
@ -98,10 +101,10 @@ class install extends common {
|
|||||||
// Accès autorisé
|
// Accès autorisé
|
||||||
else {
|
else {
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
$success = true;
|
$success = true;
|
||||||
// Double vérification pour le mot de passe
|
// Double vérification pour le mot de passe
|
||||||
if($this->getInput('installPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('installConfirmPassword', helper::FILTER_STRING_SHORT, true)) {
|
if ($this->getInput('installPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('installConfirmPassword', helper::FILTER_STRING_SHORT, true)) {
|
||||||
self::$inputNotices['installConfirmPassword'] = 'Incorrect';
|
self::$inputNotices['installConfirmPassword'] = 'Incorrect';
|
||||||
$success = false;
|
$success = false;
|
||||||
}
|
}
|
||||||
@ -152,24 +155,25 @@ class install extends common {
|
|||||||
|
|
||||||
// Effacer le dossier de contenu fr créé par défaut si la langue est différente.
|
// Effacer le dossier de contenu fr créé par défaut si la langue est différente.
|
||||||
|
|
||||||
if (self::$i18nContent !== 'fr_FR'
|
if (
|
||||||
|
self::$i18nContent !== 'fr_FR'
|
||||||
&& is_dir('site/data/fr')
|
&& is_dir('site/data/fr')
|
||||||
) {
|
) {
|
||||||
$this->removeDir('site/data/fr');
|
$this->removeDir('site/data/fr');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Installation du site de test
|
// Installation du site de test
|
||||||
if ($this->getInput('installDefaultData',helper::FILTER_BOOLEAN) === FALSE) {
|
if ($this->getInput('installDefaultData', helper::FILTER_BOOLEAN) === FALSE) {
|
||||||
$this->initData('page', self::$i18nContent, true);
|
$this->initData('page', self::$i18nContent, true);
|
||||||
$this->initData('module',self::$i18nContent, true);
|
$this->initData('module', self::$i18nContent, true);
|
||||||
$this->setData(['module', 'blog', 'posts', 'mon-premier-article', 'userId', $userId]);
|
$this->setData(['module', 'blog', 'posts', 'mon-premier-article', 'userId', $userId]);
|
||||||
$this->setData(['module', 'blog', 'posts', 'mon-deuxieme-article', 'userId', $userId]);
|
$this->setData(['module', 'blog', 'posts', 'mon-deuxieme-article', 'userId', $userId]);
|
||||||
$this->setData(['module', 'blog', 'posts', 'mon-troisieme-article', 'userId', $userId]);
|
$this->setData(['module', 'blog', 'posts', 'mon-troisieme-article', 'userId', $userId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sauvegarder la configuration du Proxy
|
// Sauvegarder la configuration du Proxy
|
||||||
$this->setData(['config', 'proxyType', $this->getInput('installProxyType') ]);
|
$this->setData(['config', 'proxyType', $this->getInput('installProxyType')]);
|
||||||
$this->setData(['config', 'proxyUrl', $this->getInput('installProxyUrl') ]);
|
$this->setData(['config', 'proxyUrl', $this->getInput('installProxyUrl')]);
|
||||||
$this->setData(['config', 'proxyPort', $this->getInput('installProxyPort', helper::FILTER_INT)]);
|
$this->setData(['config', 'proxyPort', $this->getInput('installProxyPort', helper::FILTER_INT)]);
|
||||||
|
|
||||||
// Images exemples livrées dans tous les cas
|
// Images exemples livrées dans tous les cas
|
||||||
@ -199,14 +203,14 @@ class install extends common {
|
|||||||
// Installation du thème sélectionné
|
// Installation du thème sélectionné
|
||||||
$dataThemes = file_get_contents('core/module/install/ressource/themes/themes.json');
|
$dataThemes = file_get_contents('core/module/install/ressource/themes/themes.json');
|
||||||
$dataThemes = json_decode($dataThemes, true);
|
$dataThemes = json_decode($dataThemes, true);
|
||||||
$themeId = $dataThemes [$this->getInput('installTheme', helper::FILTER_STRING_SHORT)]['filename'];
|
$themeId = $dataThemes[$this->getInput('installTheme', helper::FILTER_STRING_SHORT)]['filename'];
|
||||||
if ($themeId !== 'default' ) {
|
if ($themeId !== 'default') {
|
||||||
$theme = new theme;
|
$theme = new theme;
|
||||||
$theme->import('core/module/install/ressource/themes/' . $themeId);
|
$theme->import('core/module/install/ressource/themes/' . $themeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copie des thèmes dans les fichiers
|
// Copie des thèmes dans les fichiers
|
||||||
if (!is_dir(self::FILE_DIR . 'source/theme' )) {
|
if (!is_dir(self::FILE_DIR . 'source/theme')) {
|
||||||
mkdir(self::FILE_DIR . 'source/theme');
|
mkdir(self::FILE_DIR . 'source/theme');
|
||||||
}
|
}
|
||||||
$this->copyDir('core/module/install/ressource/themes', self::FILE_DIR . 'source/theme');
|
$this->copyDir('core/module/install/ressource/themes', self::FILE_DIR . 'source/theme');
|
||||||
@ -245,25 +249,26 @@ class install extends common {
|
|||||||
/**
|
/**
|
||||||
* Étapes de mise à jour
|
* Étapes de mise à jour
|
||||||
*/
|
*/
|
||||||
public function steps() {
|
public function steps()
|
||||||
switch($this->getInput('step', helper::FILTER_INT)) {
|
{
|
||||||
|
switch ($this->getInput('step', helper::FILTER_INT)) {
|
||||||
// Préparation
|
// Préparation
|
||||||
case 1:
|
case 1:
|
||||||
$success = true;
|
$success = true;
|
||||||
// RAZ la mise à jour auto
|
// RAZ la mise à jour auto
|
||||||
$this->setData(['core','updateAvailable', false]);
|
$this->setData(['core', 'updateAvailable', false]);
|
||||||
// Backup du dossier Data
|
// Backup du dossier Data
|
||||||
helper::autoBackup(self::BACKUP_DIR,['backup','tmp','file']);
|
helper::autoBackup(self::BACKUP_DIR, ['backup', 'tmp', 'file']);
|
||||||
// Sauvegarde htaccess
|
// Sauvegarde htaccess
|
||||||
if ($this->getData(['config','autoUpdateHtaccess'])) {
|
if ($this->getData(['config', 'autoUpdateHtaccess'])) {
|
||||||
$success = copy('.htaccess', '.htaccess' . '.bak');
|
$success = copy('.htaccess', '.htaccess' . '.bak');
|
||||||
}
|
}
|
||||||
// Nettoyage des fichiers d'installation précédents
|
// Nettoyage des fichiers d'installation précédents
|
||||||
if(file_exists(self::TEMP_DIR.'update.tar.gz') && $success) {
|
if (file_exists(self::TEMP_DIR . 'update.tar.gz') && $success) {
|
||||||
$success = unlink(self::TEMP_DIR.'update.tar.gz');
|
$success = unlink(self::TEMP_DIR . 'update.tar.gz');
|
||||||
}
|
}
|
||||||
if(file_exists(self::TEMP_DIR.'update.tar') && $success) {
|
if (file_exists(self::TEMP_DIR . 'update.tar') && $success) {
|
||||||
$success = unlink(self::TEMP_DIR.'update.tar');
|
$success = unlink(self::TEMP_DIR . 'update.tar');
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -276,10 +281,10 @@ class install extends common {
|
|||||||
break;
|
break;
|
||||||
// Téléchargement
|
// Téléchargement
|
||||||
case 2:
|
case 2:
|
||||||
file_put_contents(self::TEMP_DIR.'update.tar.gz', helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.tar.gz'));
|
file_put_contents(self::TEMP_DIR . 'update.tar.gz', helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.tar.gz'));
|
||||||
$md5origin = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.md5');
|
$md5origin = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.md5');
|
||||||
$md5origin = (explode(' ',$md5origin));
|
$md5origin = (explode(' ', $md5origin));
|
||||||
$md5target = md5_file(self::TEMP_DIR.'update.tar.gz');
|
$md5target = md5_file(self::TEMP_DIR . 'update.tar.gz');
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'display' => self::DISPLAY_JSON,
|
'display' => self::DISPLAY_JSON,
|
||||||
@ -297,7 +302,7 @@ class install extends common {
|
|||||||
// Décompression et installation
|
// Décompression et installation
|
||||||
try {
|
try {
|
||||||
// Décompression dans le dossier de fichier temporaires
|
// Décompression dans le dossier de fichier temporaires
|
||||||
$pharData = new PharData(self::TEMP_DIR.'update.tar.gz');
|
$pharData = new PharData(self::TEMP_DIR . 'update.tar.gz');
|
||||||
$pharData->decompress();
|
$pharData->decompress();
|
||||||
// Installation
|
// Installation
|
||||||
$pharData->extractTo(__DIR__ . '/../../../', null, true);
|
$pharData->extractTo(__DIR__ . '/../../../', null, true);
|
||||||
@ -305,11 +310,11 @@ class install extends common {
|
|||||||
$success = $e->getMessage();
|
$success = $e->getMessage();
|
||||||
}
|
}
|
||||||
// Nettoyage du dossier
|
// Nettoyage du dossier
|
||||||
if(file_exists(self::TEMP_DIR.'update.tar.gz')) {
|
if (file_exists(self::TEMP_DIR . 'update.tar.gz')) {
|
||||||
unlink(self::TEMP_DIR.'update.tar.gz');
|
unlink(self::TEMP_DIR . 'update.tar.gz');
|
||||||
}
|
}
|
||||||
if(file_exists(self::TEMP_DIR.'update.tar')) {
|
if (file_exists(self::TEMP_DIR . 'update.tar')) {
|
||||||
unlink(self::TEMP_DIR.'update.tar');
|
unlink(self::TEMP_DIR . 'update.tar');
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -335,8 +340,8 @@ class install extends common {
|
|||||||
"\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL .
|
"\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL .
|
||||||
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
|
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
|
||||||
"\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL .
|
"\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL .
|
||||||
'</IfModule>'. PHP_EOL .
|
'</IfModule>' . PHP_EOL .
|
||||||
'# URL rewriting' . PHP_EOL ;
|
'# URL rewriting' . PHP_EOL;
|
||||||
$fileContent = str_replace('# URL rewriting', $rewriteData, $fileContent);
|
$fileContent = str_replace('# URL rewriting', $rewriteData, $fileContent);
|
||||||
file_put_contents(
|
file_put_contents(
|
||||||
'.htaccess',
|
'.htaccess',
|
||||||
@ -344,11 +349,12 @@ class install extends common {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
// Recopie htaccess
|
// Recopie htaccess
|
||||||
if ($this->getData(['config','autoUpdateHtaccess']) &&
|
if (
|
||||||
$success && file_exists( '.htaccess.bak')
|
$this->getData(['config', 'autoUpdateHtaccess']) &&
|
||||||
|
$success && file_exists('.htaccess.bak')
|
||||||
) {
|
) {
|
||||||
// L'écraser avec le backup
|
// L'écraser avec le backup
|
||||||
$success = copy( '.htaccess.bak' ,'.htaccess' );
|
$success = copy('.htaccess.bak', '.htaccess');
|
||||||
// Effacer le backup
|
// Effacer le backup
|
||||||
unlink('.htaccess.bak');
|
unlink('.htaccess.bak');
|
||||||
}
|
}
|
||||||
@ -367,7 +373,8 @@ class install extends common {
|
|||||||
/**
|
/**
|
||||||
* Mise à jour
|
* Mise à jour
|
||||||
*/
|
*/
|
||||||
public function update() {
|
public function update()
|
||||||
|
{
|
||||||
// Nouvelle version
|
// Nouvelle version
|
||||||
self::$newVersion = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version');
|
self::$newVersion = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version');
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -377,6 +384,4 @@ class install extends common {
|
|||||||
'view' => 'update'
|
'view' => 'update'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -13,7 +13,8 @@
|
|||||||
* @link http://zwiicms.fr/
|
* @link http://zwiicms.fr/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class maintenance extends common {
|
class maintenance extends common
|
||||||
|
{
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'index' => self::GROUP_VISITOR
|
'index' => self::GROUP_VISITOR
|
||||||
@ -22,22 +23,25 @@ class maintenance extends common {
|
|||||||
/**
|
/**
|
||||||
* Maintenance
|
* Maintenance
|
||||||
*/
|
*/
|
||||||
public function index() {
|
public function index()
|
||||||
|
{
|
||||||
// Redirection vers l'accueil après rafraîchissement et que la maintenance est terminée.
|
// Redirection vers l'accueil après rafraîchissement et que la maintenance est terminée.
|
||||||
if($this->getData(['config', 'maintenance']) == False){
|
if ($this->getData(['config', 'maintenance']) == False) {
|
||||||
header('Location:' . helper::baseUrl());
|
header('Location:' . helper::baseUrl());
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
// Page perso définie et existante
|
// Page perso définie et existante
|
||||||
if ($this->getData(['locale','page302']) !== 'none'
|
if (
|
||||||
AND $this->getData(['page',$this->getData(['locale','page302'])]) ) {
|
$this->getData(['locale', 'page302']) !== 'none'
|
||||||
|
and $this->getData(['page', $this->getData(['locale', 'page302'])])
|
||||||
|
) {
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'display' => self::DISPLAY_LAYOUT_LIGHT,
|
'display' => self::DISPLAY_LAYOUT_LIGHT,
|
||||||
'title' => $this->getData(['page',$this->getData(['locale','page302']),'hideTitle'])
|
'title' => $this->getData(['page', $this->getData(['locale', 'page302']), 'hideTitle'])
|
||||||
? ''
|
? ''
|
||||||
: $this->getData(['page',$this->getData(['locale','page302']),'title']),
|
: $this->getData(['page', $this->getData(['locale', 'page302']), 'title']),
|
||||||
//'content' => $this->getdata(['page',$this->getData(['locale','page302']),'content']),
|
//'content' => $this->getdata(['page',$this->getData(['locale','page302']),'content']),
|
||||||
'content' => $this->getPage($this->getData(['locale','page302']), self::$i18nContent),
|
'content' => $this->getPage($this->getData(['locale', 'page302']), self::$i18nContent),
|
||||||
'view' => 'index'
|
'view' => 'index'
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
@ -49,5 +53,4 @@ class maintenance extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -14,7 +14,8 @@
|
|||||||
* @link http://zwiicms.fr/
|
* @link http://zwiicms.fr/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class page extends common {
|
class page extends common
|
||||||
|
{
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'add' => self::GROUP_MODERATOR,
|
'add' => self::GROUP_MODERATOR,
|
||||||
@ -68,24 +69,24 @@ class page extends common {
|
|||||||
/**
|
/**
|
||||||
* Duplication
|
* Duplication
|
||||||
*/
|
*/
|
||||||
public function duplicate() {
|
public function duplicate()
|
||||||
|
{
|
||||||
// Adresse sans le token
|
// Adresse sans le token
|
||||||
$url = explode('&',$this->getUrl(2));
|
$url = explode('&', $this->getUrl(2));
|
||||||
// La page n'existe pas
|
// La page n'existe pas
|
||||||
if($this->getData(['page', $url[0]]) === null) {
|
if ($this->getData(['page', $url[0]]) === null) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'access' => false
|
'access' => false
|
||||||
]);
|
]);
|
||||||
} // Jeton incorrect
|
} // Jeton incorrect
|
||||||
elseif(!isset($_GET['csrf'])) {
|
elseif (!isset($_GET['csrf'])) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
||||||
'notification' => 'Jeton invalide'
|
'notification' => 'Jeton invalide'
|
||||||
]);
|
]);
|
||||||
}
|
} elseif ($_GET['csrf'] !== $_SESSION['csrf']) {
|
||||||
elseif ($_GET['csrf'] !== $_SESSION['csrf']) {
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
||||||
@ -93,7 +94,7 @@ class page extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Duplication de la page
|
// Duplication de la page
|
||||||
$pageTitle = $this->getData(['page',$url[0],'title']);
|
$pageTitle = $this->getData(['page', $url[0], 'title']);
|
||||||
$pageId = helper::increment(helper::filter($pageTitle, helper::FILTER_ID), $this->getData(['page']));
|
$pageId = helper::increment(helper::filter($pageTitle, helper::FILTER_ID), $this->getData(['page']));
|
||||||
$pageId = helper::increment($pageId, self::$coreModuleIds);
|
$pageId = helper::increment($pageId, self::$coreModuleIds);
|
||||||
$pageId = helper::increment($pageId, self::$moduleIds);
|
$pageId = helper::increment($pageId, self::$moduleIds);
|
||||||
@ -102,16 +103,16 @@ class page extends common {
|
|||||||
$url[0]
|
$url[0]
|
||||||
]);
|
]);
|
||||||
// Ecriture
|
// Ecriture
|
||||||
$this->setData (['page',$pageId,$data]);
|
$this->setData(['page', $pageId, $data]);
|
||||||
$notification = 'La page a été dupliquée';
|
$notification = 'La page a été dupliquée';
|
||||||
// Duplication du module présent
|
// Duplication du module présent
|
||||||
if ($this->getData(['page',$url[0],'moduleId'])) {
|
if ($this->getData(['page', $url[0], 'moduleId'])) {
|
||||||
$data = $this->getData([
|
$data = $this->getData([
|
||||||
'module',
|
'module',
|
||||||
$url[0]
|
$url[0]
|
||||||
]);
|
]);
|
||||||
// Ecriture
|
// Ecriture
|
||||||
$this->setData (['module',$pageId,$data]);
|
$this->setData(['module', $pageId, $data]);
|
||||||
$notification = 'La page et son module ont été dupliqués';
|
$notification = 'La page et son module ont été dupliqués';
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -126,7 +127,8 @@ class page extends common {
|
|||||||
/**
|
/**
|
||||||
* Création
|
* Création
|
||||||
*/
|
*/
|
||||||
public function add() {
|
public function add()
|
||||||
|
{
|
||||||
$pageTitle = 'Nouvelle page';
|
$pageTitle = 'Nouvelle page';
|
||||||
$pageId = helper::increment(helper::filter($pageTitle, helper::FILTER_ID), $this->getData(['page']));
|
$pageId = helper::increment(helper::filter($pageTitle, helper::FILTER_ID), $this->getData(['page']));
|
||||||
$this->setData([
|
$this->setData([
|
||||||
@ -181,24 +183,24 @@ class page extends common {
|
|||||||
/**
|
/**
|
||||||
* Suppression
|
* Suppression
|
||||||
*/
|
*/
|
||||||
public function delete() {
|
public function delete()
|
||||||
|
{
|
||||||
// $url prend l'adresse sans le token
|
// $url prend l'adresse sans le token
|
||||||
$url = explode('&',$this->getUrl(2));
|
$url = explode('&', $this->getUrl(2));
|
||||||
// La page n'existe pas
|
// La page n'existe pas
|
||||||
if($this->getData(['page', $url[0]]) === null) {
|
if ($this->getData(['page', $url[0]]) === null) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'access' => false
|
'access' => false
|
||||||
]);
|
]);
|
||||||
} // Jeton incorrect
|
} // Jeton incorrect
|
||||||
elseif(!isset($_GET['csrf'])) {
|
elseif (!isset($_GET['csrf'])) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
||||||
'notification' => 'Jeton invalide'
|
'notification' => 'Jeton invalide'
|
||||||
]);
|
]);
|
||||||
}
|
} elseif ($_GET['csrf'] !== $_SESSION['csrf']) {
|
||||||
elseif ($_GET['csrf'] !== $_SESSION['csrf']) {
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
||||||
@ -206,7 +208,7 @@ class page extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Impossible de supprimer la page d'accueil
|
// Impossible de supprimer la page d'accueil
|
||||||
elseif($url[0] === $this->getData(['locale', 'homePageId'])) {
|
elseif ($url[0] === $this->getData(['locale', 'homePageId'])) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'config',
|
'redirect' => helper::baseUrl() . 'config',
|
||||||
@ -214,7 +216,7 @@ class page extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Impossible de supprimer la page de recherche affectée
|
// Impossible de supprimer la page de recherche affectée
|
||||||
elseif($url[0] === $this->getData(['locale', 'searchPageId'])) {
|
elseif ($url[0] === $this->getData(['locale', 'searchPageId'])) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'config',
|
'redirect' => helper::baseUrl() . 'config',
|
||||||
@ -222,7 +224,7 @@ class page extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Impossible de supprimer la page des mentions légales affectée
|
// Impossible de supprimer la page des mentions légales affectée
|
||||||
elseif($url[0] === $this->getData(['locale', 'legalPageId'])) {
|
elseif ($url[0] === $this->getData(['locale', 'legalPageId'])) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'config',
|
'redirect' => helper::baseUrl() . 'config',
|
||||||
@ -230,7 +232,7 @@ class page extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Impossible de supprimer la page des mentions légales affectée
|
// Impossible de supprimer la page des mentions légales affectée
|
||||||
elseif($url[0] === $this->getData(['locale', 'page404'])) {
|
elseif ($url[0] === $this->getData(['locale', 'page404'])) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'config',
|
'redirect' => helper::baseUrl() . 'config',
|
||||||
@ -238,7 +240,7 @@ class page extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Impossible de supprimer la page des mentions légales affectée
|
// Impossible de supprimer la page des mentions légales affectée
|
||||||
elseif($url[0] === $this->getData(['locale', 'page403'])) {
|
elseif ($url[0] === $this->getData(['locale', 'page403'])) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'config',
|
'redirect' => helper::baseUrl() . 'config',
|
||||||
@ -246,7 +248,7 @@ class page extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Impossible de supprimer la page des mentions légales affectée
|
// Impossible de supprimer la page des mentions légales affectée
|
||||||
elseif($url[0] === $this->getData(['locale', 'page302'])) {
|
elseif ($url[0] === $this->getData(['locale', 'page302'])) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'config',
|
'redirect' => helper::baseUrl() . 'config',
|
||||||
@ -254,14 +256,13 @@ class page extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
elseif(!isset($_GET['csrf'])) {
|
elseif (!isset($_GET['csrf'])) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
||||||
'notification' => 'Jeton invalide'
|
'notification' => 'Jeton invalide'
|
||||||
]);
|
]);
|
||||||
}
|
} elseif ($_GET['csrf'] !== $_SESSION['csrf']) {
|
||||||
elseif ($_GET['csrf'] !== $_SESSION['csrf']) {
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
||||||
@ -269,7 +270,7 @@ class page extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Impossible de supprimer une page contenant des enfants
|
// Impossible de supprimer une page contenant des enfants
|
||||||
elseif($this->getHierarchy($url[0],null)) {
|
elseif ($this->getHierarchy($url[0], null)) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
|
||||||
@ -280,12 +281,13 @@ class page extends common {
|
|||||||
else {
|
else {
|
||||||
|
|
||||||
// Effacer le dossier du module
|
// Effacer le dossier du module
|
||||||
$moduleId = $this->getData(['page',$url[0],'moduleId']);
|
$moduleId = $this->getData(['page', $url[0], 'moduleId']);
|
||||||
$modulesData = helper::getModules();
|
$modulesData = helper::getModules();
|
||||||
if ( array_key_exists($moduleId, $modulesData)
|
if (
|
||||||
|
array_key_exists($moduleId, $modulesData)
|
||||||
&& is_dir($modulesData[$moduleId]['dataDirectory'] . $url[0])
|
&& is_dir($modulesData[$moduleId]['dataDirectory'] . $url[0])
|
||||||
) {
|
) {
|
||||||
$this->removeDir( $modulesData[$moduleId]['dataDirectory']. $url[0] );
|
$this->removeDir($modulesData[$moduleId]['dataDirectory'] . $url[0]);
|
||||||
}
|
}
|
||||||
// Effacer la page
|
// Effacer la page
|
||||||
$this->deleteData(['page', $url[0]]);
|
$this->deleteData(['page', $url[0]]);
|
||||||
@ -310,9 +312,10 @@ class page extends common {
|
|||||||
/**
|
/**
|
||||||
* Édition
|
* Édition
|
||||||
*/
|
*/
|
||||||
public function edit() {
|
public function edit()
|
||||||
|
{
|
||||||
// La page n'existe pas
|
// La page n'existe pas
|
||||||
if($this->getData(['page', $this->getUrl(2)]) === null) {
|
if ($this->getData(['page', $this->getUrl(2)]) === null) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'access' => false
|
'access' => false
|
||||||
@ -321,11 +324,11 @@ class page extends common {
|
|||||||
// La page existe
|
// La page existe
|
||||||
else {
|
else {
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Si le Title n'est pas vide, premier test pour positionner la notification du champ obligatoire
|
// Si le Title n'est pas vide, premier test pour positionner la notification du champ obligatoire
|
||||||
if( $this->getInput('pageEditTitle', helper::FILTER_ID, true) !== null && $this->getInput('pageEditTitle') !== '' ){
|
if ($this->getInput('pageEditTitle', helper::FILTER_ID, true) !== null && $this->getInput('pageEditTitle') !== '') {
|
||||||
// Génére l'ID si le titre de la page a changé
|
// Génére l'ID si le titre de la page a changé
|
||||||
if ( $this->getInput('pageEditTitle') !== $this->getData(['page',$this->getUrl(2),'title']) ) {
|
if ($this->getInput('pageEditTitle') !== $this->getData(['page', $this->getUrl(2), 'title'])) {
|
||||||
$pageId = $this->getInput('pageEditTitle', helper::FILTER_ID, true);
|
$pageId = $this->getInput('pageEditTitle', helper::FILTER_ID, true);
|
||||||
} else {
|
} else {
|
||||||
$pageId = $this->getUrl(2);
|
$pageId = $this->getUrl(2);
|
||||||
@ -341,72 +344,72 @@ class page extends common {
|
|||||||
$pageId = helper::increment($pageId, self::$coreModuleIds);
|
$pageId = helper::increment($pageId, self::$coreModuleIds);
|
||||||
$pageId = helper::increment($pageId, self::$moduleIds);
|
$pageId = helper::increment($pageId, self::$moduleIds);
|
||||||
// Met à jour les enfants
|
// Met à jour les enfants
|
||||||
foreach($this->getHierarchy($this->getUrl(2),null) as $childrenPageId) {
|
foreach ($this->getHierarchy($this->getUrl(2), null) as $childrenPageId) {
|
||||||
$this->setData(['page', $childrenPageId, 'parentPageId', $pageId]);
|
$this->setData(['page', $childrenPageId, 'parentPageId', $pageId]);
|
||||||
}
|
}
|
||||||
// Change l'id de page dans les données des modules
|
// Change l'id de page dans les données des modules
|
||||||
if ($this->getData(['module', $this->getUrl(2)]) !== null ) {
|
if ($this->getData(['module', $this->getUrl(2)]) !== null) {
|
||||||
$this->setData(['module', $pageId, $this->getData(['module', $this->getUrl(2)])]);
|
$this->setData(['module', $pageId, $this->getData(['module', $this->getUrl(2)])]);
|
||||||
$this->deleteData(['module', $this->getUrl(2)]);
|
$this->deleteData(['module', $this->getUrl(2)]);
|
||||||
// Renommer le dossier du module
|
// Renommer le dossier du module
|
||||||
$moduleId = $this->getData(['page',$this->getUrl(2),'moduleId']);
|
$moduleId = $this->getData(['page', $this->getUrl(2), 'moduleId']);
|
||||||
$modulesData = helper::getModules();
|
$modulesData = helper::getModules();
|
||||||
if (is_dir($modulesData[$moduleId]['dataDirectory']. $this->getUrl(2))) {
|
if (is_dir($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2))) {
|
||||||
// Placer la feuille de style dans un dossier au nom de la nouvelle instance
|
// Placer la feuille de style dans un dossier au nom de la nouvelle instance
|
||||||
mkdir( $modulesData[$moduleId]['dataDirectory']. $pageId, 0755 );
|
mkdir($modulesData[$moduleId]['dataDirectory'] . $pageId, 0755);
|
||||||
copy( $modulesData[$moduleId]['dataDirectory']. $this->getUrl(2), $modulesData[$moduleId]['dataDirectory']. $pageId);
|
copy($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2), $modulesData[$moduleId]['dataDirectory'] . $pageId);
|
||||||
$this->removeDir($modulesData[$moduleId]['dataDirectory']. $this->getUrl(2));
|
$this->removeDir($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2));
|
||||||
// Mettre à jour le nom de la feuille de style
|
// Mettre à jour le nom de la feuille de style
|
||||||
$this->setData(['module',$pageId,'theme','style', $modulesData[$moduleId]['dataDirectory']. $pageId]);
|
$this->setData(['module', $pageId, 'theme', 'style', $modulesData[$moduleId]['dataDirectory'] . $pageId]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Si la page correspond à la page d'accueil, change l'id dans la configuration du site
|
// Si la page correspond à la page d'accueil, change l'id dans la configuration du site
|
||||||
if($this->getData(['locale', 'homePageId']) === $this->getUrl(2)) {
|
if ($this->getData(['locale', 'homePageId']) === $this->getUrl(2)) {
|
||||||
$this->setData(['locale', 'homePageId', $pageId]);
|
$this->setData(['locale', 'homePageId', $pageId]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Supprime les données du module en cas de changement de module
|
// Supprime les données du module en cas de changement de module
|
||||||
if($this->getInput('pageEditModuleId') !== $this->getData(['page', $this->getUrl(2), 'moduleId'])) {
|
if ($this->getInput('pageEditModuleId') !== $this->getData(['page', $this->getUrl(2), 'moduleId'])) {
|
||||||
$this->deleteData(['module', $pageId]);
|
$this->deleteData(['module', $pageId]);
|
||||||
}
|
}
|
||||||
// Supprime l'ancienne page si l'id a changée
|
// Supprime l'ancienne page si l'id a changée
|
||||||
if($pageId !== $this->getUrl(2)) {
|
if ($pageId !== $this->getUrl(2)) {
|
||||||
$this->deleteData(['page', $this->getUrl(2)]);
|
$this->deleteData(['page', $this->getUrl(2)]);
|
||||||
if (file_exists(self::DATA_DIR . self::$i18nContent . '/content/' . $this->getUrl(2) . '.html')) {
|
if (file_exists(self::DATA_DIR . self::$i18nContent . '/content/' . $this->getUrl(2) . '.html')) {
|
||||||
unlink (self::DATA_DIR . self::$i18nContent . '/content/' . $this->getUrl(2) . '.html');
|
unlink(self::DATA_DIR . self::$i18nContent . '/content/' . $this->getUrl(2) . '.html');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Traitement des pages spéciales affectées dans la config :
|
// Traitement des pages spéciales affectées dans la config :
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'legalPageId']) ) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'legalPageId'])) {
|
||||||
$this->setData(['locale','legalPageId', $pageId]);
|
$this->setData(['locale', 'legalPageId', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'searchPageId']) ) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'searchPageId'])) {
|
||||||
$this->setData(['locale','searchPageId', $pageId]);
|
$this->setData(['locale', 'searchPageId', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'page404']) ) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'page404'])) {
|
||||||
$this->setData(['locale','page404', $pageId]);
|
$this->setData(['locale', 'page404', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'page403']) ) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'page403'])) {
|
||||||
$this->setData(['locale','page403', $pageId]);
|
$this->setData(['locale', 'page403', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'page302']) ) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'page302'])) {
|
||||||
$this->setData(['locale','page302', $pageId]);
|
$this->setData(['locale', 'page302', $pageId]);
|
||||||
}
|
}
|
||||||
// Si la page est une page enfant, actualise les positions des autres enfants du parent, sinon actualise les pages sans parents
|
// Si la page est une page enfant, actualise les positions des autres enfants du parent, sinon actualise les pages sans parents
|
||||||
$lastPosition = 1;
|
$lastPosition = 1;
|
||||||
$hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId')) : array_keys($this->getHierarchy());
|
$hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId')) : array_keys($this->getHierarchy());
|
||||||
$position = $this->getInput('pageEditPosition', helper::FILTER_INT);
|
$position = $this->getInput('pageEditPosition', helper::FILTER_INT);
|
||||||
$extraPosition = $this->getinput('pageEditExtraPosition', helper::FILTER_BOOLEAN);
|
$extraPosition = $this->getinput('pageEditExtraPosition', helper::FILTER_BOOLEAN);
|
||||||
foreach($hierarchy as $hierarchyPageId) {
|
foreach ($hierarchy as $hierarchyPageId) {
|
||||||
|
|
||||||
// Ne traite que les pages du menu sélectionné
|
// Ne traite que les pages du menu sélectionné
|
||||||
if ($this->getData(['page', $hierarchyPageId, 'extraPosition']) === $extraPosition ) {
|
if ($this->getData(['page', $hierarchyPageId, 'extraPosition']) === $extraPosition) {
|
||||||
// Ignore la page en cours de modification
|
// Ignore la page en cours de modification
|
||||||
if($hierarchyPageId === $this->getUrl(2) ) {
|
if ($hierarchyPageId === $this->getUrl(2)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Incrémente de +1 pour laisser la place à la position de la page en cours de modification
|
// Incrémente de +1 pour laisser la place à la position de la page en cours de modification
|
||||||
if($lastPosition === $position) {
|
if ($lastPosition === $position) {
|
||||||
$lastPosition++;
|
$lastPosition++;
|
||||||
}
|
}
|
||||||
// Change la position
|
// Change la position
|
||||||
@ -414,13 +417,11 @@ class page extends common {
|
|||||||
// Incrémente pour la prochaine position
|
// Incrémente pour la prochaine position
|
||||||
$lastPosition++;
|
$lastPosition++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if ($this->getinput('pageEditBlock') !== 'bar') {
|
if ($this->getinput('pageEditBlock') !== 'bar') {
|
||||||
$barLeft = $this->getinput('pageEditBarLeft');
|
$barLeft = $this->getinput('pageEditBarLeft');
|
||||||
$barRight = $this->getinput('pageEditBarRight');
|
$barRight = $this->getinput('pageEditBarRight');
|
||||||
$hideTitle = $this->getInput('pageEditHideTitle', helper::FILTER_BOOLEAN);
|
$hideTitle = $this->getInput('pageEditHideTitle', helper::FILTER_BOOLEAN);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Une barre ne peut pas avoir de barres
|
// Une barre ne peut pas avoir de barres
|
||||||
$barLeft = "";
|
$barLeft = "";
|
||||||
@ -435,28 +436,28 @@ class page extends common {
|
|||||||
$position !== $this->getData(['page', $this->getUrl(2), 'position']) &&
|
$position !== $this->getData(['page', $this->getUrl(2), 'position']) &&
|
||||||
$this->getinput('pageEditBlock') !== 'bar'
|
$this->getinput('pageEditBlock') !== 'bar'
|
||||||
) {
|
) {
|
||||||
foreach ($this->getHierarchy($pageId) as $parentId=>$childId) {
|
foreach ($this->getHierarchy($pageId) as $parentId => $childId) {
|
||||||
if ($this->getData(['page',$childId,'parentPageId']) === $pageId) {
|
if ($this->getData(['page', $childId, 'parentPageId']) === $pageId) {
|
||||||
$this->setData(['page',$childId,'position', 0]);
|
$this->setData(['page', $childId, 'position', 0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// La page est une barre latérale qui a été renommée : changer le nom de la barre dans les pages qui l'utilisent
|
// La page est une barre latérale qui a été renommée : changer le nom de la barre dans les pages qui l'utilisent
|
||||||
if ($this->getinput('pageEditBlock') === 'bar') {
|
if ($this->getinput('pageEditBlock') === 'bar') {
|
||||||
foreach ($this->getHierarchy() as $eachPageId=>$parentId) {
|
foreach ($this->getHierarchy() as $eachPageId => $parentId) {
|
||||||
if ($this->getData(['page',$eachPageId,'barRight']) === $this->getUrl(2)) {
|
if ($this->getData(['page', $eachPageId, 'barRight']) === $this->getUrl(2)) {
|
||||||
$this->setData(['page',$eachPageId,'barRight',$pageId]);
|
$this->setData(['page', $eachPageId, 'barRight', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getData(['page',$eachPageId,'barLeft']) === $this->getUrl(2)) {
|
if ($this->getData(['page', $eachPageId, 'barLeft']) === $this->getUrl(2)) {
|
||||||
$this->setData(['page',$eachPageId,'barLeft',$pageId]);
|
$this->setData(['page', $eachPageId, 'barLeft', $pageId]);
|
||||||
}
|
}
|
||||||
foreach ($parentId as $childId) {
|
foreach ($parentId as $childId) {
|
||||||
if ($this->getData(['page',$childId,'barRight']) === $this->getUrl(2)) {
|
if ($this->getData(['page', $childId, 'barRight']) === $this->getUrl(2)) {
|
||||||
$this->setData(['page',$childId,'barRight',$pageId]);
|
$this->setData(['page', $childId, 'barRight', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getData(['page',$childId,'barLeft']) === $this->getUrl(2)) {
|
if ($this->getData(['page', $childId, 'barLeft']) === $this->getUrl(2)) {
|
||||||
$this->setData(['page',$childId,'barLeft',$pageId]);
|
$this->setData(['page', $childId, 'barLeft', $pageId]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -468,7 +469,7 @@ class page extends common {
|
|||||||
[
|
[
|
||||||
'typeMenu' => $this->getinput('pageTypeMenu'),
|
'typeMenu' => $this->getinput('pageTypeMenu'),
|
||||||
'iconUrl' => $this->getinput('pageIconUrl'),
|
'iconUrl' => $this->getinput('pageIconUrl'),
|
||||||
'disable'=> $this->getinput('pageEditDisable', helper::FILTER_BOOLEAN),
|
'disable' => $this->getinput('pageEditDisable', helper::FILTER_BOOLEAN),
|
||||||
'content' => $pageId . '.html',
|
'content' => $pageId . '.html',
|
||||||
'hideTitle' => $hideTitle,
|
'hideTitle' => $hideTitle,
|
||||||
'breadCrumb' => $this->getInput('pageEditbreadCrumb', helper::FILTER_BOOLEAN),
|
'breadCrumb' => $this->getInput('pageEditbreadCrumb', helper::FILTER_BOOLEAN),
|
||||||
@ -500,7 +501,7 @@ class page extends common {
|
|||||||
mkdir(self::DATA_DIR . self::$i18nContent . '/content', 0755);
|
mkdir(self::DATA_DIR . self::$i18nContent . '/content', 0755);
|
||||||
}
|
}
|
||||||
$content = empty($this->getInput('pageEditContent', null)) ? '<p></p>' : str_replace('<p></p>', '<p> </p>', $this->getInput('pageEditContent', null));
|
$content = empty($this->getInput('pageEditContent', null)) ? '<p></p>' : str_replace('<p></p>', '<p> </p>', $this->getInput('pageEditContent', null));
|
||||||
$this->setPage($pageId , $content, self::$i18nContent);
|
$this->setPage($pageId, $content, self::$i18nContent);
|
||||||
|
|
||||||
// Met à jour le site map
|
// Met à jour le site map
|
||||||
$this->createSitemap('all');
|
$this->createSitemap('all');
|
||||||
@ -508,7 +509,7 @@ class page extends common {
|
|||||||
$this->listPages();
|
$this->listPages();
|
||||||
|
|
||||||
// Redirection vers la configuration
|
// Redirection vers la configuration
|
||||||
if(
|
if (
|
||||||
$this->getInput('pageEditModuleRedirect', helper::FILTER_BOOLEAN)
|
$this->getInput('pageEditModuleRedirect', helper::FILTER_BOOLEAN)
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -527,16 +528,18 @@ class page extends common {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self::$moduleIds = array_merge( ['' => 'Aucun'] , helper::arrayColumn(helper::getModules(),'realName','SORT_ASC')); // Pages sans parent
|
self::$moduleIds = array_merge(['' => 'Aucun'], helper::arrayColumn(helper::getModules(), 'realName', 'SORT_ASC')); // Pages sans parent
|
||||||
foreach($this->getHierarchy() as $parentPageId => $childrenPageIds) {
|
foreach ($this->getHierarchy() as $parentPageId => $childrenPageIds) {
|
||||||
if($parentPageId !== $this->getUrl(2)) {
|
if ($parentPageId !== $this->getUrl(2)) {
|
||||||
self::$pagesNoParentId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']);
|
self::$pagesNoParentId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Pages barre latérales
|
// Pages barre latérales
|
||||||
foreach($this->getHierarchy(null,false,true) as $parentPageId => $childrenPageIds) {
|
foreach ($this->getHierarchy(null, false, true) as $parentPageId => $childrenPageIds) {
|
||||||
if($parentPageId !== $this->getUrl(2) &&
|
if (
|
||||||
$this->getData(['page', $parentPageId, 'block']) === 'bar') {
|
$parentPageId !== $this->getUrl(2) &&
|
||||||
|
$this->getData(['page', $parentPageId, 'block']) === 'bar'
|
||||||
|
) {
|
||||||
self::$pagesBarId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']);
|
self::$pagesBarId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -554,11 +557,13 @@ class page extends common {
|
|||||||
/**
|
/**
|
||||||
* Éditeur de feuille de style
|
* Éditeur de feuille de style
|
||||||
*/
|
*/
|
||||||
public function cssEditor() {
|
public function cssEditor()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Enregistre le CSS
|
// Enregistre le CSS
|
||||||
$this->setData(['page', $this->getUrl(2), 'css',
|
$this->setData([
|
||||||
|
'page', $this->getUrl(2), 'css',
|
||||||
$this->getInput('pageCssEditorContent', null)
|
$this->getInput('pageCssEditorContent', null)
|
||||||
]);
|
]);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -581,11 +586,13 @@ class page extends common {
|
|||||||
/**
|
/**
|
||||||
* Éditeur de feuille de style
|
* Éditeur de feuille de style
|
||||||
*/
|
*/
|
||||||
public function jsEditor() {
|
public function jsEditor()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Enregistre le JS
|
// Enregistre le JS
|
||||||
$this->setData(['page', $this->getUrl(2), 'js',
|
$this->setData([
|
||||||
|
'page', $this->getUrl(2), 'js',
|
||||||
$this->getInput('pageJsEditorContent', null)
|
$this->getInput('pageJsEditorContent', null)
|
||||||
]);
|
]);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -604,5 +611,4 @@ class page extends common {
|
|||||||
'view' => 'jsEditor'
|
'view' => 'jsEditor'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('pageCssEditorForm'); ?>
|
<?php echo template::formOpen('pageCssEditorForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('pageCssEditorBack', [
|
<?php echo template::button('pageCssEditorBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -10,13 +10,13 @@
|
|||||||
<div class="col2 offset9">
|
<div class="col2 offset9">
|
||||||
<?php echo template::submit('pageCssEditorSubmit'); ?>
|
<?php echo template::submit('pageCssEditorSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::textarea('pageCssEditorContent', [
|
<?php echo template::textarea('pageCssEditorContent', [
|
||||||
'value' => empty($this->getData(['page', $this->getUrl(2), 'css' ])) ? '' : $this->getData(['page', $this->getUrl(2), 'css' ]),
|
'value' => empty($this->getData(['page', $this->getUrl(2), 'css'])) ? '' : $this->getData(['page', $this->getUrl(2), 'css']),
|
||||||
'class' => 'editor'
|
'class' => 'editor'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -1,8 +1,8 @@
|
|||||||
<?php echo template::formOpen('pageEditForm'); ?>
|
<?php echo template::formOpen('pageEditForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php $href = helper::baseUrl() . $this->getUrl(2); ?>
|
<?php $href = helper::baseUrl() . $this->getUrl(2); ?>
|
||||||
<?php if ($this->getData(['page', $this->getUrl(2), 'moduleId']) === 'redirection' || 'code')$href = helper::baseUrl(); ?>
|
<?php if ($this->getData(['page', $this->getUrl(2), 'moduleId']) === 'redirection' || 'code') $href = helper::baseUrl(); ?>
|
||||||
<?php echo template::button('pageEditBack', [
|
<?php echo template::button('pageEditBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => $href,
|
'href' => $href,
|
||||||
@ -16,7 +16,7 @@
|
|||||||
'value' => template::ico('help'),
|
'value' => template::ico('help'),
|
||||||
'class' => 'buttonHelp',
|
'class' => 'buttonHelp',
|
||||||
'help' => 'Consulter l\'aide en ligne'
|
'help' => 'Consulter l\'aide en ligne'
|
||||||
]); */?>
|
]); */ ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col1 offset6">
|
<div class="col1 offset6">
|
||||||
<?php echo template::button('pageEditDelete', [
|
<?php echo template::button('pageEditDelete', [
|
||||||
@ -38,9 +38,9 @@
|
|||||||
'uniqueSubmission' => true
|
'uniqueSubmission' => true
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab">
|
<div class="tab">
|
||||||
<?php echo template::button('pageEditContentButton', [
|
<?php echo template::button('pageEditContentButton', [
|
||||||
'value' => 'Contenu',
|
'value' => 'Contenu',
|
||||||
'class' => 'buttonTab'
|
'class' => 'buttonTab'
|
||||||
@ -61,16 +61,16 @@
|
|||||||
'value' => 'Permission',
|
'value' => 'Permission',
|
||||||
'class' => 'buttonTab'
|
'class' => 'buttonTab'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="pageEditContentContainer" class="tabContent">
|
<div id="pageEditContentContainer" class="tabContent">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Titres
|
<h4>Titres
|
||||||
<span id="infoHelpButton" class="helpDisplayButton">
|
<span id="infoHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/informations-generales" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/informations-generales" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -113,16 +113,16 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="pageEditPositionContainer" class="tabContent">
|
<div id="pageEditPositionContainer" class="tabContent">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Emplacement dans le menu
|
<h4>Emplacement dans le menu
|
||||||
<span id="positionHelpButton" class="helpDisplayButton">
|
<span id="positionHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/emplacement-dans-le-menu" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/emplacement-dans-le-menu" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -135,11 +135,11 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php if($this->getHierarchy($this->getUrl(2), false)): ?>
|
<?php if ($this->getHierarchy($this->getUrl(2), false)) : ?>
|
||||||
<?php echo template::hidden('pageEditParentPageId', [
|
<?php echo template::hidden('pageEditParentPageId', [
|
||||||
'value' => $this->getData(['page', $this->getUrl(2), 'parentPageId'])
|
'value' => $this->getData(['page', $this->getUrl(2), 'parentPageId'])
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::select('pageEditParentPageId', $module::$pagesNoParentId, [
|
<?php echo template::select('pageEditParentPageId', $module::$pagesNoParentId, [
|
||||||
'label' => 'Page parent',
|
'label' => 'Page parent',
|
||||||
'selected' => $this->getData(['page', $this->getUrl(2), 'parentPageId'])
|
'selected' => $this->getData(['page', $this->getUrl(2), 'parentPageId'])
|
||||||
@ -177,14 +177,14 @@
|
|||||||
<h4>Options avancées
|
<h4>Options avancées
|
||||||
<span id="advancedHelpButton" class="helpDisplayButton">
|
<span id="advancedHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/options-d-emplacement-avancee" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/options-d-emplacement-avancee" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="blockContainer">
|
<div class="blockContainer">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::select('pageTypeMenu', $module::$typeMenu,[
|
<?php echo template::select('pageTypeMenu', $module::$typeMenu, [
|
||||||
'label' => 'Apparence',
|
'label' => 'Apparence',
|
||||||
'selected' => $this->getData(['page', $this->getUrl(2), 'typeMenu'])
|
'selected' => $this->getData(['page', $this->getUrl(2), 'typeMenu'])
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -204,7 +204,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::checkbox('pageEditHideMenuSide', true, 'Masquer la page et les pages enfants dans le menu d\'une barre latérale' , [
|
<?php echo template::checkbox('pageEditHideMenuSide', true, 'Masquer la page et les pages enfants dans le menu d\'une barre latérale', [
|
||||||
'checked' => $this->getData(['page', $this->getUrl(2), 'hideMenuSide']),
|
'checked' => $this->getData(['page', $this->getUrl(2), 'hideMenuSide']),
|
||||||
'help' => 'La page est affichée dans un menu horizontal mais pas dans le menu vertical d\'une barre latérale.'
|
'help' => 'La page est affichée dans un menu horizontal mais pas dans le menu vertical d\'une barre latérale.'
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -214,9 +214,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="pageEditExtensionContainer" class="tabContent">
|
<div id="pageEditExtensionContainer" class="tabContent">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
@ -229,9 +229,9 @@
|
|||||||
'label' => 'Module',
|
'label' => 'Module',
|
||||||
'selected' => $this->getData(['page', $this->getUrl(2), 'moduleId'])
|
'selected' => $this->getData(['page', $this->getUrl(2), 'moduleId'])
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php echo template::hidden('pageEditModuleIdOld',['value' => $this->getData(['page', $this->getUrl(2), 'moduleId'])]); ?>
|
<?php echo template::hidden('pageEditModuleIdOld', ['value' => $this->getData(['page', $this->getUrl(2), 'moduleId'])]); ?>
|
||||||
<?php echo template::hidden('pageEditModuleIdOldText',[
|
<?php echo template::hidden('pageEditModuleIdOldText', [
|
||||||
'value' => array_key_exists($this->getData(['page', $this->getUrl(2), 'moduleId']),$module::$moduleIds)? $module::$moduleIds[$this->getData(['page', $this->getUrl(2), 'moduleId'])] : ucfirst($this->getData(['page', $this->getUrl(2), 'moduleId']))
|
'value' => array_key_exists($this->getData(['page', $this->getUrl(2), 'moduleId']), $module::$moduleIds) ? $module::$moduleIds[$this->getData(['page', $this->getUrl(2), 'moduleId'])] : ucfirst($this->getData(['page', $this->getUrl(2), 'moduleId']))
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 verticalAlignBottom">
|
<div class="col2 verticalAlignBottom">
|
||||||
@ -244,7 +244,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::select('pageModulePosition', $module::$modulePosition,[
|
<?php echo template::select('pageModulePosition', $module::$modulePosition, [
|
||||||
'help' => 'En position libre ajoutez le module en plaçant [MODULE] à l\'endroit voulu dans votre page.',
|
'help' => 'En position libre ajoutez le module en plaçant [MODULE] à l\'endroit voulu dans votre page.',
|
||||||
'label' => 'Position du module',
|
'label' => 'Position du module',
|
||||||
'selected' => $this->getData(['page', $this->getUrl(2), 'modulePosition'])
|
'selected' => $this->getData(['page', $this->getUrl(2), 'modulePosition'])
|
||||||
@ -278,16 +278,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="pageEditLayoutContainer" class="tabContent">
|
<div id="pageEditLayoutContainer" class="tabContent">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Mise en page
|
<h4>Mise en page
|
||||||
<span id="layoutHelpButton" class="helpDisplayButton">
|
<span id="layoutHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/mise-en-page-2" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/mise-en-page-2" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -299,28 +299,28 @@
|
|||||||
<?php echo template::select('pageEditBlock', $module::$pageBlocks, [
|
<?php echo template::select('pageEditBlock', $module::$pageBlocks, [
|
||||||
'label' => 'Gabarits de page / Barre latérale',
|
'label' => 'Gabarits de page / Barre latérale',
|
||||||
'help' => 'Pour définir la page comme barre latérale, choisissez l\'option dans la liste.',
|
'help' => 'Pour définir la page comme barre latérale, choisissez l\'option dans la liste.',
|
||||||
'selected' => $this->getData(['page', $this->getUrl(2) , 'block'])
|
'selected' => $this->getData(['page', $this->getUrl(2), 'block'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<!-- Sélection des barres latérales -->
|
<!-- Sélection des barres latérales -->
|
||||||
<?php if($this->getHierarchy($this->getUrl(2),false,true)): ?>
|
<?php if ($this->getHierarchy($this->getUrl(2), false, true)) : ?>
|
||||||
<?php echo template::hidden('pageEditBarLeft', [
|
<?php echo template::hidden('pageEditBarLeft', [
|
||||||
'value' => $this->getData(['page', $this->getUrl(2), 'barLeft'])
|
'value' => $this->getData(['page', $this->getUrl(2), 'barLeft'])
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::select('pageEditBarLeft', $module::$pagesBarId, [
|
<?php echo template::select('pageEditBarLeft', $module::$pagesBarId, [
|
||||||
'label' => 'Barre latérale gauche :',
|
'label' => 'Barre latérale gauche :',
|
||||||
'selected' => $this->getData(['page', $this->getUrl(2), 'barLeft'])
|
'selected' => $this->getData(['page', $this->getUrl(2), 'barLeft'])
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php if($this->getHierarchy($this->getUrl(2),false,true)): ?>
|
<?php if ($this->getHierarchy($this->getUrl(2), false, true)) : ?>
|
||||||
<?php echo template::hidden('pageEditBarRight', [
|
<?php echo template::hidden('pageEditBarRight', [
|
||||||
'value' => $this->getData(['page', $this->getUrl(2), 'barRight'])
|
'value' => $this->getData(['page', $this->getUrl(2), 'barRight'])
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::select('pageEditBarRight', $module::$pagesBarId, [
|
<?php echo template::select('pageEditBarRight', $module::$pagesBarId, [
|
||||||
'label' => 'Barre latérale droite :',
|
'label' => 'Barre latérale droite :',
|
||||||
'selected' => $this->getData(['page', $this->getUrl(2), 'barRight'])
|
'selected' => $this->getData(['page', $this->getUrl(2), 'barRight'])
|
||||||
@ -337,16 +337,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="pageEditPermissionContainer" class="tabContent">
|
<div id="pageEditPermissionContainer" class="tabContent">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Permission et référencement
|
<h4>Permission et référencement
|
||||||
<span id="seoHelpButton" class="helpDisplayButton">
|
<span id="seoHelpButton" class="helpDisplayButton">
|
||||||
<a href="https://doc.zwiicms.fr/permission-et-referencement" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
<a href="https://doc.zwiicms.fr/permission-et-referencement" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -374,6 +374,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('pageJsEditorForm'); ?>
|
<?php echo template::formOpen('pageJsEditorForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('pageJsEditorBack', [
|
<?php echo template::button('pageJsEditorBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -10,13 +10,13 @@
|
|||||||
<div class="col2 offset9">
|
<div class="col2 offset9">
|
||||||
<?php echo template::submit('pageJsEditorSubmit'); ?>
|
<?php echo template::submit('pageJsEditorSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::textarea('pageJsEditorContent', [
|
<?php echo template::textarea('pageJsEditorContent', [
|
||||||
'value' => empty($this->getData(['page', $this->getUrl(2), 'js' ])) ? '': $this->getData(['page', $this->getUrl(2), 'js' ]),
|
'value' => empty($this->getData(['page', $this->getUrl(2), 'js'])) ? '' : $this->getData(['page', $this->getUrl(2), 'js']),
|
||||||
'class' => 'editor'
|
'class' => 'editor'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -14,7 +14,8 @@
|
|||||||
* @link http://zwiicms.fr/
|
* @link http://zwiicms.fr/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class plugin extends common {
|
class plugin extends common
|
||||||
|
{
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'index' => self::GROUP_ADMIN,
|
'index' => self::GROUP_ADMIN,
|
||||||
@ -26,7 +27,7 @@ class plugin extends common {
|
|||||||
'store' => self::GROUP_ADMIN,
|
'store' => self::GROUP_ADMIN,
|
||||||
'item' => self::GROUP_ADMIN, // détail d'un objet
|
'item' => self::GROUP_ADMIN, // détail d'un objet
|
||||||
'upload' => self::GROUP_ADMIN, // Téléverser catalogue
|
'upload' => self::GROUP_ADMIN, // Téléverser catalogue
|
||||||
'uploadItem'=> self::GROUP_ADMIN // Téléverser par archive
|
'uploadItem' => self::GROUP_ADMIN // Téléverser par archive
|
||||||
];
|
];
|
||||||
|
|
||||||
// URL des modules
|
// URL des modules
|
||||||
@ -52,7 +53,8 @@ class plugin extends common {
|
|||||||
/*
|
/*
|
||||||
* Effacement d'un module installé et non utilisé
|
* Effacement d'un module installé et non utilisé
|
||||||
*/
|
*/
|
||||||
public function delete() {
|
public function delete()
|
||||||
|
{
|
||||||
|
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
||||||
@ -62,25 +64,23 @@ class plugin extends common {
|
|||||||
'state' => false,
|
'state' => false,
|
||||||
'notification' => 'Action non autorisée'
|
'notification' => 'Action non autorisée'
|
||||||
]);
|
]);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
// Suppression des dossiers
|
// Suppression des dossiers
|
||||||
$infoModules = helper::getModules();
|
$infoModules = helper::getModules();
|
||||||
$module = $this->getUrl(2);
|
$module = $this->getUrl(2);
|
||||||
//Liste des dossiers associés au module non effacés
|
//Liste des dossiers associés au module non effacés
|
||||||
if( $this->removeDir('./module/'.$module ) === true ){
|
if ($this->removeDir('./module/' . $module) === true) {
|
||||||
$success = true;
|
$success = true;
|
||||||
$notification = 'Module '. $module .' désinstallé';
|
$notification = 'Module ' . $module . ' désinstallé';
|
||||||
if(($infoModules[$this->getUrl(2)]['dataDirectory']) ) {
|
if (($infoModules[$this->getUrl(2)]['dataDirectory'])) {
|
||||||
if (
|
if (
|
||||||
is_dir($infoModules[$this->getUrl(2)]['dataDirectory'])
|
is_dir($infoModules[$this->getUrl(2)]['dataDirectory'])
|
||||||
&& !$this->removeDir($infoModules[$this->getUrl(2)]['dataDirectory'])
|
&& !$this->removeDir($infoModules[$this->getUrl(2)]['dataDirectory'])
|
||||||
){
|
) {
|
||||||
$notification = 'Module '.$module .' désinstallé, il reste des données dans ' . $infoModules[$this->getUrl(2)]['dataDirectory'];
|
$notification = 'Module ' . $module . ' désinstallé, il reste des données dans ' . $infoModules[$this->getUrl(2)]['dataDirectory'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$success = false;
|
$success = false;
|
||||||
$notification = 'La suppression a échouée';
|
$notification = 'La suppression a échouée';
|
||||||
}
|
}
|
||||||
@ -98,7 +98,8 @@ class plugin extends common {
|
|||||||
* Installation d'un module
|
* Installation d'un module
|
||||||
* Fonction utilisée par upload et storeUpload
|
* Fonction utilisée par upload et storeUpload
|
||||||
*/
|
*/
|
||||||
private function install($moduleFileName, $checkValid){
|
private function install($moduleFileName, $checkValid)
|
||||||
|
{
|
||||||
|
|
||||||
// Dossier temporaire
|
// Dossier temporaire
|
||||||
$tempFolder = uniqid() . '/';
|
$tempFolder = uniqid() . '/';
|
||||||
@ -112,10 +113,10 @@ class plugin extends common {
|
|||||||
|
|
||||||
|
|
||||||
//Création du dossier temporaire et extraction
|
//Création du dossier temporaire et extraction
|
||||||
if (!is_dir (self::TEMP_DIR . $tempFolder) ) {
|
if (!is_dir(self::TEMP_DIR . $tempFolder)) {
|
||||||
mkdir (self::TEMP_DIR . $tempFolder, 0755);
|
mkdir(self::TEMP_DIR . $tempFolder, 0755);
|
||||||
}
|
}
|
||||||
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
$zip->extractTo(self::TEMP_DIR . $tempFolder);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lecture du descripteur de ressource
|
* Lecture du descripteur de ressource
|
||||||
@ -127,16 +128,15 @@ class plugin extends common {
|
|||||||
* 'download" => 'module/download'
|
* 'download" => 'module/download'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (file_exists(self::TEMP_DIR . $tempFolder . 'desc.json')
|
if (file_exists(self::TEMP_DIR . $tempFolder . 'desc.json')) {
|
||||||
) {
|
|
||||||
$module = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . 'desc.json'), true);
|
$module = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . 'desc.json'), true);
|
||||||
} else {
|
} else {
|
||||||
// Message de retour
|
// Message de retour
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
return([
|
return ([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'notification'=> 'Archive invalide, le descripteur est absent.'
|
'notification' => 'Archive invalide, le descripteur est absent.'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,23 +145,23 @@ class plugin extends common {
|
|||||||
*/
|
*/
|
||||||
foreach ($module['dirs'] as $src => $dest) {
|
foreach ($module['dirs'] as $src => $dest) {
|
||||||
// Vérification de la présence des dossier décrits
|
// Vérification de la présence des dossier décrits
|
||||||
if ( !is_dir (self::TEMP_DIR . $tempFolder . $src )) {
|
if (!is_dir(self::TEMP_DIR . $tempFolder . $src)) {
|
||||||
// Message de retour
|
// Message de retour
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
return([
|
return ([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'notification'=> 'Archive invalide, les dossiers ne correspondent pas au descripteur.'
|
'notification' => 'Archive invalide, les dossiers ne correspondent pas au descripteur.'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Interdire l'écriture dans le dossier core
|
// Interdire l'écriture dans le dossier core
|
||||||
if ( strstr($dest, 'core') !== false ) {
|
if (strstr($dest, 'core') !== false) {
|
||||||
// Message de retour
|
// Message de retour
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
return([
|
return ([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'notification'=> 'Archive invalide, l\'écriture dans le dossier core est interdite'
|
'notification' => 'Archive invalide, l\'écriture dans le dossier core est interdite'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -169,13 +169,13 @@ class plugin extends common {
|
|||||||
/**
|
/**
|
||||||
* Validation de la présence du fichier de base du module
|
* Validation de la présence du fichier de base du module
|
||||||
*/
|
*/
|
||||||
if ( !file_exists(self::TEMP_DIR . $tempFolder . $module['name'] . '/' . $module['name'] . '.php')) {
|
if (!file_exists(self::TEMP_DIR . $tempFolder . $module['name'] . '/' . $module['name'] . '.php')) {
|
||||||
// Message de retour
|
// Message de retour
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
return([
|
return ([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'notification'=> 'Cette archive est invalide, le fichier de classe est absent.'
|
'notification' => 'Cette archive est invalide, le fichier de classe est absent.'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ class plugin extends common {
|
|||||||
* Le module est-il déjà installé ?
|
* Le module est-il déjà installé ?
|
||||||
* Si oui lire le numéro de version et le stocker dans $versionInstalled
|
* Si oui lire le numéro de version et le stocker dans $versionInstalled
|
||||||
*/
|
*/
|
||||||
if (is_file( self::MODULE_DIR . $module['name'] . '/' . $module['name'] . '.php') ) {
|
if (is_file(self::MODULE_DIR . $module['name'] . '/' . $module['name'] . '.php')) {
|
||||||
$c = helper::getModules();
|
$c = helper::getModules();
|
||||||
if (array_key_exists($module['name'], $c)) {
|
if (array_key_exists($module['name'], $c)) {
|
||||||
$versionInstalled = $c[$module['name']]['version'];
|
$versionInstalled = $c[$module['name']]['version'];
|
||||||
@ -193,12 +193,12 @@ class plugin extends common {
|
|||||||
|
|
||||||
// Le module est installé, contrôle de la version
|
// Le module est installé, contrôle de la version
|
||||||
$installOk = false;
|
$installOk = false;
|
||||||
if ( isset($versionInstalled) === false ) {
|
if (isset($versionInstalled) === false) {
|
||||||
$installOk = true;
|
$installOk = true;
|
||||||
} elseif ( version_compare($module['version'], $versionInstalled) >= 0 ) {
|
} elseif (version_compare($module['version'], $versionInstalled) >= 0) {
|
||||||
$installOk = true;
|
$installOk = true;
|
||||||
} else {
|
} else {
|
||||||
if (version_compare($module['version'], $versionInstalled) === -1 ) {
|
if (version_compare($module['version'], $versionInstalled) === -1) {
|
||||||
// Contrôle du forçage
|
// Contrôle du forçage
|
||||||
if ($this->getInput('configModulesCheck', helper::FILTER_BOOLEAN) === true) {
|
if ($this->getInput('configModulesCheck', helper::FILTER_BOOLEAN) === true) {
|
||||||
$installOk = true;
|
$installOk = true;
|
||||||
@ -206,9 +206,9 @@ class plugin extends common {
|
|||||||
// Message de retour
|
// Message de retour
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
return([
|
return ([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'notification'=> 'La version installée est plus récente.'
|
'notification' => 'La version installée est plus récente.'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -218,23 +218,24 @@ class plugin extends common {
|
|||||||
if ($installOk) {
|
if ($installOk) {
|
||||||
// Copie récursive des dossiers
|
// Copie récursive des dossiers
|
||||||
foreach ($module['dirs'] as $src => $dest) {
|
foreach ($module['dirs'] as $src => $dest) {
|
||||||
if (!is_dir (self::TEMP_DIR . $tempFolder . $src)) {
|
if (!is_dir(self::TEMP_DIR . $tempFolder . $src)) {
|
||||||
mkdir(self::TEMP_DIR . $tempFolder . $src);
|
mkdir(self::TEMP_DIR . $tempFolder . $src);
|
||||||
}
|
}
|
||||||
$success = $this->copyDir( self::TEMP_DIR . $tempFolder . $src, $dest );
|
$success = $this->copyDir(self::TEMP_DIR . $tempFolder . $src, $dest);
|
||||||
}
|
}
|
||||||
// Message de retour
|
// Message de retour
|
||||||
$t = isset($versionInstalled) ? ' actualisé' : 'installé';
|
$t = isset($versionInstalled) ? ' actualisé' : 'installé';
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
return(['success' => $success,
|
return ([
|
||||||
'notification'=> $success ? 'Le module '.$module['name'].' a été ' . $t
|
'success' => $success,
|
||||||
|
'notification' => $success ? 'Le module ' . $module['name'] . ' a été ' . $t
|
||||||
: 'Erreur inconnue, le module n\'est pas installé'
|
: 'Erreur inconnue, le module n\'est pas installé'
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
return([
|
return ([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'notification'=> 'Une erreur inconnue s\est produite !'
|
'notification' => 'Une erreur inconnue s\est produite !'
|
||||||
]);
|
]);
|
||||||
// Supprimer le dossier temporaire
|
// Supprimer le dossier temporaire
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
@ -242,28 +243,29 @@ class plugin extends common {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Message de retour
|
// Message de retour
|
||||||
return(['success' => $success,
|
return ([
|
||||||
'notification'=> 'Impossible d\'ouvrir l\'archive'
|
'success' => false,
|
||||||
|
'notification' => 'Impossible d\'ouvrir l\'archive'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Installation d'un module à partir du gestionnaire de fichier
|
* Installation d'un module à partir du gestionnaire de fichier
|
||||||
*/
|
*/
|
||||||
public function upload() {
|
public function upload()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Installation d'un module
|
// Installation d'un module
|
||||||
$checkValidMaj = $this->getInput('configModulesCheck', helper::FILTER_BOOLEAN);
|
$checkValidMaj = $this->getInput('configModulesCheck', helper::FILTER_BOOLEAN);
|
||||||
$zipFilename = $this->getInput('configModulesInstallation', helper::FILTER_STRING_SHORT);
|
$zipFilename = $this->getInput('configModulesInstallation', helper::FILTER_STRING_SHORT);
|
||||||
if( $zipFilename !== ''){
|
if ($zipFilename !== '') {
|
||||||
$success = [
|
$success = [
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'notification'=> ''
|
'notification' => ''
|
||||||
];
|
];
|
||||||
$state = $this->install(self::FILE_DIR.'source/'.$zipFilename, $checkValidMaj);
|
$state = $this->install(self::FILE_DIR . 'source/' . $zipFilename, $checkValidMaj);
|
||||||
}
|
}
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'plugin',
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
@ -281,7 +283,8 @@ class plugin extends common {
|
|||||||
/***
|
/***
|
||||||
* Installation d'un module depuis le catalogue
|
* Installation d'un module depuis le catalogue
|
||||||
*/
|
*/
|
||||||
public function uploadItem() {
|
public function uploadItem()
|
||||||
|
{
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -300,17 +303,17 @@ class plugin extends common {
|
|||||||
// Télécharger le fichier
|
// Télécharger le fichier
|
||||||
$moduleData = helper::getUrlContents(self::BASEURL_STORE . self::FILE_DIR . 'source/' . $moduleFilePath);
|
$moduleData = helper::getUrlContents(self::BASEURL_STORE . self::FILE_DIR . 'source/' . $moduleFilePath);
|
||||||
// Extraire de l'arborescence
|
// Extraire de l'arborescence
|
||||||
$d = explode('/',$moduleFilePath);
|
$d = explode('/', $moduleFilePath);
|
||||||
$moduleFile = $d[count($d)-1];
|
$moduleFile = $d[count($d) - 1];
|
||||||
// Créer le dossier modules
|
// Créer le dossier modules
|
||||||
if (!is_dir(self::FILE_DIR . 'source/modules')) {
|
if (!is_dir(self::FILE_DIR . 'source/modules')) {
|
||||||
mkdir (self::FILE_DIR . 'source/modules', 0755);
|
mkdir(self::FILE_DIR . 'source/modules', 0755);
|
||||||
}
|
}
|
||||||
// Sauver les données du fichiers
|
// Sauver les données du fichiers
|
||||||
file_put_contents(self::FILE_DIR . 'source/modules/' . $moduleFile, $moduleData);
|
file_put_contents(self::FILE_DIR . 'source/modules/' . $moduleFile, $moduleData);
|
||||||
|
|
||||||
// Installation directe
|
// Installation directe
|
||||||
if ( file_exists(self::FILE_DIR . 'source/modules/' . $moduleFile) ) {
|
if (file_exists(self::FILE_DIR . 'source/modules/' . $moduleFile)) {
|
||||||
$r = $this->install(self::FILE_DIR . 'source/modules/' . $moduleFile, false);
|
$r = $this->install(self::FILE_DIR . 'source/modules/' . $moduleFile, false);
|
||||||
} else {
|
} else {
|
||||||
$r['notification'] = 'Un problème est survenu, le module n\'est pas installé';
|
$r['notification'] = 'Un problème est survenu, le module n\'est pas installé';
|
||||||
@ -333,45 +336,46 @@ class plugin extends common {
|
|||||||
/**
|
/**
|
||||||
* Catalogue des modules sur le site ZwiiCMS.fr
|
* Catalogue des modules sur le site ZwiiCMS.fr
|
||||||
*/
|
*/
|
||||||
public function store() {
|
public function store()
|
||||||
|
{
|
||||||
$store = json_decode(helper::getUrlContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true);
|
$store = json_decode(helper::getUrlContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true);
|
||||||
if ($store) {
|
if ($store) {
|
||||||
// Modules installés
|
// Modules installés
|
||||||
$infoModules = helper::getModules();
|
$infoModules = helper::getModules();
|
||||||
// Clés moduleIds dans les pages
|
// Clés moduleIds dans les pages
|
||||||
$inPages = helper::arrayColumn($this->getData(['page']),'moduleId', 'SORT_DESC');
|
$inPages = helper::arrayColumn($this->getData(['page']), 'moduleId', 'SORT_DESC');
|
||||||
foreach( $inPages as $key=>$value){
|
foreach ($inPages as $key => $value) {
|
||||||
$pagesInfos[ $this->getData(['page', $key, 'title' ]) ] = $value;
|
$pagesInfos[$this->getData(['page', $key, 'title'])] = $value;
|
||||||
}
|
}
|
||||||
// Parcourir les données des modules
|
// Parcourir les données des modules
|
||||||
foreach ($store as $key=>$value) {
|
foreach ($store as $key => $value) {
|
||||||
// Module non installé
|
// Module non installé
|
||||||
$ico = template::ico('download');
|
$ico = template::ico('download');
|
||||||
$class = '';
|
$class = '';
|
||||||
$help = 'Télécharger le module dans le gestionnaire de fichiers';
|
$help = 'Télécharger le module dans le gestionnaire de fichiers';
|
||||||
// Le module est installé
|
// Le module est installé
|
||||||
if (array_key_exists($key,$infoModules) === true) {
|
if (array_key_exists($key, $infoModules) === true) {
|
||||||
$class = 'buttonGreen';
|
$class = 'buttonGreen';
|
||||||
$ico = template::ico('update');
|
$ico = template::ico('update');
|
||||||
$help = 'Mettre à jour le module orphelin';
|
$help = 'Mettre à jour le module orphelin';
|
||||||
}
|
}
|
||||||
// Le module est installé et utilisé
|
// Le module est installé et utilisé
|
||||||
if (in_array($key,$inPages) === true) {
|
if (in_array($key, $inPages) === true) {
|
||||||
$class = 'buttonRed';
|
$class = 'buttonRed';
|
||||||
$ico = template::ico('update');
|
$ico = template::ico('update');
|
||||||
$help = 'Mettre à jour le module attaché, une sauvegarde des données de module est recommandée !';
|
$help = 'Mettre à jour le module attaché, une sauvegarde des données de module est recommandée !';
|
||||||
}
|
}
|
||||||
self::$storeList [] = [
|
self::$storeList[] = [
|
||||||
$store[$key]['category'],
|
$store[$key]['category'],
|
||||||
'<a href="' . self::BASEURL_STORE . self::MODULE_STORE . $key . '" target="_blank" >'.$store[$key]['title'].'</a>',
|
'<a href="' . self::BASEURL_STORE . self::MODULE_STORE . $key . '" target="_blank" >' . $store[$key]['title'] . '</a>',
|
||||||
$store[$key]['version'],
|
$store[$key]['version'],
|
||||||
mb_detect_encoding(strftime('%d %B %Y', $store[$key]['versionDate']), 'UTF-8', true)
|
mb_detect_encoding(strftime('%d %B %Y', $store[$key]['versionDate']), 'UTF-8', true)
|
||||||
? strftime('%d %B %Y', $store[$key]['versionDate'])
|
? strftime('%d %B %Y', $store[$key]['versionDate'])
|
||||||
: utf8_encode(strftime('%d %B %Y', $store[$key]['versionDate'])),
|
: utf8_encode(strftime('%d %B %Y', $store[$key]['versionDate'])),
|
||||||
implode(', ', array_keys($pagesInfos,$key)),
|
implode(', ', array_keys($pagesInfos, $key)),
|
||||||
template::button('moduleExport' . $key, [
|
template::button('moduleExport' . $key, [
|
||||||
'class' => $class,
|
'class' => $class,
|
||||||
'href' => helper::baseUrl(). $this->getUrl(0) . '/uploadItem/' . $key.'/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/uploadItem/' . $key . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre
|
||||||
'value' => $ico,
|
'value' => $ico,
|
||||||
'help' => $help
|
'help' => $help
|
||||||
])
|
])
|
||||||
@ -389,15 +393,16 @@ class plugin extends common {
|
|||||||
/**
|
/**
|
||||||
* Détail d'un objet du catalogue
|
* Détail d'un objet du catalogue
|
||||||
*/
|
*/
|
||||||
public function item() {
|
public function item()
|
||||||
|
{
|
||||||
$store = json_decode(helper::getUrlContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true);
|
$store = json_decode(helper::getUrlContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true);
|
||||||
self::$storeItem = $store [$this->getUrl(2)] ;
|
self::$storeItem = $store[$this->getUrl(2)];
|
||||||
self::$storeItem ['fileDate'] = mb_detect_encoding(strftime('%d %B %Y',self::$storeItem ['fileDate']), 'UTF-8', true)
|
self::$storeItem['fileDate'] = mb_detect_encoding(strftime('%d %B %Y', self::$storeItem['fileDate']), 'UTF-8', true)
|
||||||
? strftime('%d %B %Y', self::$storeItem ['fileDate'])
|
? strftime('%d %B %Y', self::$storeItem['fileDate'])
|
||||||
: utf8_encode(strftime('%d %B %Y', self::$storeItem ['fileDate']));
|
: utf8_encode(strftime('%d %B %Y', self::$storeItem['fileDate']));
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' =>'Module ' . self::$storeItem['title'],
|
'title' => 'Module ' . self::$storeItem['title'],
|
||||||
'view' => 'item'
|
'view' => 'item'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@ -405,12 +410,15 @@ class plugin extends common {
|
|||||||
/**
|
/**
|
||||||
* Gestion des modules
|
* Gestion des modules
|
||||||
*/
|
*/
|
||||||
public function index() {
|
public function index()
|
||||||
|
{
|
||||||
|
|
||||||
// Tableau des langues rédigées
|
// Tableau des langues rédigées
|
||||||
foreach (self::$languages as $key => $value) {
|
foreach (self::$languages as $key => $value) {
|
||||||
if ($this->getData(['config','i18n', $key]) === 'site' ||
|
if (
|
||||||
$key === 'fr_FR') {
|
$this->getData(['config', 'i18n', $key]) === 'site' ||
|
||||||
|
$key === 'fr_FR'
|
||||||
|
) {
|
||||||
$i18nSites[$key] = $value;
|
$i18nSites[$key] = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -418,35 +426,34 @@ class plugin extends common {
|
|||||||
$infoModules = helper::getModules();
|
$infoModules = helper::getModules();
|
||||||
|
|
||||||
// Parcourir les langues du site traduit et recherche les modules affectés à des pages
|
// Parcourir les langues du site traduit et recherche les modules affectés à des pages
|
||||||
foreach ($i18nSites as $keyi18n=>$valuei18n) {
|
foreach ($i18nSites as $keyi18n => $valuei18n) {
|
||||||
|
|
||||||
// Clés moduleIds dans les pages de la langue
|
// Clés moduleIds dans les pages de la langue
|
||||||
$pages = json_decode(file_get_contents(self::DATA_DIR . $keyi18n . '/' . 'page.json'), true);
|
$pages = json_decode(file_get_contents(self::DATA_DIR . $keyi18n . '/' . 'page.json'), true);
|
||||||
|
|
||||||
// Extraire les clés des modules
|
// Extraire les clés des modules
|
||||||
$pagesModules [$keyi18n] = array_filter(helper::arrayColumn($pages['page'],'moduleId', 'SORT_DESC'), 'strlen');
|
$pagesModules[$keyi18n] = array_filter(helper::arrayColumn($pages['page'], 'moduleId', 'SORT_DESC'), 'strlen');
|
||||||
|
|
||||||
// Générer ls liste des pages avec module pour la sauvegarde ou le backup
|
// Générer ls liste des pages avec module pour la sauvegarde ou le backup
|
||||||
foreach( $pagesModules [$keyi18n] as $key=>$value ) {
|
foreach ($pagesModules[$keyi18n] as $key => $value) {
|
||||||
if (!empty($value)) {
|
if (!empty($value)) {
|
||||||
$pagesInfos [$keyi18n] [$key] ['pageId'] = $key ;
|
$pagesInfos[$keyi18n][$key]['pageId'] = $key;
|
||||||
$pagesInfos [$keyi18n] [$key] ['title'] = $this->getData(['page', $key, 'title' ]) ;
|
$pagesInfos[$keyi18n][$key]['title'] = $this->getData(['page', $key, 'title']);
|
||||||
$pagesInfos [$keyi18n] [$key] ['moduleId'] = $value;
|
$pagesInfos[$keyi18n][$key]['moduleId'] = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Recherche des modules orphelins dans toutes les langues
|
// Recherche des modules orphelins dans toutes les langues
|
||||||
$orphans = $installed = array_flip(array_keys ($infoModules));
|
$orphans = $installed = array_flip(array_keys($infoModules));
|
||||||
foreach ($i18nSites as $keyi18n=>$valuei18n) {
|
foreach ($i18nSites as $keyi18n => $valuei18n) {
|
||||||
// Générer la liste des modules orphelins
|
// Générer la liste des modules orphelins
|
||||||
foreach ($infoModules as $key=>$value) {
|
foreach ($infoModules as $key => $value) {
|
||||||
// Supprimer les éléments affectés
|
// Supprimer les éléments affectés
|
||||||
if (array_search($key, $pagesModules[$keyi18n]) ) {
|
if (array_search($key, $pagesModules[$keyi18n])) {
|
||||||
unset($orphans [$key]);
|
unset($orphans[$key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$orphans = array_flip($orphans);
|
$orphans = array_flip($orphans);
|
||||||
@ -455,15 +462,15 @@ class plugin extends common {
|
|||||||
if (isset($orphans)) {
|
if (isset($orphans)) {
|
||||||
foreach ($orphans as $key) {
|
foreach ($orphans as $key) {
|
||||||
// Construire le tableau de sortie
|
// Construire le tableau de sortie
|
||||||
self::$modulesOrphan [] = [
|
self::$modulesOrphan[] = [
|
||||||
$infoModules [$key] ['realName'],
|
$infoModules[$key]['realName'],
|
||||||
$key,
|
$key,
|
||||||
$infoModules [$key] ['version'],
|
$infoModules[$key]['version'],
|
||||||
'',
|
'',
|
||||||
$infoModules[$key] ['delete'] === true
|
$infoModules[$key]['delete'] === true
|
||||||
? template::button('moduleDelete' . $key, [
|
? template::button('moduleDelete' . $key, [
|
||||||
'class' => 'moduleDelete buttonRed',
|
'class' => 'moduleDelete buttonRed',
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' .$key . '/' . $_SESSION['csrf'],
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $key . '/' . $_SESSION['csrf'],
|
||||||
'value' => template::ico('trash'),
|
'value' => template::ico('trash'),
|
||||||
'help' => 'Supprimer le module'
|
'help' => 'Supprimer le module'
|
||||||
])
|
])
|
||||||
@ -478,18 +485,18 @@ class plugin extends common {
|
|||||||
if (isset($installed)) {
|
if (isset($installed)) {
|
||||||
foreach (array_flip($installed) as $key) {
|
foreach (array_flip($installed) as $key) {
|
||||||
// Construire le tableau de sortie
|
// Construire le tableau de sortie
|
||||||
self::$modulesInstalled [] = [
|
self::$modulesInstalled[] = [
|
||||||
$infoModules [$key] ['realName'],
|
$infoModules[$key]['realName'],
|
||||||
$key,
|
$key,
|
||||||
$infoModules [$key] ['version'],
|
$infoModules[$key]['version'],
|
||||||
'',
|
'',
|
||||||
template::button('moduleSave' . $key, [
|
template::button('moduleSave' . $key, [
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/save/filemanager/' .$key . '/' . $_SESSION['csrf'],
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/save/filemanager/' . $key . '/' . $_SESSION['csrf'],
|
||||||
'value' => template::ico('download-cloud'),
|
'value' => template::ico('download-cloud'),
|
||||||
'help' => 'Sauvegarder le module dans le gestionnaire de fichiers'
|
'help' => 'Sauvegarder le module dans le gestionnaire de fichiers'
|
||||||
]),
|
]),
|
||||||
template::button('moduleDownload' . $key, [
|
template::button('moduleDownload' . $key, [
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/save/download/' .$key . '/' . $_SESSION['csrf'],
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/save/download/' . $key . '/' . $_SESSION['csrf'],
|
||||||
'value' => template::ico('download'),
|
'value' => template::ico('download'),
|
||||||
'help' => 'Sauvegarder et télécharger le module'
|
'help' => 'Sauvegarder et télécharger le module'
|
||||||
])
|
])
|
||||||
@ -503,26 +510,26 @@ class plugin extends common {
|
|||||||
// Avec les commandes de sauvegarde et de restauration
|
// Avec les commandes de sauvegarde et de restauration
|
||||||
|
|
||||||
$keyi18n = self::$i18nContent;
|
$keyi18n = self::$i18nContent;
|
||||||
if (isset($pagesInfos) &&
|
if (
|
||||||
is_array($pagesInfos[self::$i18nContent]) )
|
isset($pagesInfos) &&
|
||||||
{
|
is_array($pagesInfos[self::$i18nContent])
|
||||||
foreach ($pagesInfos[self::$i18nContent] as $keyPage=>$value) {
|
) {
|
||||||
if (isset($infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]))
|
foreach ($pagesInfos[self::$i18nContent] as $keyPage => $value) {
|
||||||
{
|
if (isset($infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']])) {
|
||||||
// Co[nstruire le tableau de sortie
|
// Co[nstruire le tableau de sortie
|
||||||
self::$modulesData[] = [
|
self::$modulesData[] = [
|
||||||
$infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']] ['realName'],
|
$infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]['realName'],
|
||||||
$pagesInfos[$keyi18n][$keyPage]['moduleId'],
|
$pagesInfos[$keyi18n][$keyPage]['moduleId'],
|
||||||
$infoModules[$pagesInfos [$keyi18n][$keyPage]['moduleId']] ['version'],
|
$infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]['version'],
|
||||||
//template::flag($keyi18n, '20px'),
|
//template::flag($keyi18n, '20px'),
|
||||||
'<a href ="' . helper::baseUrl() . $keyPage . '" target="_blank">' . $pagesInfos [$keyi18n][$keyPage]['title'] . ' (' .$keyPage . ')</a>',
|
'<a href ="' . helper::baseUrl() . $keyPage . '" target="_blank">' . $pagesInfos[$keyi18n][$keyPage]['title'] . ' (' . $keyPage . ')</a>',
|
||||||
template::button('dataExport' . $keyPage, [
|
template::button('dataExport' . $keyPage, [
|
||||||
'href' => helper::baseUrl(). $this->getUrl(0) . '/dataExport/' . $keyi18n . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/' . $keyi18n . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre
|
||||||
'value' => template::ico('download'),
|
'value' => template::ico('download'),
|
||||||
'help' => 'Exporter les données du module'
|
'help' => 'Exporter les données du module'
|
||||||
]),
|
]),
|
||||||
template::button('dataDelete' . $keyPage, [
|
template::button('dataDelete' . $keyPage, [
|
||||||
'href' => helper::baseUrl(). $this->getUrl(0) . '/dataDelete/' . $keyi18n . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataDelete/' . $keyi18n . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre
|
||||||
'value' => template::ico('trash'),
|
'value' => template::ico('trash'),
|
||||||
'class' => 'buttonRed dataDelete',
|
'class' => 'buttonRed dataDelete',
|
||||||
'help' => 'Détacher le module de la page',
|
'help' => 'Détacher le module de la page',
|
||||||
@ -548,7 +555,8 @@ class plugin extends common {
|
|||||||
* Sauvegarde un module sans les données
|
* Sauvegarde un module sans les données
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function save() {
|
public function save()
|
||||||
|
{
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
if ($this->getUrl(4) !== $_SESSION['csrf']) {
|
if ($this->getUrl(4) !== $_SESSION['csrf']) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -567,14 +575,14 @@ class plugin extends common {
|
|||||||
|
|
||||||
//Nom de l'archive
|
//Nom de l'archive
|
||||||
$fileName = $this->getUrl(3) . '.zip';
|
$fileName = $this->getUrl(3) . '.zip';
|
||||||
$this->makeZip ($tmpFolder . '/' . $fileName, self::MODULE_DIR . $this->getUrl(3));
|
$this->makeZip($tmpFolder . '/' . $fileName, self::MODULE_DIR . $this->getUrl(3));
|
||||||
|
|
||||||
switch ($this->getUrl(2)) {
|
switch ($this->getUrl(2)) {
|
||||||
case 'filemanager':
|
case 'filemanager':
|
||||||
if (!file_exists(self::FILE_DIR . 'source/modules')) {
|
if (!file_exists(self::FILE_DIR . 'source/modules')) {
|
||||||
mkdir(self::FILE_DIR . 'source/modules');
|
mkdir(self::FILE_DIR . 'source/modules');
|
||||||
}
|
}
|
||||||
$success = copy($tmpFolder . '/' . $fileName , self::FILE_DIR . 'source/modules/' . $this->getUrl(3) . '.zip' );
|
$success = copy($tmpFolder . '/' . $fileName, self::FILE_DIR . 'source/modules/' . $this->getUrl(3) . '.zip');
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -590,7 +598,7 @@ class plugin extends common {
|
|||||||
header('Content-Length: ' . filesize($tmpFolder . '/' . $fileName));
|
header('Content-Length: ' . filesize($tmpFolder . '/' . $fileName));
|
||||||
ob_clean();
|
ob_clean();
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
readfile( $tmpFolder . '/' .$fileName);
|
readfile($tmpFolder . '/' . $fileName);
|
||||||
exit();
|
exit();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -608,7 +616,8 @@ class plugin extends common {
|
|||||||
* 4 : pageId
|
* 4 : pageId
|
||||||
* 5 : CSRF
|
* 5 : CSRF
|
||||||
*/
|
*/
|
||||||
public function dataDelete() {
|
public function dataDelete()
|
||||||
|
{
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
if ($this->getUrl(5) !== $_SESSION['csrf']) {
|
if ($this->getUrl(5) !== $_SESSION['csrf']) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -623,12 +632,10 @@ class plugin extends common {
|
|||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'plugin',
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
'notification' => 'Le module ' . $this->getUrl(3) . ' de la page '. $this->getUrl(4) . ' a été supprimé.',
|
'notification' => 'Le module ' . $this->getUrl(3) . ' de la page ' . $this->getUrl(4) . ' a été supprimé.',
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -640,7 +647,8 @@ class plugin extends common {
|
|||||||
* 4 : pageId
|
* 4 : pageId
|
||||||
* 5 : CSRF
|
* 5 : CSRF
|
||||||
*/
|
*/
|
||||||
public function dataExport() {
|
public function dataExport()
|
||||||
|
{
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
if ($this->getUrl(5) !== $_SESSION['csrf']) {
|
if ($this->getUrl(5) !== $_SESSION['csrf']) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -659,26 +667,25 @@ class plugin extends common {
|
|||||||
|
|
||||||
|
|
||||||
// Copie des infos sur le module
|
// Copie des infos sur le module
|
||||||
$modulesData = json_decode(file_get_contents(self::DATA_DIR . $this->getUrl(2) . '/module.json' ), true);
|
$modulesData = json_decode(file_get_contents(self::DATA_DIR . $this->getUrl(2) . '/module.json'), true);
|
||||||
$moduleData = $modulesData['module'] [$this->getUrl(4)];
|
$moduleData = $modulesData['module'][$this->getUrl(4)];
|
||||||
$success = file_put_contents ($tmpFolder . '/module.json', json_encode($moduleData));
|
$success = file_put_contents($tmpFolder . '/module.json', json_encode($moduleData));
|
||||||
|
|
||||||
// Le dossier du module s'il existe
|
// Le dossier du module s'il existe
|
||||||
if (is_dir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4) ) ) {
|
if (is_dir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4))) {
|
||||||
// Copier le dossier des données
|
// Copier le dossier des données
|
||||||
$success .= $this->copyDir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4), $tmpFolder);
|
$success .= $this->copyDir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4), $tmpFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Descripteur de l'archive
|
// Descripteur de l'archive
|
||||||
$infoModule = helper::getModules();
|
$infoModule = helper::getModules();
|
||||||
$success .= file_put_contents ($tmpFolder . '/descripteur.json', json_encode( [$this->getUrl(3) => $infoModule [$this->getUrl(3)]] ));
|
$success .= file_put_contents($tmpFolder . '/descripteur.json', json_encode([$this->getUrl(3) => $infoModule[$this->getUrl(3)]]));
|
||||||
|
|
||||||
|
|
||||||
// création du zip
|
// création du zip
|
||||||
if ($success)
|
if ($success) {
|
||||||
{
|
|
||||||
$fileName = $this->getUrl(2) . '-' . $this->getUrl(3) . '-' . $this->getUrl(4) . '.zip';
|
$fileName = $this->getUrl(2) . '-' . $this->getUrl(3) . '-' . $this->getUrl(4) . '.zip';
|
||||||
$this->makeZip ($fileName, $tmpFolder);
|
$this->makeZip($fileName, $tmpFolder);
|
||||||
if (file_exists($fileName)) {
|
if (file_exists($fileName)) {
|
||||||
ob_start();
|
ob_start();
|
||||||
header('Content-Type: application/octet-stream');
|
header('Content-Type: application/octet-stream');
|
||||||
@ -686,7 +693,7 @@ class plugin extends common {
|
|||||||
header('Content-Length: ' . filesize($fileName));
|
header('Content-Length: ' . filesize($fileName));
|
||||||
ob_clean();
|
ob_clean();
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
readfile( $fileName);
|
readfile($fileName);
|
||||||
unlink($fileName);
|
unlink($fileName);
|
||||||
$this->removeDir($tmpFolder);
|
$this->removeDir($tmpFolder);
|
||||||
exit();
|
exit();
|
||||||
@ -705,31 +712,32 @@ class plugin extends common {
|
|||||||
/*
|
/*
|
||||||
* Importer des données d'un module externes ou interne à module.json
|
* Importer des données d'un module externes ou interne à module.json
|
||||||
*/
|
*/
|
||||||
public function dataImport(){
|
public function dataImport()
|
||||||
|
{
|
||||||
|
|
||||||
// Soumission du formulaire d'importation du module dans une page libre
|
// Soumission du formulaire d'importation du module dans une page libre
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Récupérer le fichier et le décompacter
|
// Récupérer le fichier et le décompacter
|
||||||
$zipFilename = $this->getInput('pluginImportFile', helper::FILTER_STRING_SHORT, true);
|
$zipFilename = $this->getInput('pluginImportFile', helper::FILTER_STRING_SHORT, true);
|
||||||
$targetPage = $this->getInput('pluginImportPage', helper::FILTER_STRING_SHORT, true);
|
$targetPage = $this->getInput('pluginImportPage', helper::FILTER_STRING_SHORT, true);
|
||||||
$tempFolder = uniqid();
|
$tempFolder = uniqid();
|
||||||
|
|
||||||
// Extraction dans un dossier temporaire
|
// Extraction dans un dossier temporaire
|
||||||
mkdir (self::TEMP_DIR . $tempFolder, 0755);
|
mkdir(self::TEMP_DIR . $tempFolder, 0755);
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
if ($zip->open(self::FILE_DIR . 'source/' . $zipFilename) === TRUE) {
|
if ($zip->open(self::FILE_DIR . 'source/' . $zipFilename) === TRUE) {
|
||||||
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
$zip->extractTo(self::TEMP_DIR . $tempFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lire le descripteur
|
// Lire le descripteur
|
||||||
$descripteur = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . '/descripteur.json'), true);
|
$descripteur = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . '/descripteur.json'), true);
|
||||||
|
|
||||||
// Lecture des données du module
|
// Lecture des données du module
|
||||||
$moduleData = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . '/module.json'), true );
|
$moduleData = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . '/module.json'), true);
|
||||||
// Chargement des données du module importé
|
// Chargement des données du module importé
|
||||||
$this->setData(['module', $targetPage, $moduleData ]);
|
$this->setData(['module', $targetPage, $moduleData]);
|
||||||
// Intégration des données du module importé dans la page
|
// Intégration des données du module importé dans la page
|
||||||
$this->setData(['page', $targetPage ,'moduleId', array_key_first($descripteur) ]);
|
$this->setData(['page', $targetPage, 'moduleId', array_key_first($descripteur)]);
|
||||||
|
|
||||||
// Supprimer le dossier temporaire
|
// Supprimer le dossier temporaire
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
@ -745,7 +753,7 @@ class plugin extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Bouton d'importation des données d'un module spécifique
|
// Bouton d'importation des données d'un module spécifique
|
||||||
if (count(explode('/',$this->getUrl())) === 6) {
|
if (count(explode('/', $this->getUrl())) === 6) {
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -772,10 +780,11 @@ class plugin extends common {
|
|||||||
* et ne sont pas des barres latérales
|
* et ne sont pas des barres latérales
|
||||||
*/
|
*/
|
||||||
self::$pagesList = $this->getHierarchy(null, null, null);
|
self::$pagesList = $this->getHierarchy(null, null, null);
|
||||||
foreach(self::$pagesList as $page => $pageId) {
|
foreach (self::$pagesList as $page => $pageId) {
|
||||||
if ($this->getData(['page',$page,'block']) === 'bar' ||
|
if (
|
||||||
|
$this->getData(['page', $page, 'block']) === 'bar' ||
|
||||||
//$this->getData(['page',$page,'disable']) === true ||
|
//$this->getData(['page',$page,'disable']) === true ||
|
||||||
$this->getData(['page',$page,'moduleId']) !== ''
|
$this->getData(['page', $page, 'moduleId']) !== ''
|
||||||
) {
|
) {
|
||||||
unset(self::$pagesList[$page]);
|
unset(self::$pagesList[$page]);
|
||||||
}
|
}
|
||||||
@ -788,7 +797,4 @@ class plugin extends common {
|
|||||||
'view' => 'dataImport'
|
'view' => 'dataImport'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -41,44 +41,44 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="tabContent" id="moduleContainer">
|
<div class="tabContent" id="moduleContainer">
|
||||||
<?php if($module::$modulesInstalled): ?>
|
<?php if ($module::$modulesInstalled) : ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo template::topic('Sauvegarde'); ?>
|
<?php echo template::topic('Sauvegarde'); ?>
|
||||||
</h4>
|
</h4>
|
||||||
<?php echo template::table([2, 2, 1, 5, 1, 1], $module::$modulesInstalled, [ 'Module', 'Identifiant', 'Version', '', '', '']); ?>
|
<?php echo template::table([2, 2, 1, 5, 1, 1], $module::$modulesInstalled, ['Module', 'Identifiant', 'Version', '', '', '']); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::speech('Aucun module installé.'); ?>
|
<?php echo template::speech('Aucun module installé.'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php if($module::$modulesOrphan): ?>
|
<?php if ($module::$modulesOrphan) : ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo template::topic('Modules orphelins'); ?>
|
<?php echo template::topic('Modules orphelins'); ?>
|
||||||
</h4>
|
</h4>
|
||||||
<?php echo template::table([2, 2, 1, 6, 1], $module::$modulesOrphan, [ 'Module', 'Identifiant', 'Version', '', '']); ?>
|
<?php echo template::table([2, 2, 1, 6, 1], $module::$modulesOrphan, ['Module', 'Identifiant', 'Version', '', '']); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::speech('Aucun module orphelin.'); ?>
|
<?php echo template::speech('Aucun module orphelin.'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="tabContent displayNone" id="dataContainer">
|
<div class="tabContent displayNone" id="dataContainer">
|
||||||
<?php if($module::$modulesData): ?>
|
<?php if ($module::$modulesData) : ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo template::topic('Modules configurés'); ?>
|
<?php echo template::topic('Modules configurés'); ?>
|
||||||
|
|
||||||
<?php echo template::flag( self::$i18nContent, '20px'); ?>
|
<?php echo template::flag(self::$i18nContent, '20px'); ?>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1 offset11">
|
<div class="col1 offset11">
|
||||||
@ -91,13 +91,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::table([2, 2, 1, 5, 1, 1], $module::$modulesData, [ 'Module', 'Identifiant', 'Version', 'Page', '', '']); ?>
|
<?php echo template::table([2, 2, 1, 5, 1, 1], $module::$modulesData, ['Module', 'Identifiant', 'Version', 'Page', '', '']); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::speech('Aucune donnée de module.'); ?>
|
<?php echo template::speech('Aucune donnée de module.'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
@ -7,8 +7,8 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php if($module::$storeList): ?>
|
<?php if ($module::$storeList) : ?>
|
||||||
<?php echo template::table([2, 2, 1, 2, 2, 1], $module::$storeList, ['Catégorie', 'Module', 'Version', 'Date', 'Page', '']); ?>
|
<?php echo template::table([2, 2, 1, 2, 2, 1], $module::$storeList, ['Catégorie', 'Module', 'Version', 'Date', 'Page', '']); ?>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::speech('Le catalogue est vide.'); ?>
|
<?php echo template::speech('Le catalogue est vide.'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('configModulesUpload'); ?>
|
<?php echo template::formOpen('configModulesUpload'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('configModulesBack', [
|
<?php echo template::button('configModulesBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -17,13 +17,13 @@
|
|||||||
]);*/ ?>
|
]);*/ ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset8">
|
<div class="col2 offset8">
|
||||||
<?php echo template::submit('configModulesSubmit',[
|
<?php echo template::submit('configModulesSubmit', [
|
||||||
'value' => 'Valider',
|
'value' => 'Valider',
|
||||||
'ico' => 'check'
|
'ico' => 'check'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -47,5 +47,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -31,18 +31,20 @@ class sitemap extends common
|
|||||||
$items .= ' <li>';
|
$items .= ' <li>';
|
||||||
if ($this->getData(['page', $parentId, 'disable']) === false && $this->getUser('group') >= $this->getData(['page', $parentId, 'group'])) {
|
if ($this->getData(['page', $parentId, 'disable']) === false && $this->getUser('group') >= $this->getData(['page', $parentId, 'group'])) {
|
||||||
$pageUrl = ($parentId !== $this->getData(['locale', 'homePageId'])) ? helper::baseUrl() . $parentId : helper::baseUrl(false);
|
$pageUrl = ($parentId !== $this->getData(['locale', 'homePageId'])) ? helper::baseUrl() . $parentId : helper::baseUrl(false);
|
||||||
$items .= '<a href="' . $pageUrl .'">' .$this->getData(['page', $parentId, 'title']) . '</a>';
|
$items .= '<a href="' . $pageUrl . '">' . $this->getData(['page', $parentId, 'title']) . '</a>';
|
||||||
} else {
|
} else {
|
||||||
// page désactivée
|
// page désactivée
|
||||||
$items .= $this->getData(['page', $parentId, 'title']);
|
$items .= $this->getData(['page', $parentId, 'title']);
|
||||||
}
|
}
|
||||||
// ou articles d'un blog
|
// ou articles d'un blog
|
||||||
|
|
||||||
if ($this->getData(['page', $parentId, 'moduleId']) === 'blog' &&
|
if (
|
||||||
!empty($this->getData(['module',$parentId, 'posts' ]))) {
|
$this->getData(['page', $parentId, 'moduleId']) === 'blog' &&
|
||||||
|
!empty($this->getData(['module', $parentId, 'posts']))
|
||||||
|
) {
|
||||||
$items .= '<ul>';
|
$items .= '<ul>';
|
||||||
// Ids des articles par ordre de publication
|
// Ids des articles par ordre de publication
|
||||||
$articleIdsPublishedOns = helper::arrayColumn($this->getData(['module', $parentId,'posts']), 'publishedOn', 'SORT_DESC');
|
$articleIdsPublishedOns = helper::arrayColumn($this->getData(['module', $parentId, 'posts']), 'publishedOn', 'SORT_DESC');
|
||||||
$articleIdsStates = helper::arrayColumn($this->getData(['module', $parentId, 'posts']), 'state', 'SORT_DESC');
|
$articleIdsStates = helper::arrayColumn($this->getData(['module', $parentId, 'posts']), 'state', 'SORT_DESC');
|
||||||
$articleIds = [];
|
$articleIds = [];
|
||||||
foreach ($articleIdsPublishedOns as $articleId => $articlePublishedOn) {
|
foreach ($articleIdsPublishedOns as $articleId => $articlePublishedOn) {
|
||||||
@ -51,9 +53,9 @@ class sitemap extends common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($articleIds as $articleId => $article) {
|
foreach ($articleIds as $articleId => $article) {
|
||||||
if ($this->getData(['module',$parentId,'posts',$article,'state']) === true) {
|
if ($this->getData(['module', $parentId, 'posts', $article, 'state']) === true) {
|
||||||
$items .= ' <li>';
|
$items .= ' <li>';
|
||||||
$items .= '<a href="' . helper::baseUrl() . $parentId. '/' . $article . '">' . $this->getData(['module',$parentId,'posts',$article,'title']) . '</a>';
|
$items .= '<a href="' . helper::baseUrl() . $parentId . '/' . $article . '">' . $this->getData(['module', $parentId, 'posts', $article, 'title']) . '</a>';
|
||||||
$items .= '</li>';
|
$items .= '</li>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -65,7 +67,7 @@ class sitemap extends common
|
|||||||
// Sous-page
|
// Sous-page
|
||||||
$items .= ' <li>';
|
$items .= ' <li>';
|
||||||
if ($this->getData(['page', $childId, 'disable']) === false && $this->getUser('group') >= $this->getData(['page', $parentId, 'group'])) {
|
if ($this->getData(['page', $childId, 'disable']) === false && $this->getUser('group') >= $this->getData(['page', $parentId, 'group'])) {
|
||||||
$pageUrl = ($childId !== $this->getData(['locale', 'homePageId'])) ? helper::baseUrl() . $childId : helper::baseUrl(false) ;
|
$pageUrl = ($childId !== $this->getData(['locale', 'homePageId'])) ? helper::baseUrl() . $childId : helper::baseUrl(false);
|
||||||
$items .= '<a href="' . $pageUrl . '">' . $this->getData(['page', $childId, 'title']) . '</a>';
|
$items .= '<a href="' . $pageUrl . '">' . $this->getData(['page', $childId, 'title']) . '</a>';
|
||||||
} else {
|
} else {
|
||||||
// page désactivée
|
// page désactivée
|
||||||
@ -74,11 +76,13 @@ class sitemap extends common
|
|||||||
$items .= '</li>';
|
$items .= '</li>';
|
||||||
|
|
||||||
// Articles d'une sous-page blog
|
// Articles d'une sous-page blog
|
||||||
if ($this->getData(['page', $childId, 'moduleId']) === 'blog' &&
|
if (
|
||||||
!empty($this->getData(['module', $childId, 'posts' ]))) {
|
$this->getData(['page', $childId, 'moduleId']) === 'blog' &&
|
||||||
|
!empty($this->getData(['module', $childId, 'posts']))
|
||||||
|
) {
|
||||||
$items .= '<ul>';
|
$items .= '<ul>';
|
||||||
// Ids des articles par ordre de publication
|
// Ids des articles par ordre de publication
|
||||||
$articleIdsPublishedOns = helper::arrayColumn($this->getData(['module', $childId,'posts']), 'publishedOn', 'SORT_DESC');
|
$articleIdsPublishedOns = helper::arrayColumn($this->getData(['module', $childId, 'posts']), 'publishedOn', 'SORT_DESC');
|
||||||
$articleIdsStates = helper::arrayColumn($this->getData(['module', $childId, 'posts']), 'state', 'SORT_DESC');
|
$articleIdsStates = helper::arrayColumn($this->getData(['module', $childId, 'posts']), 'state', 'SORT_DESC');
|
||||||
$articleIds = [];
|
$articleIds = [];
|
||||||
foreach ($articleIdsPublishedOns as $articleId => $articlePublishedOn) {
|
foreach ($articleIdsPublishedOns as $articleId => $articlePublishedOn) {
|
||||||
@ -87,9 +91,9 @@ class sitemap extends common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($articleIds as $articleId => $article) {
|
foreach ($articleIds as $articleId => $article) {
|
||||||
if ($this->getData(['module',$childId,'posts',$article,'state']) === true) {
|
if ($this->getData(['module', $childId, 'posts', $article, 'state']) === true) {
|
||||||
$items .= ' <li>';
|
$items .= ' <li>';
|
||||||
$items .= '<a href="' . helper::baseUrl() . $childId . '/' . $article . '">' . $this->getData(['module',$childId,'posts',$article,'title']) . '</a>';
|
$items .= '<a href="' . helper::baseUrl() . $childId . '/' . $article . '">' . $this->getData(['module', $childId, 'posts', $article, 'title']) . '</a>';
|
||||||
$items .= '</li>';
|
$items .= '</li>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
echo "<div id='siteMap'>";
|
echo "<div id='siteMap'>";
|
||||||
echo $module::$siteMap;
|
echo $module::$siteMap;
|
||||||
echo "</div>";
|
echo "</div>";
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
* @copyright Copyright (C) 2018-2022, Frédéric Tempez
|
* @copyright Copyright (C) 2018-2022, Frédéric Tempez
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class theme extends common {
|
class theme extends common
|
||||||
|
{
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'advanced' => self::GROUP_ADMIN,
|
'advanced' => self::GROUP_ADMIN,
|
||||||
@ -51,21 +52,25 @@ class theme extends common {
|
|||||||
public static $footerblocks = [
|
public static $footerblocks = [
|
||||||
1 => [
|
1 => [
|
||||||
'hide' => 'Masqué',
|
'hide' => 'Masqué',
|
||||||
'center' => 'Affiché' ],
|
'center' => 'Affiché'
|
||||||
|
],
|
||||||
2 => [
|
2 => [
|
||||||
'hide' => 'Masqué',
|
'hide' => 'Masqué',
|
||||||
'left' => 'À gauche',
|
'left' => 'À gauche',
|
||||||
'right' => 'À droite' ],
|
'right' => 'À droite'
|
||||||
|
],
|
||||||
3 => [
|
3 => [
|
||||||
'hide' => 'Masqué',
|
'hide' => 'Masqué',
|
||||||
'left' => 'À gauche',
|
'left' => 'À gauche',
|
||||||
'center' => 'Au centre',
|
'center' => 'Au centre',
|
||||||
'right' => 'À droite' ],
|
'right' => 'À droite'
|
||||||
|
],
|
||||||
4 => [
|
4 => [
|
||||||
'hide' => 'Masqué',
|
'hide' => 'Masqué',
|
||||||
'left' => 'En haut',
|
'left' => 'En haut',
|
||||||
'center' => 'Au milieu',
|
'center' => 'Au milieu',
|
||||||
'right' => 'En bas' ]
|
'right' => 'En bas'
|
||||||
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $fontWeights = [
|
public static $fontWeights = [
|
||||||
@ -232,7 +237,7 @@ class theme extends common {
|
|||||||
// Variable pour construire la liste des pages du site
|
// Variable pour construire la liste des pages du site
|
||||||
public static $pagesList = [];
|
public static $pagesList = [];
|
||||||
// Variable pour construire la liste des fontes installées
|
// Variable pour construire la liste des fontes installées
|
||||||
public static $fontsNames= [];
|
public static $fontsNames = [];
|
||||||
public static $fonts = [];
|
public static $fonts = [];
|
||||||
// Variable pour détailler les fontes installées
|
// Variable pour détailler les fontes installées
|
||||||
public static $fontsDetail = [];
|
public static $fontsDetail = [];
|
||||||
@ -240,9 +245,10 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Thème des écrans d'administration
|
* Thème des écrans d'administration
|
||||||
*/
|
*/
|
||||||
public function admin() {
|
public function admin()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
$this->setData(['admin', [
|
$this->setData(['admin', [
|
||||||
'backgroundColor' => $this->getInput('adminBackgroundColor'),
|
'backgroundColor' => $this->getInput('adminBackgroundColor'),
|
||||||
'colorTitle' => $this->getInput('adminColorTitle'),
|
'colorTitle' => $this->getInput('adminColorTitle'),
|
||||||
@ -251,8 +257,8 @@ class theme extends common {
|
|||||||
'backgroundColorButton' => $this->getInput('adminColorButton'),
|
'backgroundColorButton' => $this->getInput('adminColorButton'),
|
||||||
'backgroundColorButtonGrey' => $this->getInput('adminColorGrey'),
|
'backgroundColorButtonGrey' => $this->getInput('adminColorGrey'),
|
||||||
'backgroundColorButtonRed' => $this->getInput('adminColorRed'),
|
'backgroundColorButtonRed' => $this->getInput('adminColorRed'),
|
||||||
'backgroundColorButtonGreen'=> $this->getInput('adminColorGreen'),
|
'backgroundColorButtonGreen' => $this->getInput('adminColorGreen'),
|
||||||
'backgroundColorButtonHelp'=> $this->getInput('adminColorHelp'),
|
'backgroundColorButtonHelp' => $this->getInput('adminColorHelp'),
|
||||||
'fontText' => $this->getInput('adminFontText'),
|
'fontText' => $this->getInput('adminFontText'),
|
||||||
'fontSize' => $this->getInput('adminFontTextSize'),
|
'fontSize' => $this->getInput('adminFontTextSize'),
|
||||||
'fontTitle' => $this->getInput('adminFontTitle'),
|
'fontTitle' => $this->getInput('adminFontTitle'),
|
||||||
@ -283,11 +289,12 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Mode avancé
|
* Mode avancé
|
||||||
*/
|
*/
|
||||||
public function advanced() {
|
public function advanced()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Enregistre le CSS
|
// Enregistre le CSS
|
||||||
file_put_contents(self::DATA_DIR.'custom.css', $this->getInput('themeAdvancedCss', null));
|
file_put_contents(self::DATA_DIR . 'custom.css', $this->getInput('themeAdvancedCss', null));
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => 'Modifications enregistrées',
|
'notification' => 'Modifications enregistrées',
|
||||||
@ -308,9 +315,10 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Options de l'arrière plan
|
* Options de l'arrière plan
|
||||||
*/
|
*/
|
||||||
public function body() {
|
public function body()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
$this->setData(['theme', 'body', [
|
$this->setData(['theme', 'body', [
|
||||||
'backgroundColor' => $this->getInput('themeBodyBackgroundColor'),
|
'backgroundColor' => $this->getInput('themeBodyBackgroundColor'),
|
||||||
'image' => $this->getInput('themeBodyImage'),
|
'image' => $this->getInput('themeBodyImage'),
|
||||||
@ -341,12 +349,15 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Options du pied de page
|
* Options du pied de page
|
||||||
*/
|
*/
|
||||||
public function footer() {
|
public function footer()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
if ( $this->getInput('themeFooterCopyrightPosition') === 'hide' &&
|
if (
|
||||||
|
$this->getInput('themeFooterCopyrightPosition') === 'hide' &&
|
||||||
$this->getInput('themeFooterSocialsPosition') === 'hide' &&
|
$this->getInput('themeFooterSocialsPosition') === 'hide' &&
|
||||||
$this->getInput('themeFooterTextPosition') === 'hide' ) {
|
$this->getInput('themeFooterTextPosition') === 'hide'
|
||||||
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => 'Sélectionnez au moins un contenu à afficher',
|
'notification' => 'Sélectionnez au moins un contenu à afficher',
|
||||||
@ -379,13 +390,13 @@ class theme extends common {
|
|||||||
'displayCookie' => $this->getInput('themefooterDisplayCookie', helper::FILTER_BOOLEAN),
|
'displayCookie' => $this->getInput('themefooterDisplayCookie', helper::FILTER_BOOLEAN),
|
||||||
'displayLegal' => $this->getInput('themeFooterDisplayLegal', helper::FILTER_BOOLEAN),
|
'displayLegal' => $this->getInput('themeFooterDisplayLegal', helper::FILTER_BOOLEAN),
|
||||||
'displaySearch' => $this->getInput('themeFooterDisplaySearch', helper::FILTER_BOOLEAN),
|
'displaySearch' => $this->getInput('themeFooterDisplaySearch', helper::FILTER_BOOLEAN),
|
||||||
'memberBar'=> $this->getInput('themeFooterMemberBar', helper::FILTER_BOOLEAN),
|
'memberBar' => $this->getInput('themeFooterMemberBar', helper::FILTER_BOOLEAN),
|
||||||
'template' => $this->getInput('themeFooterTemplate')
|
'template' => $this->getInput('themeFooterTemplate')
|
||||||
]]);
|
]]);
|
||||||
|
|
||||||
// Sauvegarder la configuration localisée
|
// Sauvegarder la configuration localisée
|
||||||
$this->setData(['locale','legalPageId', $this->getInput('configLegalPageId')]);
|
$this->setData(['locale', 'legalPageId', $this->getInput('configLegalPageId')]);
|
||||||
$this->setData(['locale','searchPageId', $this->getInput('configSearchPageId')]);
|
$this->setData(['locale', 'searchPageId', $this->getInput('configSearchPageId')]);
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -398,9 +409,11 @@ class theme extends common {
|
|||||||
|
|
||||||
// Liste des pages
|
// Liste des pages
|
||||||
self::$pagesList = $this->getData(['page']);
|
self::$pagesList = $this->getData(['page']);
|
||||||
foreach(self::$pagesList as $page => $pageId) {
|
foreach (self::$pagesList as $page => $pageId) {
|
||||||
if ($this->getData(['page',$page,'block']) === 'bar' ||
|
if (
|
||||||
$this->getData(['page',$page,'disable']) === true) {
|
$this->getData(['page', $page, 'block']) === 'bar' ||
|
||||||
|
$this->getData(['page', $page, 'disable']) === true
|
||||||
|
) {
|
||||||
unset(self::$pagesList[$page]);
|
unset(self::$pagesList[$page]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -422,21 +435,22 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Options de la bannière
|
* Options de la bannière
|
||||||
*/
|
*/
|
||||||
public function header() {
|
public function header()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Modification des URL des images dans la bannière perso
|
// Modification des URL des images dans la bannière perso
|
||||||
$featureContent = $this->getInput('themeHeaderText', null);
|
$featureContent = $this->getInput('themeHeaderText', null);
|
||||||
/**
|
/**
|
||||||
* Stocker les images incluses dans la bannière perso dans un tableau
|
* Stocker les images incluses dans la bannière perso dans un tableau
|
||||||
*/
|
*/
|
||||||
$files = [];
|
$files = [];
|
||||||
preg_match_all('/<img[^>]+>/i',$featureContent, $results);
|
preg_match_all('/<img[^>]+>/i', $featureContent, $results);
|
||||||
foreach($results[0] as $value) {
|
foreach ($results[0] as $value) {
|
||||||
// Lire le contenu XML
|
// Lire le contenu XML
|
||||||
$sx = simplexml_load_string($value);
|
$sx = simplexml_load_string($value);
|
||||||
// Élément à remplacer
|
// Élément à remplacer
|
||||||
$files [] = str_replace('./site/file/source/','',(string) $sx[0]['src']);
|
$files[] = str_replace('./site/file/source/', '', (string) $sx[0]['src']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sauvegarder
|
// Sauvegarder
|
||||||
@ -456,7 +470,7 @@ class theme extends common {
|
|||||||
'textColor' => $this->getInput('themeHeaderTextColor'),
|
'textColor' => $this->getInput('themeHeaderTextColor'),
|
||||||
'textHide' => $this->getInput('themeHeaderTextHide', helper::FILTER_BOOLEAN),
|
'textHide' => $this->getInput('themeHeaderTextHide', helper::FILTER_BOOLEAN),
|
||||||
'textTransform' => $this->getInput('themeHeaderTextTransform'),
|
'textTransform' => $this->getInput('themeHeaderTextTransform'),
|
||||||
'linkHomePage' => $this->getInput('themeHeaderlinkHomePage',helper::FILTER_BOOLEAN),
|
'linkHomePage' => $this->getInput('themeHeaderlinkHomePage', helper::FILTER_BOOLEAN),
|
||||||
'imageContainer' => $this->getInput('themeHeaderImageContainer'),
|
'imageContainer' => $this->getInput('themeHeaderImageContainer'),
|
||||||
'tinyHidden' => $this->getInput('themeHeaderTinyHidden', helper::FILTER_BOOLEAN),
|
'tinyHidden' => $this->getInput('themeHeaderTinyHidden', helper::FILTER_BOOLEAN),
|
||||||
'feature' => $this->getInput('themeHeaderFeature'),
|
'feature' => $this->getInput('themeHeaderFeature'),
|
||||||
@ -464,19 +478,18 @@ class theme extends common {
|
|||||||
'featureFiles' => $files
|
'featureFiles' => $files
|
||||||
]]);
|
]]);
|
||||||
// Modification de la position du menu selon la position de la bannière
|
// Modification de la position du menu selon la position de la bannière
|
||||||
if ( $this->getData(['theme','header','position']) == 'site' )
|
if ($this->getData(['theme', 'header', 'position']) == 'site') {
|
||||||
{
|
$this->setData(['theme', 'menu', 'position', str_replace('body-', 'site-', $this->getData(['theme', 'menu', 'position']))]);
|
||||||
$this->setData(['theme', 'menu', 'position',str_replace ('body-','site-',$this->getData(['theme','menu','position']))]);
|
|
||||||
}
|
}
|
||||||
if ( $this->getData(['theme','header','position']) == 'body')
|
if ($this->getData(['theme', 'header', 'position']) == 'body') {
|
||||||
{
|
$this->setData(['theme', 'menu', 'position', str_replace('site-', 'body-', $this->getData(['theme', 'menu', 'position']))]);
|
||||||
$this->setData(['theme', 'menu', 'position',str_replace ('site-','body-',$this->getData(['theme','menu','position']))]);
|
|
||||||
}
|
}
|
||||||
// Menu accroché à la bannière qui devient cachée
|
// Menu accroché à la bannière qui devient cachée
|
||||||
if ( $this->getData(['theme','header','position']) == 'hide' &&
|
if (
|
||||||
in_array( $this->getData(['theme','menu','position']) , ['body-first', 'site-first', 'body-first' , 'site-second'])
|
$this->getData(['theme', 'header', 'position']) == 'hide' &&
|
||||||
|
in_array($this->getData(['theme', 'menu', 'position']), ['body-first', 'site-first', 'body-first', 'site-second'])
|
||||||
) {
|
) {
|
||||||
$this->setData(['theme', 'menu', 'position','site']);
|
$this->setData(['theme', 'menu', 'position', 'site']);
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -503,7 +516,8 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Accueil de la personnalisation
|
* Accueil de la personnalisation
|
||||||
*/
|
*/
|
||||||
public function index() {
|
public function index()
|
||||||
|
{
|
||||||
|
|
||||||
// Restaurer les fontes utilisateurs
|
// Restaurer les fontes utilisateurs
|
||||||
$this->setFonts('user');
|
$this->setFonts('user');
|
||||||
@ -518,9 +532,10 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Options du menu
|
* Options du menu
|
||||||
*/
|
*/
|
||||||
public function menu() {
|
public function menu()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
$this->setData(['theme', 'menu', [
|
$this->setData(['theme', 'menu', [
|
||||||
'backgroundColor' => $this->getInput('themeMenuBackgroundColor'),
|
'backgroundColor' => $this->getInput('themeMenuBackgroundColor'),
|
||||||
'backgroundColorSub' => $this->getInput('themeMenuBackgroundColorSub'),
|
'backgroundColorSub' => $this->getInput('themeMenuBackgroundColorSub'),
|
||||||
@ -569,27 +584,28 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Options des fontes
|
* Options des fontes
|
||||||
*/
|
*/
|
||||||
public function fonts() {
|
public function fonts()
|
||||||
|
{
|
||||||
|
|
||||||
// Toutes les fontes installées sont chargées
|
// Toutes les fontes installées sont chargées
|
||||||
$this->setFonts('all');
|
$this->setFonts('all');
|
||||||
|
|
||||||
// Polices liées au thème
|
// Polices liées au thème
|
||||||
$used = [
|
$used = [
|
||||||
'Bannière' => $this->getData (['theme', 'header', 'font']),
|
'Bannière' => $this->getData(['theme', 'header', 'font']),
|
||||||
'Menu' => $this->getData (['theme', 'menu', 'font']),
|
'Menu' => $this->getData(['theme', 'menu', 'font']),
|
||||||
'Titre ' => $this->getData (['theme', 'title', 'font']),
|
'Titre ' => $this->getData(['theme', 'title', 'font']),
|
||||||
'Texte' => $this->getData (['theme', 'text', 'font']),
|
'Texte' => $this->getData(['theme', 'text', 'font']),
|
||||||
'Pied de page' => $this->getData (['theme', 'footer', 'font']),
|
'Pied de page' => $this->getData(['theme', 'footer', 'font']),
|
||||||
'Titre (admin)' => $this->getData (['admin', 'fontTitle' ]),
|
'Titre (admin)' => $this->getData(['admin', 'fontTitle']),
|
||||||
'Admin (texte)' => $this->getData (['admin', 'fontText' ])
|
'Admin (texte)' => $this->getData(['admin', 'fontText'])
|
||||||
];
|
];
|
||||||
|
|
||||||
// Récupérer le détail des fontes installées
|
// Récupérer le détail des fontes installées
|
||||||
//$f = $this->getFonts();
|
//$f = $this->getFonts();
|
||||||
$f ['files'] = $this->getData(['fonts', 'files']);
|
$f['files'] = $this->getData(['fonts', 'files']);
|
||||||
$f ['imported'] = $this->getData(['fonts', 'imported']);
|
$f['imported'] = $this->getData(['fonts', 'imported']);
|
||||||
$f ['websafe'] = self::$fontsWebSafe;
|
$f['websafe'] = self::$fontsWebSafe;
|
||||||
|
|
||||||
// Parcourir les fontes disponibles et construire le tableau pour le formulaire
|
// Parcourir les fontes disponibles et construire le tableau pour le formulaire
|
||||||
foreach ($f as $type => $typeValue) {
|
foreach ($f as $type => $typeValue) {
|
||||||
@ -598,13 +614,13 @@ class theme extends common {
|
|||||||
// Fontes utilisées par les thèmes
|
// Fontes utilisées par les thèmes
|
||||||
$fontUsed[$fontId] = '';
|
$fontUsed[$fontId] = '';
|
||||||
foreach ($used as $key => $value) {
|
foreach ($used as $key => $value) {
|
||||||
if ( $value === $fontId) {
|
if ($value === $fontId) {
|
||||||
$fontUsed[$fontId] .= $key . '<br/>';
|
$fontUsed[$fontId] .= $key . '<br/>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self::$fontsDetail [] = [
|
self::$fontsDetail[] = [
|
||||||
$fontId,
|
$fontId,
|
||||||
'<span style="font-family:' . $f[$type][$fontId]['font-family'] . '">' . $f[$type][$fontId]['name'] . '</span>' ,
|
'<span style="font-family:' . $f[$type][$fontId]['font-family'] . '">' . $f[$type][$fontId]['name'] . '</span>',
|
||||||
$f[$type][$fontId]['font-family'],
|
$f[$type][$fontId]['font-family'],
|
||||||
$fontUsed[$fontId],
|
$fontUsed[$fontId],
|
||||||
$type,
|
$type,
|
||||||
@ -637,14 +653,15 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Ajouter une fonte
|
* Ajouter une fonte
|
||||||
*/
|
*/
|
||||||
public function fontAdd() {
|
public function fontAdd()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if ($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Type d'import en ligne ou local
|
// Type d'import en ligne ou local
|
||||||
$type = $this->getInput('fontAddFontImported', helper::FILTER_BOOLEAN) ? 'imported' : 'files';
|
$type = $this->getInput('fontAddFontImported', helper::FILTER_BOOLEAN) ? 'imported' : 'files';
|
||||||
$typeFlip = $type === 'files' ? 'imported' : 'files';
|
$typeFlip = $type === 'files' ? 'imported' : 'files';
|
||||||
$ressource = $type === 'imported' ? $this->getInput('fontAddUrl', null) : $this->getInput('fontAddFile', null);
|
$ressource = $type === 'imported' ? $this->getInput('fontAddUrl', null) : $this->getInput('fontAddFile', null);
|
||||||
if (!empty($ressource) ) {
|
if (!empty($ressource)) {
|
||||||
$fontId = $this->getInput('fontAddFontId', null, true);
|
$fontId = $this->getInput('fontAddFontId', null, true);
|
||||||
$fontName = $this->getInput('fontAddFontName', null, true);
|
$fontName = $this->getInput('fontAddFontName', null, true);
|
||||||
$fontFamilyName = $this->getInput('fontAddFontFamilyName', null, true);
|
$fontFamilyName = $this->getInput('fontAddFontFamilyName', null, true);
|
||||||
@ -653,24 +670,27 @@ class theme extends common {
|
|||||||
$fontFamilyName = str_replace('"', '\'', $fontFamilyName);
|
$fontFamilyName = str_replace('"', '\'', $fontFamilyName);
|
||||||
|
|
||||||
// Supprime la fonte si elle existe dans le type inverse
|
// Supprime la fonte si elle existe dans le type inverse
|
||||||
if (is_array($this->getData(['fonts', $typeFlip, $fontId])) ) {
|
if (is_array($this->getData(['fonts', $typeFlip, $fontId]))) {
|
||||||
$this->deleteData(['fonts', $typeFlip, $fontId ]);
|
$this->deleteData(['fonts', $typeFlip, $fontId]);
|
||||||
}
|
}
|
||||||
// Stocker la fonte
|
// Stocker la fonte
|
||||||
$this->setData(['fonts',
|
$this->setData([
|
||||||
|
'fonts',
|
||||||
$type,
|
$type,
|
||||||
$fontId, [
|
$fontId, [
|
||||||
'name' => $fontName,
|
'name' => $fontName,
|
||||||
'font-family' => $fontFamilyName,
|
'font-family' => $fontFamilyName,
|
||||||
'resource' => $ressource
|
'resource' => $ressource
|
||||||
]]);
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
|
||||||
// Copier la fonte si le nom du fichier est fourni
|
// Copier la fonte si le nom du fichier est fourni
|
||||||
if ( $type === 'files' &&
|
if (
|
||||||
|
$type === 'files' &&
|
||||||
file_exists(self::FILE_DIR . 'source/' . $ressource)
|
file_exists(self::FILE_DIR . 'source/' . $ressource)
|
||||||
) {
|
) {
|
||||||
copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $ressource );
|
copy(self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $ressource);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -699,7 +719,8 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Ajouter une fonte
|
* Ajouter une fonte
|
||||||
*/
|
*/
|
||||||
public function fontEdit() {
|
public function fontEdit()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if ($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Type d'import en ligne ou local
|
// Type d'import en ligne ou local
|
||||||
@ -707,29 +728,32 @@ class theme extends common {
|
|||||||
$typeFlip = $type === 'files' ? 'imported' : 'files';
|
$typeFlip = $type === 'files' ? 'imported' : 'files';
|
||||||
$ressource = $type === 'imported' ? $this->getInput('fontEditUrl', null) : $this->getInput('fontEditFile', null);
|
$ressource = $type === 'imported' ? $this->getInput('fontEditUrl', null) : $this->getInput('fontEditFile', null);
|
||||||
$fontId = $this->getInput('fontEditFontId', null, true);
|
$fontId = $this->getInput('fontEditFontId', null, true);
|
||||||
$fontName = $this->getInput('fontEditFontName', null , true);
|
$fontName = $this->getInput('fontEditFontName', null, true);
|
||||||
$fontFamilyName = $this->getInput('fontEditFontFamilyName', null, true);
|
$fontFamilyName = $this->getInput('fontEditFontFamilyName', null, true);
|
||||||
|
|
||||||
// Remplace les doubles quotes par des simples quotes
|
// Remplace les doubles quotes par des simples quotes
|
||||||
$fontFamilyName = str_replace('"', '\'', $fontFamilyName);
|
$fontFamilyName = str_replace('"', '\'', $fontFamilyName);
|
||||||
|
|
||||||
// Supprime la fonte si elle existe dans le type inverse
|
// Supprime la fonte si elle existe dans le type inverse
|
||||||
if (is_array($this->getData(['fonts', $typeFlip, $fontId])) ) {
|
if (is_array($this->getData(['fonts', $typeFlip, $fontId]))) {
|
||||||
$this->deleteData(['fonts', $typeFlip, $fontId ]);
|
$this->deleteData(['fonts', $typeFlip, $fontId]);
|
||||||
}
|
}
|
||||||
// Stocker les fontes
|
// Stocker les fontes
|
||||||
$this->setData(['fonts',
|
$this->setData([
|
||||||
|
'fonts',
|
||||||
$type,
|
$type,
|
||||||
$fontId, [
|
$fontId, [
|
||||||
'name' => $fontName,
|
'name' => $fontName,
|
||||||
'font-family' => $fontFamilyName,
|
'font-family' => $fontFamilyName,
|
||||||
'resource' => $ressource
|
'resource' => $ressource
|
||||||
]]);
|
]
|
||||||
|
]);
|
||||||
// Copier la fonte si le nom du fichier est fourni
|
// Copier la fonte si le nom du fichier est fourni
|
||||||
if ( $type === 'files' &&
|
if (
|
||||||
|
$type === 'files' &&
|
||||||
file_exists(self::FILE_DIR . 'source/' . $ressource)
|
file_exists(self::FILE_DIR . 'source/' . $ressource)
|
||||||
) {
|
) {
|
||||||
copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $ressource );
|
copy(self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $ressource);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -749,7 +773,8 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Effacer une fonte
|
* Effacer une fonte
|
||||||
*/
|
*/
|
||||||
public function fontDelete() {
|
public function fontDelete()
|
||||||
|
{
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
if ($this->getUrl(4) !== $_SESSION['csrf']) {
|
if ($this->getUrl(4) !== $_SESSION['csrf']) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -765,8 +790,10 @@ class theme extends common {
|
|||||||
$this->deleteData(['fonts', $this->getUrl(2), $this->getUrl(3)]);
|
$this->deleteData(['fonts', $this->getUrl(2), $this->getUrl(3)]);
|
||||||
|
|
||||||
// Effacer le fichier existant
|
// Effacer le fichier existant
|
||||||
if ( $this->getUrl(2) === 'file' &&
|
if (
|
||||||
file_exists(self::DATA_DIR . $this->getUrl(2)) ) {
|
$this->getUrl(2) === 'file' &&
|
||||||
|
file_exists(self::DATA_DIR . $this->getUrl(2))
|
||||||
|
) {
|
||||||
unlink(self::DATA_DIR . $this->getUrl(2));
|
unlink(self::DATA_DIR . $this->getUrl(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -783,15 +810,17 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Réinitialisation de la personnalisation avancée
|
* Réinitialisation de la personnalisation avancée
|
||||||
*/
|
*/
|
||||||
public function reset() {
|
public function reset()
|
||||||
|
{
|
||||||
// $url prend l'adresse sans le token
|
// $url prend l'adresse sans le token
|
||||||
$url = explode('&',$this->getUrl(2));
|
$url = explode('&', $this->getUrl(2));
|
||||||
|
|
||||||
if ( isset($_GET['csrf'])
|
if (
|
||||||
AND $_GET['csrf'] === $_SESSION['csrf']
|
isset($_GET['csrf'])
|
||||||
|
and $_GET['csrf'] === $_SESSION['csrf']
|
||||||
) {
|
) {
|
||||||
// Réinitialisation
|
// Réinitialisation
|
||||||
$redirect ='';
|
$redirect = '';
|
||||||
switch ($url[0]) {
|
switch ($url[0]) {
|
||||||
case 'admin':
|
case 'admin':
|
||||||
$this->initData('admin', self::$i18nUI);
|
$this->initData('admin', self::$i18nUI);
|
||||||
@ -802,10 +831,10 @@ class theme extends common {
|
|||||||
$redirect = helper::baseUrl() . 'theme/manage';
|
$redirect = helper::baseUrl() . 'theme/manage';
|
||||||
break;
|
break;
|
||||||
case 'custom':
|
case 'custom':
|
||||||
unlink(self::DATA_DIR.'custom.css');
|
unlink(self::DATA_DIR . 'custom.css');
|
||||||
$redirect = helper::baseUrl() . 'theme/advanced';
|
$redirect = helper::baseUrl() . 'theme/advanced';
|
||||||
break;
|
break;
|
||||||
default :
|
default:
|
||||||
$redirect = helper::baseUrl() . 'theme';
|
$redirect = helper::baseUrl() . 'theme';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -827,9 +856,10 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Options du site
|
* Options du site
|
||||||
*/
|
*/
|
||||||
public function site() {
|
public function site()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
$this->setData(['theme', 'title', [
|
$this->setData(['theme', 'title', [
|
||||||
'font' => $this->getInput('themeTitleFont'),
|
'font' => $this->getInput('themeTitleFont'),
|
||||||
'textColor' => $this->getInput('themeTitleTextColor'),
|
'textColor' => $this->getInput('themeTitleTextColor'),
|
||||||
@ -840,14 +870,14 @@ class theme extends common {
|
|||||||
'font' => $this->getInput('themeTextFont'),
|
'font' => $this->getInput('themeTextFont'),
|
||||||
'fontSize' => $this->getInput('themeTextFontSize'),
|
'fontSize' => $this->getInput('themeTextFontSize'),
|
||||||
'textColor' => $this->getInput('themeTextTextColor'),
|
'textColor' => $this->getInput('themeTextTextColor'),
|
||||||
'linkColor'=> $this->getInput('themeTextLinkColor')
|
'linkColor' => $this->getInput('themeTextLinkColor')
|
||||||
]]);
|
]]);
|
||||||
$this->setData(['theme', 'site', [
|
$this->setData(['theme', 'site', [
|
||||||
'backgroundColor' => $this->getInput('themeSiteBackgroundColor'),
|
'backgroundColor' => $this->getInput('themeSiteBackgroundColor'),
|
||||||
'radius' => $this->getInput('themeSiteRadius'),
|
'radius' => $this->getInput('themeSiteRadius'),
|
||||||
'shadow' => $this->getInput('themeSiteShadow'),
|
'shadow' => $this->getInput('themeSiteShadow'),
|
||||||
'width' => $this->getInput('themeSiteWidth'),
|
'width' => $this->getInput('themeSiteWidth'),
|
||||||
'margin' => $this->getInput('themeSiteMargin',helper::FILTER_BOOLEAN)
|
'margin' => $this->getInput('themeSiteMargin', helper::FILTER_BOOLEAN)
|
||||||
]]);
|
]]);
|
||||||
$this->setData(['theme', 'button', [
|
$this->setData(['theme', 'button', [
|
||||||
'backgroundColor' => $this->getInput('themeButtonBackgroundColor')
|
'backgroundColor' => $this->getInput('themeButtonBackgroundColor')
|
||||||
@ -881,11 +911,12 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Import du thème
|
* Import du thème
|
||||||
*/
|
*/
|
||||||
public function manage() {
|
public function manage()
|
||||||
if($this->isPost() ) {
|
{
|
||||||
|
if ($this->isPost()) {
|
||||||
|
|
||||||
$zipFilename = $this->getInput('themeManageImport', helper::FILTER_STRING_SHORT, true);
|
$zipFilename = $this->getInput('themeManageImport', helper::FILTER_STRING_SHORT, true);
|
||||||
$data = $this->import(self::FILE_DIR.'source/' . $zipFilename);
|
$data = $this->import(self::FILE_DIR . 'source/' . $zipFilename);
|
||||||
if ($data['success']) {
|
if ($data['success']) {
|
||||||
header("Refresh:0");
|
header("Refresh:0");
|
||||||
} else {
|
} else {
|
||||||
@ -911,10 +942,13 @@ class theme extends common {
|
|||||||
* @param @return array contenant $success = true ou false ; $ notification string message à afficher
|
* @param @return array contenant $success = true ou false ; $ notification string message à afficher
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function import($zipName = '') {
|
public function import($zipName = '')
|
||||||
|
{
|
||||||
|
|
||||||
if ($zipName !== '' &&
|
if (
|
||||||
file_exists($zipName)) {
|
$zipName !== '' &&
|
||||||
|
file_exists($zipName)
|
||||||
|
) {
|
||||||
// Init variables de retour
|
// Init variables de retour
|
||||||
$success = false;
|
$success = false;
|
||||||
$notification = '';
|
$notification = '';
|
||||||
@ -923,26 +957,24 @@ class theme extends common {
|
|||||||
// Ouvrir le zip
|
// Ouvrir le zip
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
if ($zip->open($zipName) === TRUE) {
|
if ($zip->open($zipName) === TRUE) {
|
||||||
mkdir (self::TEMP_DIR . $tempFolder, 0755);
|
mkdir(self::TEMP_DIR . $tempFolder, 0755);
|
||||||
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
$zip->extractTo(self::TEMP_DIR . $tempFolder);
|
||||||
$modele = '';
|
$modele = '';
|
||||||
// Archive de thème ?
|
// Archive de thème ?
|
||||||
if (
|
if (
|
||||||
file_exists(self::TEMP_DIR . $tempFolder . '/site/data/custom.css')
|
file_exists(self::TEMP_DIR . $tempFolder . '/site/data/custom.css')
|
||||||
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.css')
|
and file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.css')
|
||||||
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.json')
|
and file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.json')
|
||||||
) {
|
) {
|
||||||
$modele = 'theme';
|
$modele = 'theme';
|
||||||
}
|
}
|
||||||
if(
|
if (
|
||||||
file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.json')
|
file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.json')
|
||||||
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.css')
|
and file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.css')
|
||||||
) {
|
) {
|
||||||
$modele = 'admin';
|
$modele = 'admin';
|
||||||
|
|
||||||
}
|
}
|
||||||
if (!empty($modele)
|
if (!empty($modele)) {
|
||||||
) {
|
|
||||||
// traiter l'archive
|
// traiter l'archive
|
||||||
$success = $zip->extractTo('.');
|
$success = $zip->extractTo('.');
|
||||||
|
|
||||||
@ -950,8 +982,9 @@ class theme extends common {
|
|||||||
if ($modele = 'theme') {
|
if ($modele = 'theme') {
|
||||||
$c = $this->subFonts(self::DATA_DIR . 'theme.json');
|
$c = $this->subFonts(self::DATA_DIR . 'theme.json');
|
||||||
// Un remplacement nécessite la régénération de la feuille de style
|
// Un remplacement nécessite la régénération de la feuille de style
|
||||||
if ($c > 0
|
if (
|
||||||
AND file_exists(self::DATA_DIR . 'theme.css')
|
$c > 0
|
||||||
|
and file_exists(self::DATA_DIR . 'theme.css')
|
||||||
) {
|
) {
|
||||||
unlink(self::DATA_DIR . 'theme.css');
|
unlink(self::DATA_DIR . 'theme.css');
|
||||||
}
|
}
|
||||||
@ -959,8 +992,9 @@ class theme extends common {
|
|||||||
if ($modele = 'admin') {
|
if ($modele = 'admin') {
|
||||||
$c = $this->subFonts(self::DATA_DIR . 'admin.json');
|
$c = $this->subFonts(self::DATA_DIR . 'admin.json');
|
||||||
// Un remplacement nécessite la régénération de la feuille de style
|
// Un remplacement nécessite la régénération de la feuille de style
|
||||||
if ($c > 0
|
if (
|
||||||
AND file_exists(self::DATA_DIR . 'admin.css')
|
$c > 0
|
||||||
|
and file_exists(self::DATA_DIR . 'admin.css')
|
||||||
) {
|
) {
|
||||||
unlink(self::DATA_DIR . 'admin.css');
|
unlink(self::DATA_DIR . 'admin.css');
|
||||||
}
|
}
|
||||||
@ -968,8 +1002,6 @@ class theme extends common {
|
|||||||
|
|
||||||
// traitement d'erreur
|
// traitement d'erreur
|
||||||
$notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.';
|
$notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.';
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// pas une archive de thème
|
// pas une archive de thème
|
||||||
$success = false;
|
$success = false;
|
||||||
@ -994,7 +1026,8 @@ class theme extends common {
|
|||||||
/**
|
/**
|
||||||
* Export du thème
|
* Export du thème
|
||||||
*/
|
*/
|
||||||
public function export() {
|
public function export()
|
||||||
|
{
|
||||||
// Make zip
|
// Make zip
|
||||||
$zipFilename = $this->zipTheme($this->getUrl(2));
|
$zipFilename = $this->zipTheme($this->getUrl(2));
|
||||||
// Téléchargement du ZIP
|
// Téléchargement du ZIP
|
||||||
@ -1005,26 +1038,27 @@ class theme extends common {
|
|||||||
header('Content-Length: ' . filesize(self::TEMP_DIR . $zipFilename));
|
header('Content-Length: ' . filesize(self::TEMP_DIR . $zipFilename));
|
||||||
readfile(self::TEMP_DIR . $zipFilename);
|
readfile(self::TEMP_DIR . $zipFilename);
|
||||||
// Nettoyage du dossier
|
// Nettoyage du dossier
|
||||||
unlink (self::TEMP_DIR . $zipFilename);
|
unlink(self::TEMP_DIR . $zipFilename);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Export du thème
|
* Export du thème
|
||||||
*/
|
*/
|
||||||
public function save() {
|
public function save()
|
||||||
|
{
|
||||||
// Make zip
|
// Make zip
|
||||||
$zipFilename = $this->zipTheme($this->getUrl(2));
|
$zipFilename = $this->zipTheme($this->getUrl(2));
|
||||||
// Téléchargement du ZIP
|
// Téléchargement du ZIP
|
||||||
if (!is_dir(self::FILE_DIR.'source/theme')) {
|
if (!is_dir(self::FILE_DIR . 'source/theme')) {
|
||||||
mkdir(self::FILE_DIR.'source/theme', 0755);
|
mkdir(self::FILE_DIR . 'source/theme', 0755);
|
||||||
}
|
}
|
||||||
copy (self::TEMP_DIR . $zipFilename , self::FILE_DIR.'source/theme/' . $zipFilename);
|
copy(self::TEMP_DIR . $zipFilename, self::FILE_DIR . 'source/theme/' . $zipFilename);
|
||||||
// Nettoyage du dossier
|
// Nettoyage du dossier
|
||||||
unlink (self::TEMP_DIR . $zipFilename);
|
unlink(self::TEMP_DIR . $zipFilename);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => 'Archive <b>'.$zipFilename.'</b> sauvegardée avec succès',
|
'notification' => 'Archive <b>' . $zipFilename . '</b> sauvegardée avec succès',
|
||||||
'redirect' => helper::baseUrl() . 'theme/manage',
|
'redirect' => helper::baseUrl() . 'theme/manage',
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
@ -1034,58 +1068,63 @@ class theme extends common {
|
|||||||
* construction du zip Fonction appelée par export() et save()
|
* construction du zip Fonction appelée par export() et save()
|
||||||
* @param string $modele theme ou admin
|
* @param string $modele theme ou admin
|
||||||
*/
|
*/
|
||||||
private function zipTheme($modele) {
|
private function zipTheme($modele)
|
||||||
|
{
|
||||||
// Creation du dossier
|
// Creation du dossier
|
||||||
$zipFilename = $modele . date('Y-m-d-H-i-s', time()) . '.zip';
|
$zipFilename = $modele . date('Y-m-d-H-i-s', time()) . '.zip';
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
if ($zip->open(self::TEMP_DIR . $zipFilename, ZipArchive::CREATE | ZipArchive::OVERWRITE ) === TRUE) {
|
if ($zip->open(self::TEMP_DIR . $zipFilename, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
|
||||||
switch ($modele) {
|
switch ($modele) {
|
||||||
case 'admin':
|
case 'admin':
|
||||||
$zip->addFile(self::DATA_DIR.'admin.json',self::DATA_DIR.'admin.json');
|
$zip->addFile(self::DATA_DIR . 'admin.json', self::DATA_DIR . 'admin.json');
|
||||||
$zip->addFile(self::DATA_DIR.'admin.css',self::DATA_DIR.'admin.css');
|
$zip->addFile(self::DATA_DIR . 'admin.css', self::DATA_DIR . 'admin.css');
|
||||||
// Ajoute les fontes
|
// Ajoute les fontes
|
||||||
$zip->addEmptyDir(self::DATA_DIR .'fonts');
|
$zip->addEmptyDir(self::DATA_DIR . 'fonts');
|
||||||
$fonts = $this->getData(['fonts', 'files']);
|
$fonts = $this->getData(['fonts', 'files']);
|
||||||
foreach ($fonts as $fontId => $fontName) {
|
foreach ($fonts as $fontId => $fontName) {
|
||||||
$zip->addFile(self::DATA_DIR .'fonts/' . $fontName, self::DATA_DIR.'fonts/' . $fontName);
|
$zip->addFile(self::DATA_DIR . 'fonts/' . $fontName, self::DATA_DIR . 'fonts/' . $fontName);
|
||||||
}
|
}
|
||||||
if (file_exists(self::DATA_DIR .'fonts/fonts.html')) {
|
if (file_exists(self::DATA_DIR . 'fonts/fonts.html')) {
|
||||||
|
|
||||||
$zip->addFile(self::DATA_DIR .'fonts/fonts.html', self::DATA_DIR .'fonts/fonts.html');
|
$zip->addFile(self::DATA_DIR . 'fonts/fonts.html', self::DATA_DIR . 'fonts/fonts.html');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'theme':
|
case 'theme':
|
||||||
$zip->addFile(self::DATA_DIR.'theme.json',self::DATA_DIR.'theme.json');
|
$zip->addFile(self::DATA_DIR . 'theme.json', self::DATA_DIR . 'theme.json');
|
||||||
$zip->addFile(self::DATA_DIR.'theme.css',self::DATA_DIR.'theme.css');
|
$zip->addFile(self::DATA_DIR . 'theme.css', self::DATA_DIR . 'theme.css');
|
||||||
$zip->addFile(self::DATA_DIR.'custom.css',self::DATA_DIR.'custom.css');
|
$zip->addFile(self::DATA_DIR . 'custom.css', self::DATA_DIR . 'custom.css');
|
||||||
// Traite l'image dans le body
|
// Traite l'image dans le body
|
||||||
if ($this->getData(['theme','body','image']) !== '' ) {
|
if ($this->getData(['theme', 'body', 'image']) !== '') {
|
||||||
$zip->addFile(self::FILE_DIR.'source/'.$this->getData(['theme','body','image']),
|
$zip->addFile(
|
||||||
self::FILE_DIR.'source/'.$this->getData(['theme','body','image'])
|
self::FILE_DIR . 'source/' . $this->getData(['theme', 'body', 'image']),
|
||||||
|
self::FILE_DIR . 'source/' . $this->getData(['theme', 'body', 'image'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// Traite l'image dans le header
|
// Traite l'image dans le header
|
||||||
if ($this->getData(['theme','header','image']) !== '' ) {
|
if ($this->getData(['theme', 'header', 'image']) !== '') {
|
||||||
$zip->addFile(self::FILE_DIR.'source/'.$this->getData(['theme','header','image']),
|
$zip->addFile(
|
||||||
self::FILE_DIR.'source/'.$this->getData(['theme','header','image'])
|
self::FILE_DIR . 'source/' . $this->getData(['theme', 'header', 'image']),
|
||||||
|
self::FILE_DIR . 'source/' . $this->getData(['theme', 'header', 'image'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// Traite les images du header perso
|
// Traite les images du header perso
|
||||||
if (!empty($this->getData(['theme','header','featureFiles'])) ) {
|
if (!empty($this->getData(['theme', 'header', 'featureFiles']))) {
|
||||||
foreach($this->getData(['theme','header','featureFiles']) as $value) {
|
foreach ($this->getData(['theme', 'header', 'featureFiles']) as $value) {
|
||||||
$zip->addFile(self::FILE_DIR . 'source/' . $value,
|
$zip->addFile(
|
||||||
self::FILE_DIR . 'source/' . $value );
|
self::FILE_DIR . 'source/' . $value,
|
||||||
|
self::FILE_DIR . 'source/' . $value
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Ajoute les fontes
|
// Ajoute les fontes
|
||||||
$zip->addEmptyDir(self::DATA_DIR .'fonts');
|
$zip->addEmptyDir(self::DATA_DIR . 'fonts');
|
||||||
$fonts = $this->getData(['fonts', 'files']);
|
$fonts = $this->getData(['fonts', 'files']);
|
||||||
foreach ($fonts as $fontId => $fontName) {
|
foreach ($fonts as $fontId => $fontName) {
|
||||||
$zip->addFile(self::DATA_DIR .'fonts/' . $fontName, self::DATA_DIR.'fonts/' . $fontName);
|
$zip->addFile(self::DATA_DIR . 'fonts/' . $fontName, self::DATA_DIR . 'fonts/' . $fontName);
|
||||||
}
|
}
|
||||||
if (file_exists(self::DATA_DIR .'fonts/fonts.html')) {
|
if (file_exists(self::DATA_DIR . 'fonts/fonts.html')) {
|
||||||
|
|
||||||
$zip->addFile(self::DATA_DIR .'fonts/fonts.html', self::DATA_DIR .'fonts/fonts.html');
|
$zip->addFile(self::DATA_DIR . 'fonts/fonts.html', self::DATA_DIR . 'fonts/fonts.html');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1100,7 +1139,8 @@ class theme extends common {
|
|||||||
* @param string $file, nom du fichier json à convertir
|
* @param string $file, nom du fichier json à convertir
|
||||||
* @return int nombre de substitution effectuées
|
* @return int nombre de substitution effectuées
|
||||||
*/
|
*/
|
||||||
private function subFonts($file) {
|
private function subFonts($file)
|
||||||
|
{
|
||||||
// Tableau de substitution des fontes
|
// Tableau de substitution des fontes
|
||||||
$fonts = [
|
$fonts = [
|
||||||
'Abril+Fatface' => 'abril-fatface',
|
'Abril+Fatface' => 'abril-fatface',
|
||||||
@ -1113,19 +1153,19 @@ class theme extends common {
|
|||||||
'Droid+Serif' => 'droid-serif-2',
|
'Droid+Serif' => 'droid-serif-2',
|
||||||
'Fira+Sans' => 'fira-sans',
|
'Fira+Sans' => 'fira-sans',
|
||||||
'Inconsolata' => 'inconsolata-2',
|
'Inconsolata' => 'inconsolata-2',
|
||||||
'Indie+Flower' =>'indie-flower',
|
'Indie+Flower' => 'indie-flower',
|
||||||
'Josefin+Slab' => 'josefin-sans-std',
|
'Josefin+Slab' => 'josefin-sans-std',
|
||||||
'Lobster' => 'lobster-2',
|
'Lobster' => 'lobster-2',
|
||||||
'Lora' => 'lora',
|
'Lora' => 'lora',
|
||||||
'Lato' =>'lato',
|
'Lato' => 'lato',
|
||||||
'Marvel' => 'montserrat-ace',
|
'Marvel' => 'montserrat-ace',
|
||||||
'Old+Standard+TT' => 'old-standard-tt-3',
|
'Old+Standard+TT' => 'old-standard-tt-3',
|
||||||
'Open+Sans' =>'open-sans',
|
'Open+Sans' => 'open-sans',
|
||||||
// Corriger l'erreur de nom de police installée par défaut, il manquait un O en majuscule
|
// Corriger l'erreur de nom de police installée par défaut, il manquait un O en majuscule
|
||||||
'open+Sans' =>'open-sans',
|
'open+Sans' => 'open-sans',
|
||||||
'Oswald' =>'oswald-4',
|
'Oswald' => 'oswald-4',
|
||||||
'PT+Mono' => 'pt-mono',
|
'PT+Mono' => 'pt-mono',
|
||||||
'PT+Serif' =>'pt-serif',
|
'PT+Serif' => 'pt-serif',
|
||||||
'Raleway' => 'raleway-5',
|
'Raleway' => 'raleway-5',
|
||||||
'Rancho' => 'rancho',
|
'Rancho' => 'rancho',
|
||||||
'Roboto' => 'Roboto',
|
'Roboto' => 'Roboto',
|
||||||
@ -1136,7 +1176,7 @@ class theme extends common {
|
|||||||
|
|
||||||
$data = file_get_contents($file);
|
$data = file_get_contents($file);
|
||||||
$count = 0;
|
$count = 0;
|
||||||
foreach ($fonts as $oldId => $newId){
|
foreach ($fonts as $oldId => $newId) {
|
||||||
$data = str_replace($oldId, $newId, $data, $c);
|
$data = str_replace($oldId, $newId, $data, $c);
|
||||||
$count = $count + (int) $c;
|
$count = $count + (int) $c;
|
||||||
}
|
}
|
||||||
@ -1151,19 +1191,20 @@ class theme extends common {
|
|||||||
|
|
||||||
// Retourne un tableau simple des fonts installées idfont avec le nom
|
// Retourne un tableau simple des fonts installées idfont avec le nom
|
||||||
// Cette fonction est utile aux sélecteurs de fonts dans les formulaires.
|
// Cette fonction est utile aux sélecteurs de fonts dans les formulaires.
|
||||||
public function enumFonts() {
|
public function enumFonts()
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* Récupère la liste des fontes installées et construit deux tableaux
|
* Récupère la liste des fontes installées et construit deux tableaux
|
||||||
* id - nom
|
* id - nom
|
||||||
* id - font-family - resource
|
* id - font-family - resource
|
||||||
*/
|
*/
|
||||||
$f ['files'] = $this->getData(['fonts', 'files']);
|
$f['files'] = $this->getData(['fonts', 'files']);
|
||||||
$f ['imported'] = $this->getData(['fonts', 'imported']);
|
$f['imported'] = $this->getData(['fonts', 'imported']);
|
||||||
$f ['websafe'] = self::$fontsWebSafe;
|
$f['websafe'] = self::$fontsWebSafe;
|
||||||
// Construit un tableau avec leur ID et leur famille
|
// Construit un tableau avec leur ID et leur famille
|
||||||
foreach(['websafe', 'imported', 'files'] as $type) {
|
foreach (['websafe', 'imported', 'files'] as $type) {
|
||||||
if (is_array($f[$type])) {
|
if (is_array($f[$type])) {
|
||||||
foreach ($f[$type] as $fontId => $fontValue ) {
|
foreach ($f[$type] as $fontId => $fontValue) {
|
||||||
self::$fonts['name'][$fontId] = $fontValue['name'];
|
self::$fonts['name'][$fontId] = $fontValue['name'];
|
||||||
self::$fonts['family'][$fontId] = $fontValue['font-family'];
|
self::$fonts['family'][$fontId] = $fontValue['font-family'];
|
||||||
}
|
}
|
||||||
@ -1178,10 +1219,12 @@ class theme extends common {
|
|||||||
* Création d'un fichier de liens d'appel des fontes
|
* Création d'un fichier de liens d'appel des fontes
|
||||||
* @param string $scope vaut all pour toutes les fontes ; 'user' pour les fontes utilisateurs
|
* @param string $scope vaut all pour toutes les fontes ; 'user' pour les fontes utilisateurs
|
||||||
*/
|
*/
|
||||||
private function setFonts($scope = 'all') {
|
private function setFonts($scope = 'all')
|
||||||
|
{
|
||||||
|
|
||||||
// Filtrage par fontes installées
|
// Filtrage par fontes installées
|
||||||
$fontsInstalled = [ $this->getData(['theme', 'text', 'font']),
|
$fontsInstalled = [
|
||||||
|
$this->getData(['theme', 'text', 'font']),
|
||||||
$this->getData(['theme', 'title', 'font']),
|
$this->getData(['theme', 'title', 'font']),
|
||||||
$this->getData(['theme', 'header', 'font']),
|
$this->getData(['theme', 'header', 'font']),
|
||||||
$this->getData(['theme', 'menu', 'font']),
|
$this->getData(['theme', 'menu', 'font']),
|
||||||
@ -1198,15 +1241,15 @@ class theme extends common {
|
|||||||
*/
|
*/
|
||||||
$gf = false;
|
$gf = false;
|
||||||
$fileContent = '<!-- Fontes personnalisées -->';
|
$fileContent = '<!-- Fontes personnalisées -->';
|
||||||
if ( !empty($this->getData(['fonts', 'imported'])) ) {
|
if (!empty($this->getData(['fonts', 'imported']))) {
|
||||||
foreach ($this->getData(['fonts', 'imported']) as $fontId => $fontValue) {
|
foreach ($this->getData(['fonts', 'imported']) as $fontId => $fontValue) {
|
||||||
if (
|
if (
|
||||||
( $scope === 'user' && in_array($fontId, $fontsInstalled) )
|
($scope === 'user' && in_array($fontId, $fontsInstalled))
|
||||||
|| $scope === 'all'
|
|| $scope === 'all'
|
||||||
) {
|
) {
|
||||||
//Pré chargement à revoir
|
//Pré chargement à revoir
|
||||||
//$fileContent .= '<link rel="preload" href="' . $fontValue['resource'] . '" crossorigin="anonymous" as="style">';
|
//$fileContent .= '<link rel="preload" href="' . $fontValue['resource'] . '" crossorigin="anonymous" as="style">';
|
||||||
$fileContent .= '<link href="' . $fontValue['resource'] .'" rel="stylesheet">';
|
$fileContent .= '<link href="' . $fontValue['resource'] . '" rel="stylesheet">';
|
||||||
// Pré connect pour api.google
|
// Pré connect pour api.google
|
||||||
$gf = strpos($fontValue['resource'], 'fonts.googleapis.com') === false ? $gf || false : $gf || true;
|
$gf = strpos($fontValue['resource'], 'fonts.googleapis.com') === false ? $gf || false : $gf || true;
|
||||||
}
|
}
|
||||||
@ -1223,20 +1266,20 @@ class theme extends common {
|
|||||||
* Fontes installées localement
|
* Fontes installées localement
|
||||||
*/
|
*/
|
||||||
$fileContentCss = '';
|
$fileContentCss = '';
|
||||||
if ( !empty($this->getData(['fonts', 'files'])) ) {
|
if (!empty($this->getData(['fonts', 'files']))) {
|
||||||
foreach ($this->getData(['fonts', 'files']) as $fontId => $fontValue) {
|
foreach ($this->getData(['fonts', 'files']) as $fontId => $fontValue) {
|
||||||
if (
|
if (
|
||||||
( $scope === 'user' && in_array($fontId, $fontsInstalled) )
|
($scope === 'user' && in_array($fontId, $fontsInstalled))
|
||||||
|| $scope === 'all'
|
|| $scope === 'all'
|
||||||
) {
|
) {
|
||||||
if (file_exists(self::DATA_DIR . 'fonts/' . $fontValue['resource']) ) {
|
if (file_exists(self::DATA_DIR . 'fonts/' . $fontValue['resource'])) {
|
||||||
// Extension
|
// Extension
|
||||||
$path_parts = pathinfo(helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontValue['resource']);
|
$path_parts = pathinfo(helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontValue['resource']);
|
||||||
// Chargement de la police
|
// Chargement de la police
|
||||||
$fileContentCss .= '@font-face {' ;
|
$fileContentCss .= '@font-face {';
|
||||||
$fileContentCss .= 'font-family:"' . $fontValue['name'] . '";';
|
$fileContentCss .= 'font-family:"' . $fontValue['name'] . '";';
|
||||||
$fileContentCss .= 'src: url("' . $fontValue['resource'] . '") format("' . $path_parts['extension'] . '");';
|
$fileContentCss .= 'src: url("' . $fontValue['resource'] . '") format("' . $path_parts['extension'] . '");';
|
||||||
$fileContentCss .= '}' ;
|
$fileContentCss .= '}';
|
||||||
// Préchargement
|
// Préchargement
|
||||||
//$fileContent = '<link rel="preload" href="' . self::DATA_DIR . 'fonts/' . $fontValue['resource'] . '" type="font/woff" crossorigin="anonymous" as="font">' . $fileContent;
|
//$fileContent = '<link rel="preload" href="' . self::DATA_DIR . 'fonts/' . $fontValue['resource'] . '" type="font/woff" crossorigin="anonymous" as="font">' . $fileContent;
|
||||||
}
|
}
|
||||||
@ -1245,10 +1288,8 @@ class theme extends common {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Enregistre la personnalisation
|
// Enregistre la personnalisation
|
||||||
file_put_contents(self::DATA_DIR.'fonts/fonts.html', $fileContent);
|
file_put_contents(self::DATA_DIR . 'fonts/fonts.html', $fileContent);
|
||||||
// Enregistre la personnalisation
|
// Enregistre la personnalisation
|
||||||
file_put_contents(self::DATA_DIR.'fonts/fonts.css', $fileContentCss);
|
file_put_contents(self::DATA_DIR . 'fonts/fonts.css', $fileContentCss);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,10 +10,10 @@
|
|||||||
* @link http://zwiicms.fr/
|
* @link http://zwiicms.fr/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aperçu en direct
|
* Aperçu en direct
|
||||||
*/
|
*/
|
||||||
$("input, select").on("change", function() {
|
$("input, select").on("change", function () {
|
||||||
|
|
||||||
var titleFont = $("#adminFontTitle").val();
|
var titleFont = $("#adminFontTitle").val();
|
||||||
var textFont = $("#adminFontText").val();
|
var textFont = $("#adminFontText").val();
|
||||||
@ -51,9 +51,9 @@ $("input, select").on("change", function() {
|
|||||||
/**
|
/**
|
||||||
* Confirmation de réinitialisation
|
* Confirmation de réinitialisation
|
||||||
*/
|
*/
|
||||||
$("#configAdminReset").on("click", function() {
|
$("#configAdminReset").on("click", function () {
|
||||||
var _this = $(this);
|
var _this = $(this);
|
||||||
return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine le thème de l\'administration ?", function() {
|
return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine le thème de l\'administration ?", function () {
|
||||||
$(location).attr("href", _this.attr("href"));
|
$(location).attr("href", _this.attr("href"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('configAdminForm'); ?>
|
<?php echo template::formOpen('configAdminForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('configAdminBack', [
|
<?php echo template::button('configAdminBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -23,13 +23,13 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2">
|
<div class="col2">
|
||||||
<?php echo template::submit('configAdminSubmit',[
|
<?php echo template::submit('configAdminSubmit', [
|
||||||
'value' => 'Valider',
|
'value' => 'Valider',
|
||||||
'ico' => 'check'
|
'ico' => 'check'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -123,8 +123,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -154,6 +154,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* Aperçu en direct
|
* Aperçu en direct
|
||||||
*/
|
*/
|
||||||
$("#themeAdvancedCss").on("change keydown keyup", function() {
|
$("#themeAdvancedCss").on("change keydown keyup", function () {
|
||||||
// Ajout du css au DOM
|
// Ajout du css au DOM
|
||||||
$("#themePreview").remove();
|
$("#themePreview").remove();
|
||||||
$("<style>")
|
$("<style>")
|
||||||
@ -27,9 +27,9 @@ $("#themeAdvancedCss").on("change keydown keyup", function() {
|
|||||||
/**
|
/**
|
||||||
* Confirmation de réinitialisation
|
* Confirmation de réinitialisation
|
||||||
*/
|
*/
|
||||||
$("#themeAdvancedReset").on("click", function() {
|
$("#themeAdvancedReset").on("click", function () {
|
||||||
var _this = $(this);
|
var _this = $(this);
|
||||||
return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine la personnalisation avancée ?", function() {
|
return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine la personnalisation avancée ?", function () {
|
||||||
$(location).attr("href", _this.attr("href"));
|
$(location).attr("href", _this.attr("href"));
|
||||||
});
|
});
|
||||||
});
|
});
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('themeAdvancedForm'); ?>
|
<?php echo template::formOpen('themeAdvancedForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('themeAdvancedBack', [
|
<?php echo template::button('themeAdvancedBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -19,13 +19,13 @@
|
|||||||
<div class="col2">
|
<div class="col2">
|
||||||
<?php echo template::submit('themeAdvancedSubmit'); ?>
|
<?php echo template::submit('themeAdvancedSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::textarea('themeAdvancedCss', [
|
<?php echo template::textarea('themeAdvancedCss', [
|
||||||
'value' => file_get_contents(self::DATA_DIR.'custom.css'),
|
'value' => file_get_contents(self::DATA_DIR . 'custom.css'),
|
||||||
'class' => 'editor'
|
'class' => 'editor'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -14,20 +14,20 @@
|
|||||||
/**
|
/**
|
||||||
* Affichage de l'icone de remontée et permettre l'aperçu.
|
* Affichage de l'icone de remontée et permettre l'aperçu.
|
||||||
*/
|
*/
|
||||||
$(document).ready(function(){
|
$(document).ready(function () {
|
||||||
$("#backToTop").css("display","show");
|
$("#backToTop").css("display", "show");
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aperçu en direct
|
* Aperçu en direct
|
||||||
*/
|
*/
|
||||||
$("input, select").on("change", function() {
|
$("input, select").on("change", function () {
|
||||||
|
|
||||||
// Option fixe pour contain et cover
|
// Option fixe pour contain et cover
|
||||||
var themeBodyImageSize = $("#themeBodyImageSize").val();
|
var themeBodyImageSize = $("#themeBodyImageSize").val();
|
||||||
|
|
||||||
if(themeBodyImageSize === "cover" ||
|
if (themeBodyImageSize === "cover" ||
|
||||||
themeBodyImageSize === "contain" ) {
|
themeBodyImageSize === "contain") {
|
||||||
$("#themeBodyImageAttachment").val("fixed");
|
$("#themeBodyImageAttachment").val("fixed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ $("input, select").on("change", function() {
|
|||||||
var css = "html{background-color:" + $("#themeBodyBackgroundColor").val() + "}";
|
var css = "html{background-color:" + $("#themeBodyBackgroundColor").val() + "}";
|
||||||
// Image du fond
|
// Image du fond
|
||||||
var themeBodyImage = $("#themeBodyImage").val();
|
var themeBodyImage = $("#themeBodyImage").val();
|
||||||
if(themeBodyImage) {
|
if (themeBodyImage) {
|
||||||
css += "html{background-image:url('<?php echo helper::baseUrl(false); ?>site/file/source/" + themeBodyImage + "');background-repeat:" + $("#themeBodyImageRepeat").val() + ";background-position:" + $("#themeBodyImagePosition").val() + ";background-attachment:" + $("#themeBodyImageAttachment").val() + ";background-size:" + $("#themeBodyImageSize").val() + "}";
|
css += "html{background-image:url('<?php echo helper::baseUrl(false); ?>site/file/source/" + themeBodyImage + "');background-repeat:" + $("#themeBodyImageRepeat").val() + ";background-position:" + $("#themeBodyImagePosition").val() + ";background-attachment:" + $("#themeBodyImageAttachment").val() + ";background-size:" + $("#themeBodyImageSize").val() + "}";
|
||||||
css += "html{background-color:rgba(0,0,0,0);}";
|
css += "html{background-color:rgba(0,0,0,0);}";
|
||||||
}
|
}
|
||||||
@ -53,8 +53,8 @@ $("input, select").on("change", function() {
|
|||||||
.appendTo("head");
|
.appendTo("head");
|
||||||
});
|
});
|
||||||
// Affiche / Cache les options de l'image du fond
|
// Affiche / Cache les options de l'image du fond
|
||||||
$("#themeBodyImage").on("change", function() {
|
$("#themeBodyImage").on("change", function () {
|
||||||
if($(this).val()) {
|
if ($(this).val()) {
|
||||||
$("#themeBodyImageOptions").slideDown();
|
$("#themeBodyImageOptions").slideDown();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -63,7 +63,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php
|
<?php
|
||||||
$imageFile = file_exists(self::FILE_DIR.'source/'.$this->getData(['theme', 'body', 'image'])) ? $this->getData(['theme', 'body', 'image']) : "";
|
$imageFile = file_exists(self::FILE_DIR . 'source/' . $this->getData(['theme', 'body', 'image'])) ? $this->getData(['theme', 'body', 'image']) : "";
|
||||||
echo template::file('themeBodyImage', [
|
echo template::file('themeBodyImage', [
|
||||||
'help' => 'Sélectionner une image',
|
'help' => 'Sélectionner une image',
|
||||||
'label' => 'Arrière-plan',
|
'label' => 'Arrière-plan',
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('fontAddForm'); ?>
|
<?php echo template::formOpen('fontAddForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('fontAddBack', [
|
<?php echo template::button('fontAddBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -21,8 +21,8 @@
|
|||||||
'uniqueSubmission' => true
|
'uniqueSubmission' => true
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -35,7 +35,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::checkbox('fontAddFontFile', true,'Fonte installée', []); ?>
|
<?php echo template::checkbox('fontAddFontFile', true, 'Fonte installée', []); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -81,5 +81,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -13,8 +13,8 @@
|
|||||||
/**
|
/**
|
||||||
* Option par défaut du sélecteur de mode
|
* Option par défaut du sélecteur de mode
|
||||||
*/
|
*/
|
||||||
$(document).ready(function(){
|
$(document).ready(function () {
|
||||||
if( $('input[name=fontEditFontImported]').is(':checked') ){
|
if ($('input[name=fontEditFontImported]').is(':checked')) {
|
||||||
$('#containerfontEditFile').hide();
|
$('#containerfontEditFile').hide();
|
||||||
$('#containerfontEditUrl').show();
|
$('#containerfontEditUrl').show();
|
||||||
$('#fontEditFontFileWrapper').hide();
|
$('#fontEditFontFileWrapper').hide();
|
||||||
@ -23,7 +23,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if( $('input[name=fontEditFontFile]').is(':checked') ){
|
if ($('input[name=fontEditFontFile]').is(':checked')) {
|
||||||
$('#containerfontEditFile').show();
|
$('#containerfontEditFile').show();
|
||||||
$('#containerfontEditUrl').hide();
|
$('#containerfontEditUrl').hide();
|
||||||
$('#fontEditFontImportedWrapper').hide();
|
$('#fontEditFontImportedWrapper').hide();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('fontEditForm'); ?>
|
<?php echo template::formOpen('fontEditForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('fontEditBack', [
|
<?php echo template::button('fontEditBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -21,8 +21,8 @@
|
|||||||
'uniqueSubmission' => true
|
'uniqueSubmission' => true
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -36,7 +36,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::checkbox('fontEditFontFile', true,'Fonte installée', [
|
<?php echo template::checkbox('fontEditFontFile', true, 'Fonte installée', [
|
||||||
'checked' => $this->getUrl(2) === 'files' ? true : false
|
'checked' => $this->getUrl(2) === 'files' ? true : false
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
@ -84,5 +84,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -13,9 +13,9 @@
|
|||||||
/**
|
/**
|
||||||
* Confirmation de suppression
|
* Confirmation de suppression
|
||||||
*/
|
*/
|
||||||
$(".themeFontDelete").on("click", function() {
|
$(".themeFontDelete").on("click", function () {
|
||||||
var _this = $(this);
|
var _this = $(this);
|
||||||
return core.confirm("Êtes-vous sûr de vouloir supprimer cette fonte ?", function() {
|
return core.confirm("Êtes-vous sûr de vouloir supprimer cette fonte ?", function () {
|
||||||
$(location).attr("href", _this.attr("href"));
|
$(location).attr("href", _this.attr("href"));
|
||||||
});
|
});
|
||||||
});
|
});
|
@ -23,8 +23,8 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php if($module::$fontsDetail): ?>
|
<?php if ($module::$fontsDetail) : ?>
|
||||||
<?php echo template::table([2, 2, 3, 2, 1, 1, 1], $module::$fontsDetail, ['FontId', 'Nom', 'Famille', 'Affectation', 'Origine', '', '']); ?>
|
<?php echo template::table([2, 2, 3, 2, 1, 1, 1], $module::$fontsDetail, ['FontId', 'Nom', 'Famille', 'Affectation', 'Origine', '', '']); ?>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::speech('Aucune fonte !'); ?>
|
<?php echo template::speech('Aucune fonte !'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
@ -15,7 +15,7 @@
|
|||||||
/**
|
/**
|
||||||
* Aperçu en direct
|
* Aperçu en direct
|
||||||
*/
|
*/
|
||||||
$("input, select").on("change", function() {
|
$("input, select").on("change", function () {
|
||||||
// Import des polices de caractères
|
// Import des polices de caractères
|
||||||
var footerFont = $("#themeFooterFont :selected").val();
|
var footerFont = $("#themeFooterFont :selected").val();
|
||||||
var footerFontText = $("#themeFooterFont :selected").text();
|
var footerFontText = $("#themeFooterFont :selected").text();
|
||||||
@ -38,7 +38,7 @@ $("input, select").on("change", function() {
|
|||||||
// Taille, couleur, épaisseur et capitalisation du titre de la bannière
|
// Taille, couleur, épaisseur et capitalisation du titre de la bannière
|
||||||
css += "footer span, #footerText > p {color:" + $("#themeFooterTextColor").val() + ";font-family:'" + footerFontText + "',sans-serif;font-weight:" + $("#themeFooterFontWeight").val() + ";font-size:" + $("#themeFooterFontSize").val() + ";text-transform:" + $("#themeFooterTextTransform").val() + "}";
|
css += "footer span, #footerText > p {color:" + $("#themeFooterTextColor").val() + ";font-family:'" + footerFontText + "',sans-serif;font-weight:" + $("#themeFooterFontWeight").val() + ";font-size:" + $("#themeFooterFontSize").val() + ";text-transform:" + $("#themeFooterTextTransform").val() + "}";
|
||||||
// Marge
|
// Marge
|
||||||
if($("#themeFooterMargin").is(":checked")) {
|
if ($("#themeFooterMargin").is(":checked")) {
|
||||||
css += 'footer{padding: 0 20px;}';
|
css += 'footer{padding: 0 20px;}';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -52,7 +52,7 @@ $("input, select").on("change", function() {
|
|||||||
.text(css)
|
.text(css)
|
||||||
.appendTo("footer");
|
.appendTo("footer");
|
||||||
// Position du pied de page
|
// Position du pied de page
|
||||||
switch($("#themeFooterPosition").val()) {
|
switch ($("#themeFooterPosition").val()) {
|
||||||
case 'hide':
|
case 'hide':
|
||||||
$("footer").hide();
|
$("footer").hide();
|
||||||
break;
|
break;
|
||||||
@ -68,47 +68,47 @@ $("input, select").on("change", function() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Réduire la marge du paragraphe de la zone de texte enrichie
|
// Réduire la marge du paragraphe de la zone de texte enrichie
|
||||||
$("#footerText > p").css("margin-top","0");
|
$("#footerText > p").css("margin-top", "0");
|
||||||
$("#footerText > p").css("margin-bottom","0");
|
$("#footerText > p").css("margin-bottom", "0");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Position dans les blocs
|
// Position dans les blocs
|
||||||
// Bloc texte personnalisé
|
// Bloc texte personnalisé
|
||||||
$(".themeFooterContent").on("change",function() {
|
$(".themeFooterContent").on("change", function () {
|
||||||
// Position site ou body
|
// Position site ou body
|
||||||
var footerPosition = $("#themeFooterPosition").val();
|
var footerPosition = $("#themeFooterPosition").val();
|
||||||
switch($("#themeFooterTextPosition").val()) {
|
switch ($("#themeFooterTextPosition").val()) {
|
||||||
case "hide":
|
case "hide":
|
||||||
$("#footerText").hide();
|
$("#footerText").hide();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// Choix de la position du bloc
|
// Choix de la position du bloc
|
||||||
textPosition = $("#themeFooterTextPosition").val();
|
textPosition = $("#themeFooterTextPosition").val();
|
||||||
textPosition = textPosition.substr(0,1).toUpperCase()+textPosition.substr(1);
|
textPosition = textPosition.substr(0, 1).toUpperCase() + textPosition.substr(1);
|
||||||
$("#footerText").show().appendTo("#footer" + footerPosition + textPosition);
|
$("#footerText").show().appendTo("#footer" + footerPosition + textPosition);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch($("#themeFooterSocialsPosition").val()) {
|
switch ($("#themeFooterSocialsPosition").val()) {
|
||||||
case 'hide':
|
case 'hide':
|
||||||
$("#footerSocials").hide();
|
$("#footerSocials").hide();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// Choix de la position du bloc
|
// Choix de la position du bloc
|
||||||
socialsPosition = $("#themeFooterSocialsPosition").val();
|
socialsPosition = $("#themeFooterSocialsPosition").val();
|
||||||
socialsPosition = socialsPosition.substr(0,1).toUpperCase()+socialsPosition.substr(1);
|
socialsPosition = socialsPosition.substr(0, 1).toUpperCase() + socialsPosition.substr(1);
|
||||||
$("#footerSocials").show().appendTo("#footer" + footerPosition + socialsPosition);
|
$("#footerSocials").show().appendTo("#footer" + footerPosition + socialsPosition);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch($("#themeFooterCopyrightPosition").val()) {
|
switch ($("#themeFooterCopyrightPosition").val()) {
|
||||||
case 'hide':
|
case 'hide':
|
||||||
$("#footerCopyright").hide();
|
$("#footerCopyright").hide();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// Choix de la position du bloc
|
// Choix de la position du bloc
|
||||||
copyrightPosition = $("#themeFooterCopyrightPosition").val();
|
copyrightPosition = $("#themeFooterCopyrightPosition").val();
|
||||||
copyrightPosition = copyrightPosition.substr(0,1).toUpperCase()+copyrightPosition.substr(1);
|
copyrightPosition = copyrightPosition.substr(0, 1).toUpperCase() + copyrightPosition.substr(1);
|
||||||
$("#footerCopyright").show().appendTo("#footer" + footerPosition + copyrightPosition);
|
$("#footerCopyright").show().appendTo("#footer" + footerPosition + copyrightPosition);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -119,18 +119,18 @@ $(".themeFooterContent").on("change",function() {
|
|||||||
// Fin Position dans les blocs
|
// Fin Position dans les blocs
|
||||||
|
|
||||||
// Modification dynamique de la mise en page
|
// Modification dynamique de la mise en page
|
||||||
$("#themeFooterTemplate").on("change",function() {
|
$("#themeFooterTemplate").on("change", function () {
|
||||||
// Nettoyage des sélecteurs des contenus
|
// Nettoyage des sélecteurs des contenus
|
||||||
var newOptions = {
|
var newOptions = {
|
||||||
4: {'hide' : 'Masqué', 'left' : 'En haut', 'center' : 'Au milieu', 'right' : 'En bas'} ,
|
4: { 'hide': 'Masqué', 'left': 'En haut', 'center': 'Au milieu', 'right': 'En bas' },
|
||||||
3: {'hide': 'Masqué', 'left': 'A gauche', 'center': 'Au centre', 'right': 'A droite'} ,
|
3: { 'hide': 'Masqué', 'left': 'A gauche', 'center': 'Au centre', 'right': 'A droite' },
|
||||||
2: {'hide': 'Masqué', 'left': 'A gauche', 'right': 'A droite'} ,
|
2: { 'hide': 'Masqué', 'left': 'A gauche', 'right': 'A droite' },
|
||||||
1: {'hide': 'Masqué', 'center': 'Affiché'}
|
1: { 'hide': 'Masqué', 'center': 'Affiché' }
|
||||||
};
|
};
|
||||||
var $el = $(".themeFooterContent");
|
var $el = $(".themeFooterContent");
|
||||||
$el.empty();
|
$el.empty();
|
||||||
// Eléments des position de contenus
|
// Eléments des position de contenus
|
||||||
$.each(newOptions[$("#themeFooterTemplate").val()], function(key,value) {
|
$.each(newOptions[$("#themeFooterTemplate").val()], function (key, value) {
|
||||||
$el.append($("<option></option>")
|
$el.append($("<option></option>")
|
||||||
.attr("value", key).text(value));
|
.attr("value", key).text(value));
|
||||||
});
|
});
|
||||||
@ -140,26 +140,26 @@ $("#themeFooterTemplate").on("change",function() {
|
|||||||
$("#footerText").hide();
|
$("#footerText").hide();
|
||||||
$("#footerSocials").hide();
|
$("#footerSocials").hide();
|
||||||
// Dimension des blocs
|
// Dimension des blocs
|
||||||
switch($("#themeFooterTemplate").val()) {
|
switch ($("#themeFooterTemplate").val()) {
|
||||||
case "1":
|
case "1":
|
||||||
$("#footer" + position + "Left").css("display","none");
|
$("#footer" + position + "Left").css("display", "none");
|
||||||
$("#footer" + position + "Center").removeAttr('class').addClass("col12").css("display","");
|
$("#footer" + position + "Center").removeAttr('class').addClass("col12").css("display", "");
|
||||||
$("#footer" + position + "Right").css("display","none");
|
$("#footer" + position + "Right").css("display", "none");
|
||||||
break;
|
break;
|
||||||
case "2":
|
case "2":
|
||||||
$("#footer" + position + "Left").removeAttr('class').addClass('col6').css("display","");
|
$("#footer" + position + "Left").removeAttr('class').addClass('col6').css("display", "");
|
||||||
$("#footer" + position + "Center").css("display","none").removeAttr('class');
|
$("#footer" + position + "Center").css("display", "none").removeAttr('class');
|
||||||
$("#footer" + position + "Right").removeAttr('class').addClass('col6').css("display","");
|
$("#footer" + position + "Right").removeAttr('class').addClass('col6').css("display", "");
|
||||||
break;
|
break;
|
||||||
case "3":
|
case "3":
|
||||||
$("#footer" + position + "Left").removeAttr('class').addClass('col4').css("display","");
|
$("#footer" + position + "Left").removeAttr('class').addClass('col4').css("display", "");
|
||||||
$("#footer" + position + "Center").removeAttr('class').addClass('col4').css("display","");
|
$("#footer" + position + "Center").removeAttr('class').addClass('col4').css("display", "");
|
||||||
$("#footer" + position + "Right").removeAttr('class').addClass('col4').css("display","");
|
$("#footer" + position + "Right").removeAttr('class').addClass('col4').css("display", "");
|
||||||
break;
|
break;
|
||||||
case "4":
|
case "4":
|
||||||
$("#footer" + position + "Left").removeAttr('class').addClass('col12').css("display","");
|
$("#footer" + position + "Left").removeAttr('class').addClass('col12').css("display", "");
|
||||||
$("#footer" + position + "Center").removeAttr('class').addClass('col12').css("display","");
|
$("#footer" + position + "Center").removeAttr('class').addClass('col12').css("display", "");
|
||||||
$("#footer" + position + "Right").removeAttr('class').addClass('col12').css("display","");
|
$("#footer" + position + "Right").removeAttr('class').addClass('col12').css("display", "");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -167,58 +167,58 @@ $("#themeFooterTemplate").on("change",function() {
|
|||||||
|
|
||||||
|
|
||||||
// Désactivation des sélections multiples
|
// Désactivation des sélections multiples
|
||||||
$("#themeFooterSocialsPosition").on("change", function() {
|
$("#themeFooterSocialsPosition").on("change", function () {
|
||||||
if ($(this).prop('selectedIndex') >= 1 ) {
|
if ($(this).prop('selectedIndex') >= 1) {
|
||||||
if ( $("#themeFooterTextPosition").prop('selectedIndex') === $(this).prop('selectedIndex') ) {
|
if ($("#themeFooterTextPosition").prop('selectedIndex') === $(this).prop('selectedIndex')) {
|
||||||
$("#themeFooterTextPosition").prop('selectedIndex',0);
|
$("#themeFooterTextPosition").prop('selectedIndex', 0);
|
||||||
$("#footerText").hide();
|
$("#footerText").hide();
|
||||||
}
|
}
|
||||||
if ( $("#themeFooterCopyrightPosition").prop('selectedIndex') === $(this).prop('selectedIndex') ) {
|
if ($("#themeFooterCopyrightPosition").prop('selectedIndex') === $(this).prop('selectedIndex')) {
|
||||||
$("#themeFooterCopyrightPosition").prop('selectedIndex',0);
|
$("#themeFooterCopyrightPosition").prop('selectedIndex', 0);
|
||||||
$("#footerCopyright").hide();
|
$("#footerCopyright").hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
$("#themeFooterTextPosition").on("change", function() {
|
$("#themeFooterTextPosition").on("change", function () {
|
||||||
if ($(this).prop('selectedIndex') >= 1 ) {
|
if ($(this).prop('selectedIndex') >= 1) {
|
||||||
if ( $("#themeFooterSocialsPosition").prop('selectedIndex') === $(this).prop('selectedIndex') ) {
|
if ($("#themeFooterSocialsPosition").prop('selectedIndex') === $(this).prop('selectedIndex')) {
|
||||||
$("#themeFooterSocialsPosition").prop('selectedIndex',0);
|
$("#themeFooterSocialsPosition").prop('selectedIndex', 0);
|
||||||
$("#footerSocials").hide();
|
$("#footerSocials").hide();
|
||||||
}
|
}
|
||||||
if ( $("#themeFooterCopyrightPosition").prop('selectedIndex') === $(this).prop('selectedIndex') ) {
|
if ($("#themeFooterCopyrightPosition").prop('selectedIndex') === $(this).prop('selectedIndex')) {
|
||||||
$("#themeFooterCopyrightPosition").prop('selectedIndex',0);
|
$("#themeFooterCopyrightPosition").prop('selectedIndex', 0);
|
||||||
$("#footerCopyright").hide();
|
$("#footerCopyright").hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
|
|
||||||
$("#themeFooterCopyrightPosition").on("change", function() {
|
$("#themeFooterCopyrightPosition").on("change", function () {
|
||||||
if ($(this).prop('selectedIndex') >= 1 ) {
|
if ($(this).prop('selectedIndex') >= 1) {
|
||||||
if ( $("#themeFooterTextPosition").prop('selectedIndex') === $(this).prop('selectedIndex') ) {
|
if ($("#themeFooterTextPosition").prop('selectedIndex') === $(this).prop('selectedIndex')) {
|
||||||
$("#themeFooterTextPosition").prop('selectedIndex',0);
|
$("#themeFooterTextPosition").prop('selectedIndex', 0);
|
||||||
$("#footerText").hide();
|
$("#footerText").hide();
|
||||||
}
|
}
|
||||||
if ( $("#themeFooterSocialsPosition").prop('selectedIndex') === $(this).prop('selectedIndex') ) {
|
if ($("#themeFooterSocialsPosition").prop('selectedIndex') === $(this).prop('selectedIndex')) {
|
||||||
$("#themeFooterSocialsPosition").prop('selectedIndex',0);
|
$("#themeFooterSocialsPosition").prop('selectedIndex', 0);
|
||||||
$("#footerSocials").hide();
|
$("#footerSocials").hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
// Affiche / Cache les options du footer fixe
|
// Affiche / Cache les options du footer fixe
|
||||||
$("#themeFooterPosition").on("change", function() {
|
$("#themeFooterPosition").on("change", function () {
|
||||||
if($(this).val() === 'body') {
|
if ($(this).val() === 'body') {
|
||||||
$("#themeFooterPositionFixed").slideDown();
|
$("#themeFooterPositionFixed").slideDown();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$("#themeFooterPositionFixed").slideUp(function() {
|
$("#themeFooterPositionFixed").slideUp(function () {
|
||||||
$("#themeFooterFixed").prop("checked", false).trigger("change");
|
$("#themeFooterFixed").prop("checked", false).trigger("change");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
|
|
||||||
// Lien de connexion
|
// Lien de connexion
|
||||||
$("#themeFooterLoginLink").on("change", function() {
|
$("#themeFooterLoginLink").on("change", function () {
|
||||||
if($(this).is(":checked")) {
|
if ($(this).is(":checked")) {
|
||||||
$("#footerLoginLink").show();
|
$("#footerLoginLink").show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -227,8 +227,8 @@ $("#themeFooterLoginLink").on("change", function() {
|
|||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
|
|
||||||
// Numéro de version
|
// Numéro de version
|
||||||
$("#themefooterDisplayVersion").on("change", function() {
|
$("#themefooterDisplayVersion").on("change", function () {
|
||||||
if($(this).is(":checked")) {
|
if ($(this).is(":checked")) {
|
||||||
$("#footerDisplayVersion").show();
|
$("#footerDisplayVersion").show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -237,8 +237,8 @@ $("#themefooterDisplayVersion").on("change", function() {
|
|||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
|
|
||||||
// Numéro de version
|
// Numéro de version
|
||||||
$("#themefooterDisplayCopyright").on("change", function() {
|
$("#themefooterDisplayCopyright").on("change", function () {
|
||||||
if($(this).is(":checked")) {
|
if ($(this).is(":checked")) {
|
||||||
$("#footerDisplayCopyright").show();
|
$("#footerDisplayCopyright").show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -247,8 +247,8 @@ $("#themefooterDisplayCopyright").on("change", function() {
|
|||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
|
|
||||||
// Site Map
|
// Site Map
|
||||||
$("#themefooterDisplaySiteMap").on("change", function() {
|
$("#themefooterDisplaySiteMap").on("change", function () {
|
||||||
if($(this).is(":checked")) {
|
if ($(this).is(":checked")) {
|
||||||
$("#footerDisplaySiteMap").show();
|
$("#footerDisplaySiteMap").show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -257,8 +257,8 @@ $("#themefooterDisplaySiteMap").on("change", function() {
|
|||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
|
|
||||||
// Rechercher
|
// Rechercher
|
||||||
$("#themeFooterDisplaySearch").on("change", function() {
|
$("#themeFooterDisplaySearch").on("change", function () {
|
||||||
if($(this).is(":checked")) {
|
if ($(this).is(":checked")) {
|
||||||
$("#footerDisplaySearch").show();
|
$("#footerDisplaySearch").show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -267,8 +267,8 @@ $("#themeFooterDisplaySearch").on("change", function() {
|
|||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
|
|
||||||
// Mentions légales
|
// Mentions légales
|
||||||
$("#themeFooterDisplayLegal").on("change", function() {
|
$("#themeFooterDisplayLegal").on("change", function () {
|
||||||
if($(this).is(":checked")) {
|
if ($(this).is(":checked")) {
|
||||||
$("#footerDisplayLegal").show();
|
$("#footerDisplayLegal").show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -278,22 +278,22 @@ $("#themeFooterDisplayLegal").on("change", function() {
|
|||||||
|
|
||||||
|
|
||||||
// Pages spéciales : activation si une page est sélectionnée
|
// Pages spéciales : activation si une page est sélectionnée
|
||||||
$("#configLegalPageId").on("change", function() {
|
$("#configLegalPageId").on("change", function () {
|
||||||
if ( $("#configLegalPageId option:selected").text() === 'Aucune') {
|
if ($("#configLegalPageId option:selected").text() === 'Aucune') {
|
||||||
$("#themeFooterDisplayLegal").prop('checked', false);
|
$("#themeFooterDisplayLegal").prop('checked', false);
|
||||||
$("#themeFooterDisplayLegal").prop( "disabled", true );
|
$("#themeFooterDisplayLegal").prop("disabled", true);
|
||||||
$("#footerDisplayLegal").hide();
|
$("#footerDisplayLegal").hide();
|
||||||
} else {
|
} else {
|
||||||
$("#themeFooterDisplayLegal").prop( "disabled", false );
|
$("#themeFooterDisplayLegal").prop("disabled", false);
|
||||||
}
|
}
|
||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
$("#configSearchPageId").on("change", function() {
|
$("#configSearchPageId").on("change", function () {
|
||||||
if ( $("#configSearchPageId option:selected").text() === 'Aucune') {
|
if ($("#configSearchPageId option:selected").text() === 'Aucune') {
|
||||||
$("#themeFooterDisplaySearch").prop('checked', false);
|
$("#themeFooterDisplaySearch").prop('checked', false);
|
||||||
$("#themeFooterDisplaySearch").prop( "disabled", true );
|
$("#themeFooterDisplaySearch").prop("disabled", true);
|
||||||
$("#footerDisplaySearch").hide();
|
$("#footerDisplaySearch").hide();
|
||||||
} else {
|
} else {
|
||||||
$("#themeFooterDisplaySearch").prop( "disabled", false );
|
$("#themeFooterDisplaySearch").prop("disabled", false);
|
||||||
}
|
}
|
||||||
}).trigger("change");
|
}).trigger("change");
|
||||||
|
|
||||||
|
@ -87,13 +87,13 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::checkbox('themefooterDisplayCopyright', true, 'Motorisé par', [
|
<?php echo template::checkbox('themefooterDisplayCopyright', true, 'Motorisé par', [
|
||||||
'checked' => $this->getData(['theme', 'footer','displayCopyright']),
|
'checked' => $this->getData(['theme', 'footer', 'displayCopyright']),
|
||||||
'help' => 'Affiche cette mention devant ZwiiCMS'
|
'help' => 'Affiche cette mention devant ZwiiCMS'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::checkbox('themefooterDisplayVersion', true, 'Version', [
|
<?php echo template::checkbox('themefooterDisplayVersion', true, 'Version', [
|
||||||
'checked' => $this->getData(['theme', 'footer','displayVersion']),
|
'checked' => $this->getData(['theme', 'footer', 'displayVersion']),
|
||||||
'help' => 'Affiche le numéro de version après ZwiiCMS'
|
'help' => 'Affiche le numéro de version après ZwiiCMS'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
@ -133,7 +133,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::select('configLegalPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
|
<?php echo template::select('configLegalPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
|
||||||
'label' => 'Page "Mentions légales" ' . template::flag('selected', '20px'),
|
'label' => 'Page "Mentions légales" ' . template::flag('selected', '20px'),
|
||||||
'selected' => $this->getData(['locale', 'legalPageId'])
|
'selected' => $this->getData(['locale', 'legalPageId'])
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -147,7 +147,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::select('configSearchPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
|
<?php echo template::select('configSearchPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
|
||||||
'label' => 'Page "Rechercher" ' . template::flag('selected', '20px'),
|
'label' => 'Page "Rechercher" ' . template::flag('selected', '20px'),
|
||||||
'selected' => $this->getData(['locale', 'searchPageId'])
|
'selected' => $this->getData(['locale', 'searchPageId'])
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -159,7 +159,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::textarea('themeFooterText', [
|
<?php echo template::textarea('themeFooterText', [
|
||||||
'label' => '<div class="titleWysiwygContent">' . template::topic('Contenu personnalisé') .'</div>',
|
'label' => '<div class="titleWysiwygContent">' . template::topic('Contenu personnalisé') . '</div>',
|
||||||
'value' => $this->getData(['theme', 'footer', 'text']),
|
'value' => $this->getData(['theme', 'footer', 'text']),
|
||||||
'class' => 'editorWysiwyg'
|
'class' => 'editorWysiwyg'
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -210,7 +210,7 @@
|
|||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php $footerBlockPosition = is_null($this->getData(['theme', 'footer', 'template'])) ? $module::$footerblocks[3] : $module::$footerblocks [$this->getData(['theme', 'footer', 'template'])] ;?>
|
<?php $footerBlockPosition = is_null($this->getData(['theme', 'footer', 'template'])) ? $module::$footerblocks[3] : $module::$footerblocks[$this->getData(['theme', 'footer', 'template'])]; ?>
|
||||||
<?php echo template::select('themeFooterTemplate', $module::$footerTemplate, [
|
<?php echo template::select('themeFooterTemplate', $module::$footerTemplate, [
|
||||||
'label' => 'Répartition',
|
'label' => 'Répartition',
|
||||||
'selected' => is_null($this->getData(['theme', 'footer', 'template'])) ? 4 : $this->getData(['theme', 'footer', 'template'])
|
'selected' => is_null($this->getData(['theme', 'footer', 'template'])) ? 4 : $this->getData(['theme', 'footer', 'template'])
|
||||||
|
@ -159,7 +159,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php
|
<?php
|
||||||
$imageFile = file_exists(self::FILE_DIR.'source/'.$this->getData(['theme', 'header', 'image'])) ?
|
$imageFile = file_exists(self::FILE_DIR . 'source/' . $this->getData(['theme', 'header', 'image'])) ?
|
||||||
$this->getData(['theme', 'header', 'image']) : "";
|
$this->getData(['theme', 'header', 'image']) : "";
|
||||||
echo template::file('themeHeaderImage', [
|
echo template::file('themeHeaderImage', [
|
||||||
'label' => 'Image',
|
'label' => 'Image',
|
||||||
@ -213,7 +213,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::textarea('themeHeaderText', [
|
<?php echo template::textarea('themeHeaderText', [
|
||||||
'label' => '<div class="titleWysiwygContent">' . template::topic('Contenu personnalisé') .'</div>',
|
'label' => '<div class="titleWysiwygContent">' . template::topic('Contenu personnalisé') . '</div>',
|
||||||
'class' => 'editorWysiwyg',
|
'class' => 'editorWysiwyg',
|
||||||
'value' => $this->getData(['theme', 'header', 'featureContent'])
|
'value' => $this->getData(['theme', 'header', 'featureContent'])
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -222,6 +222,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="featureContent" class="displayNone">
|
<div id="featureContent" class="displayNone">
|
||||||
<?php echo $this->getData(['theme','header','featureContent']);?>
|
<?php echo $this->getData(['theme', 'header', 'featureContent']); ?>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -60,7 +60,7 @@ $("<a>")
|
|||||||
/**
|
/**
|
||||||
* Affiche les zones cachées
|
* Affiche les zones cachées
|
||||||
*/
|
*/
|
||||||
$("#themeShowAll").on("click", function() {
|
$("#themeShowAll").on("click", function () {
|
||||||
$("header.displayNone, nav.displayNone, footer.displayNone").slideToggle();
|
$("header.displayNone, nav.displayNone, footer.displayNone").slideToggle();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -68,9 +68,9 @@ $("#themeShowAll").on("click", function() {
|
|||||||
* Simule un survole du site lors du survole de la section
|
* Simule un survole du site lors du survole de la section
|
||||||
*/
|
*/
|
||||||
$("section")
|
$("section")
|
||||||
.on("mouseover", function() {
|
.on("mouseover", function () {
|
||||||
$("#themeOverlaySite:not(.themeOverlayTriggerHover)").addClass("themeOverlayTriggerHover");
|
$("#themeOverlaySite:not(.themeOverlayTriggerHover)").addClass("themeOverlayTriggerHover");
|
||||||
})
|
})
|
||||||
.on("mouseleave", function() {
|
.on("mouseleave", function () {
|
||||||
$("#themeOverlaySite.themeOverlayTriggerHover").removeClass("themeOverlayTriggerHover");
|
$("#themeOverlaySite.themeOverlayTriggerHover").removeClass("themeOverlayTriggerHover");
|
||||||
});
|
});
|
@ -1,8 +1,8 @@
|
|||||||
<?php if(
|
<?php if (
|
||||||
$this->getData(['theme', 'header', 'position']) === 'hide'
|
$this->getData(['theme', 'header', 'position']) === 'hide'
|
||||||
OR $this->getData(['theme', 'menu', 'position']) === 'hide'
|
or $this->getData(['theme', 'menu', 'position']) === 'hide'
|
||||||
OR $this->getData(['theme', 'footer', 'position']) === 'hide'
|
or $this->getData(['theme', 'footer', 'position']) === 'hide'
|
||||||
): ?>
|
) : ?>
|
||||||
<?php echo template::speech('Cliquez sur une zone afin d\'accéder à ses options de personnalisation. Vous pouvez également afficher les zones cachées à l\'aide du bouton ci-dessous.'); ?>
|
<?php echo template::speech('Cliquez sur une zone afin d\'accéder à ses options de personnalisation. Vous pouvez également afficher les zones cachées à l\'aide du bouton ci-dessous.'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col2 offset3">
|
<div class="col2 offset3">
|
||||||
@ -60,7 +60,7 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::speech('Cliquez sur une zone afin d\'accéder à ses options de personnalisation.'); ?>
|
<?php echo template::speech('Cliquez sur une zone afin d\'accéder à ses options de personnalisation.'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col2 offset4">
|
<div class="col2 offset4">
|
||||||
|
@ -14,9 +14,9 @@
|
|||||||
/**
|
/**
|
||||||
* Confirmation de réinitialisation
|
* Confirmation de réinitialisation
|
||||||
*/
|
*/
|
||||||
$("#configManageReset").on("click", function() {
|
$("#configManageReset").on("click", function () {
|
||||||
var _this = $(this);
|
var _this = $(this);
|
||||||
return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine le thème du site ?", function() {
|
return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine le thème du site ?", function () {
|
||||||
$(location).attr("href", _this.attr("href"));
|
$(location).attr("href", _this.attr("href"));
|
||||||
});
|
});
|
||||||
});
|
});
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('themeManageForm'); ?>
|
<?php echo template::formOpen('themeManageForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('themeManageBack', [
|
<?php echo template::button('themeManageBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -20,8 +20,8 @@
|
|||||||
'value' => 'Appliquer'
|
'value' => 'Appliquer'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -37,13 +37,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo template::topic('Sauvegarde du thème dans le'); ?>
|
<?php echo template::topic('Sauvegarde du thème dans le'); ?>
|
||||||
<a href="<?php echo helper::baseUrl(false); ?>core/vendor/filemanager/dialog.php?fldr=theme&type=0&akey=<?php echo md5_file(self::DATA_DIR.'core.json'); ?>" data-lity>
|
<a href="<?php echo helper::baseUrl(false); ?>core/vendor/filemanager/dialog.php?fldr=theme&type=0&akey=<?php echo md5_file(self::DATA_DIR . 'core.json'); ?>" data-lity>
|
||||||
<?php echo template::topic('gestionnaire de fichiers'); ?>
|
<?php echo template::topic('gestionnaire de fichiers'); ?>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -89,5 +89,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -28,16 +28,17 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php
|
<?php
|
||||||
if ( $this->getData(['theme', 'header', 'position']) == "site")
|
if ($this->getData(['theme', 'header', 'position']) == "site") {
|
||||||
{ echo template::select('themeMenuPosition', $module::$menuPositionsSite, [
|
echo template::select('themeMenuPosition', $module::$menuPositionsSite, [
|
||||||
'label' => 'Position',
|
'label' => 'Position',
|
||||||
'selected' => $this->getData(['theme', 'menu', 'position'])
|
'selected' => $this->getData(['theme', 'menu', 'position'])
|
||||||
]);
|
]);
|
||||||
}else{
|
} else {
|
||||||
echo template::select('themeMenuPosition', $module::$menuPositionsBody, [
|
echo template::select('themeMenuPosition', $module::$menuPositionsBody, [
|
||||||
'label' => 'Position',
|
'label' => 'Position',
|
||||||
'selected' => $this->getData(['theme', 'menu', 'position'])
|
'selected' => $this->getData(['theme', 'menu', 'position'])
|
||||||
]); }
|
]);
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
@ -108,9 +109,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div id="themeMenuBurgerLogoId" class="col6 offset6 <?php if( $this->getData(['theme', 'menu', 'burgerContent']) !== 'logo') echo 'displayNone';?>">
|
<div id="themeMenuBurgerLogoId" class="col6 offset6 <?php if ($this->getData(['theme', 'menu', 'burgerContent']) !== 'logo') echo 'displayNone'; ?>">
|
||||||
<?php
|
<?php
|
||||||
$imageFile = file_exists(self::FILE_DIR.'source/'.$this->getData(['theme', 'menu', 'burgerLogo'])) ?
|
$imageFile = file_exists(self::FILE_DIR . 'source/' . $this->getData(['theme', 'menu', 'burgerLogo'])) ?
|
||||||
$this->getData(['theme', 'menu', 'burgerLogo']) : "";
|
$this->getData(['theme', 'menu', 'burgerLogo']) : "";
|
||||||
echo template::file('themeMenuBurgerLogo', [
|
echo template::file('themeMenuBurgerLogo', [
|
||||||
'help' => 'Sélectionner une image de dimensions adaptées',
|
'help' => 'Sélectionner une image de dimensions adaptées',
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('themeSiteForm'); ?>
|
<?php echo template::formOpen('themeSiteForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('themeSiteBack', [
|
<?php echo template::button('themeSiteBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -18,8 +18,8 @@
|
|||||||
<div class="col2 offset8">
|
<div class="col2 offset8">
|
||||||
<?php echo template::submit('themeSiteSubmit'); ?>
|
<?php echo template::submit('themeSiteSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -47,15 +47,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::checkbox('themeSiteMargin',true, 'Pas de marge au-dessus et en-dessous du site', [
|
<?php echo template::checkbox('themeSiteMargin', true, 'Pas de marge au-dessus et en-dessous du site', [
|
||||||
'checked' => $this->getData(['theme', 'site', 'margin'])
|
'checked' => $this->getData(['theme', 'site', 'margin'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -156,8 +156,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -189,7 +189,7 @@
|
|||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::select('themeTitleFont', $module::$fonts['name'] , [
|
<?php echo template::select('themeTitleFont', $module::$fonts['name'], [
|
||||||
'label' => 'Fonte',
|
'label' => 'Fonte',
|
||||||
'selected' => $this->getData(['theme', 'title', 'font']),
|
'selected' => $this->getData(['theme', 'title', 'font']),
|
||||||
'fonts' => $module::$fonts['family']
|
'fonts' => $module::$fonts['family']
|
||||||
@ -210,5 +210,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -13,7 +13,8 @@
|
|||||||
* @link http://zwiicms.fr/
|
* @link http://zwiicms.fr/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class translate extends common {
|
class translate extends common
|
||||||
|
{
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'index' => self::GROUP_ADMIN,
|
'index' => self::GROUP_ADMIN,
|
||||||
@ -45,7 +46,8 @@ class translate extends common {
|
|||||||
/**
|
/**
|
||||||
* Configuration avancée des langues
|
* Configuration avancée des langues
|
||||||
*/
|
*/
|
||||||
public function copy() {
|
public function copy()
|
||||||
|
{
|
||||||
|
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if ($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
@ -55,20 +57,20 @@ class translate extends common {
|
|||||||
$toCreate = $this->getInput('translateFormCopyTarget');
|
$toCreate = $this->getInput('translateFormCopyTarget');
|
||||||
if ($copyFrom !== $toCreate) {
|
if ($copyFrom !== $toCreate) {
|
||||||
// Création du dossier
|
// Création du dossier
|
||||||
if (is_dir(self::DATA_DIR . $toCreate) === false ) { // Si le dossier est déjà créé
|
if (is_dir(self::DATA_DIR . $toCreate) === false) { // Si le dossier est déjà créé
|
||||||
$success = mkdir (self::DATA_DIR . $toCreate, 0755);
|
$success = mkdir(self::DATA_DIR . $toCreate, 0755);
|
||||||
$success = mkdir (self::DATA_DIR . $toCreate.'/content', 0755);
|
$success = mkdir(self::DATA_DIR . $toCreate . '/content', 0755);
|
||||||
} else {
|
} else {
|
||||||
$success = true;
|
$success = true;
|
||||||
}
|
}
|
||||||
// Copier les données par défaut avec gestion des erreurs
|
// Copier les données par défaut avec gestion des erreurs
|
||||||
$success = (copy (self::DATA_DIR . $copyFrom . '/locale.json', self::DATA_DIR . $toCreate . '/locale.json') === true && $success === true) ? true : false;
|
$success = (copy(self::DATA_DIR . $copyFrom . '/locale.json', self::DATA_DIR . $toCreate . '/locale.json') === true && $success === true) ? true : false;
|
||||||
$success = (copy (self::DATA_DIR . $copyFrom . '/module.json', self::DATA_DIR . $toCreate . '/module.json') === true && $success === true) ? true : false;
|
$success = (copy(self::DATA_DIR . $copyFrom . '/module.json', self::DATA_DIR . $toCreate . '/module.json') === true && $success === true) ? true : false;
|
||||||
$success = (copy (self::DATA_DIR . $copyFrom . '/page.json', self::DATA_DIR . $toCreate . '/page.json') === true && $success === true) ? true : false;
|
$success = (copy(self::DATA_DIR . $copyFrom . '/page.json', self::DATA_DIR . $toCreate . '/page.json') === true && $success === true) ? true : false;
|
||||||
$success = ($this->copyDir (self::DATA_DIR . $copyFrom . '/content', self::DATA_DIR . $toCreate . '/content') === true && $success === true) ? true : false;
|
$success = ($this->copyDir(self::DATA_DIR . $copyFrom . '/content', self::DATA_DIR . $toCreate . '/content') === true && $success === true) ? true : false;
|
||||||
// Enregistrer la langue
|
// Enregistrer la langue
|
||||||
if ($success) {
|
if ($success) {
|
||||||
$this->setData(['config', 'i18n', $toCreate, 'site' ]);
|
$this->setData(['config', 'i18n', $toCreate, 'site']);
|
||||||
$notification = 'Données ' . self::$languages[$copyFrom] . ' copiées vers ' . self::$languages[$toCreate];
|
$notification = 'Données ' . self::$languages[$copyFrom] . ' copiées vers ' . self::$languages[$toCreate];
|
||||||
} else {
|
} else {
|
||||||
$notification = "Quelque chose n\'a pas fonctionné, vérifiez les permissions.";
|
$notification = "Quelque chose n\'a pas fonctionné, vérifiez les permissions.";
|
||||||
@ -87,7 +89,7 @@ class translate extends common {
|
|||||||
}
|
}
|
||||||
// Tableau des langues installées
|
// Tableau des langues installées
|
||||||
foreach (self::$languages as $key => $value) {
|
foreach (self::$languages as $key => $value) {
|
||||||
if ($this->getData(['config','i18n', $key]) === 'site') {
|
if ($this->getData(['config', 'i18n', $key]) === 'site') {
|
||||||
self::$languagesTarget[$key] = $value;
|
self::$languagesTarget[$key] = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -104,13 +106,14 @@ class translate extends common {
|
|||||||
/**
|
/**
|
||||||
* Configuration
|
* Configuration
|
||||||
*/
|
*/
|
||||||
public function index() {
|
public function index()
|
||||||
|
{
|
||||||
|
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
|
|
||||||
// Sauvegarder les langues de contenu
|
// Sauvegarder les langues de contenu
|
||||||
$this->setData(['config', 'i18n','interface', $this->getInput('translateUI')]);
|
$this->setData(['config', 'i18n', 'interface', $this->getInput('translateUI')]);
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -126,26 +129,25 @@ class translate extends common {
|
|||||||
// Onglet des langues de contenu
|
// Onglet des langues de contenu
|
||||||
foreach (self::$languages as $keyi18n => $value) {
|
foreach (self::$languages as $keyi18n => $value) {
|
||||||
// tableau des langues installées
|
// tableau des langues installées
|
||||||
if (is_dir(self::DATA_DIR . $keyi18n) ) {
|
if (is_dir(self::DATA_DIR . $keyi18n)) {
|
||||||
self::$languagesInstalled [] = [
|
self::$languagesInstalled[] = [
|
||||||
template::flag($keyi18n, '50%') ,
|
template::flag($keyi18n, '50%'),
|
||||||
$value . ' (' . $keyi18n . ')' ,
|
$value . ' (' . $keyi18n . ')',
|
||||||
self::$i18nUI === $keyi18n ? '(langue de l\'interface)' : '',
|
self::$i18nUI === $keyi18n ? '(langue de l\'interface)' : '',
|
||||||
'',
|
'',
|
||||||
template::button('translateContentLanguageEdit' . $keyi18n, [
|
template::button('translateContentLanguageEdit' . $keyi18n, [
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/edit/' . $keyi18n. '/' . $_SESSION['csrf'],
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/edit/' . $keyi18n . '/' . $_SESSION['csrf'],
|
||||||
'value' => template::ico('flag'),
|
'value' => template::ico('flag'),
|
||||||
'help' => 'Editer les locales'
|
'help' => 'Editer les locales'
|
||||||
]),
|
]),
|
||||||
template::button('translateContentLanguageDelete' .$keyi18n, [
|
template::button('translateContentLanguageDelete' . $keyi18n, [
|
||||||
'class' => 'translateDelete buttonRed' . (self::$i18nUI === $keyi18n ? ' disabled' : '') ,
|
'class' => 'translateDelete buttonRed' . (self::$i18nUI === $keyi18n ? ' disabled' : ''),
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $keyi18n . '/' . $_SESSION['csrf'],
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $keyi18n . '/' . $_SESSION['csrf'],
|
||||||
'value' => template::ico('trash'),
|
'value' => template::ico('trash'),
|
||||||
'help' => 'Supprimer cette langue'
|
'help' => 'Supprimer cette langue'
|
||||||
])
|
])
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// Activation du bouton de copie
|
// Activation du bouton de copie
|
||||||
self::$siteCopy = count(self::$languagesInstalled) > 1 ? false : true;
|
self::$siteCopy = count(self::$languagesInstalled) > 1 ? false : true;
|
||||||
@ -156,7 +158,7 @@ class translate extends common {
|
|||||||
chdir(self::I18N_DIR);
|
chdir(self::I18N_DIR);
|
||||||
$files = glob('*.json');
|
$files = glob('*.json');
|
||||||
// Ajouter une clé au tableau avec le code de langue
|
// Ajouter une clé au tableau avec le code de langue
|
||||||
foreach( $files as $file) {
|
foreach ($files as $file) {
|
||||||
// La langue est-elle référencée ?
|
// La langue est-elle référencée ?
|
||||||
if (array_key_exists(basename($file, '.json'), self::$languages)) {
|
if (array_key_exists(basename($file, '.json'), self::$languages)) {
|
||||||
self::$i18nFiles[basename($file, '.json')] = self::$languages[basename($file, '.json')];
|
self::$i18nFiles[basename($file, '.json')] = self::$languages[basename($file, '.json')];
|
||||||
@ -177,10 +179,11 @@ class translate extends common {
|
|||||||
* Ajouter une langue de contenu
|
* Ajouter une langue de contenu
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function add() {
|
public function add()
|
||||||
|
{
|
||||||
|
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
|
|
||||||
// Création du contenu
|
// Création du contenu
|
||||||
$lang = $this->getInput('translateAddContent');
|
$lang = $this->getInput('translateAddContent');
|
||||||
@ -193,7 +196,7 @@ class translate extends common {
|
|||||||
|
|
||||||
// Sus-dossier localisé
|
// Sus-dossier localisé
|
||||||
if (!file_exists(self::DATA_DIR . $lang)) {
|
if (!file_exists(self::DATA_DIR . $lang)) {
|
||||||
mkdir (self::DATA_DIR . $lang, 0755);
|
mkdir(self::DATA_DIR . $lang, 0755);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialiser la classe
|
// Initialiser la classe
|
||||||
@ -204,9 +207,8 @@ class translate extends common {
|
|||||||
]);;
|
]);;
|
||||||
|
|
||||||
// Capturer et sauver
|
// Capturer et sauver
|
||||||
$db->set($key,init::$defaultData[$key]);
|
$db->set($key, init::$defaultData[$key]);
|
||||||
$db->save;
|
$db->save;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -224,8 +226,8 @@ class translate extends common {
|
|||||||
|
|
||||||
// Tableau des langues non installées
|
// Tableau des langues non installées
|
||||||
foreach (self::$languages as $key => $value) {
|
foreach (self::$languages as $key => $value) {
|
||||||
if (!is_dir( self::DATA_DIR . $key))
|
if (!is_dir(self::DATA_DIR . $key))
|
||||||
self::$i18nFiles [$key] = $value;
|
self::$i18nFiles[$key] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -233,13 +235,14 @@ class translate extends common {
|
|||||||
'title' => 'Ajouter',
|
'title' => 'Ajouter',
|
||||||
'view' => 'add'
|
'view' => 'add'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit() {
|
public function edit()
|
||||||
|
{
|
||||||
|
|
||||||
// Jeton incorrect ou URl avec le code langue incorrecte
|
// Jeton incorrect ou URl avec le code langue incorrecte
|
||||||
if ( $this->getUrl(3) !== $_SESSION['csrf']
|
if (
|
||||||
|
$this->getUrl(3) !== $_SESSION['csrf']
|
||||||
|| !array_key_exists($this->getUrl(2), self::$languages)
|
|| !array_key_exists($this->getUrl(2), self::$languages)
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -251,10 +254,11 @@ class translate extends common {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
|
|
||||||
// Sauvegarder les locales
|
// Sauvegarder les locales
|
||||||
$data = ['locale' => [
|
$data = [
|
||||||
|
'locale' => [
|
||||||
'homePageId' => $this->getInput('localeHomePageId', helper::FILTER_ID, true),
|
'homePageId' => $this->getInput('localeHomePageId', helper::FILTER_ID, true),
|
||||||
'page404' => $this->getInput('localePage404'),
|
'page404' => $this->getInput('localePage404'),
|
||||||
'page403' => $this->getInput('localePage403'),
|
'page403' => $this->getInput('localePage403'),
|
||||||
@ -272,18 +276,18 @@ class translate extends common {
|
|||||||
'titleLabel' => $this->getInput('localeCookiesTitleText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
'titleLabel' => $this->getInput('localeCookiesTitleText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
||||||
'linkLegalLabel' => $this->getInput('localeCookiesLinkMlText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
'linkLegalLabel' => $this->getInput('localeCookiesLinkMlText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
||||||
'cookiesFooterText' => $this->getInput('localeCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
'cookiesFooterText' => $this->getInput('localeCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
||||||
'buttonValidLabel' =>$this->getInput('localeCookiesButtonText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN))
|
'buttonValidLabel' => $this->getInput('localeCookiesButtonText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN))
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
// Sauvegarde hors méthodes si la langue n'est pas celle de l'UI
|
// Sauvegarde hors méthodes si la langue n'est pas celle de l'UI
|
||||||
if ( $this->getUrl(2) === self::$i18nUI ) {
|
if ($this->getUrl(2) === self::$i18nUI) {
|
||||||
// Enregistrer les données par lecture directe du formulaire
|
// Enregistrer les données par lecture directe du formulaire
|
||||||
$this->setData(['locale', $data['locale'] ]);
|
$this->setData(['locale', $data['locale']]);
|
||||||
} else {
|
} else {
|
||||||
// Sauver sur le disque
|
// Sauver sur le disque
|
||||||
file_put_contents (self::DATA_DIR . $this->getUrl(2) . '/locale.json', json_encode($data, JSON_UNESCAPED_UNICODE), LOCK_EX);
|
file_put_contents(self::DATA_DIR . $this->getUrl(2) . '/locale.json', json_encode($data, JSON_UNESCAPED_UNICODE), LOCK_EX);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -300,7 +304,7 @@ class translate extends common {
|
|||||||
// Récupération des locales de la langue sélectionnée
|
// Récupération des locales de la langue sélectionnée
|
||||||
|
|
||||||
// Vérifier la conformité de l'URL
|
// Vérifier la conformité de l'URL
|
||||||
if ( !array_key_exists($this->getUrl(2), self::$languages)) {
|
if (!array_key_exists($this->getUrl(2), self::$languages)) {
|
||||||
// Bidouillage de l'URL, on sort
|
// Bidouillage de l'URL, on sort
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -311,27 +315,31 @@ class translate extends common {
|
|||||||
}
|
}
|
||||||
//Lecture des données pour transmission au formulaire
|
//Lecture des données pour transmission au formulaire
|
||||||
// La locale est-elle celle de la langue de l'UI ?
|
// La locale est-elle celle de la langue de l'UI ?
|
||||||
if ( $this->getUrl(2) === self::$i18nUI) {
|
if ($this->getUrl(2) === self::$i18nUI) {
|
||||||
self::$locales [$this->getUrl(2)]['locale'] = $this->getData(['locale']);
|
self::$locales[$this->getUrl(2)]['locale'] = $this->getData(['locale']);
|
||||||
} else {
|
} else {
|
||||||
// Lire les locales sans passer par les méthodes
|
// Lire les locales sans passer par les méthodes
|
||||||
self::$locales [$this->getUrl(2)] = json_decode(file_get_contents(self::DATA_DIR . $this->getUrl(2) . '/locale.json'), true);
|
self::$locales[$this->getUrl(2)] = json_decode(file_get_contents(self::DATA_DIR . $this->getUrl(2) . '/locale.json'), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Générer la liste des pages disponibles
|
// Générer la liste des pages disponibles
|
||||||
self::$pagesList = $this->getData(['page']);
|
self::$pagesList = $this->getData(['page']);
|
||||||
foreach(self::$pagesList as $page => $pageId) {
|
foreach (self::$pagesList as $page => $pageId) {
|
||||||
if ($this->getData(['page',$page,'block']) === 'bar' ||
|
if (
|
||||||
$this->getData(['page',$page,'disable']) === true) {
|
$this->getData(['page', $page, 'block']) === 'bar' ||
|
||||||
|
$this->getData(['page', $page, 'disable']) === true
|
||||||
|
) {
|
||||||
unset(self::$pagesList[$page]);
|
unset(self::$pagesList[$page]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self::$orphansList = $this->getData(['page']);
|
self::$orphansList = $this->getData(['page']);
|
||||||
foreach(self::$orphansList as $page => $pageId) {
|
foreach (self::$orphansList as $page => $pageId) {
|
||||||
if ($this->getData(['page',$page,'block']) === 'bar' ||
|
if (
|
||||||
$this->getData(['page',$page,'disable']) === true ||
|
$this->getData(['page', $page, 'block']) === 'bar' ||
|
||||||
$this->getdata(['page',$page, 'position']) !== 0) {
|
$this->getData(['page', $page, 'disable']) === true ||
|
||||||
|
$this->getdata(['page', $page, 'position']) !== 0
|
||||||
|
) {
|
||||||
unset(self::$orphansList[$page]);
|
unset(self::$orphansList[$page]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -346,10 +354,13 @@ class translate extends common {
|
|||||||
/***
|
/***
|
||||||
* Effacer une langue de contenu
|
* Effacer une langue de contenu
|
||||||
*/
|
*/
|
||||||
public function delete() {
|
public function delete()
|
||||||
|
{
|
||||||
// Jeton incorrect ou URl avec le code langue incorrecte
|
// Jeton incorrect ou URl avec le code langue incorrecte
|
||||||
if ( $this->getUrl(3) !== $_SESSION['csrf']
|
if (
|
||||||
|| !array_key_exists($this->getUrl(2), self::$languages) ) {
|
$this->getUrl(3) !== $_SESSION['csrf']
|
||||||
|
|| !array_key_exists($this->getUrl(2), self::$languages)
|
||||||
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'translate',
|
'redirect' => helper::baseUrl() . 'translate',
|
||||||
@ -359,8 +370,8 @@ class translate extends common {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Effacement d'une langue installée
|
// Effacement d'une langue installée
|
||||||
if ( is_dir( self::DATA_DIR . $this->getUrl(2) ) === true ) {
|
if (is_dir(self::DATA_DIR . $this->getUrl(2)) === true) {
|
||||||
$success = $this->removeDir( self::DATA_DIR . $this->getUrl(2));
|
$success = $this->removeDir(self::DATA_DIR . $this->getUrl(2));
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -374,21 +385,22 @@ class translate extends common {
|
|||||||
* Traitement du changement de langue
|
* Traitement du changement de langue
|
||||||
* Fonction utilisée par le noyau
|
* Fonction utilisée par le noyau
|
||||||
*/
|
*/
|
||||||
public function i18n() {
|
public function i18n()
|
||||||
|
{
|
||||||
|
|
||||||
// Activation du drapeau
|
// Activation du drapeau
|
||||||
if ( $this->getInput('ZWII_I18N_' . strtoupper($this->getUrl(3))) !== $this->getUrl(2) ) {
|
if ($this->getInput('ZWII_I18N_' . strtoupper($this->getUrl(3))) !== $this->getUrl(2)) {
|
||||||
// Nettoyer et stocker le choix de l'utilisateur
|
// Nettoyer et stocker le choix de l'utilisateur
|
||||||
helper::deleteCookie('ZWII_I18N_SITE');
|
helper::deleteCookie('ZWII_I18N_SITE');
|
||||||
// Sélectionner
|
// Sélectionner
|
||||||
setcookie('ZWII_I18N_' . strtoupper($this->getUrl(3)) , $this->getUrl(2), time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
|
setcookie('ZWII_I18N_' . strtoupper($this->getUrl(3)), $this->getUrl(2), time() + 3600, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
||||||
// Désactivation du drapeau, langue FR par défaut
|
// Désactivation du drapeau, langue FR par défaut
|
||||||
} else {
|
} else {
|
||||||
setcookie('ZWII_I18N_SITE' , 'fr', time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
|
setcookie('ZWII_I18N_SITE', 'fr', time() + 3600, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . $this->getData(['locale', $this->getUrl(2), 'homePageId' ])
|
'redirect' => helper::baseUrl() . $this->getData(['locale', $this->getUrl(2), 'homePageId'])
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
<?php echo template::formOpen('translateAddForm'); ?>
|
<?php echo template::formOpen('translateAddForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('translateFormBack', [
|
<?php echo template::button('translateFormBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -11,8 +10,8 @@
|
|||||||
<div class="col2 offset9">
|
<div class="col2 offset9">
|
||||||
<?php echo template::submit('translateFormSubmit'); ?>
|
<?php echo template::submit('translateFormSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -27,5 +26,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
<?php echo template::formOpen('translateLocaleForm'); ?>
|
<?php echo template::formOpen('translateLocaleForm'); ?>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('translateFormBack', [
|
<?php echo template::button('translateFormBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -12,21 +11,21 @@
|
|||||||
<div class="col2 offset9">
|
<div class="col2 offset9">
|
||||||
<?php echo template::submit('translateFormSubmit'); ?>
|
<?php echo template::submit('translateFormSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Identité du site
|
<h4>Identité du site
|
||||||
<span id="localeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
<span id="localeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<a href="https://doc.zwiicms.fr/localisation-et-identite" target="_blank">
|
<a href="https://doc.zwiicms.fr/localisation-et-identite" target="_blank">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::text('localeTitle', [
|
<?php echo template::text('localeTitle', [
|
||||||
'label' => 'Titre du site' ,
|
'label' => 'Titre du site',
|
||||||
'value' => $module::$locales[$this->getUrl(2)]['locale']['title'],
|
'value' => $module::$locales[$this->getUrl(2)]['locale']['title'],
|
||||||
'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.'
|
'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.'
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -43,14 +42,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Assignation des pages spéciales
|
<h4>Assignation des pages spéciales
|
||||||
<span id="localeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
<span id="localeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<a href="https://doc.zwiicms.fr/localisation-et-identite" target="_blank">
|
<a href="https://doc.zwiicms.fr/localisation-et-identite" target="_blank">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -58,35 +57,35 @@
|
|||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::select('localeHomePageId', helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC'), [
|
<?php echo template::select('localeHomePageId', helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC'), [
|
||||||
'label' => 'Accueil du site',
|
'label' => 'Accueil du site',
|
||||||
'selected' =>$module::$locales[$this->getUrl(2)]['locale'][ 'homePageId'],
|
'selected' => $module::$locales[$this->getUrl(2)]['locale']['homePageId'],
|
||||||
'help' => 'La première page que vos visiteurs verront.'
|
'help' => 'La première page que vos visiteurs verront.'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::select('localePage403', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
|
<?php echo template::select('localePage403', array_merge(['none' => 'Page par défaut'], helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
|
||||||
'label' => 'Accès interdit, erreur 403',
|
'label' => 'Accès interdit, erreur 403',
|
||||||
'selected' =>$module::$locales[$this->getUrl(2)]['locale']['page403'],
|
'selected' => $module::$locales[$this->getUrl(2)]['locale']['page403'],
|
||||||
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
|
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::select('localePage404', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
|
<?php echo template::select('localePage404', array_merge(['none' => 'Page par défaut'], helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
|
||||||
'label' => 'Page inexistante, erreur 404',
|
'label' => 'Page inexistante, erreur 404',
|
||||||
'selected' =>$module::$locales[$this->getUrl(2)]['locale']['page404'],
|
'selected' => $module::$locales[$this->getUrl(2)]['locale']['page404'],
|
||||||
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
|
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::select('localeLegalPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
|
<?php echo template::select('localeLegalPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
|
||||||
'label' => 'Mentions légales',
|
'label' => 'Mentions légales',
|
||||||
'selected' => $module::$locales[$this->getUrl(2)]['locale']['legalPageId'],
|
'selected' => $module::$locales[$this->getUrl(2)]['locale']['legalPageId'],
|
||||||
'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.'
|
'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::select('localeSearchPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
|
<?php echo template::select('localeSearchPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
|
||||||
'label' => 'Recherche dans le site',
|
'label' => 'Recherche dans le site',
|
||||||
'selected' => $module::$locales[$this->getUrl(2)]['locale']['searchPageId'],
|
'selected' => $module::$locales[$this->getUrl(2)]['locale']['searchPageId'],
|
||||||
'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.'
|
'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.'
|
||||||
@ -94,23 +93,23 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php
|
<?php
|
||||||
echo template::select('localePage302', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
|
echo template::select('localePage302', array_merge(['none' => 'Page par défaut'], helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
|
||||||
'label' => 'Site en maintenance',
|
'label' => 'Site en maintenance',
|
||||||
'selected' =>$module::$locales[$this->getUrl(2)]['locale']['page302'],
|
'selected' => $module::$locales[$this->getUrl(2)]['locale']['page302'],
|
||||||
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
|
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Etiquettes des pages spéciales
|
<h4>Etiquettes des pages spéciales
|
||||||
<span id="labelHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
<span id="labelHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<a href="https://doc.zwiicms.fr/etiquettes-des-pages-speciales" target="_blank">
|
<a href="https://doc.zwiicms.fr/etiquettes-des-pages-speciales" target="_blank">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -148,14 +147,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Message d'acceptation des Cookies
|
<h4>Message d'acceptation des Cookies
|
||||||
<span id="specialeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
<span id="specialeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<a href="https://doc.zwiicms.fr/cookies" target="_blank">
|
<a href="https://doc.zwiicms.fr/cookies" target="_blank">
|
||||||
<?php echo template::ico('help', ['margin' => 'left']);?>
|
<?php echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@ -197,5 +196,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('translateForm'); ?>
|
<?php echo template::formOpen('translateForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('translateFormBack', [
|
<?php echo template::button('translateFormBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -35,9 +35,9 @@
|
|||||||
<div class="col2">
|
<div class="col2">
|
||||||
<?php echo template::submit('translateFormSubmit'); ?>
|
<?php echo template::submit('translateFormSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab">
|
<div class="tab">
|
||||||
<?php echo template::button('translateUiButton', [
|
<?php echo template::button('translateUiButton', [
|
||||||
'value' => 'Langue de l\'interface',
|
'value' => 'Langue de l\'interface',
|
||||||
'class' => 'buttonTab'
|
'class' => 'buttonTab'
|
||||||
@ -47,9 +47,9 @@
|
|||||||
'class' => 'buttonTab'
|
'class' => 'buttonTab'
|
||||||
]); ?>
|
]); ?>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="uiContainer" class="tabContent">
|
<div id="uiContainer" class="tabContent">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
@ -60,22 +60,22 @@
|
|||||||
<div class="col4 offset4">
|
<div class="col4 offset4">
|
||||||
<?php echo template::select('translateUI', $module::$i18nFiles, [
|
<?php echo template::select('translateUI', $module::$i18nFiles, [
|
||||||
'label' => 'Traductions installées',
|
'label' => 'Traductions installées',
|
||||||
'selected' => $this->getData(['config', 'i18n' , 'interface']),
|
'selected' => $this->getData(['config', 'i18n', 'interface']),
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="contentContainer" class="tabContent">
|
<div id="contentContainer" class="tabContent">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php if($module::$languagesInstalled): ?>
|
<?php if ($module::$languagesInstalled) : ?>
|
||||||
<?php echo template::table([1, 3, 2, 4, 1, 1], $module::$languagesInstalled, ['Langue', '', '', '', '', '']); ?>
|
<?php echo template::table([1, 3, 2, 4, 1, 1], $module::$languagesInstalled, ['Langue', '', '', '', '', '']); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -13,7 +13,8 @@
|
|||||||
* @link http://zwiicms.fr/
|
* @link http://zwiicms.fr/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class user extends common {
|
class user extends common
|
||||||
|
{
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'add' => self::GROUP_ADMIN,
|
'add' => self::GROUP_ADMIN,
|
||||||
@ -50,18 +51,19 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Ajout
|
* Ajout
|
||||||
*/
|
*/
|
||||||
public function add() {
|
public function add()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
$check=true;
|
$check = true;
|
||||||
// L'identifiant d'utilisateur est indisponible
|
// L'identifiant d'utilisateur est indisponible
|
||||||
$userId = $this->getInput('userAddId', helper::FILTER_ID, true);
|
$userId = $this->getInput('userAddId', helper::FILTER_ID, true);
|
||||||
if($this->getData(['user', $userId])) {
|
if ($this->getData(['user', $userId])) {
|
||||||
self::$inputNotices['userAddId'] = 'Identifiant déjà utilisé';
|
self::$inputNotices['userAddId'] = 'Identifiant déjà utilisé';
|
||||||
$check=false;
|
$check = false;
|
||||||
}
|
}
|
||||||
// Double vérification pour le mot de passe
|
// Double vérification pour le mot de passe
|
||||||
if($this->getInput('userAddPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('userAddConfirmPassword', helper::FILTER_STRING_SHORT, true)) {
|
if ($this->getInput('userAddPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('userAddConfirmPassword', helper::FILTER_STRING_SHORT, true)) {
|
||||||
self::$inputNotices['userAddConfirmPassword'] = 'Incorrect';
|
self::$inputNotices['userAddConfirmPassword'] = 'Incorrect';
|
||||||
$check = false;
|
$check = false;
|
||||||
}
|
}
|
||||||
@ -94,7 +96,7 @@ class user extends common {
|
|||||||
|
|
||||||
// Envoie le mail
|
// Envoie le mail
|
||||||
$sent = true;
|
$sent = true;
|
||||||
if($this->getInput('userAddSendMail', helper::FILTER_BOOLEAN) && $check === true) {
|
if ($this->getInput('userAddSendMail', helper::FILTER_BOOLEAN) && $check === true) {
|
||||||
$sent = $this->sendMail(
|
$sent = $this->sendMail(
|
||||||
$userMail,
|
$userMail,
|
||||||
'Compte créé sur ' . $this->getData(['locale', 'title']),
|
'Compte créé sur ' . $this->getData(['locale', 'title']),
|
||||||
@ -122,13 +124,14 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Suppression
|
* Suppression
|
||||||
*/
|
*/
|
||||||
public function delete() {
|
public function delete()
|
||||||
|
{
|
||||||
// Accès refusé
|
// Accès refusé
|
||||||
if(
|
if (
|
||||||
// L'utilisateur n'existe pas
|
// L'utilisateur n'existe pas
|
||||||
$this->getData(['user', $this->getUrl(2)]) === null
|
$this->getData(['user', $this->getUrl(2)]) === null
|
||||||
// Groupe insuffisant
|
// Groupe insuffisant
|
||||||
AND ($this->getUrl('group') < self::GROUP_MODERATOR)
|
and ($this->getUrl('group') < self::GROUP_MODERATOR)
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -144,7 +147,7 @@ class user extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Bloque la suppression de son propre compte
|
// Bloque la suppression de son propre compte
|
||||||
elseif($this->getUser('id') === $this->getUrl(2)) {
|
elseif ($this->getUser('id') === $this->getUrl(2)) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'user',
|
'redirect' => helper::baseUrl() . 'user',
|
||||||
@ -166,9 +169,12 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Édition
|
* Édition
|
||||||
*/
|
*/
|
||||||
public function edit() {
|
public function edit()
|
||||||
if ($this->getUrl(3) !== $_SESSION['csrf'] &&
|
{
|
||||||
$this->getUrl(4) !== $_SESSION['csrf']) {
|
if (
|
||||||
|
$this->getUrl(3) !== $_SESSION['csrf'] &&
|
||||||
|
$this->getUrl(4) !== $_SESSION['csrf']
|
||||||
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'user',
|
'redirect' => helper::baseUrl() . 'user',
|
||||||
@ -176,18 +182,17 @@ class user extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Accès refusé
|
// Accès refusé
|
||||||
if(
|
if (
|
||||||
// L'utilisateur n'existe pas
|
// L'utilisateur n'existe pas
|
||||||
$this->getData(['user', $this->getUrl(2)]) === null
|
$this->getData(['user', $this->getUrl(2)]) === null
|
||||||
// Droit d'édition
|
// Droit d'édition
|
||||||
AND (
|
and (
|
||||||
// Impossible de s'auto-éditer
|
// Impossible de s'auto-éditer
|
||||||
(
|
($this->getUser('id') === $this->getUrl(2)
|
||||||
$this->getUser('id') === $this->getUrl(2)
|
and $this->getUrl('group') <= self::GROUP_VISITOR
|
||||||
AND $this->getUrl('group') <= self::GROUP_VISITOR
|
|
||||||
)
|
)
|
||||||
// Impossible d'éditer un autre utilisateur
|
// Impossible d'éditer un autre utilisateur
|
||||||
OR ($this->getUrl('group') < self::GROUP_MODERATOR)
|
or ($this->getUrl('group') < self::GROUP_MODERATOR)
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -198,45 +203,41 @@ class user extends common {
|
|||||||
// Accès autorisé
|
// Accès autorisé
|
||||||
else {
|
else {
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Double vérification pour le mot de passe
|
// Double vérification pour le mot de passe
|
||||||
$newPassword = $this->getData(['user', $this->getUrl(2), 'password']);
|
$newPassword = $this->getData(['user', $this->getUrl(2), 'password']);
|
||||||
if($this->getInput('userEditNewPassword')) {
|
if ($this->getInput('userEditNewPassword')) {
|
||||||
// L'ancien mot de passe est correct
|
// L'ancien mot de passe est correct
|
||||||
if(password_verify($this->getInput('userEditOldPassword'), $this->getData(['user', $this->getUrl(2), 'password']))) {
|
if (password_verify($this->getInput('userEditOldPassword'), $this->getData(['user', $this->getUrl(2), 'password']))) {
|
||||||
// La confirmation correspond au mot de passe
|
// La confirmation correspond au mot de passe
|
||||||
if($this->getInput('userEditNewPassword') === $this->getInput('userEditConfirmPassword')) {
|
if ($this->getInput('userEditNewPassword') === $this->getInput('userEditConfirmPassword')) {
|
||||||
$newPassword = $this->getInput('userEditNewPassword', helper::FILTER_PASSWORD, true);
|
$newPassword = $this->getInput('userEditNewPassword', helper::FILTER_PASSWORD, true);
|
||||||
// Déconnexion de l'utilisateur si il change le mot de passe de son propre compte
|
// Déconnexion de l'utilisateur si il change le mot de passe de son propre compte
|
||||||
if($this->getUser('id') === $this->getUrl(2)) {
|
if ($this->getUser('id') === $this->getUrl(2)) {
|
||||||
helper::deleteCookie('ZWII_USER_ID');
|
helper::deleteCookie('ZWII_USER_ID');
|
||||||
helper::deleteCookie('ZWII_USER_PASSWORD');
|
helper::deleteCookie('ZWII_USER_PASSWORD');
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
self::$inputNotices['userEditConfirmPassword'] = 'Incorrect';
|
self::$inputNotices['userEditConfirmPassword'] = 'Incorrect';
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
self::$inputNotices['userEditOldPassword'] = 'Incorrect';
|
self::$inputNotices['userEditOldPassword'] = 'Incorrect';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Modification du groupe
|
// Modification du groupe
|
||||||
if(
|
if (
|
||||||
$this->getUser('group') === self::GROUP_ADMIN
|
$this->getUser('group') === self::GROUP_ADMIN
|
||||||
AND $this->getUrl(2) !== $this->getUser('id')
|
and $this->getUrl(2) !== $this->getUser('id')
|
||||||
) {
|
) {
|
||||||
$newGroup = $this->getInput('userEditGroup', helper::FILTER_INT, true);
|
$newGroup = $this->getInput('userEditGroup', helper::FILTER_INT, true);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$newGroup = $this->getData(['user', $this->getUrl(2), 'group']);
|
$newGroup = $this->getData(['user', $this->getUrl(2), 'group']);
|
||||||
}
|
}
|
||||||
// Modification de nom Prénom
|
// Modification de nom Prénom
|
||||||
if($this->getUser('group') === self::GROUP_ADMIN){
|
if ($this->getUser('group') === self::GROUP_ADMIN) {
|
||||||
$newfirstname = $this->getInput('userEditFirstname', helper::FILTER_STRING_SHORT, true);
|
$newfirstname = $this->getInput('userEditFirstname', helper::FILTER_STRING_SHORT, true);
|
||||||
$newlastname = $this->getInput('userEditLastname', helper::FILTER_STRING_SHORT, true);
|
$newlastname = $this->getInput('userEditLastname', helper::FILTER_STRING_SHORT, true);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$newfirstname = $this->getData(['user', $this->getUrl(2), 'firstname']);
|
$newfirstname = $this->getData(['user', $this->getUrl(2), 'firstname']);
|
||||||
$newlastname = $this->getData(['user', $this->getUrl(2), 'lastname']);
|
$newlastname = $this->getData(['user', $this->getUrl(2), 'lastname']);
|
||||||
}
|
}
|
||||||
@ -253,20 +254,20 @@ class user extends common {
|
|||||||
'signature' => $this->getInput('userEditSignature', helper::FILTER_INT, true),
|
'signature' => $this->getInput('userEditSignature', helper::FILTER_INT, true),
|
||||||
'mail' => $this->getInput('userEditMail', helper::FILTER_MAIL, true),
|
'mail' => $this->getInput('userEditMail', helper::FILTER_MAIL, true),
|
||||||
'password' => $newPassword,
|
'password' => $newPassword,
|
||||||
'connectFail' => $this->getData(['user',$this->getUrl(2),'connectFail']),
|
'connectFail' => $this->getData(['user', $this->getUrl(2), 'connectFail']),
|
||||||
'connectTimeout' => $this->getData(['user',$this->getUrl(2),'connectTimeout']),
|
'connectTimeout' => $this->getData(['user', $this->getUrl(2), 'connectTimeout']),
|
||||||
'accessUrl' => $this->getData(['user',$this->getUrl(2),'accessUrl']),
|
'accessUrl' => $this->getData(['user', $this->getUrl(2), 'accessUrl']),
|
||||||
'accessTimer' => $this->getData(['user',$this->getUrl(2),'accessTimer']),
|
'accessTimer' => $this->getData(['user', $this->getUrl(2), 'accessTimer']),
|
||||||
'accessCsrf' => $this->getData(['user',$this->getUrl(2),'accessCsrf']),
|
'accessCsrf' => $this->getData(['user', $this->getUrl(2), 'accessCsrf']),
|
||||||
'files' => $this->getInput('userEditFiles', helper::FILTER_BOOLEAN)
|
'files' => $this->getInput('userEditFiles', helper::FILTER_BOOLEAN)
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
// Redirection spécifique si l'utilisateur change son mot de passe
|
// Redirection spécifique si l'utilisateur change son mot de passe
|
||||||
if($this->getUser('id') === $this->getUrl(2) AND $this->getInput('userEditNewPassword')) {
|
if ($this->getUser('id') === $this->getUrl(2) and $this->getInput('userEditNewPassword')) {
|
||||||
$redirect = helper::baseUrl() . 'user/login/' . str_replace('/', '_', $this->getUrl());
|
$redirect = helper::baseUrl() . 'user/login/' . str_replace('/', '_', $this->getUrl());
|
||||||
}
|
}
|
||||||
// Redirection si retour en arrière possible
|
// Redirection si retour en arrière possible
|
||||||
elseif($this->getUser('group') === 3) {
|
elseif ($this->getUser('group') === 3) {
|
||||||
$redirect = helper::baseUrl() . 'user';
|
$redirect = helper::baseUrl() . 'user';
|
||||||
}
|
}
|
||||||
// Redirection normale
|
// Redirection normale
|
||||||
@ -291,11 +292,12 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Mot de passe perdu
|
* Mot de passe perdu
|
||||||
*/
|
*/
|
||||||
public function forgot() {
|
public function forgot()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
$userId = $this->getInput('userForgotId', helper::FILTER_ID, true);
|
$userId = $this->getInput('userForgotId', helper::FILTER_ID, true);
|
||||||
if($this->getData(['user', $userId])) {
|
if ($this->getData(['user', $userId])) {
|
||||||
// Enregistre la date de la demande dans le compte utilisateur
|
// Enregistre la date de la demande dans le compte utilisateur
|
||||||
$this->setData(['user', $userId, 'forgot', time()]);
|
$this->setData(['user', $userId, 'forgot', time()]);
|
||||||
// Crée un id unique pour la réinitialisation
|
// Crée un id unique pour la réinitialisation
|
||||||
@ -335,23 +337,24 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Liste des utilisateurs
|
* Liste des utilisateurs
|
||||||
*/
|
*/
|
||||||
public function index() {
|
public function index()
|
||||||
|
{
|
||||||
$userIdsFirstnames = helper::arrayColumn($this->getData(['user']), 'firstname');
|
$userIdsFirstnames = helper::arrayColumn($this->getData(['user']), 'firstname');
|
||||||
ksort($userIdsFirstnames);
|
ksort($userIdsFirstnames);
|
||||||
foreach($userIdsFirstnames as $userId => $userFirstname) {
|
foreach ($userIdsFirstnames as $userId => $userFirstname) {
|
||||||
if ($this->getData(['user', $userId, 'group'])) {
|
if ($this->getData(['user', $userId, 'group'])) {
|
||||||
self::$users[] = [
|
self::$users[] = [
|
||||||
$userId,
|
$userId,
|
||||||
$userFirstname . ' ' . $this->getData(['user', $userId, 'lastname']),
|
$userFirstname . ' ' . $this->getData(['user', $userId, 'lastname']),
|
||||||
self::$groups[$this->getData(['user', $userId, 'group'])],
|
self::$groups[$this->getData(['user', $userId, 'group'])],
|
||||||
template::button('userEdit' . $userId, [
|
template::button('userEdit' . $userId, [
|
||||||
'href' => helper::baseUrl() . 'user/edit/' . $userId . '/back/'. $_SESSION['csrf'],
|
'href' => helper::baseUrl() . 'user/edit/' . $userId . '/back/' . $_SESSION['csrf'],
|
||||||
'value' => template::ico('pencil'),
|
'value' => template::ico('pencil'),
|
||||||
'help' => 'Editer'
|
'help' => 'Editer'
|
||||||
]),
|
]),
|
||||||
template::button('userDelete' . $userId, [
|
template::button('userDelete' . $userId, [
|
||||||
'class' => 'userDelete buttonRed',
|
'class' => 'userDelete buttonRed',
|
||||||
'href' => helper::baseUrl() . 'user/delete/' . $userId. '/' . $_SESSION['csrf'],
|
'href' => helper::baseUrl() . 'user/delete/' . $userId . '/' . $_SESSION['csrf'],
|
||||||
'value' => template::ico('trash'),
|
'value' => template::ico('trash'),
|
||||||
'help' => 'Supprimer'
|
'help' => 'Supprimer'
|
||||||
])
|
])
|
||||||
@ -368,17 +371,18 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Connexion
|
* Connexion
|
||||||
*/
|
*/
|
||||||
public function login() {
|
public function login()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
$logStatus = '';
|
$logStatus = '';
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Lire Id du compte
|
// Lire Id du compte
|
||||||
$userId = $this->getInput('userLoginId', helper::FILTER_ID, true);
|
$userId = $this->getInput('userLoginId', helper::FILTER_ID, true);
|
||||||
// Check le captcha
|
// Check le captcha
|
||||||
if(
|
if (
|
||||||
$this->getData(['config','connect','captcha'])
|
$this->getData(['config', 'connect', 'captcha'])
|
||||||
AND password_verify($this->getInput('userLoginCaptcha', helper::FILTER_INT), $this->getInput('userLoginCaptchaResult') ) === false )
|
and password_verify($this->getInput('userLoginCaptcha', helper::FILTER_INT), $this->getInput('userLoginCaptchaResult')) === false
|
||||||
{
|
) {
|
||||||
$captcha = false;
|
$captcha = false;
|
||||||
} else {
|
} else {
|
||||||
$captcha = true;
|
$captcha = true;
|
||||||
@ -386,22 +390,24 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Aucun compte existant
|
* Aucun compte existant
|
||||||
*/
|
*/
|
||||||
if ( !$this->getData(['user', $userId])) {
|
if (!$this->getData(['user', $userId])) {
|
||||||
$logStatus = 'Compte inconnu';
|
$logStatus = 'Compte inconnu';
|
||||||
//Stockage de l'IP
|
//Stockage de l'IP
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'blacklist',
|
'blacklist',
|
||||||
$userId,
|
$userId,
|
||||||
[
|
[
|
||||||
'connectFail' => $this->getData(['blacklist',$userId,'connectFail']) + 1,
|
'connectFail' => $this->getData(['blacklist', $userId, 'connectFail']) + 1,
|
||||||
'lastFail' => time(),
|
'lastFail' => time(),
|
||||||
'ip' => helper::getIp()
|
'ip' => helper::getIp()
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
// Verrouillage des IP
|
// Verrouillage des IP
|
||||||
$ipBlackList = helper::arrayColumn($this->getData(['blacklist']), 'ip');
|
$ipBlackList = helper::arrayColumn($this->getData(['blacklist']), 'ip');
|
||||||
if ( $this->getData(['blacklist',$userId,'connectFail']) >= $this->getData(['config', 'connect', 'attempt'])
|
if (
|
||||||
AND in_array($this->getData(['blacklist',$userId,'ip']),$ipBlackList) ) {
|
$this->getData(['blacklist', $userId, 'connectFail']) >= $this->getData(['config', 'connect', 'attempt'])
|
||||||
|
and in_array($this->getData(['blacklist', $userId, 'ip']), $ipBlackList)
|
||||||
|
) {
|
||||||
$logStatus = 'Compte inconnu verrouillé';
|
$logStatus = 'Compte inconnu verrouillé';
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -420,33 +426,35 @@ class user extends common {
|
|||||||
*/
|
*/
|
||||||
} else {
|
} else {
|
||||||
// Cas 4 : le délai de blocage est dépassé et le compte est au max - Réinitialiser
|
// Cas 4 : le délai de blocage est dépassé et le compte est au max - Réinitialiser
|
||||||
if ($this->getData(['user',$userId,'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) < time()
|
if (
|
||||||
AND $this->getData(['user',$userId,'connectFail']) === $this->getData(['config', 'connect', 'attempt']) ) {
|
$this->getData(['user', $userId, 'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) < time()
|
||||||
$this->setData(['user',$userId,'connectFail',0 ]);
|
and $this->getData(['user', $userId, 'connectFail']) === $this->getData(['config', 'connect', 'attempt'])
|
||||||
$this->setData(['user',$userId,'connectTimeout',0 ]);
|
) {
|
||||||
|
$this->setData(['user', $userId, 'connectFail', 0]);
|
||||||
|
$this->setData(['user', $userId, 'connectTimeout', 0]);
|
||||||
}
|
}
|
||||||
// Check la présence des variables et contrôle du blocage du compte si valeurs dépassées
|
// Check la présence des variables et contrôle du blocage du compte si valeurs dépassées
|
||||||
// Vérification du mot de passe et du groupe
|
// Vérification du mot de passe et du groupe
|
||||||
if (
|
if (
|
||||||
( $this->getData(['user',$userId,'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) ) < time()
|
($this->getData(['user', $userId, 'connectTimeout']) + $this->getData(['config', 'connect', 'timeout'])) < time()
|
||||||
AND $this->getData(['user',$userId,'connectFail']) < $this->getData(['config', 'connect', 'attempt'])
|
and $this->getData(['user', $userId, 'connectFail']) < $this->getData(['config', 'connect', 'attempt'])
|
||||||
AND password_verify($this->getInput('userLoginPassword', helper::FILTER_STRING_SHORT, true), $this->getData(['user', $userId, 'password']))
|
and password_verify($this->getInput('userLoginPassword', helper::FILTER_STRING_SHORT, true), $this->getData(['user', $userId, 'password']))
|
||||||
AND $this->getData(['user', $userId, 'group']) >= self::GROUP_MEMBER
|
and $this->getData(['user', $userId, 'group']) >= self::GROUP_MEMBER
|
||||||
AND $captcha === true
|
and $captcha === true
|
||||||
) {
|
) {
|
||||||
// RAZ
|
// RAZ
|
||||||
$this->setData(['user',$userId,'connectFail',0 ]);
|
$this->setData(['user', $userId, 'connectFail', 0]);
|
||||||
$this->setData(['user',$userId,'connectTimeout',0 ]);
|
$this->setData(['user', $userId, 'connectTimeout', 0]);
|
||||||
// Expiration
|
// Expiration
|
||||||
$expire = $this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN ) === true ? strtotime("+1 year") : 0 ;
|
$expire = $this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN) === true ? strtotime("+1 year") : 0;
|
||||||
setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false) , '', helper::isHttps(), true);
|
setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
||||||
setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
||||||
// Accès multiples avec le même compte
|
// Accès multiples avec le même compte
|
||||||
$this->setData(['user',$userId,'accessCsrf',$_SESSION['csrf']]);
|
$this->setData(['user', $userId, 'accessCsrf', $_SESSION['csrf']]);
|
||||||
// Valeurs en sortie lorsque le site est en maintenance et que l'utilisateur n'est pas administrateur
|
// Valeurs en sortie lorsque le site est en maintenance et que l'utilisateur n'est pas administrateur
|
||||||
if(
|
if (
|
||||||
$this->getData(['config', 'maintenance'])
|
$this->getData(['config', 'maintenance'])
|
||||||
AND $this->getData(['user', $userId, 'group']) < self::GROUP_ADMIN
|
and $this->getData(['user', $userId, 'group']) < self::GROUP_ADMIN
|
||||||
) {
|
) {
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => 'Seul un administrateur peut se connecter lors d\'une maintenance',
|
'notification' => 'Seul un administrateur peut se connecter lors d\'une maintenance',
|
||||||
@ -457,7 +465,7 @@ class user extends common {
|
|||||||
$logStatus = 'Connexion réussie';
|
$logStatus = 'Connexion réussie';
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => 'Bienvenue ' . $this->getData(['user',$userId,'firstname']) . ' ' . $this->getData(['user',$userId,'lastname']) ,
|
'notification' => 'Bienvenue ' . $this->getData(['user', $userId, 'firstname']) . ' ' . $this->getData(['user', $userId, 'lastname']),
|
||||||
'redirect' => helper::baseUrl() . str_replace('_', '/', str_replace('__', '#', $this->getUrl(2))),
|
'redirect' => helper::baseUrl() . str_replace('_', '/', str_replace('__', '#', $this->getUrl(2))),
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
@ -467,15 +475,15 @@ class user extends common {
|
|||||||
$notification = 'Captcha, identifiant ou mot de passe incorrects';
|
$notification = 'Captcha, identifiant ou mot de passe incorrects';
|
||||||
$logStatus = $captcha === true ? 'Erreur de mot de passe' : 'Erreur de captcha';
|
$logStatus = $captcha === true ? 'Erreur de mot de passe' : 'Erreur de captcha';
|
||||||
// Cas 1 le nombre de connexions est inférieur aux tentatives autorisées : incrément compteur d'échec
|
// Cas 1 le nombre de connexions est inférieur aux tentatives autorisées : incrément compteur d'échec
|
||||||
if ($this->getData(['user',$userId,'connectFail']) < $this->getData(['config', 'connect', 'attempt'])) {
|
if ($this->getData(['user', $userId, 'connectFail']) < $this->getData(['config', 'connect', 'attempt'])) {
|
||||||
$this->setData(['user',$userId,'connectFail',$this->getdata(['user',$userId,'connectFail']) + 1 ]);
|
$this->setData(['user', $userId, 'connectFail', $this->getdata(['user', $userId, 'connectFail']) + 1]);
|
||||||
}
|
}
|
||||||
// Cas 2 la limite du nombre de connexion est atteinte : placer le timer
|
// Cas 2 la limite du nombre de connexion est atteinte : placer le timer
|
||||||
if ( $this->getdata(['user',$userId,'connectFail']) == $this->getData(['config', 'connect', 'attempt']) ) {
|
if ($this->getdata(['user', $userId, 'connectFail']) == $this->getData(['config', 'connect', 'attempt'])) {
|
||||||
$this->setData(['user',$userId,'connectTimeout', time()]);
|
$this->setData(['user', $userId, 'connectTimeout', time()]);
|
||||||
}
|
}
|
||||||
// Cas 3 le délai de bloquage court
|
// Cas 3 le délai de bloquage court
|
||||||
if ($this->getData(['user',$userId,'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) > time() ) {
|
if ($this->getData(['user', $userId, 'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) > time()) {
|
||||||
$notification = 'Accès bloqué ' . ($this->getData(['config', 'connect', 'timeout']) / 60) . ' minutes.';
|
$notification = 'Accès bloqué ' . ($this->getData(['config', 'connect', 'timeout']) / 60) . ' minutes.';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -487,15 +495,15 @@ class user extends common {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Journalisation
|
// Journalisation
|
||||||
$dataLog = mb_detect_encoding(strftime('%d/%m/%y',time()), 'UTF-8', true)
|
$dataLog = mb_detect_encoding(strftime('%d/%m/%y', time()), 'UTF-8', true)
|
||||||
? strftime('%d/%m/%y',time()) . ';' . strftime('%R',time()) . ';'
|
? strftime('%d/%m/%y', time()) . ';' . strftime('%R', time()) . ';'
|
||||||
: utf8_encode(strftime('%d/%m/%y',time())) . ';' . utf8_encode(strftime('%R',time())) . ';' ;
|
: utf8_encode(strftime('%d/%m/%y', time())) . ';' . utf8_encode(strftime('%R', time())) . ';';
|
||||||
$dataLog .= helper::getIp($this->getData(['config','connect','anonymousIp'])) . ';';
|
$dataLog .= helper::getIp($this->getData(['config', 'connect', 'anonymousIp'])) . ';';
|
||||||
$dataLog .= $this->getInput('userLoginId', helper::FILTER_ID) . ';' ;
|
$dataLog .= $this->getInput('userLoginId', helper::FILTER_ID) . ';';
|
||||||
$dataLog .= $this->getUrl() .';' ;
|
$dataLog .= $this->getUrl() . ';';
|
||||||
$dataLog .= $logStatus ;
|
$dataLog .= $logStatus;
|
||||||
$dataLog .= PHP_EOL;
|
$dataLog .= PHP_EOL;
|
||||||
if ($this->getData(['config','connect','log'])) {
|
if ($this->getData(['config', 'connect', 'log'])) {
|
||||||
file_put_contents(self::DATA_DIR . 'journal.log', $dataLog, FILE_APPEND);
|
file_put_contents(self::DATA_DIR . 'journal.log', $dataLog, FILE_APPEND);
|
||||||
}
|
}
|
||||||
// Stockage des cookies
|
// Stockage des cookies
|
||||||
@ -513,7 +521,8 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Déconnexion
|
* Déconnexion
|
||||||
*/
|
*/
|
||||||
public function logout() {
|
public function logout()
|
||||||
|
{
|
||||||
helper::deleteCookie('ZWII_USER_ID');
|
helper::deleteCookie('ZWII_USER_ID');
|
||||||
helper::deleteCookie('ZWII_USER_PASSWORD');
|
helper::deleteCookie('ZWII_USER_PASSWORD');
|
||||||
session_destroy();
|
session_destroy();
|
||||||
@ -528,15 +537,16 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Réinitialisation du mot de passe
|
* Réinitialisation du mot de passe
|
||||||
*/
|
*/
|
||||||
public function reset() {
|
public function reset()
|
||||||
|
{
|
||||||
// Accès refusé
|
// Accès refusé
|
||||||
if(
|
if (
|
||||||
// L'utilisateur n'existe pas
|
// L'utilisateur n'existe pas
|
||||||
$this->getData(['user', $this->getUrl(2)]) === null
|
$this->getData(['user', $this->getUrl(2)]) === null
|
||||||
// Lien de réinitialisation trop vieux
|
// Lien de réinitialisation trop vieux
|
||||||
OR $this->getData(['user', $this->getUrl(2), 'forgot']) + 86400 < time()
|
or $this->getData(['user', $this->getUrl(2), 'forgot']) + 86400 < time()
|
||||||
// Id unique incorrecte
|
// Id unique incorrecte
|
||||||
OR $this->getUrl(3) !== md5(json_encode($this->getData(['user', $this->getUrl(2)])))
|
or $this->getUrl(3) !== md5(json_encode($this->getData(['user', $this->getUrl(2)])))
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -546,15 +556,14 @@ class user extends common {
|
|||||||
// Accès autorisé
|
// Accès autorisé
|
||||||
else {
|
else {
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Double vérification pour le mot de passe
|
// Double vérification pour le mot de passe
|
||||||
if($this->getInput('userResetNewPassword')) {
|
if ($this->getInput('userResetNewPassword')) {
|
||||||
// La confirmation ne correspond pas au mot de passe
|
// La confirmation ne correspond pas au mot de passe
|
||||||
if($this->getInput('userResetNewPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('userResetConfirmPassword', helper::FILTER_STRING_SHORT, true)) {
|
if ($this->getInput('userResetNewPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('userResetConfirmPassword', helper::FILTER_STRING_SHORT, true)) {
|
||||||
$newPassword = $this->getData(['user', $this->getUrl(2), 'password']);
|
$newPassword = $this->getData(['user', $this->getUrl(2), 'password']);
|
||||||
self::$inputNotices['userResetConfirmPassword'] = 'Incorrect';
|
self::$inputNotices['userResetConfirmPassword'] = 'Incorrect';
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$newPassword = $this->getInput('userResetNewPassword', helper::FILTER_PASSWORD, true);
|
$newPassword = $this->getInput('userResetNewPassword', helper::FILTER_PASSWORD, true);
|
||||||
}
|
}
|
||||||
// Modifie le mot de passe
|
// Modifie le mot de passe
|
||||||
@ -562,8 +571,8 @@ class user extends common {
|
|||||||
// Réinitialise la date de la demande
|
// Réinitialise la date de la demande
|
||||||
$this->setData(['user', $this->getUrl(2), 'forgot', 0]);
|
$this->setData(['user', $this->getUrl(2), 'forgot', 0]);
|
||||||
// Réinitialise le blocage
|
// Réinitialise le blocage
|
||||||
$this->setData(['user', $this->getUrl(2),'connectFail',0 ]);
|
$this->setData(['user', $this->getUrl(2), 'connectFail', 0]);
|
||||||
$this->setData(['user', $this->getUrl(2),'connectTimeout',0 ]);
|
$this->setData(['user', $this->getUrl(2), 'connectTimeout', 0]);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => 'Nouveau mot de passe enregistré',
|
'notification' => 'Nouveau mot de passe enregistré',
|
||||||
@ -585,66 +594,69 @@ class user extends common {
|
|||||||
/**
|
/**
|
||||||
* Importation CSV d'utilisateurs
|
* Importation CSV d'utilisateurs
|
||||||
*/
|
*/
|
||||||
public function import() {
|
public function import()
|
||||||
|
{
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
$notification = '';
|
$notification = '';
|
||||||
$success = true;
|
$success = true;
|
||||||
if($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
// Lecture du CSV et construction du tableau
|
// Lecture du CSV et construction du tableau
|
||||||
$file = $this->getInput('userImportCSVFile',helper::FILTER_STRING_SHORT, true);
|
$file = $this->getInput('userImportCSVFile', helper::FILTER_STRING_SHORT, true);
|
||||||
$filePath = self::FILE_DIR . 'source/' . $file;
|
$filePath = self::FILE_DIR . 'source/' . $file;
|
||||||
if ($file AND file_exists($filePath)) {
|
if ($file and file_exists($filePath)) {
|
||||||
// Analyse et extraction du CSV
|
// Analyse et extraction du CSV
|
||||||
$rows = array_map(function($row) { return str_getcsv($row, $this->getInput('userImportSeparator') ); }, file($filePath));
|
$rows = array_map(function ($row) {
|
||||||
|
return str_getcsv($row, $this->getInput('userImportSeparator'));
|
||||||
|
}, file($filePath));
|
||||||
$header = array_shift($rows);
|
$header = array_shift($rows);
|
||||||
$csv = array();
|
$csv = array();
|
||||||
foreach($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
$csv[] = array_combine($header, $row);
|
$csv[] = array_combine($header, $row);
|
||||||
}
|
}
|
||||||
// Traitement des données
|
// Traitement des données
|
||||||
foreach($csv as $item ) {
|
foreach ($csv as $item) {
|
||||||
// Données valides
|
// Données valides
|
||||||
if( array_key_exists('id', $item)
|
if (
|
||||||
AND array_key_exists('prenom',$item)
|
array_key_exists('id', $item)
|
||||||
AND array_key_exists('nom',$item)
|
and array_key_exists('prenom', $item)
|
||||||
AND array_key_exists('groupe',$item)
|
and array_key_exists('nom', $item)
|
||||||
AND array_key_exists('email',$item)
|
and array_key_exists('groupe', $item)
|
||||||
AND $item['nom']
|
and array_key_exists('email', $item)
|
||||||
AND $item['prenom']
|
and $item['nom']
|
||||||
AND $item['id']
|
and $item['prenom']
|
||||||
AND $item['email']
|
and $item['id']
|
||||||
AND $item['groupe']
|
and $item['email']
|
||||||
|
and $item['groupe']
|
||||||
) {
|
) {
|
||||||
// Validation du groupe
|
// Validation du groupe
|
||||||
$item['groupe'] = (int) $item['groupe'];
|
$item['groupe'] = (int) $item['groupe'];
|
||||||
$item['groupe'] = ( $item['groupe'] >= self::GROUP_BANNED AND $item['groupe'] <= self::GROUP_ADMIN )
|
$item['groupe'] = ($item['groupe'] >= self::GROUP_BANNED and $item['groupe'] <= self::GROUP_ADMIN)
|
||||||
? $item['groupe'] : 1;
|
? $item['groupe'] : 1;
|
||||||
// L'utilisateur existe
|
// L'utilisateur existe
|
||||||
if ( $this->getData(['user',helper::filter($item['id'] , helper::FILTER_ID)]))
|
if ($this->getData(['user', helper::filter($item['id'], helper::FILTER_ID)])) {
|
||||||
{
|
|
||||||
// Notification du doublon
|
// Notification du doublon
|
||||||
$item['notification'] = template::ico('cancel');
|
$item['notification'] = template::ico('cancel');
|
||||||
// Création du tableau de confirmation
|
// Création du tableau de confirmation
|
||||||
self::$users[] = [
|
self::$users[] = [
|
||||||
helper::filter($item['id'] , helper::FILTER_ID),
|
helper::filter($item['id'], helper::FILTER_ID),
|
||||||
$item['nom'],
|
$item['nom'],
|
||||||
$item['prenom'],
|
$item['prenom'],
|
||||||
self::$groups[$item['groupe']],
|
self::$groups[$item['groupe']],
|
||||||
$item['prenom'],
|
$item['prenom'],
|
||||||
helper::filter($item['email'] , helper::FILTER_MAIL),
|
helper::filter($item['email'], helper::FILTER_MAIL),
|
||||||
$item['notification']
|
$item['notification']
|
||||||
];
|
];
|
||||||
// L'utilisateur n'existe pas
|
// L'utilisateur n'existe pas
|
||||||
} else {
|
} else {
|
||||||
// Nettoyage de l'identifiant
|
// Nettoyage de l'identifiant
|
||||||
$userId = helper::filter($item['id'] , helper::FILTER_ID);
|
$userId = helper::filter($item['id'], helper::FILTER_ID);
|
||||||
// Enregistre le user
|
// Enregistre le user
|
||||||
$create = $this->setData([
|
$create = $this->setData([
|
||||||
'user',
|
'user',
|
||||||
$userId, [
|
$userId, [
|
||||||
'firstname' => $item['prenom'],
|
'firstname' => $item['prenom'],
|
||||||
'forgot' => 0,
|
'forgot' => 0,
|
||||||
'group' => $item['groupe'] ,
|
'group' => $item['groupe'],
|
||||||
'lastname' => $item['nom'],
|
'lastname' => $item['nom'],
|
||||||
'mail' => $item['email'],
|
'mail' => $item['email'],
|
||||||
'pseudo' => $item['prenom'],
|
'pseudo' => $item['prenom'],
|
||||||
@ -655,12 +667,15 @@ class user extends common {
|
|||||||
"accessUrl" => null,
|
"accessUrl" => null,
|
||||||
"accessTimer" => null,
|
"accessTimer" => null,
|
||||||
"accessCsrf" => null
|
"accessCsrf" => null
|
||||||
]]);
|
]
|
||||||
|
]);
|
||||||
// Icône de notification
|
// Icône de notification
|
||||||
$item['notification'] = $create ? template::ico('check') : template::ico('cancel');
|
$item['notification'] = $create ? template::ico('check') : template::ico('cancel');
|
||||||
// Envoi du mail
|
// Envoi du mail
|
||||||
if ($create
|
if (
|
||||||
AND $this->getInput('userImportNotification',helper::FILTER_BOOLEAN) === true) {
|
$create
|
||||||
|
and $this->getInput('userImportNotification', helper::FILTER_BOOLEAN) === true
|
||||||
|
) {
|
||||||
$sent = $this->sendMail(
|
$sent = $this->sendMail(
|
||||||
$item['email'],
|
$item['email'],
|
||||||
'Compte créé sur ' . $this->getData(['locale', 'title']),
|
'Compte créé sur ' . $this->getData(['locale', 'title']),
|
||||||
@ -671,7 +686,7 @@ class user extends common {
|
|||||||
);
|
);
|
||||||
if ($sent === true) {
|
if ($sent === true) {
|
||||||
// Mail envoyé changement de l'icône
|
// Mail envoyé changement de l'icône
|
||||||
$item['notification'] = template::ico('mail') ;
|
$item['notification'] = template::ico('mail');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Création du tableau de confirmation
|
// Création du tableau de confirmation
|
||||||
@ -688,10 +703,10 @@ class user extends common {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (empty(self::$users)) {
|
if (empty(self::$users)) {
|
||||||
$notification = 'Rien à importer, erreur de format ou fichier incorrect' ;
|
$notification = 'Rien à importer, erreur de format ou fichier incorrect';
|
||||||
$success = false;
|
$success = false;
|
||||||
} else {
|
} else {
|
||||||
$notification = 'Importation effectuée' ;
|
$notification = 'Importation effectuée';
|
||||||
$success = true;
|
$success = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -707,5 +722,4 @@ class user extends common {
|
|||||||
'state' => $success
|
'state' => $success
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('userAddForm'); ?>
|
<?php echo template::formOpen('userAddForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('userAddBack', [
|
<?php echo template::button('userAddBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
@ -10,8 +10,8 @@
|
|||||||
<div class="col2 offset9">
|
<div class="col2 offset9">
|
||||||
<?php echo template::submit('userAddSubmit'); ?>
|
<?php echo template::submit('userAddSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -86,10 +86,13 @@
|
|||||||
'autocomplete' => 'off',
|
'autocomplete' => 'off',
|
||||||
'label' => 'Confirmation'
|
'label' => 'Confirmation'
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php echo template::checkbox('userAddSendMail', true,
|
<?php echo template::checkbox(
|
||||||
'Prévenir l\'utilisateur par mail');
|
'userAddSendMail',
|
||||||
|
true,
|
||||||
|
'Prévenir l\'utilisateur par mail'
|
||||||
|
);
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -1,13 +1,13 @@
|
|||||||
<?php echo template::formOpen('userEditForm'); ?>
|
<?php echo template::formOpen('userEditForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php if($this->getUser('group') === self::GROUP_ADMIN): ?>
|
<?php if ($this->getUser('group') === self::GROUP_ADMIN) : ?>
|
||||||
<?php echo template::button('userEditBack', [
|
<?php echo template::button('userEditBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'user',
|
'href' => helper::baseUrl() . 'user',
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php else: ?>
|
<?php else : ?>
|
||||||
<?php echo template::button('userEditBack', [
|
<?php echo template::button('userEditBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl(false),
|
'href' => helper::baseUrl(false),
|
||||||
@ -18,8 +18,8 @@
|
|||||||
<div class="col2 offset9">
|
<div class="col2 offset9">
|
||||||
<?php echo template::submit('userEditSubmit'); ?>
|
<?php echo template::submit('userEditSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
@ -57,7 +57,7 @@
|
|||||||
'label' => 'Adresse mail',
|
'label' => 'Adresse mail',
|
||||||
'value' => $this->getData(['user', $this->getUrl(2), 'mail'])
|
'value' => $this->getData(['user', $this->getUrl(2), 'mail'])
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php if($this->getUser('group') === self::GROUP_ADMIN): ?>
|
<?php if ($this->getUser('group') === self::GROUP_ADMIN) : ?>
|
||||||
<?php echo template::select('userEditGroup', self::$groupEdits, [
|
<?php echo template::select('userEditGroup', self::$groupEdits, [
|
||||||
'disabled' => ($this->getUrl(2) === $this->getUser('id')),
|
'disabled' => ($this->getUrl(2) === $this->getUser('id')),
|
||||||
'help' => ($this->getUrl(2) === $this->getUser('id') ? 'Impossible de modifier votre propre groupe.' : ''),
|
'help' => ($this->getUrl(2) === $this->getUser('id') ? 'Impossible de modifier votre propre groupe.' : ''),
|
||||||
@ -113,5 +113,5 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -1,8 +1,8 @@
|
|||||||
<?php echo template::formOpen('userForgotForm'); ?>
|
<?php echo template::formOpen('userForgotForm'); ?>
|
||||||
<?php echo template::text('userForgotId', [
|
<?php echo template::text('userForgotId', [
|
||||||
'label' => 'Identifiant'
|
'label' => 'Identifiant'
|
||||||
]); ?>
|
]); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1 offset9">
|
<div class="col1 offset9">
|
||||||
<?php echo template::button('userForgotBack', [
|
<?php echo template::button('userForgotBack', [
|
||||||
'href' => helper::baseUrl() . 'user/login/' . $this->getUrl(2),
|
'href' => helper::baseUrl() . 'user/login/' . $this->getUrl(2),
|
||||||
@ -14,5 +14,5 @@
|
|||||||
'value' => 'Valider'
|
'value' => 'Valider'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -51,11 +51,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
||||||
<?php if ($module::$users): ?>
|
<?php if ($module::$users) : ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12 textAlignCenter">
|
<div class="col12 textAlignCenter">
|
||||||
<?php echo template::table([1, 3, 3, 1, 1, 2, 1], $module::$users, ['Id', 'Nom', 'Prénom','Groupe', 'Pseudo', 'eMail', '']); ?>
|
<?php echo template::table([1, 3, 3, 1, 1, 2, 1], $module::$users, ['Id', 'Nom', 'Prénom', 'Groupe', 'Pseudo', 'eMail', '']); ?>
|
||||||
<?php echo template::ico('check');?> Compte créé | <?php echo template::ico('mail');?> Compte créé et notifié | <?php echo template::ico('cancel');?> Erreur dans le fichier, compte non créé.
|
<?php echo template::ico('check'); ?> Compte créé | <?php echo template::ico('mail'); ?> Compte créé et notifié | <?php echo template::ico('cancel'); ?> Erreur dans le fichier, compte non créé.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endif;?>
|
<?php endif; ?>
|
@ -18,7 +18,7 @@
|
|||||||
<div class="col1 offset8">
|
<div class="col1 offset8">
|
||||||
<?php echo template::button('userImport', [
|
<?php echo template::button('userImport', [
|
||||||
'href' => helper::baseUrl() . 'user/import',
|
'href' => helper::baseUrl() . 'user/import',
|
||||||
'value' => template::ico('upload') ,
|
'value' => template::ico('upload'),
|
||||||
'help' => 'Importer des utilisateurs en masse'
|
'help' => 'Importer des utilisateurs en masse'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('userLoginForm'); ?>
|
<?php echo template::formOpen('userLoginForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::text('userLoginId', [
|
<?php echo template::text('userLoginId', [
|
||||||
'label' => 'Identifiant',
|
'label' => 'Identifiant',
|
||||||
@ -8,7 +8,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php if ($this->getData(['config', 'connect', 'showPassword']) === true) {
|
<?php if ($this->getData(['config', 'connect', 'showPassword']) === true) {
|
||||||
$passwordLabel = '<span id="passwordLabel">Mot de passe</span><span id="passwordIcon">'. template::ico('eye') . '</span>';
|
$passwordLabel = '<span id="passwordLabel">Mot de passe</span><span id="passwordIcon">' . template::ico('eye') . '</span>';
|
||||||
} else {
|
} else {
|
||||||
$passwordLabel = 'Mot de passe';
|
$passwordLabel = 'Mot de passe';
|
||||||
}
|
}
|
||||||
@ -17,18 +17,18 @@
|
|||||||
'label' => $passwordLabel
|
'label' => $passwordLabel
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php if ($this->getData(['config', 'connect','captcha'])): ?>
|
<?php if ($this->getData(['config', 'connect', 'captcha'])) : ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12 textAlignCenter">
|
<div class="col12 textAlignCenter">
|
||||||
<?php echo template::captcha('userLoginCaptcha', [
|
<?php echo template::captcha('userLoginCaptcha', [
|
||||||
'limit' => $this->getData(['config','connect', 'captchaStrong']),
|
'limit' => $this->getData(['config', 'connect', 'captchaStrong']),
|
||||||
'type' => $this->getData(['config','connect', 'captchaType'])
|
'type' => $this->getData(['config', 'connect', 'captchaType'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endif;?>
|
<?php endif; ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::checkbox('userLoginLongTime', true, 'Rester connecté sur ce navigateur', [
|
<?php echo template::checkbox('userLoginLongTime', true, 'Rester connecté sur ce navigateur', [
|
||||||
'checked' => $module::$userLongtime
|
'checked' => $module::$userLongtime
|
||||||
@ -37,8 +37,8 @@
|
|||||||
<div class="col6 textAlignRight">
|
<div class="col6 textAlignRight">
|
||||||
<a href="<?php echo helper::baseUrl(); ?>user/forgot/<?php echo $this->getUrl(2); ?>">Mot de passe perdu ?</a>
|
<a href="<?php echo helper::baseUrl(); ?>user/forgot/<?php echo $this->getUrl(2); ?>">Mot de passe perdu ?</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col2">
|
<div class="col2">
|
||||||
<?php echo template::button('userLoginBack', [
|
<?php echo template::button('userLoginBack', [
|
||||||
'href' => helper::baseUrl() . str_replace('_', '/', str_replace('__', '#', $this->getUrl(2))),
|
'href' => helper::baseUrl() . str_replace('_', '/', str_replace('__', '#', $this->getUrl(2))),
|
||||||
@ -50,5 +50,5 @@
|
|||||||
'value' => 'Connexion'
|
'value' => 'Connexion'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -1,5 +1,5 @@
|
|||||||
<?php echo template::formOpen('userResetForm'); ?>
|
<?php echo template::formOpen('userResetForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::password('userResetNewPassword', [
|
<?php echo template::password('userResetNewPassword', [
|
||||||
'label' => 'Nouveau mot de passe'
|
'label' => 'Nouveau mot de passe'
|
||||||
@ -10,12 +10,12 @@
|
|||||||
'label' => 'Confirmation'
|
'label' => 'Confirmation'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col2 offset10">
|
<div class="col2 offset10">
|
||||||
<?php echo template::submit('userResetSubmit', [
|
<?php echo template::submit('userResetSubmit', [
|
||||||
'value' => 'Valider'
|
'value' => 'Valider'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
Loading…
Reference in New Issue
Block a user