134 lines
3.7 KiB
PHP
134 lines
3.7 KiB
PHP
<?php
|
||
|
||
// Работа с выводом содержимого пользователям
|
||
|
||
defined('ROOT_DIR') || exit;
|
||
|
||
trait Content {
|
||
private array $meta_tags = array();
|
||
private array $link_tags = array();
|
||
private array $script_tags = array();
|
||
private string $title = "Bive Engine";
|
||
|
||
// олучить значение заголовка
|
||
public function title_get(): string
|
||
{
|
||
return $this->title;
|
||
}
|
||
|
||
// Поместить значение заголовка
|
||
public function title_set($title): bool
|
||
{
|
||
$this->title = $title;
|
||
return true;
|
||
}
|
||
|
||
// Добавить мета тег
|
||
public function meta_add($name, $content): bool
|
||
{
|
||
$this->meta_tags[$name] = $content;
|
||
return true;
|
||
}
|
||
|
||
// Удалить значение
|
||
public function meta_remove($name): bool
|
||
{
|
||
if(!isset($this->meta_tags[$name])) return false;
|
||
unlink($this->meta_tags[$name]);
|
||
return true;
|
||
}
|
||
|
||
// Рендер мета тегов
|
||
public function meta_render()
|
||
{
|
||
$meta_dom = new DOM("meta", false);
|
||
$meta_dom->setAttribute("charset", "utf-8");
|
||
echo $meta_dom->render();
|
||
|
||
foreach ($this->meta_tags as $key => $value) {
|
||
$meta_dom = new DOM("meta", false);
|
||
$meta_dom->setAttribute("name", $key);
|
||
$meta_dom->setAttribute("content", $this->get_view($value));
|
||
echo $meta_dom->render();
|
||
}
|
||
}
|
||
|
||
// Добавить тег Link
|
||
public function link_add($params): bool
|
||
{
|
||
if(gettype($params) != "array") return false;
|
||
$this->link_tags[] = $params;
|
||
return true;
|
||
}
|
||
|
||
// Отрендерить теги типа Link
|
||
public function link_render()
|
||
{
|
||
foreach ($this->link_tags as $key => $link_params) {
|
||
$link_dom = new DOM("link", false);
|
||
foreach ($link_params as $index => $value){
|
||
$link_dom->setAttribute($index, $value);
|
||
}
|
||
echo $link_dom->render();
|
||
}
|
||
}
|
||
|
||
// Подключить CSS скрипт
|
||
public function css_style_connect($path): bool
|
||
{
|
||
if(!$path) return false;
|
||
$this->link_add(array("rel" => "stylesheet", "href" => $path));
|
||
return true;
|
||
}
|
||
|
||
// Добавить тег Script
|
||
public function script_add($params): bool
|
||
{
|
||
if(gettype($params) != "array") return false;
|
||
$this->script_tags[] = $params;
|
||
return true;
|
||
}
|
||
|
||
// Отрендерить теги типа Script
|
||
public function script_render()
|
||
{
|
||
foreach ($this->script_tags as $key => $scripts_params) {
|
||
$scripts_dom = new DOM("script");
|
||
foreach ($scripts_params as $index => $value){
|
||
$scripts_dom->setAttribute($index, $value);
|
||
}
|
||
echo $scripts_dom->render();
|
||
}
|
||
}
|
||
|
||
// Безопасно выводит информацию
|
||
function view($text): bool
|
||
{
|
||
echo $this->get_view($text);
|
||
return true;
|
||
}
|
||
|
||
// Получить строку для безопасного использования
|
||
function get_view($text): string
|
||
{
|
||
return htmlspecialchars($text);
|
||
}
|
||
|
||
// Склонение слова в зависимости от числа
|
||
function pluralize($num, $words) {
|
||
$num = abs($num) % 100;
|
||
if ($num > 10 && $num < 20) {
|
||
return $words[2];
|
||
} else {
|
||
$i = $num % 10;
|
||
if ($i == 1) {
|
||
return $words[0];
|
||
} elseif (in_array($i, array(2, 3, 4))) {
|
||
return $words[1];
|
||
} else {
|
||
return $words[2];
|
||
}
|
||
}
|
||
}
|
||
}
|