'rgba(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . $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] . ')', 'text' => self::relativeLuminanceW3C($rgba) > .22 ? "inherit" : "white" ]; } /** * Supprime un cookie * @param string $cookieKey Clé du cookie à supprimer */ public static function deleteCookie($cookieKey) { unset($_COOKIE[$cookieKey]); setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false)); } /** * Filtre une chaîne en fonction d'un tableau de données * @param string $text Chaîne à filtrer * @param int $filter Type de filtre à appliquer * @return string */ public static function filter($text, $filter) { $text = trim($text); switch($filter) { case self::FILTER_BOOLEAN: $text = (bool) $text; break; case self::FILTER_DATETIME: $timezone = new DateTimeZone(core::$timezone); $date = new DateTime($text); $date->setTimezone($timezone); $text = (int) $date->format('U'); break; case self::FILTER_FLOAT: $text = filter_var($text, FILTER_SANITIZE_NUMBER_FLOAT); $text = (float) $text; break; case self::FILTER_ID: $text = mb_strtolower($text, 'UTF-8'); $text = strip_tags(str_replace( explode(',', 'á,à,â,ä,ã,å,ç,é,è,ê,ë,í,ì,î,ï,ñ,ó,ò,ô,ö,õ,ú,ù,û,ü,ý,ÿ,\',", '), explode(',', 'a,a,a,a,a,a,c,e,e,e,e,i,i,i,i,n,o,o,o,o,o,u,u,u,u,y,y,-,-,-'), $text )); $text = preg_replace('/([^a-z0-9-])/', '', $text); // Cas où un identifiant est vide if (empty($text)) { $text = uniqid(''); } // Un ID ne peut pas être un entier, pour éviter les conflits avec le système de pagination if(intval($text) !== 0) { $text = 'i' . $text; } break; case self::FILTER_INT: $text = (int) filter_var($text, FILTER_SANITIZE_NUMBER_INT); break; case self::FILTER_MAIL: $text = filter_var($text, FILTER_SANITIZE_EMAIL); break; case self::FILTER_PASSWORD: $text = password_hash($text, PASSWORD_BCRYPT); break; case self::FILTER_STRING_LONG: $text = mb_substr(filter_var($text, FILTER_SANITIZE_STRING), 0, 500000); break; case self::FILTER_STRING_SHORT: $text = mb_substr(filter_var($text, FILTER_SANITIZE_STRING), 0, 500); break; case self::FILTER_TIMESTAMP: $text = date('Y-m-d H:i:s', $text); break; case self::FILTER_URL: $text = filter_var($text, FILTER_SANITIZE_URL); break; } return get_magic_quotes_gpc() ? stripslashes($text) : $text; } /** * Incrémente une clé en fonction des clés ou des valeurs d'un tableau * @param mixed $key Clé à incrémenter * @param array $array Tableau à vérifier * @return string */ public static function increment($key, $array = []) { // Pas besoin d'incrémenter si la clef n'existe pas if($array === []) { return $key; } // Incrémente la clef else { // Si la clef est numérique elle est incrémentée if(is_numeric($key)) { $newKey = $key; while(array_key_exists($newKey, $array) OR in_array($newKey, $array)) { $newKey++; } } // Sinon l'incrémentation est ajoutée après la clef else { $i = 2; $newKey = $key; while(array_key_exists($newKey, $array) OR in_array($newKey, $array)) { $newKey = $key . '-' . $i; $i++; } } return $newKey; } } /** * Minimise du css * @param string $css Css à minimiser * @return string */ public static function minifyCss($css) { // Supprime les commentaires $css = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $css); // Supprime les tabulations, espaces, nouvelles lignes, etc... $css = str_replace(["\r\n", "\r", "\n" ,"\t", ' ', ' ', ' '], '', $css); $css = preg_replace(['(( )+{)', '({( )+)'], '{', $css); $css = preg_replace(['(( )+})', '(}( )+)', '(;( )*})'], '}', $css); $css = preg_replace(['(;( )+)', '(( )+;)'], ';', $css); // Retourne le css minifié return $css; } /** * Minimise du js * @param string $js Js à minimiser * @return string */ public static function minifyJs($js) { // Supprime les commentaires $js = preg_replace('/\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/|\s*(?getUrl() * @param string $item pagination nombre d'éléments par page * @param null|int $sufix Suffixe de l'url * @return array */ public static function pagination($array, $url, $item, $sufix = null) { // Scinde l'url $url = explode('/', $url); // Url de pagination $urlPagination = is_numeric($url[count($url) - 1]) ? array_pop($url) : 1; // Url de la page courante $urlCurrent = implode('/', $url); // Nombre d'éléments à afficher $nbElements = count($array); // Nombre de page $nbPage = ceil($nbElements / $item); // Page courante $currentPage = is_numeric($urlPagination) ? self::filter($urlPagination, self::FILTER_INT) : 1; // Premier élément de la page $firstElement = ($currentPage - 1) * $item; // Dernier élément de la page $lastElement = $firstElement + $item; $lastElement = ($lastElement > $nbElements) ? $nbElements : $lastElement; // Mise en forme de la liste des pages $pages = ''; if($nbPage > 1) { for($i = 1; $i <= $nbPage; $i++) { $disabled = ($i === $currentPage) ? ' class="disabled"' : false; $pages .= '' . $i . ''; } $pages = '