Files
BiveEngine/engine/Main/trait.content.php
2025-12-24 19:19:01 +03:00

134 lines
3.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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];
}
}
}
}