This commit is contained in:
2022-06-07 00:30:34 +03:00
commit 5f4b2cbf77
1784 changed files with 327645 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
deny from all
+30
View File
@@ -0,0 +1,30 @@
<?php
namespace Core;
class Chat {
//Ñèñòåìíîå ñîîáùåíèå
public static function send_system( $uid , $text ) {
if( !is_string($uid) ) {
$uid = \Core\Database::query( 'SELECT `login` FROM `users` WHERE `uid` = :uid ORDER BY `id` ASC LIMIT 1000' , array(
'uid' => $uid
));
$uid = $uid['login'];
}
\Core\Database::query( 'INSERT INTO `chat` (`to`,`time`,`type`,`text`,`color`,`typeTime`,`new`) VALUES (
:to , :time , :type , :text , :color , :typeTime , :new
)', array(
'to' => $uid,
'time' => OK,
'type' => 6,
'text' => $text,
'color' => 'Black',
'typeTime' => 0,
'new' => 1
) );
}
}
?>
+45
View File
@@ -0,0 +1,45 @@
<?php
namespace Core;
class Database {
public static $connection = NULL;
public static function connect() {
if ( self::$connection == NULL ) {
try {
$connection = new \PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS);
$connection->exec('SET NAMES CP1251;');
$connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
self::$connection = $connection;
} catch ( \PDOException $e ) {
new GeneralException($e->getMessage(), 10001);
}
}
}
public static function query($q, $p = array(), $fetch_object = false, $fetch_all = false, $count = false) {
try {
if ( self::$connection == NULL ) {
throw new \PDOException('[Internal Error] Could not establish DB connection');
}
$stmt = self::$connection->prepare($q);
if ( $count !== false ) {
$stmt->execute($p);
return $stmt->fetchColumn();
} elseif ( $fetch_object !== false ) {
$stmt->execute($p);
return ($fetch_all !== false ? $stmt->fetchAll(\PDO::FETCH_ASSOC) : $stmt->fetch(\PDO::FETCH_ASSOC));
} else {
return $stmt->execute($p);
}
} catch ( \PDOException $e ) {
new GeneralException($e->getMessage(), 10002);
}
}
public static function lastID () {
return self::$connection->lastInsertId();
}
}
?>
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace Core;
class GeneralException extends \Exception {
public function __construct($message, $code = 0) {
$s = '';
$s .= 'Server date & time: ' . date('d.m.Y H:i:s') . "\n";
$s .= 'Error code: ' . $code . "\n";
$s .= 'Error message: ' . $message . "\n";
$s .= 'In file: ' . $this->getFile() . "\n";
$s .= 'In line: ' . $this->getLine() . "\n";
$s .= 'Client IP: ' . $_SERVER['REMOTE_ADDR'] . "\n";
$s .= 'GET Data: ' . serialize($_GET) . "\n";
$s .= 'POST Data: ' . serialize($_POST) . "\n";
$s .= 'Call Stack Trace: ' . "\n";
foreach ( debug_backtrace() as $stack ) {
$s .= "\tFILE: '" . $stack['file'] . "', LINE: '" . $stack['line'] . "';\n";
}
file_put_contents(PROJECT_PATH . DS . 'log/error.log', $s . "\n", FILE_APPEND);
}
}
?>
+79
View File
@@ -0,0 +1,79 @@
<?php
namespace Core;
class Item {
public static function lookStats($m) {
$ist = array();
$di = explode('|',$m);
$i = 0; $de = false;
while($i<count($di)) {
$de = explode('=',$di[$i]);
if(isset($de[0],$de[1])) {
if(!isset($ist[$de[0]])) {
$ist[$de[0]] = 0;
}
$ist[$de[0]] = $de[1];
}
$i++;
}
return $ist;
}
public static function getItem( $id ) {
$itm = \Core\Database::query( 'SELECT `a`.*,`b`.* FROM `items_main` AS `a` LEFT JOIN `items_main_data` AS `b` ON `b`.`items_id` = `a`.`id` WHERE `a`.`id` = :item_id LIMIT 1' , array(
'item_id' => $id
) , true );
return $itm;
}
public static function getItemUser( $id ) {
//uiid - id ïðåäìåòà â items_users
$itm = \Core\Database::query( 'SELECT `a`.*,`b`.*,`a`.`id` AS `uiid` FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON `b`.`id` = `a`.`item_id` WHERE `a`.`id` = :item_id LIMIT 1' , array(
'item_id' => $id
) , true );
return $itm;
}
public static function infoItem( $itm ) {
//$po = self::lookStats( $itm['data'] );
//
$r = array(
//items_main
$itm['id'],
$itm['name'],
$itm['img'],
$itm['2h'],
$itm['2too'],
$itm['iznosMAXi'],
$itm['price1'], //6
$itm['price2'],
$itm['magic_chance'],
$itm['info'],
$itm['massa'],
$itm['geni'],
//items_users 12
$itm['1price'], //12
$itm['2price'],
$itm['use_text'],
$itm['iznosNOW'],
$itm['iznosMAX'],
$itm['gift'],
$itm['magic_inc'],
$itm['maidin'],
//data 20
$itm['data'],
//group items_user
$itm['inGroup'], //21
$itm['uiid'],
//
OK
);
return $r;
}
}
?>
+62
View File
@@ -0,0 +1,62 @@
<?php
namespace Core;
class Route {
public static $json_return = false, $device = 'PC', $device_type = 'PC', $device_id = 0;
public static function begin() {
if ( isset($_SERVER['HTTP_ACCEPT']) && in_array('application/json', explode(',', $_SERVER['HTTP_ACCEPT'])) ) {
self::$json_return = true;
}
$url_data = parse_url($_SERVER['REQUEST_URI']);
$uri = urldecode($url_data['path']);
$urls = array(
//Ëîêàöèè
DP . '/comission' => 'comission',
DP . '/auction' => 'auction',
DP . '/debuger' => 'debuger',
DP . '/admin' => 'admin'
);
$found_module = false;
foreach ( $urls as $url => $handler ) {
if ( preg_match("#^" . $url . "/*$#", $uri) ) {
$class_name = "Logic\\$handler";
if(class_exists($class_name)) {
$controller = new $class_name;
$controller->defaultAction();
$found_module = true;
}else{
self::ErrorClass404($class_name);
}
break;
} else {
continue;
}
}
if ( !$found_module ) {
self::ErrorPage404();
}
}
public static function redirect($url) {
header('Location: ' . $url);
}
public static function ErrorPage404() {
die('Ñòðàíèöà íå íàéäåíà');
}
public static function ErrorClass404($name) {
die('Ðàñøèðåíèå '. $name .' íå íàéäåíî');
}
}
?>
+160
View File
@@ -0,0 +1,160 @@
<?php
namespace Core;
class User {
public static $data = false , $stats = false , $room = false;
public static $is = array(
'exp' => 'Получаемый опыт (%)', 'align_bs' => 'Служитель закона',
'nopryh' => 'Прямое поподание', 'puti'=>'Запрет перемещения','align'=>'Склонность','hpAll'=>'Уровень жизни (HP)','mpAll'=>'Уровень маны','enAll'=>'Уровень энергии','sex'=>'Пол','lvl'=>'Уровень','s1'=>'Сила','s2'=>'Ловкость','s3'=>'Интуиция','s4'=>'Выносливость','s5'=>'Интеллект','s6'=>'Мудрость','s7'=>'Духовность','s8'=>'Воля','s9'=>'Свобода духа','s10'=>'Божественность','s11'=>'Энергия','m1'=>'Мф. критического удара (%)','m2'=>'Мф. против критического удара (%)','m3'=>'Мф. мощности крит. удара (%)','m4'=>'Мф. увертывания (%)','m5'=>'Мф. против увертывания (%)','m6'=>'Мф. контрудара (%)','m7'=>'Мф. парирования (%)','m8'=>'Мф. блока щитом (%)','m9'=>'Мф. удара сквозь броню (%)','m14'=>'Мф. абс. критического удара (%)','m15'=>'Мф. абс. увертывания (%)','m16'=>'Мф. абс. парирования (%)','m17'=>'Мф. абс. контрудара (%)','m18'=>'Мф. абс. блока щитом (%)','m19'=>'Мф. абс. магический промах (%)','m20'=>'Мф. удача (%)','a1'=>'Мастерство владения ножами, кинжалами','a2'=>'Мастерство владения топорами, секирами','a3'=>'Мастерство владения дубинами, молотами','a4'=>'Мастерство владения мечами','a5'=>'Мастерство владения магическими посохами','a6'=>'Мастерство владения луками','a7'=>'Мастерство владения арбалетами','aall'=>'Мастерство владения оружием','mall'=>'Мастерство владения магией стихий','m2all'=>'Мастерство владения магией','mg1'=>'Мастерство владения магией огня','mg2'=>'Мастерство владения магией воздуха','mg3'=>'Мастерство владения магией воды','mg4'=>'Мастерство владения магией земли','mg5'=>'Мастерство владения магией Света','mg6'=>'Мастерство владения магией Тьмы','mg7'=>'Мастерство владения серой магией','tj'=>'Тяжелая броня','lh'=>'Легкая броня','minAtack'=>'Минимальный урон','maxAtack'=>'Максимальный урон','m10'=>'Мф. мощности урона','m11'=>'Мф. мощности магии стихий','m11a'=>'Мф. мощности магии','pa1'=>'Мф. мощности колющего урона','pa2'=>'Мф. мощности рубящего урона','pa3'=>'Мф. мощности дробящий урона','pa4'=>'Мф. мощности режущий урона','pm1'=>'Мф. мощности магии огня','pm2'=>'Мф. мощности магии воздуха','pm3'=>'Мф. мощности магии воды','pm4'=>'Мф. мощности магии земли','pm5'=>'Мф. мощности магии Света','pm6'=>'Мф. мощности магии Тьмы','pm7'=>'Мф. мощности серой магии','za'=>'Защита от урона','zm'=>'Защита от магии стихий','zma'=>'Защита от магии','za1'=>'Защита от колющего урона','za2'=>'Защита от рубящего урона','za3'=>'Защита от дробящего урона','za4'=>'Защита от режущего урона','zm1'=>'Защита от магии огня','zm2'=>'Защита от магии воздуха','zm3'=>'Защита от магии воды','zm4'=>'Защита от магии земли','zm5'=>'Защита от магии Света','zm6'=>'Защита от магии Тьмы','zm7'=>'Защита от серой магии','magic_cast'=>'Дополнительный каст за ход','pza'=>'Понижение защиты от урона','pzm'=>'Понижение защиты от магии','pza1'=>'Понижение защиты от колющего урона','min_heal_proc'=>'Эффект лечения (%)','notravma'=>'Защита от травм','yron_min'=>'Минимальный урон','yron_max'=>'Максимальный урон','zaproc'=>'Защита от урона (%)','zmproc'=>'Защита от магии стихий (%)','zm2proc'=>'Защита от магии Воздуха (%)','pza2'=>'Понижение защиты от рубящего урона','pza3'=>'Понижение защиты от дробящего урона','pza4'=>'Понижение защиты от режущего урона','pzm1'=>'Понижение защиты от магии огня','pzm2'=>'Понижение защиты от магии воздуха','pzm3'=>'Понижение защиты от магии воды','pzm4'=>'Понижение защиты от магии земли','pzm5'=>'Понижение защиты от магии Света','pzm6'=>'Понижение защиты от магии Тьмы','pzm7'=>'Понижение защиты от серой магии','speedhp'=>'Регенерация здоровья (%)','speedmp'=>'Регенерация маны (%)','tya1'=>'Колющие атаки','tya2'=>'Рубящие атаки','tya3'=>'Дробящие атаки','tya4'=>'Режущие атаки','tym1'=>'Огненные атаки','mg2static_points'=>'Уровень заряда (Воздух)','tym2'=>'Электрические атаки','tym3'=>'Ледяные атаки','tym4'=>'Земляные атаки','hpProc'=>'Уровень жизни (%)','mpProc'=>'Уровень маны (%)','tym5'=>'Атаки Света','tym6'=>'Атаки Тьмы','tym7'=>'Серые атаки','min_use_mp'=>'Уменьшает расход маны','pog'=>'Поглощение урона','pog2'=>'Поглощение урона','pog2p'=>'Процент поглощение урона','pog2mp'=>'Цена поглощение урона','maxves'=>'Увеличивает рюкзак','bonusexp'=>'Увеличивает получаемый опыт','speeden'=>'Регенерация энергии (%)',
'yza' => 'Уязвимость физическому урона (%)','yzm' => 'Уязвимость магии стихий (%)','yzma' => 'Уязвимость магии (%)'
,'yza1' => 'Уязвимость колющему урона (%)','yza2' => 'Уязвимость рубящему урона (%)','yza3' => 'Уязвимость дробящему урона (%)','yza4' => 'Уязвимость режущему урона (%)'
,'yzm1' => 'Уязвимость магии огня (%)','yzm2' => 'Уязвимость магии воздуха (%)','yzm3' => 'Уязвимость магии воды (%)','yzm4' => 'Уязвимость магии земли (%)','yzm5' => 'Уязвимость магии (%)','yzm6' => 'Уязвимость магии (%)','yzm7' => 'Уязвимость магии (%)','rep'=> 'Репутация Рыцаря'
);
public static $items = array(
'tr' => array('sex','align','lvl','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','a1','a2','a3','a4','a5','a6','a7','mg1','mg2','mg3','mg4','mg5','mg6','mg7','mall','m2all','aall','rep', 'align_bs'),
'add' => array(
'exp','enemy_am1','hod_minmana','yhod','noshock_voda',
'yza','yzm','yzma','yza1','yza2','yza3','yza4','yzm1','yzm2','yzm3','yzm4','yzm5','yzm6','yzm7',
'notuse_last_pr','yrn_mg_first','antishock','nopryh','speed_dungeon','naemnik','mg2static_points','yrnhealmpprocmg3','nousepriem','notactic','seeAllEff','100proboi1','pog2','pog2p','magic_cast','min_heal_proc','no_yv1','no_krit1','no_krit2','no_contr1','no_contr2','no_bl1','no_pr1','no_yv2','no_bl2','no_pr2','silver','pza','pza1','pza2','pza3','pza4','pzm','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','yron_min','yron_max','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','hpVinos','mpVinos','mpAll','enAll','hpProc','mpProc','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','m11a','zona','zonb','maxves','minAtack','maxAtack','bonusexp','speeden'),
'sv' => array('pza','pza1','pza2','pza3','pza4','pzm','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','mpAll','enAll','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','min_use_mp','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','zona','zonb','maxves','minAtack','maxAtack','speeden')
);
//Подключаем пользователя
public static function connect() {
//
self::$data = \Core\Database::query( 'SELECT * FROM `users` WHERE `login` = :login ORDER BY `id` ASC LIMIT 1' , array(
'login' => \Core\Utils::cookie('login')
) , true );
//Неверный пароль
if( self::$data['pass'] != \Core\Utils::cookie('pass') ) {
self::$data = false;
}
//Персонаж заблокирован
if( self::$data['banned'] > 0 ) {
self::$data = false;
}
//Подключаем статы
if( isset( self::$data['id'] ) ) {
self::$stats = \Core\Database::query( 'SELECT * FROM `stats` WHERE `id` = :uid LIMIT 1' , array(
'uid' => self::$data['id']
) , true );
}
}
//Считаем вес персонажа
public static function ves( $uid ) {
$r = array('now' => 0,'max' => 0);
//Масса рюкзака
$r['now'] = \Core\Database::query( 'SELECT SUM(`b`.`massa`) AS `m` FROM `items_users` AS `a` LEFT JOIN `items_main`AS `b` ON `b`.`id` = `a`.`item_id` WHERE `a`.`uid` = :uid AND `a`.`delete` = 0 AND `a`.`inShop` = 0 AND `inOdet` = 0' , array(
'uid' => $uid
) , true );
$r['now'] = 0 + $r['now']['m'];
//
$r['max'] = 0;
//
return $r;
}
//Смотрим характеристики
public static function getStats( $uid ) {
$r = array(
'st' => array( ), //Характеристики
'sl' => array( ), //Заполненные слоты ( 0 id предмета , 1 тип предмета )
'ms' => array( 'now' => 0 , 'max ' => 0 , 'itm' => 0 ) //Масса
);
//
$user = \Core\Database::query( 'SELECT * FROM `users` WHERE `id` = :uid LIMIT 1' , array(
'uid' => $uid
), true );
//
if( isset($user['id']) ) {
//
$stats = \Core\Database::query( 'SELECT * FROM `stats` WHERE `id` = :uid LIMIT 1' , array(
'uid' => $uid
), true );
//
//Базовые добавления
$r['st']['hpNow'] = $stats['hpNow'];
$r['st']['mpNow'] = $stats['mpNow'];
//
//Характеристики от предметов
$pl = \Core\Database::query( 'SELECT * FROM `items_users` WHERE `uid` = :uid AND `inOdet` > 0 AND `delete` = 0' , array(
'uid' => $user['id']
), true, true);
$i = 0;
while( $i < count($pl) ) {
$r['st'] = self::plusStatsData( $r['st'] , $pl[$i]['data'] );
$i++;
}
unset($pl,$i);
//
//Характеристики от эффектов
$pl = \Core\Database::query( 'SELECT * FROM `eff_users` WHERE `uid` = :uid AND `delete` = 0' , array(
'uid' => $user['id']
), true, true);
$i = 0;
while( $i < count($pl) ) {
$r['st'] = self::plusStatsData( $r['st'] , $pl[$i]['data'] );
$i++;
}
unset($pl,$i);
//
//Характеристики от статов
$r['st']['hpAll'] += $r['st']['s4'] * 6; //Здоровье от выносливости
$r['st']['mpAll'] += $r['st']['s6'] * 12; //Мана от мудрости
$r['st']['m1'] += $r['st']['s3'] * 5; //Интуиция дает мф. крита
$r['st']['m2'] += $r['st']['s3'] * 5; //Интуиция дает мф. против крита
$r['st']['m4'] += $r['st']['s2'] * 7; //Интуиция дает мф. уворота
$r['st']['m5'] += $r['st']['s2'] * 7; //Интуиция дает мф. против уворота
$r['st']['za'] += $r['st']['s4'] * 1.5; //Выносливость дает защиту от урона
$r['st']['zm'] += $r['st']['s4'] * 1.5; //Выносливость дает защиту от магии
//
//Бонусы комплектов
//
//Бонусы статов
//
}
return $r;
}
//Добавление статов
public static function plusStatsData( $st , $data ) {
$data = \Core\Utils::lookStats( $data );
$i = 0;
while( $i < count(self::$items['add']) ) {
if( $data['add_' . self::$items['add'][$i]] != 0 ) {
$st[self::$items['add'][$i]] += $data['add_' . self::$items['add'][$i]];
}
$i++;
}
return $st;
}
//Подключаем локацию в которой находится пользователь
public static function room() {
if( isset(self::$data['id']) ) {
self::$room = \Core\Database::query( 'SELECT * FROM `room` WHERE `id` = :id LIMIT 1' , array(
'id' => self::$data['room']
) , true );
}
}
public static function redirect($url) {
header('Location: ' . $url);
}
public static function ErrorPage404() {
die('Страница не найдена');
}
public static function ErrorClass404($name) {
die('Расширение '. $name .' не найдено');
}
}
?>
+376
View File
@@ -0,0 +1,376 @@
<?php
namespace Core;
class Utils {
/*
@ Ìåòîä ðåäèðåêòà íà äðóãóþ ñòðàíèöó
*/
public function redirect( $url ) {
header( 'location: ' . $url );
}
/*
@ Ìåòîä ðàçäåëåíèÿ ïàðàìåòðîâ
@
*/
public static function lookStats($m) {
$ist = array();
$di = explode('|',$m);
$i = 0; $de = false;
while($i<count($di))
{
$de = explode('=',$di[$i]);
if(isset($de[0],$de[1]))
{
if(!isset($ist[$de[0]])) {
$ist[$de[0]] = 0;
}
$ist[$de[0]] = $de[1];
}
$i++;
}
return $ist;
}
/*
@ Ìåòîä âûâîäà öåëûõ ÷èñåë
@ TYPE: 0 - ëþáîå ÷èñëî
*/
public function num( $val, $type ) {
if( $type == 0 ) {
$val = floor((int)$val);
}
return $val;
}
/*
@ Ìåòîä îïðåäåëåíèÿ ïóñòîå çíà÷åíèå èëè íåò
@ TYPE: 0 - ÷èñëî, 1 - òåêñò
*/
public function emptyVal( $val, $type ) {
$r = true;
if( !isset($val) ) {
$r = false;
}elseif( $type == 0 ) {
if( $val == 0 ) {
$r = false;
}
}elseif( $type == 1 ) {
$val = str_replace( ' ', '', str_replace( ' ', '', $val ) );
if( $val == '' ) {
$r = false;
}
}
return $r;
}
/*
@ Ìåòîä ôèëüòðàöèè ñòðîêè (äëÿ POST èëè GET)
*/
public function fs( $val ) {
$val = htmlspecialchars( $val ) ;
return $val;
}
/*
@ Ìåòîä ñîçäàíèÿ êóêè è óäàëåíèÿ
*/
public function cookie( $name , $value = NULL , $time = NULL ) {
if( $value == NULL ) {
return $_COOKIE[$name];
}elseif( $value != false ) {
if( $time == NULL ) {
$time = 86400;
}
return setcookie( $name , $value , OK + $time , '/' );
}else{
return setcookie( $name , '' , OK - 86400 , '/' );
}
}
/*
@ Ìåòîä íà÷àëà ñåññèè
*/
public function ses_start() {
if ( session_id() ) return true;
else return session_start();
}
/*
@ Ìåòîäïðîâåðêè òåêñòà
*/
public function testVal( $val , $min , $max , $sym , $nosym , $nostart , $noend , $data ) {
$r = true;
if( mb_strlen($val,'UTF-8') < $min || mb_strlen($val,'UTF-8') > $max ) {
$r = false;
}else{
//Äîïóñòèìûå ñèìâîëû
if( $sym != false ) {
$i = 0;
$new_val = mb_strtolower($val,'UTF-8');
while( $i < mb_strlen($val,'UTF-8') ) {
$j = 0;
$k = 0;
$k2 = 0;
while( $j < mb_strlen($sym,'UTF-8') ) {
if( mb_strtolower($val[$i],'UTF-8') == mb_strtolower($sym[$j],'UTF-8') ) {
$k++;
}else{
if( isset($data['noXsym']) ) {
//Íåëüçÿ èñïîëüçîâàòü áîëåå X ñèìâîëîâ ïîäðÿä
$l = 0;
$notxt = '';
while( $l < $data['noXsym'] ) {
$notxt .= mb_strtolower($sym[$j],'UTF-8');
$l++;
}
if( mb_strpos($new_val,$notxt,NULL,'UTF-8') !== false ) {
$k2++;
}
}
}
$j++;
}
if( $k == 0 || $k2 > 0 ) {
$i = mb_strlen($val,'UTF-8');
$r = false;
}
$i++;
}
}
//Íå äîïóñòèìûå ñèìâîëû
if( $nosym != false ) {
$i = 0;
$new_val = '';
while( $i < count($nosym) ) {
if( mb_strpos(mb_strtolower($val,'UTF-8'),mb_strtolower($nosym[$i],'UTF-8'),NULL,'UTF-8') !== false ) {
$i = count($nosym);
$r = false;
}
$i++;
}
}
//íå äîïóñòèìîå íà÷àëî
if( $nostart != false ) {
$i = 0;
$new_val = '';
while( $i < count($nostart) ) {
if( mb_substr( $val, 0, mb_strlen($nostart[$i],'UTF-8'),'UTF-8') == $nostart[$i] ) {
$i = count($nostart);
$r = false;
}
$i++;
}
}
//íå äîïóñòèìûé êîíåö
if( $noend != false ) {
$i = 0;
$new_val = '';
while( $i < count($noend) ) {
if( mb_substr( $val, ( mb_strlen($val,'UTF-8') - mb_strlen($noend[$i],'UTF-8') ) , 0 , 'UTF-8') == $noend[$i] ) {
$i = count($noend);
$r = false;
}
$i++;
}
}
}
return $r;
}
/*
@ Ìåòîä "çàâåðøåíèÿ" ñåññèè
*/
public function ses_end() {
if ( session_id() ) {
// Åñëè åñòü àêòèâíàÿ ñåññèÿ, óäàëÿåì êóêè ñåññèè,
setcookie(session_name(), session_id(), time()-60*60*24);
// è óíè÷òîæàåì ñåññèþ
session_unset();
session_destroy();
}
}
/*
@ Ìåòîä îïðåäåëåíèÿ òèïà ñòðîêà, öèôðû, ýë.ïî÷òà
*/
public function takeType( $val ) {
if( preg_match( "|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $val ) ) {
//Ýë.ïî÷òà
return 2;
}else{
preg_match_all( '([0-9])', $val, $matches );
$res = implode( NULL, $matches[0] );
if( mb_strlen( $val, 'UTF-8' ) > mb_strlen( $res, 'UTF-8' ) ) {
//Ñòðîêà
return 1;
}else{
//×èñëî
return 3;
}
}
}
/*
@ Ìåòîä ïðîâåðêè ïðàâèëüíîñòè ïàðîëåé
*/
public function testPass( $psw1, $psw2 ) {
if( $psw1 == $psw2 ) {
return true;
}else{
return false;
}
}
/*
@ Ìåòîä ãåíèðàöèè êëþ÷à àâòîðèçàöèè
*/
public function createAuth( $par ) {
if( !isset( $par['rand'] ) ) {
$par['rand'] = rand(10000000,90000000);
}
$r = $par['rand'] . md5( $par['ip'] . '+' . $par['id'] . '+' . $par['pass'] . '+' . $par['rand'] );
return $r;
}
/*
@ Ìåòîä ïðîâåðêè êëþ÷à àâòîðèçàöèè
*/
public function testAuth( $auth, $par ) {
$par['rand'] = substr( $auth, 0, 8 );
if( $auth == self::createAuth( $par ) ) {
return true;
}else{
return false;
}
}
/*
@ Ìåòîä âûâîäà JSON äàííûõ
*/
public function JSON_Headers() {
header('Expires: Mon, 26 Jul 1970 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Content-Type: application/json; charset=utf-8');
return true;
}
/*
@ Ìåòîä ïðèîáðàçîâàíèÿ îáüåêòà â JSON
*/
public function jsonencode( $val ) {
array_walk_recursive( $val, function( &$value, $key ) {
$value = iconv( "CP1251", "UTF-8", $value );
});
return json_encode( $val );
//return json_encode( $val );
//return self::json_fix_cyr( json_encode( $val ) );
}
/*
@ Ìåòîä ïðèîáðàçîâàíèÿ JSON â îáüåêò
*/
public function jsondecode( $val ) {
return json_decode( $val );
}
/*
@ Ìåòîä ôèêñà êèðèëëè÷åñêèõ ñèìâîëîâ
*/
public function json_fix_cyr($json_str) {
$cyr_chars = array (
'\u0430' => 'à', '\u0410' => 'À',
'\u0431' => 'á', '\u0411' => 'Á',
'\u0432' => 'â', '\u0412' => 'Â',
'\u0433' => 'ã', '\u0413' => 'Ã',
'\u0434' => 'ä', '\u0414' => 'Ä',
'\u0435' => 'å', '\u0415' => 'Å',
'\u0451' => '¸', '\u0401' => '¨',
'\u0436' => 'æ', '\u0416' => 'Æ',
'\u0437' => 'ç', '\u0417' => 'Ç',
'\u0438' => 'è', '\u0418' => 'È',
'\u0439' => 'é', '\u0419' => 'É',
'\u043a' => 'ê', '\u041a' => 'Ê',
'\u043b' => 'ë', '\u041b' => 'Ë',
'\u043c' => 'ì', '\u041c' => 'Ì',
'\u043d' => 'í', '\u041d' => 'Í',
'\u043e' => 'î', '\u041e' => 'Î',
'\u043f' => 'ï', '\u041f' => 'Ï',
'\u0440' => 'ð', '\u0420' => 'Ð',
'\u0441' => 'ñ', '\u0421' => 'Ñ',
'\u0442' => 'ò', '\u0422' => 'Ò',
'\u0443' => 'ó', '\u0423' => 'Ó',
'\u0444' => 'ô', '\u0424' => 'Ô',
'\u0445' => 'õ', '\u0425' => 'Õ',
'\u0446' => 'ö', '\u0426' => 'Ö',
'\u0447' => '÷', '\u0427' => '×',
'\u0448' => 'ø', '\u0428' => 'Ø',
'\u0449' => 'ù', '\u0429' => 'Ù',
'\u044a' => 'ú', '\u042a' => 'Ú',
'\u044b' => 'û', '\u042b' => 'Û',
'\u044c' => 'ü', '\u042c' => 'Ü',
'\u044d' => 'ý', '\u042d' => 'Ý',
'\u044e' => 'þ', '\u042e' => 'Þ',
'\u044f' => 'ÿ', '\u042f' => 'ß',
'\r' => '',
'\n' => '<br />',
'\t' => ''
);
foreach ($cyr_chars as $cyr_char_key => $cyr_char) {
$json_str = str_replace($cyr_char_key, $cyr_char, $json_str);
}
return $json_str;
}
public static function timeOut($ttm)
{
$out = '';
$time_still = $ttm;
$tmp = floor($time_still/2592000);
$id=0;
if ($tmp > 0)
{
$id++;
if ($id<3) {$out .= $tmp." ìåñ. ";}
$time_still = $time_still-$tmp*2592000;
}
$tmp = floor($time_still/86400);
if ($tmp > 0)
{
$id++;
if ($id<3) {$out .= $tmp." äí. ";}
$time_still = $time_still-$tmp*86400;
}
$tmp = floor($time_still/3600);
if ($tmp > 0)
{
$id++;
if ($id<3) {$out .= $tmp." ÷. ";}
$time_still = $time_still-$tmp*3600;
}
$tmp = floor($time_still/60);
if ($tmp > 0)
{
$id++;
if ($id<3) {$out .= $tmp." ìèí. ";}
}
if($out=='')
{
if($time_still<0)
{
$time_still = 0;
}
$out = $time_still.' ñåê.';
}
return $out;
}
}
?>
+16
View File
@@ -0,0 +1,16 @@
<?php
namespace Core;
class View {
public function generateTpl($template, $data ) {
$twig = new \Twig_Environment(new \Twig_Loader_Filesystem(APP_PATH . DS . 'html'), array('autoescape' => false));
$template = $template . '.html';
$template = $twig->loadTemplate($template);
return $template->render($data);
}
}
?>