<?PHP
/*
Создаем PDO
*/
function CreatePDO($base) {
if(empty($base)) {
return false;
}
try {
$pdo = new PDO(
'mysql:host=' . $base['hostname'] . ';dbname=' . $base['dataname'],
$base['username'],
$base['password']
);
$pdo->setAttribute(
PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION
);
$pdo->exec(
'SET NAMES UTF8'
);
return $pdo;
}
catch(PDOException $e) {
die(
'Error: ' . $e->getMessage()
);
}
}
/*
Отправляет активный PDO
*/
function pdo() {
global $pdo;
if(empty($pdo)) {
return null;
}
return $pdo;
}
/*
Пакеты
*/
function pkg() {
global $pkg;
if(empty($pkg)) {
return new Packages;
}
return $pkg;
}
/*
Memcached
*/
function Memcached() {
global $memcached;
if(empty($memcached)) {
$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);
}
return $memcached;
}
/*
Шаблонизатор
*/
function tpl() {
global $tpl;
if(empty($tpl)) {
return null;
}
return $tpl;
}
/*
Генерация рандомных строк
@ Len = количество символов
*/
function RandomString($Len) {
return substr(
str_shuffle(
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
), 0, $Len
);
}
/*
Возвращает результат в JSON
*/
function Result($_ARRAY = []) {
die(
json_encode(
$_ARRAY
)
);
}
/*
Возвращает результат Успеха в JSON
*/
function AlertSuccess($_MESSAGE = '') {
Result([
'Alert' => 'Success',
'Message' => $_MESSAGE
]);
}
/*
Возвращает результат Ошибки в JSON
*/
function AlertError($_MESSAGE = '') {
Result([
'Alert' => 'Error',
'Message' => $_MESSAGE
]);
}
/*
Возвращает результат Предупреждения в JSON
*/
function AlertWarning($_MESSAGE = '') {
Result([
'Alert' => 'Warning',
'Message' => $_MESSAGE
]);
}
/*
Возвращает результат Информации в JSON
*/
function AlertInfo($_MESSAGE = '') {
Result([
'Alert' => 'Info',
'Message' => $_MESSAGE
]);
}
/*
Проверяет Валидность запроса
*/
function IsValidActions() {
if(empty($_POST['phpaction'])) {
AlertError(getLang('functions_phpaction'));
}
if(!csrf()->Is($_POST['csrf_token'])) {
AlertError(getLang('functions_csrf_token'));
}
}
/*
Записывает сведения в Логи
@ File - имя файла, для записи
@ Message - сообщение для записи
*/
function AddLogs($File, $Message) {
tpl()
->SetAppearance('system')
->Start('logs/sample')
->Set([
'{system_date}' => date('d.m.Y'),
'{system_time}' => date('H:i:s'),
'{user_id}' => isset($_SESSION['id']) ? $_SESSION['id'] : getLang('functions_unknown'),
'{user_ip}' => users()->getRemote(),
'{user_agent}' => $_SERVER['HTTP_USER_AGENT'],
'{json_post}' => print_r($_POST, true),
'{json_get}' => print_r($_GET, true),
'{other_data}' => $Message
]);
return file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/application/logs/' . $File, tpl()->getTemp(), FILE_APPEND);
}
/*
Получение конфигураций
*/
function conf() {
global $conf;
if(isset($conf)) {
return $conf;
}
}
/*
Редирект
*/
function Redirect($uri, $timeout = 300) {
die('<script>setTimeout(\'location.href = "' . $uri . '";\', ' . $timeout . ');</script>');
}
/*
CSRF защита
*/
function csrf() {
global $csrf;
if(isset($csrf)) {
return $csrf;
}
return new CSRF;
}
/*
Очистка текста
*/
function TextClear($string) {
if(empty($string)) {
return null;
}
$string = strip_tags($string);
$string = htmlspecialchars($string);
if(!mb_strlen($string)) {
return null;
}
return $string;
}
/*
Библиотка пользователи
*/
function users() {
global $usr;
if(isset($usr)) {
return $usr;
}
return new Users;
}
/*
Проверка валидности номера телефона
*/
function isValidPhoneNumber($phoneNumber) {
$phoneNumber = preg_replace('/[^0-9]/', '', $phoneNumber);
if(strlen($phoneNumber) === 11) {
return $phoneNumber;
}
return false;
}
/*
Диалоги функция
*/
function dialogs() {
global $dialogs;
if(isset($dialogs)) {
return $dialogs;
}
return new Dialogs;
}
/*
Получение сокращенной даты на русском
*/
function dateRussian($timestamp) {
if(date('d') == date('d', $timestamp)) {
return date('H:i', $timestamp);
}
$month = monthRussian($timestamp);
return $month . date(' d', $timestamp);
}
/*
Месяц на русском
*/
function monthRussian($timestamp) {
$month = date('M', $timestamp);
switch($month) {
case 'Jan': {
$month = getLang('month_little_01');
break;
}
case 'Feb': {
$month = getLang('month_little_02');
break;
}
case 'Mar': {
$month = getLang('month_little_03');
break;
}
case 'Apr': {
$month = getLang('month_little_04');
break;
}
case 'May': {
$month = getLang('month_little_05');
break;
}
case 'Jun': {
$month = getLang('month_little_06');
break;
}
case 'Jul': {
$month = getLang('month_little_07');
break;
}
case 'Aug': {
$month = getLang('month_little_08');
break;
}
case 'Sep': {
$month = getLang('month_little_09');
break;
}
case 'Oct': {
$month = getLang('month_little_10');
break;
}
case 'Nov': {
$month = getLang('month_little_11');
break;
}
case 'Dec': {
$month = getLang('month_little_12');
break;
}
}
return $month;
}
/*
Сколько времени назад
*/
function timeElapsedString($timestamp) {
$currentTimestamp = time();
$elapsedSeconds = $currentTimestamp - $timestamp;
if ($elapsedSeconds < 60) {
return getLang('functions_past_sec', [$elapsedSeconds]);
} elseif ($elapsedSeconds < 3600) {
$minutes = floor($elapsedSeconds / 60);
return getLang('functions_past_min', [$minutes]);
} elseif ($elapsedSeconds < 86400) {
$hours = floor($elapsedSeconds / 3600);
$hoursWord = RussianNounPluralForm($hours, getLang('functions_hour'), getLang('functions_hour_s'), getLang('functions_hours'));
return getLang('functions_back', [$hours, $hoursWord]);
} elseif ($elapsedSeconds < 172800) {
return getLang('functions_yesterday', [date("H:i", $timestamp)]);
} else {
return getLang('functions_month', [
(date("j ", $timestamp) . monthRussian($timestamp)),
date("H:i", $timestamp)
]);
}
}
function RussianNounPluralForm($number, $one, $two, $five) {
$number = abs($number) % 100;
$remainder = $number % 10;
if ($number > 10 && $number < 20) {
return $five;
}
if ($remainder > 1 && $remainder < 5) {
return $two;
}
if ($remainder == 1) {
return $one;
}
return $five;
}
/*
Объем файла (размер)
*/
function formatFileSize($sizeInBytes) {
$units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
$unit = 0;
while ($sizeInBytes >= 1024 && $unit < count($units) - 1) {
$sizeInBytes /= 1024;
$unit++;
}
return round($sizeInBytes, 2) . ' ' . $units[$unit];
}
/*
Возвращаем байты файла
*/
function return_bytes($size_str) {
switch (substr($size_str, -1)) {
case 'M': case 'm': return (int)$size_str * 1048576;
case 'K': case 'k': return (int)$size_str * 1024;
case 'G': case 'g': return (int)$size_str * 1073741824;
default: return (int)$size_str;
}
}
/*
Получение аватара пользователя
*/
function getAvatar($userid = null) {
if(empty($userid)) {
if(empty($_SESSION['id'])) {
return 'no_image.jpg';
}
$userid = $_SESSION['id'];
}
try {
$dataUser = users()->Get($userid);
if(empty($dataUser)) {
return 'no_image.jpg';
}
return $dataUser->image;
}
catch(Exception $e) {
return 'no_image.jpg';
}
}
/*
Получение имени пользователя
*/
function getName($userid = null) {
if(empty($userid)) {
if(empty($_SESSION['id'])) {
return getLang('functions_unknown');
}
$userid = $_SESSION['id'];
}
try {
$dataUser = users()->Get($userid);
if(empty($dataUser)) {
return getLang('functions_unknown');
}
return $dataUser->first_name . ' ' . $dataUser->last_name;
}
catch(Exception $e) {
return getLang('functions_unknown');
}
}
/*
Языковая система
*/
function getLang($key, $placeholders = []) {
global $lang;
if(empty($lang)) {
$lang = new Language;
$lang->loadLanguageFromFile('ru', 'ru.json');
$lang->setLanguage('ru');
}
return $lang->getText($key, $placeholders);
}
/*
Загрузка сторонней страницы
*/
function pageLoad($appearance = 'standart', $sample = 'sample', $content = '') {
tpl()
->SetAppearance($appearance)
->Start($sample)
->Content(tpl()->Get($content))
->Show();
}
/*
Проверка прав пользователя
*/
function isRights($searchRights) {
if(isset($_SESSION['id'])) {
$userData = users()->Get($_SESSION['id']);
if(strpos($userData->rights, $searchRights) !== false) {
return true;
}
}
return false;
}
/*
Получение списка участников диалога
*/
function peerParticipants($peerid) {
try {
$sth = pdo()->prepare('SELECT * FROM `messages__dialogs` WHERE `id`=:peerid LIMIT 1');
$sth->execute([
':peerid' => $peerid
]);
if(!$sth->rowCount()) {
return null;
}
return json_decode($sth->fetch(PDO::FETCH_OBJ)->participants, true);
}
catch(Exception $e) {
return null;
}
}