Couleur du texte dans les en-têtes des tableaux

This commit is contained in:
Fred Tempez 2022-10-01 16:31:20 +02:00
parent a8e261f517
commit eea0234792
2 changed files with 151 additions and 121 deletions

View File

@ -1,6 +1,7 @@
<?php <?php
class helper { class helper
{
/** Statut de la réécriture d'URL (pour éviter de lire le contenu du fichier .htaccess à chaque self::baseUrl()) */ /** Statut de la réécriture d'URL (pour éviter de lire le contenu du fichier .htaccess à chaque self::baseUrl()) */
public static $rewriteStatus = null; public static $rewriteStatus = null;
@ -23,7 +24,8 @@ class helper {
* Traduire le message dans la langue déterminée * Traduire le message dans la langue déterminée
*/ */
public static function translate($text) { public static function translate($text)
{
// Captation // Captation
/* /*
@ -44,24 +46,23 @@ class helper {
* @param integer Niveau d'anonymat 0 aucun, 1 octet à droite, etc.. * @param integer Niveau d'anonymat 0 aucun, 1 octet à droite, etc..
* @return string IP adress * @return string IP adress
* Cette fonction est utilisée par user * Cette fonction est utilisée par user
*/ */
public static function getIp($anon = 4) { public static function getIp($anon = 4)
if(!empty($_SERVER['HTTP_CLIENT_IP'])){ {
$ip=$_SERVER['HTTP_CLIENT_IP']; if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
} $ip = $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip=$_SERVER['HTTP_X_FORWARDED_FOR']; $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} } else {
else{ $ip = $_SERVER['REMOTE_ADDR'];
$ip=$_SERVER['REMOTE_ADDR'];
} }
// Anonymiser l'adresse IP v4 // Anonymiser l'adresse IP v4
$d = array_slice(explode('.', $ip), 0, $anon); $d = array_slice(explode('.', $ip), 0, $anon);
$d = implode ('.', $d); $d = implode('.', $d);
$j = array_fill(0, 4 - $anon, 'x'); $j = array_fill(0, 4 - $anon, 'x');
$k = implode ('.', $j); $k = implode('.', $j);
$ip = count($j) == 0 ? $d : $d . '.' . $k; $ip = count($j) == 0 ? $d : $d . '.' . $k;
return $ip; return $ip;
} }
@ -72,29 +73,34 @@ class helper {
* @return mixed données récupérées * @return mixed données récupérées
*/ */
public static function getUrlContents ($url) { public static function getUrlContents($url)
{
// Ejecter free.fr // Ejecter free.fr
if (strpos(self::baseUrl(),'free.fr') > 0 ){ if (strpos(self::baseUrl(), 'free.fr') > 0) {
return false; return false;
} }
if(function_exists('file_get_contents') && if (
ini_get('allow_url_fopen') ){ function_exists('file_get_contents') &&
$url_get_contents_data = @file_get_contents($url); // Masque un warning éventuel ini_get('allow_url_fopen')
}elseif(function_exists('curl_version')){ ) {
$ch = curl_init(); $url_get_contents_data = @file_get_contents($url); // Masque un warning éventuel
curl_setopt($ch, CURLOPT_HEADER, 0); } elseif (function_exists('curl_version')) {
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0);
$url_get_contents_data = curl_exec($ch); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_close($ch); curl_setopt($ch, CURLOPT_URL, $url);
}elseif(function_exists('fopen') && $url_get_contents_data = curl_exec($ch);
function_exists('stream_get_contents') && curl_close($ch);
ini_get('allow_url_fopen')){ } elseif (
$handle = fopen ($url, "r"); function_exists('fopen') &&
$url_get_contents_data = stream_get_contents($handle); function_exists('stream_get_contents') &&
}else{ ini_get('allow_url_fopen')
$url_get_contents_data = false; ) {
} $handle = fopen($url, "r");
$url_get_contents_data = stream_get_contents($handle);
} else {
$url_get_contents_data = false;
}
return $url_get_contents_data; return $url_get_contents_data;
} }
@ -105,13 +111,14 @@ class helper {
* @param string $sort Type de tri à appliquer au tableau (SORT_ASC, SORT_DESC, ou null) * @param string $sort Type de tri à appliquer au tableau (SORT_ASC, SORT_DESC, ou null)
* @return array * @return array
*/ */
public static function arraycolumn($array, $column, $sort = null) { public static function arraycolumn($array, $column, $sort = null)
{
$newArray = []; $newArray = [];
if(empty($array) === false) { if (empty($array) === false) {
$newArray = array_map(function($element) use($column) { $newArray = array_map(function ($element) use ($column) {
return $element[$column]; return $element[$column];
}, $array); }, $array);
switch($sort) { switch ($sort) {
case 'SORT_ASC': case 'SORT_ASC':
asort($newArray); asort($newArray);
break; break;
@ -126,7 +133,8 @@ class helper {
/** /**
* Compatibilité avec les anciens modules * Compatibilité avec les anciens modules
*/ */
public static function arrayCollumn($array, $column, $sort = null) { public static function arrayCollumn($array, $column, $sort = null)
{
return (helper::arrayColumn($array, $column, $sort)); return (helper::arrayColumn($array, $column, $sort));
} }
@ -139,9 +147,10 @@ class helper {
* @return string nom du fichier de sauvegarde * @return string nom du fichier de sauvegarde
*/ */
public static function autoBackup($folder, $filter = ['backup','tmp'] ) { public static function autoBackup($folder, $filter = ['backup', 'tmp'])
{
// Creation du ZIP // Creation du ZIP
$baseName = str_replace('/','',helper::baseUrl(false,false)); $baseName = str_replace('/', '', helper::baseUrl(false, false));
$baseName = empty($baseName) ? 'ZwiiCMS' : $baseName; $baseName = empty($baseName) ? 'ZwiiCMS' : $baseName;
$fileName = $baseName . '-backup-' . date('Y-m-d-H-i-s', time()) . '.zip'; $fileName = $baseName . '-backup-' . date('Y-m-d-H-i-s', time()) . '.zip';
$zip = new ZipArchive(); $zip = new ZipArchive();
@ -150,17 +159,17 @@ class helper {
//$filter = array('backup','tmp','file'); //$filter = array('backup','tmp','file');
$files = new RecursiveIteratorIterator( $files = new RecursiveIteratorIterator(
new RecursiveCallbackFilterIterator( new RecursiveCallbackFilterIterator(
new RecursiveDirectoryIterator( new RecursiveDirectoryIterator(
$directory, $directory,
RecursiveDirectoryIterator::SKIP_DOTS RecursiveDirectoryIterator::SKIP_DOTS
), ),
function ($fileInfo, $key, $iterator) use ($filter) { function ($fileInfo, $key, $iterator) use ($filter) {
return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter); return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter);
} }
) )
); );
foreach ($files as $name => $file) { foreach ($files as $name => $file) {
if (!$file->isDir()) { if (!$file->isDir()) {
$filePath = $file->getRealPath(); $filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(realpath($directory)) + 1); $relativePath = substr($filePath, strlen(realpath($directory)) + 1);
$zip->addFile($filePath, $relativePath); $zip->addFile($filePath, $relativePath);
@ -177,61 +186,61 @@ class helper {
* du nom réel * du nom réel
* du numéro de version * du numéro de version
*/ */
public static function getModules() { public static function getModules()
{
$modules = array(); $modules = array();
$dirs = array_diff(scandir('module'), array('..', '.')); $dirs = array_diff(scandir('module'), array('..', '.'));
foreach ($dirs as $key => $value) { foreach ($dirs as $key => $value) {
// Dossier non vide // Dossier non vide
if (file_exists('module/' . $value . '/' . $value . '.php')) { if (file_exists('module/' . $value . '/' . $value . '.php')) {
// Lire les constantes en gérant les erreurs de nom de classe // Lire les constantes en gérant les erreurs de nom de classe
try { try {
$class_reflex = new \ReflectionClass($value); $class_reflex = new \ReflectionClass($value);
$class_constants = $class_reflex->getConstants(); $class_constants = $class_reflex->getConstants();
// Constante REALNAME // Constante REALNAME
if (array_key_exists('REALNAME', $class_constants)) { if (array_key_exists('REALNAME', $class_constants)) {
$realName = $value::REALNAME; $realName = $value::REALNAME;
} else { } else {
$realName = ucfirst($value); $realName = ucfirst($value);
} }
// Constante VERSION // Constante VERSION
if (array_key_exists('VERSION', $class_constants)) { if (array_key_exists('VERSION', $class_constants)) {
$version = $value::VERSION; $version = $value::VERSION;
} else { } else {
$version = '0.0'; $version = '0.0';
} }
// Constante UPDATE // Constante UPDATE
if (array_key_exists('UPDATE', $class_constants)) { if (array_key_exists('UPDATE', $class_constants)) {
$update = $value::UPDATE; $update = $value::UPDATE;
} else { } else {
$update = '0.0'; $update = '0.0';
} }
// Constante DELETE // Constante DELETE
if (array_key_exists('DELETE', $class_constants)) { if (array_key_exists('DELETE', $class_constants)) {
$delete = $value::DELETE; $delete = $value::DELETE;
} else { } else {
$delete = true; $delete = true;
} }
// Constante DATADIRECTORY // Constante DATADIRECTORY
if ( array_key_exists('DATADIRECTORY', $class_constants)) { if (array_key_exists('DATADIRECTORY', $class_constants)) {
$dataDirectory = $value::DATADIRECTORY; $dataDirectory = $value::DATADIRECTORY;
} else { } else {
$dataDirectory = ''; $dataDirectory = '';
} }
// Affection // Affection
$modules [$value] = [ $modules[$value] = [
'realName' => $realName, 'realName' => $realName,
'version' => $version, 'version' => $version,
'update' => $update, 'update' => $update,
'delete' => $delete, 'delete' => $delete,
'dataDirectory' => $dataDirectory 'dataDirectory' => $dataDirectory
]; ];
} catch (Exception $e) {
} catch (Exception $e){
// on ne fait rien // on ne fait rien
} }
} }
} }
return($modules); return ($modules);
} }
@ -240,10 +249,11 @@ class helper {
* Retourne true si le protocole est en TLS * Retourne true si le protocole est en TLS
* @return bool * @return bool
*/ */
public static function isHttps() { public static function isHttps()
if( {
(empty($_SERVER['HTTPS']) === false AND $_SERVER['HTTPS'] !== 'off') if (
OR $_SERVER['SERVER_PORT'] === 443 (empty($_SERVER['HTTPS']) === false and $_SERVER['HTTPS'] !== 'off')
or $_SERVER['SERVER_PORT'] === 443
) { ) {
return true; return true;
} else { } else {
@ -258,20 +268,20 @@ class helper {
* @param bool $host Affiche ou non l'host * @param bool $host Affiche ou non l'host
* @return string * @return string
*/ */
public static function baseUrl($queryString = true, $host = true) { public static function baseUrl($queryString = true, $host = true)
{
// Protocole // Protocole
$protocol = helper::isHttps() === true ? 'https://' : 'http://'; $protocol = helper::isHttps() === true ? 'https://' : 'http://';
// Host // Host
if($host) { if ($host) {
$host = $protocol . $_SERVER['HTTP_HOST']; $host = $protocol . $_SERVER['HTTP_HOST'];
} }
// Pathinfo // Pathinfo
$pathInfo = pathinfo($_SERVER['PHP_SELF']); $pathInfo = pathinfo($_SERVER['PHP_SELF']);
// Querystring // Querystring
if($queryString AND helper::checkRewrite() === false) { if ($queryString and helper::checkRewrite() === false) {
$queryString = '?'; $queryString = '?';
} } else {
else {
$queryString = ''; $queryString = '';
} }
return $host . rtrim($pathInfo['dirname'], ' ' . DIRECTORY_SEPARATOR) . '/' . $queryString; return $host . rtrim($pathInfo['dirname'], ' ' . DIRECTORY_SEPARATOR) . '/' . $queryString;
@ -281,11 +291,12 @@ class helper {
* Check le statut de l'URL rewriting * Check le statut de l'URL rewriting
* @return bool * @return bool
*/ */
public static function checkRewrite() { public static function checkRewrite()
{
// N'interroge que le serveur Apache // N'interroge que le serveur Apache
if (strpos($_SERVER["SERVER_SOFTWARE"], 'Apache') > 0) { if (strpos($_SERVER["SERVER_SOFTWARE"], 'Apache') > 0) {
self::$rewriteStatus === false; self::$rewriteStatus === false;
} elseif(self::$rewriteStatus === null) { } elseif (self::$rewriteStatus === null) {
// Ouvre et scinde le fichier .htaccess // Ouvre et scinde le fichier .htaccess
$htaccess = explode('# URL rewriting', file_get_contents('.htaccess')); $htaccess = explode('# URL rewriting', file_get_contents('.htaccess'));
// Retourne un boolean en fonction du contenu de la partie réservée à l'URL rewriting // Retourne un boolean en fonction du contenu de la partie réservée à l'URL rewriting
@ -299,7 +310,8 @@ class helper {
* Renvoie le numéro de version de Zwii est en ligne * Renvoie le numéro de version de Zwii est en ligne
* @return string * @return string
*/ */
public static function getOnlineVersion() { public static function getOnlineVersion()
{
return (helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version')); return (helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version'));
} }
@ -308,12 +320,12 @@ class helper {
* Check si une nouvelle version de Zwii est disponible * Check si une nouvelle version de Zwii est disponible
* @return bool * @return bool
*/ */
public static function checkNewVersion() { public static function checkNewVersion()
{
$version = helper::getOnlineVersion(); $version = helper::getOnlineVersion();
if( !empty($version) ) { if (!empty($version)) {
return ((version_compare(common::ZWII_VERSION, $version)) === -1); return ((version_compare(common::ZWII_VERSION, $version)) === -1);
} } else {
else {
return false; return false;
} }
} }
@ -324,7 +336,8 @@ class helper {
* @param string $rgba Code rgba de la couleur * @param string $rgba Code rgba de la couleur
* @return array * @return array
*/ */
public static function colorVariants($rgba) { public static function colorVariants($rgba)
{
preg_match('#\(+(.*)\)+#', $rgba, $matches); preg_match('#\(+(.*)\)+#', $rgba, $matches);
$rgba = explode(', ', $matches[1]); $rgba = explode(', ', $matches[1]);
return [ return [
@ -332,7 +345,12 @@ class helper {
'darken' => 'rgba(' . max(0, $rgba[0] - 15) . ',' . max(0, $rgba[1] - 15) . ',' . max(0, $rgba[2] - 15) . ',' . $rgba[3] . ')', 'darken' => 'rgba(' . max(0, $rgba[0] - 15) . ',' . max(0, $rgba[1] - 15) . ',' . max(0, $rgba[2] - 15) . ',' . $rgba[3] . ')',
'veryDarken' => 'rgba(' . max(0, $rgba[0] - 20) . ',' . max(0, $rgba[1] - 20) . ',' . max(0, $rgba[2] - 20) . ',' . $rgba[3] . ')', 'veryDarken' => 'rgba(' . max(0, $rgba[0] - 20) . ',' . max(0, $rgba[1] - 20) . ',' . max(0, $rgba[2] - 20) . ',' . $rgba[3] . ')',
'text' => self::relativeLuminanceW3C($rgba) > .22 ? "#222" : "#DDD", 'text' => self::relativeLuminanceW3C($rgba) > .22 ? "#222" : "#DDD",
'rgb' => 'rgb(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ')' 'rgb' => 'rgb(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ')',
'invert' => 'rgba (' .
($rgba[0] < 128 ? 255 : 0) . ',' .
($rgba[1] < 128 ? 255 : 0) . ',' .
($rgba[1] < 128 ? 255 : 0) . ',' .
($rgba[0] < 128 ? 255 : 0) . ')'
]; ];
} }
@ -340,7 +358,8 @@ class helper {
* Supprime un cookie * Supprime un cookie
* @param string $cookieKey Clé du cookie à supprimer * @param string $cookieKey Clé du cookie à supprimer
*/ */
public static function deleteCookie($cookieKey) { public static function deleteCookie($cookieKey)
{
unset($_COOKIE[$cookieKey]); unset($_COOKIE[$cookieKey]);
setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false), '', false, true); setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false), '', false, true);
} }
@ -351,9 +370,10 @@ class helper {
* @param int $filter Type de filtre à appliquer * @param int $filter Type de filtre à appliquer
* @return string * @return string
*/ */
public static function filter($text, $filter) { public static function filter($text, $filter)
{
$text = trim($text); $text = trim($text);
switch($filter) { switch ($filter) {
case self::FILTER_BOOLEAN: case self::FILTER_BOOLEAN:
$text = (bool) $text; $text = (bool) $text;
break; break;
@ -378,13 +398,13 @@ class helper {
// Supprime les emoji // Supprime les emoji
$text = preg_replace('/[[:^print:]]/', '', $text); $text = preg_replace('/[[:^print:]]/', '', $text);
// Supprime les tirets en fin de chaine (emoji en fin de nom) // Supprime les tirets en fin de chaine (emoji en fin de nom)
$text = rtrim($text,'-'); $text = rtrim($text, '-');
// Cas où un identifiant est vide // Cas où un identifiant est vide
if (empty($text)) { if (empty($text)) {
$text = uniqid(''); $text = uniqid('');
} }
// Un ID ne peut pas être un entier, pour éviter les conflits avec le système de pagination // Un ID ne peut pas être un entier, pour éviter les conflits avec le système de pagination
if(intval($text) !== 0) { if (intval($text) !== 0) {
$text = '_' . $text; $text = '_' . $text;
} }
break; break;
@ -419,17 +439,18 @@ class helper {
* @param array $array Tableau à vérifier * @param array $array Tableau à vérifier
* @return string * @return string
*/ */
public static function increment($key, $array = []) { public static function increment($key, $array = [])
{
// Pas besoin d'incrémenter si la clef n'existe pas // Pas besoin d'incrémenter si la clef n'existe pas
if($array === []) { if ($array === []) {
return $key; return $key;
} }
// Incrémente la clef // Incrémente la clef
else { else {
// Si la clef est numérique elle est incrémentée // Si la clef est numérique elle est incrémentée
if(is_numeric($key)) { if (is_numeric($key)) {
$newKey = $key; $newKey = $key;
while(array_key_exists($newKey, $array) OR in_array($newKey, $array)) { while (array_key_exists($newKey, $array) or in_array($newKey, $array)) {
$newKey++; $newKey++;
} }
} }
@ -437,7 +458,7 @@ class helper {
else { else {
$i = 2; $i = 2;
$newKey = $key; $newKey = $key;
while(array_key_exists($newKey, $array) OR in_array($newKey, $array)) { while (array_key_exists($newKey, $array) or in_array($newKey, $array)) {
$newKey = $key . '-' . $i; $newKey = $key . '-' . $i;
$i++; $i++;
} }
@ -451,11 +472,12 @@ class helper {
* @param string $css Css à minimiser * @param string $css Css à minimiser
* @return string * @return string
*/ */
public static function minifyCss($css) { public static function minifyCss($css)
{
// Supprime les commentaires // Supprime les commentaires
$css = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $css); $css = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $css);
// Supprime les tabulations, espaces, nouvelles lignes, etc... // Supprime les tabulations, espaces, nouvelles lignes, etc...
$css = str_replace(["\r\n", "\r", "\n" ,"\t", ' ', ' ', ' '], '', $css); $css = str_replace(["\r\n", "\r", "\n", "\t", ' ', ' ', ' '], '', $css);
$css = preg_replace(['(( )+{)', '({( )+)'], '{', $css); $css = preg_replace(['(( )+{)', '({( )+)'], '{', $css);
$css = preg_replace(['(( )+})', '(}( )+)', '(;( )*})'], '}', $css); $css = preg_replace(['(( )+})', '(}( )+)', '(;( )*})'], '}', $css);
$css = preg_replace(['(;( )+)', '(( )+;)'], ';', $css); $css = preg_replace(['(;( )+)', '(( )+;)'], ';', $css);
@ -468,7 +490,8 @@ class helper {
* @param string $js Js à minimiser * @param string $js Js à minimiser
* @return string * @return string
*/ */
public static function minifyJs($js) { public static function minifyJs($js)
{
// Supprime les commentaires // Supprime les commentaires
$js = preg_replace('/\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/|\s*(?<![\:\=])\/\/.*/', '', $js); $js = preg_replace('/\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/|\s*(?<![\:\=])\/\/.*/', '', $js);
// Supprime les tabulations, espaces, nouvelles lignes, etc... // Supprime les tabulations, espaces, nouvelles lignes, etc...
@ -486,7 +509,8 @@ class helper {
* @param null|int $sufix Suffixe de l'url * @param null|int $sufix Suffixe de l'url
* @return array * @return array
*/ */
public static function pagination($array, $url, $item, $sufix = null) { public static function pagination($array, $url, $item, $sufix = null)
{
// Scinde l'url // Scinde l'url
$url = explode('/', $url); $url = explode('/', $url);
// Url de pagination // Url de pagination
@ -506,8 +530,8 @@ class helper {
$lastElement = ($lastElement > $nbElements) ? $nbElements : $lastElement; $lastElement = ($lastElement > $nbElements) ? $nbElements : $lastElement;
// Mise en forme de la liste des pages // Mise en forme de la liste des pages
$pages = ''; $pages = '';
if($nbPage > 1) { if ($nbPage > 1) {
for($i = 1; $i <= $nbPage; $i++) { for ($i = 1; $i <= $nbPage; $i++) {
$disabled = ($i === $currentPage) ? ' class="disabled"' : false; $disabled = ($i === $currentPage) ? ' class="disabled"' : false;
$pages .= '<a href="' . helper::baseUrl() . $urlCurrent . '/' . $i . $sufix . '"' . $disabled . '>' . $i . '</a>'; $pages .= '<a href="' . helper::baseUrl() . $urlCurrent . '/' . $i . $sufix . '"' . $disabled . '>' . $i . '</a>';
} }
@ -524,7 +548,8 @@ class helper {
/** /**
* Calcul de la luminance relative d'une couleur * Calcul de la luminance relative d'une couleur
*/ */
public static function relativeLuminanceW3C($rgba) { public static function relativeLuminanceW3C($rgba)
{
// Conversion en sRGB // Conversion en sRGB
$RsRGB = $rgba[0] / 255; $RsRGB = $rgba[0] / 255;
$GsRGB = $rgba[1] / 255; $GsRGB = $rgba[1] / 255;
@ -546,7 +571,8 @@ class helper {
* @param array $exclude Clés à ignorer ($key) * @param array $exclude Clés à ignorer ($key)
* @return string * @return string
*/ */
public static function sprintAttributes(array $array = [], array $exclude = []) { public static function sprintAttributes(array $array = [], array $exclude = [])
{
$exclude = array_merge( $exclude = array_merge(
[ [
'before', 'before',
@ -557,15 +583,15 @@ class helper {
$exclude $exclude
); );
$attributes = []; $attributes = [];
foreach($array as $key => $value) { foreach ($array as $key => $value) {
if(($value OR $value === 0) AND in_array($key, $exclude) === false) { if (($value or $value === 0) and in_array($key, $exclude) === false) {
// Désactive le message de modifications non enregistrées pour le champ // Désactive le message de modifications non enregistrées pour le champ
if($key === 'noDirty') { if ($key === 'noDirty') {
$attributes[] = 'data-no-dirty'; $attributes[] = 'data-no-dirty';
} }
// Disabled // Disabled
// Readonly // Readonly
elseif(in_array($key, ['disabled', 'readonly'])) { elseif (in_array($key, ['disabled', 'readonly'])) {
$attributes[] = sprintf('%s', $key); $attributes[] = sprintf('%s', $key);
} }
// Autres // Autres
@ -584,9 +610,10 @@ class helper {
* @param int $length (voir substr de PHP pour fonctionnement) * @param int $length (voir substr de PHP pour fonctionnement)
* @return string * @return string
*/ */
public static function subword($text, $start, $length) { public static function subword($text, $start, $length)
{
$text = trim($text); $text = trim($text);
if(strlen($text) > $length) { if (strlen($text) > $length) {
$text = mb_substr($text, $start, $length); $text = mb_substr($text, $start, $length);
$text = mb_substr($text, 0, min(mb_strlen($text), mb_strrpos($text, ' '))); $text = mb_substr($text, 0, min(mb_strlen($text), mb_strrpos($text, ' ')));
} }
@ -599,7 +626,8 @@ class helper {
* @param string $payload la chaine à coder * @param string $payload la chaine à coder
* @return string * @return string
*/ */
public static function encrypt($key, $payload) { public static function encrypt($key, $payload)
{
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc')); $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$encrypted = openssl_encrypt($payload, 'aes-256-cbc', $key, 0, $iv); $encrypted = openssl_encrypt($payload, 'aes-256-cbc', $key, 0, $iv);
return base64_encode($encrypted . '::' . $iv); return base64_encode($encrypted . '::' . $iv);
@ -611,9 +639,9 @@ class helper {
* @param string $garble la chaine à décoder * @param string $garble la chaine à décoder
* @return string * @return string
*/ */
public static function decrypt($key, $garble) { public static function decrypt($key, $garble)
{
list($encrypted_data, $iv) = explode('::', base64_decode($garble), 2); list($encrypted_data, $iv) = explode('::', base64_decode($garble), 2);
return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv); return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
} }
} }

View File

@ -2681,9 +2681,11 @@ class core extends common
$css .= 'body h1, h2, h3, h4 a, h5, h6 {font-family:' . $fonts[$this->getData(['admin', 'fontTitle'])] . ';color:' . $this->getData(['admin', 'colorTitle']) . ';}'; $css .= 'body h1, h2, h3, h4 a, h5, h6 {font-family:' . $fonts[$this->getData(['admin', 'fontTitle'])] . ';color:' . $this->getData(['admin', 'colorTitle']) . ';}';
// TinyMCE // TinyMCE
$css .= 'body:not(.editorWysiwyg),span .zwiico-help {color:' . $this->getData(['admin', 'colorText']) . ';}'; $colors = helper::colorVariants($this->getData(['admin', 'colorText']));
$css .= 'table thead tr, table thead tr .zwiico-help{ background-color:' . $this->getData(['admin', 'colorText']) . '; color:' . $colors['text'] . ';}'; $css .= 'body:not(.editorWysiwyg),span .zwiico-help {color:' . $colors['normal'] . ';}';
$css .= 'table thead th { color: ' . $this->getData(['admin', 'colorText']) . '; filter: invert(100%);}'; echo $colors['invert'];
$css .= 'table thead tr, table thead tr .zwiico-help{ background-color:' . $colors['normal'] . '; color:' . $colors['text'] . ';}';
$css .= 'table thead th { color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButton'])); $colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButton']));
$css .= 'input[type="checkbox"]:checked + label::before,.speechBubble{background-color:' . $colors['normal'] . ';color:' . $colors['text'] . ';}'; $css .= 'input[type="checkbox"]:checked + label::before,.speechBubble{background-color:' . $colors['normal'] . ';color:' . $colors['text'] . ';}';
$css .= '.speechBubble::before {border-color:' . $colors['normal'] . ' transparent transparent transparent;}'; $css .= '.speechBubble::before {border-color:' . $colors['normal'] . ' transparent transparent transparent;}';