Initial commit

This commit is contained in:
Ivan Petrov
2025-12-24 19:19:01 +03:00
commit a7097c6178
19493 changed files with 94306 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
<?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];
}
}
}
}