0){ arsort($langs); //return $langs[0]; array_values($langs)[0]; } else{ return 'en'; } } /** * Tturns a date string into a human readable string on the specified * language. Only works for spanish, basque and english. * * @param string $str_date Date string ('yyyy-mm-dd' or 'yyyy-mm-dd HH:MM:SS') * @param string $lang Language code (es, en, eu). * @param string $time Append the time at the end. * @return string Formatted date string. */ function format_date($str_date, $lang, $time = true){ $date = strtotime($str_date); $year = date("o", $date); $month = date("n", $date); $month --; $day = date("j", $date); $wday = date("N", $date); $wday --; $hour = date("H", $date); $minute = date("i", $date); switch ($lang){ case "en": $week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; $months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; if ($time){ $str = "$week[$wday], $months[$month] $day, $year at $hour:$minute"; } else{ $str = "$week[$wday], $months[$month] $day, $year"; } break; case "eu": $week = ["astelehena", "asteartea", "asteazkena", "osteguna", "ostirala", "larumbata", "igandea"]; $months = ["urtarrilaren", "otsailaren", "martxoaren", "apirilaren", "maiatzaren", "ekainaren", "uztailaren", "abuztuaren", "irailaren", "urriaren", "azaroaren", "abenduaren"]; if ($time){ $str = $year . "ko $months[$month] $day" . "an, $week[$wday], $hour:$minute"; } else{ $str = $year . "ko $months[$month] $day" . "an, $week[$wday]"; } break; default: $week = ["Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"]; $months = ["enero", " febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"]; if ($time){ $str = "$week[$wday] $day de $months[$month] de $year a las $hour:$minute"; } else{ $str = "$week[$wday] $day de $months[$month] de $year"; } } return $str; } /** * Retrieves a text fragment from the database. * * @param Page|Entity $model An initialized data model. * @param string $id Text identifier. * @returns string The text. */ function text($model, $id){ global $path; $q = mysqli_query($model->db, "SELECT text, file FROM text WHERE id = '$id' AND lang = '" . $model->lang . "';"); $r = mysqli_fetch_array($q); if (strlen($r["file"]) > 0){ return file_get_contents($path["string"] . $r["file"]); } else{ return $r["text"]; } } /** * This function closes all the opened HTML tags in a given string. * * @param string html The string with HTML tags. * @return string HTML with closed tags. */ function close_tags($html) { $result = []; preg_match_all("#<(?!meta|img|br|hr|input\b)\b([a-z]+)(?: .*)?(?#iU", $html, $result); $openedtags = $result[1]; preg_match_all("##iU", $html, $result); $closedtags = $result[1]; $len_opened = count($openedtags); if (count($closedtags) == $len_opened) { return $html; } $openedtags = array_reverse($openedtags); for ($i=0; $i < $len_opened; $i++) { if (!in_array($openedtags[$i], $closedtags)) { $html .= ""; } else { unset($closedtags[array_search($openedtags[$i], $closedtags)]); } } return $html; } /** * Text shortener. Given a string, it trims in the proximity of the * desired string, up to the next white character. If indicated, it will * append a link to the full text. * * @param string $text The text to shorten. * @param int $length The desired length. * @param string $link_text Text for the link. Optional. * @param string $link URI of the link. * @return string Shortened text. */ function cut_text($text, $length, $link_text = "", $link = ""){ if (strlen($text) < $length){ return $text; } $cut = substr($text, 0, strpos($text, " ", $length)); $cut = close_tags($cut); if (strlen($cut) == 0){ $cut = $text; } if (strlen($text) != strlen($cut) && strlen($link) > 0 && strlen($link_text) > 0){ $cut = $cut . "... $link_text"; } return $cut; } /** * Creates the srcset attribute for content images. * Creates 9 different resolutions, from 100px to 900px. * * @param string $file Path to the file, relative to $path["img"]["content"]). * @return string srcset atttribute content. */ function srcset($file){ global $static; $srcset = ""; $dir = dirname($file); $name = basename($file); foreach (range(1, 9) as $d) { $srcset = $srcset . $static["content"] . $dir . "/x" . $d . "00/" . $name . " " . $d . "00px, "; } $srcset = rtrim($srcset, ", "); return $srcset; } ?>