diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..85e7c1df --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea/ diff --git a/_incl_data/class/Uploader.php b/_incl_data/class/Uploader.php new file mode 100644 index 00000000..56abfdf8 --- /dev/null +++ b/_incl_data/class/Uploader.php @@ -0,0 +1,174 @@ + + */ + +class Uploader +{ + private $width = ['min' => 0, 'max' => 0]; + private $height = ['min' => 0, 'max' => 0]; + private $maxFileSizeMb; + private $savePath; + private $extensions = 'jpg|png|jpeg|gif'; + private $extMatches = []; + private $FILE; + private $cnm = null; + public static $error; + + public function __construct($name, $cnm = null) + { + $this->FILE = $_FILES; + if (!$this->FILE[$name]) { + return; + } + $this->cnm = $cnm; + } + + /** + * @param int $max + * @param int $min + * @return void + */ + public function setWidth($max, $min = null) + { + $this->width['min'] = is_null($min) ? $max : $min; + $this->width['max'] = $max; + } + + /** + * @param int $max + * @param int $min + * @return void + */ + public function setHeight($max, $min = null) + { + $this->height['min'] = is_null($min) ? $max : $min; + $this->height['max'] = $max; + } + + /** + * @param $megabytes + * @return void + */ + public function setMaxFileSize($megabytes) + { + $this->maxFileSizeMb = $megabytes * (1024 * 1024); + } + + /** + * @param string $path путь от корня до конечной папки без открывающего слеша. + * @return void + */ + public function setSavePath($path) + { + $this->savePath = __DIR__ . '/' . $path; + } + + /** + * @param string|array $ext + * @return void + */ + public function setExtentions($ext) + { + if (is_array($ext)) { + $arr = $ext; + } else { + $arr[] = $ext; + } + if (!$arr) { + return; + } + $this->extensions = implode('|', $arr); + } + + /** + * @param int $width + * @param int $height + * @return void + */ + public function setDimensions($width, $height) + { + $this->setWidth($width); + $this->setHeight($height); + } + + private function hasNormalDimensions() + { + list($width, $height) = getimagesize($this->FILE['tmp_name']); + if ( + $width < $this->width['min'] || + $width > $this->width['max'] || + $height < $this->height['min'] || + $height > $this->height['max'] + ) { + self::$error = "Требования к размеру [{$this->width['max']}x{$this->height['max']}] не соблюдены."; + if ($this->width['min'] !== $this->width['max'] || $this->height['min'] !== $this->height['max']) { + self::$error .= " Минимум [{$this->width['min']}x{$this->height['min']}]."; + } + self::$error .= " [{$width}x$height]"; + return false; + } + return true; + } + + private function hasNormalFileSize() + { + if (!$this->maxFileSizeMb) { + $this->setMaxFileSize(2); + } + if ($this->FILE['size'] > $this->maxFileSizeMb || $this->FILE['size'] <=0) { + self::$error = 'Неверный размер файла. Максимальный размер файла ' . $this->maxFileSizeMb . ' МБ'; + return false; + } + return true; + } + + private function hasNormalType() + { + if ( + !preg_match('/\.(' . $this->extensions . ')$/i', $this->FILE['name'], $this->extMatches) || + !preg_match('/image/i', $this->FILE['type']) + ) { + self::$error = 'Неверный тип файла. Допустимые типы : ' . $this->extensions; + return false; + } + return true; + } + + private function hasNormalFilePath() + { + if (!$this->savePath || !is_dir($this->savePath)) { + self::$error = 'Ошибка загрузки: нет такой папки.'; + return false; + } + return true; + } + + private function upload() + { + $this->extMatches[1] = strtolower($this->extMatches[1]); + $fn = uniqid('f_', true) . '.' . $this->extMatches[1]; + $fn2 = uniqid('f_', true) . '.gif'; + if ($this->cnm) { + $fn = $this->cnm; + $fn2 = $this->cnm; + } + if (!move_uploaded_file($this->FILE['tmp_name'], $this->savePath . $fn)) { + self::$error = 'Ошибка загрузки файла'; + return false; + } + return [$fn2, $fn, $this->savePath . $fn]; + } + + function saveimg() + { + return $this->hasNormalFilePath() && + $this->hasNormalDimensions() && + $this->hasNormalFileSize() && + $this->hasNormalType() ? $this->upload() : false; + } +} \ No newline at end of file diff --git a/modules_data/_clan.php b/modules_data/_clan.php index e0237758..77e6d8fe 100644 --- a/modules_data/_clan.php +++ b/modules_data/_clan.php @@ -1,2944 +1,3595 @@ -info['clan'])."' LIMIT 1")); -$cpr = explode('|', $u->info['clan_prava']); - -if(!isset($res['id'])) { - die('Клан был расформирован.'); +info['clan']) . "' LIMIT 1") +); +$cpr = explode('|', $u->info['clan_prava']); + +if (!isset($res['id'])) { + die('Клан был расформирован.'); +} + +if (!isset($_GET['events']) && !isset($_GET['diplom']) && !isset($_GET['control']) && !isset($_GET['deposit']) && !isset($_GET['titul']) && !isset($_GET['rules']) && !isset($_GET['info']) && !isset($_GET['members'])) { + $_GET['events'] = 1; } //Возможности текущего титула -$tt = array( - 0 => array('000000000','Доступные каналы'), - 1 => array(0,'Просмотр событий клана'), - 2 => array(0,'Создание событий клана'), - 3 => array(0,'Просмотр хранилища'), - 4 => array(0,'Использование вещей из хранилища'), - 5 => array(0,'Изъятие предметов из хранилища'), - 6 => array(0,'Просмотр казны и списка игроков, пополнявших казну'), - 7 => array(0,'Пополнение казны и доступ к абилкам'), - 8 => array(0,'Использование казны'), - 9 => array(0,'Прием в клан'), - 10 => array(0,'Изгнание из клана'), - 11 => array(0,'Редактирование информации о клане'), - 12 => array(0,'Клановые союзы и альянсы'), - 13 => array(0,'Управление клановыми союзами и альянсами'), - 14 => array(0,'Обьявление войны'), - 15 => array(0,0), - 15 => array(0,0), - 16 => array(0,0), - 17 => array(0,0), - 18 => array(0,0), - 19 => array(0,0), - 20 => array(0,0) -); +$tt = [ + 0 => ['000000000', 'Доступные каналы'], + 1 => [0, 'Просмотр событий клана'], + 2 => [0, 'Создание событий клана'], + 3 => [0, 'Просмотр хранилища'], + 4 => [0, 'Использование вещей из хранилища'], + 5 => [0, 'Изъятие предметов из хранилища'], + 6 => [0, 'Просмотр казны и списка игроков, пополнявших казну'], + 7 => [0, 'Пополнение казны и доступ к абилкам'], + 8 => [0, 'Использование казны'], + 9 => [0, 'Прием в клан'], + 10 => [0, 'Изгнание из клана'], + 11 => [0, 'Редактирование информации о клане'], + 12 => [0, 'Клановые союзы и альянсы'], + 13 => [0, 'Управление клановыми союзами и альянсами'], + 14 => [0, 'Обьявление войны'], + 15 => [0, 0], + 15 => [0, 0], + 16 => [0, 0], + 17 => [0, 0], + 18 => [0, 0], + 19 => [0, 0], + 20 => [0, 0], +]; -if($u->info['clan_prava'] != 'glava') { - $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "'.$u->info['clan_prava'].'" LIMIT 1')); - if(!isset($utitl['id'])) { - $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 2 LIMIT 1')); - } +if ($u->info['clan_prava'] != 'glava') { + $utitl = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "' . $u->info['clan_prava'] . '" LIMIT 1') + ); + if (!isset($utitl['id'])) { + $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 2 LIMIT 1')); + } } else { - $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 1 LIMIT 1')); + $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 1 LIMIT 1')); } -if(isset($utitl['id'])) { - $i = 1; - while($i < count($tt)) { - if($utitl['prava'][$i] > 0) { - $tt[$i][0] = 1; - } - $i++; - } +if (isset($utitl['id'])) { + $i = 1; + while ($i < count($tt)) { + if ($utitl['prava'][$i] > 0) { + $tt[$i][0] = 1; + } + $i++; + } } $u->info['tt'] = $tt; //Уровень клана -$lvl_exp = array( - 0 => 0, - 1 => 500000, - 2 => 2000000, - 3 => 5500000, - 4 => 10500000, - 5 => 20500000, - 6 => 35500000, - 7 => 65500000, - 8 => 100000000, - 9 => 200000000, - 10 => 300000000, - 11=> 1000000000 - -); +$lvl_exp = [ + 0 => 0, + 1 => 500000, + 2 => 2000000, + 3 => 5500000, + 4 => 10500000, + 5 => 20500000, + 6 => 35500000, + 7 => 65500000, + 8 => 100000000, + 9 => 200000000, + 10 => 300000000, + 11 => 1000000000, -if($res['exp'] >= $lvl_exp[$res['level']+1]) { - $res['level']++; - mysql_query('UPDATE `clan` SET `level` = "'.$res['level'].'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( - "'.$res['id'].'","'.time().'","'.date('d.m.Y').'","0","127.0.0.1","Администрация","Клановое сообщение","Ваш клан достиг уровня '.$res['level'].'!" - )'); +]; + +if ($res['exp'] >= $lvl_exp[$res['level'] + 1]) { + $res['level']++; + mysql_query('UPDATE `clan` SET `level` = "' . $res['level'] . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1'); + mysql_query( + 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( + "' . $res['id'] . '","' . time() . '","' . date( + 'd.m.Y' + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","Ваш клан достиг уровня ' . $res['level'] . '!" + )' + ); } -$r1 = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_clan_reting_list` WHERE `clan` = "'.$res['id'].'" AND `date` = "'.date('dmY').'" LIMIT 1')); // читаем позицию клана +$r1 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `aaa_clan_reting_list` WHERE `clan` = "' . $res['id'] . '" AND `date` = "' . date( + 'dmY' + ) . '" LIMIT 1' + ) +); // читаем позицию клана //Права клана -$lvl_prava = array( - 0 => array(8,0,0,0,0,50,20,200), - 1 => array(12,1,0,0,0,50,20,200), - 2 => array(16,1,0,0,0,50,20,200), - 3 => array(20,1,0,0,0,50,20,200), - 4 => array(24,1,1,0,0,100,40,200), - 5 => array(28,1,1,0,0,100,40,200), - 6 => array(32,1,1,0,0,100,40,200), - 7 => array(36,1,1,0,0,200,80,200), - 8 => array(40,1,1,1,1,200,80,200), - 9 => array(44,1,1,1,1,200,80,200), - 10 => array(48,1,1,1,1,200,80,200), - 11 => array(52,1,1,1,1,200,80,200) -) +$lvl_prava = [ + 0 => [8, 0, 0, 0, 0, 50, 20, 200], + 1 => [12, 1, 0, 0, 0, 50, 20, 200], + 2 => [16, 1, 0, 0, 0, 50, 20, 200], + 3 => [20, 1, 0, 0, 0, 50, 20, 200], + 4 => [24, 1, 1, 0, 0, 100, 40, 200], + 5 => [28, 1, 1, 0, 0, 100, 40, 200], + 6 => [32, 1, 1, 0, 0, 100, 40, 200], + 7 => [36, 1, 1, 0, 0, 200, 80, 200], + 8 => [40, 1, 1, 1, 1, 200, 80, 200], + 9 => [44, 1, 1, 1, 1, 200, 80, 200], + 10 => [48, 1, 1, 1, 1, 200, 80, 200], + 11 => [52, 1, 1, 1, 1, 200, 80, 200], +] ?> -