<?php
# Модуль «Куски кода»
# Author: Evgeniy
require ('system/sys.php'); 
require ('system/funcs.php'); 
if(!isset ($us)){ 
header('location: /error.php');
exit;
}
H ('Полезные куски-кода', 'Полезные куски кода'); 
switch($_GET['act']){
default;
    ?><div class="menu2">Категории </div><?
  $catAll = DB :: $dbs->query('select `name`,`id` from `codeCat`');
   if($catAll -> rowCount() == 0){?>
   <div class="raz"><center> Нет категорий </center></div>
      <?}
  while ($ca = $catAll -> fetch ()) { 
?><div class="raz"><a href="/code.php?act=category&id=<?=$ca['id'];?>"> <img src="http://profiwm.ru/images/page_white_code.png"> <?=$ca['name'];?></a></div>
   <?
 }
   if($us['level'] == 4){
   ?><div class="raz"><a href="/code.php?act=addCategory"> Добавить категорию </a></div>
    <?}
   break;
  
  case 'addCategory':
  if($us['level'] < 4){
  header('location: /code.php');
  exit;
  }
  if(isset($_POST['name'])){
  $name = htmlspecialchars(trim($_POST['name']));
  if(empty($name)){
   header('location: /code.php?act=addCategory');
   exit;
   }
   DB :: $dbs -> query('insert into `codeCat` (`name`) values (?)', array($name));
   header('location: /code.php');
   exit;
   }
  ?><div class="menu2"><a href="/code.php"> Куски кода</a> | Новая категория</div><form class="raz" action="" method="post">Название категории</br>
   <input type="text" name="name" placeholder="Название категории"></br>
    <input type="submit" value="Создать"></form>
   <?
   break;

   case 'category':
   $id = abs(intval($_GET['id']));
   $cat = DB :: $dbs -> query('select `name`,`id` from `codeCat` where `id` = ?', array($id));
   $cat = $cat -> fetch(PDO :: FETCH_ASSOC);
   if(!isset($cat['id'])){
   header('location: /');
   exit;
   }
   ?><div class="menu2"><a href="/code.php"> Куски кода</a> | <?=$cat['name'];?></div><?
 $items = DB :: $dbs ->query("SELECT * FROM `code` where `category` = ?", array($id));
  $items = $items -> rowCount();
$items_per_page = 10;
$pages = ceil ( $items / $items_per_page );
$page = (int) $_GET['page'];

if ($page < 1) {
        $page = 1;
}

if ($page > $pages) {
        $page = $pages;
}
    
$start = $page * $items_per_page - $items_per_page;

  $allCode = DB :: $dbs -> query("select `name`,`id` from `code` where `category` = ? order by `id` desc limit $start, $items_per_page", array($id));
  if($allCode -> rowCount() == 0){
   ?><div class="raz"><center>Нет кусков кода </center></div>
   <?}

   while($source = $allCode -> fetch()){
   ?><div class="raz"><a href="/code.php?act=source&id=<?=$source['id'];?>"> <img src="http://profiwm.ru/images/page_white_code.png"> <?=$source['name'];?></a> </div><?
    }
   if($page > 1){
echo '<div class="lst">' . pages ('/code.php?act=category&id='.$id.'' . $sort) . '</div>';
      }
  ?><div class="raz"><a href="/code.php?act=addSource&category=<?=$id;?>"> « Добавить код </a></div>
   <?
   if($us['level'] == 4){
  ?><div class="raz"><a href="/code.php?act=delCategory&id=<?=$id;?>"> Удалить категорию </a></div><?
   }
  break;
  case 'addSource':
  $id = abs(intval($_GET['category']));
  $cat = DB :: $dbs -> query('select `name`,`id` from `codeCat` where `id` = ?', array($id));
   $cat = $cat -> fetch(PDO :: FETCH_ASSOC);
   if(!isset($cat['id'])){
   header('location: /');
   exit;
   }
  if(isset($_POST['name'])){
  $name = htmlspecialchars(trim($_POST['name']));
  $about = htmlspecialchars(trim($_POST['about']));
  $source = htmlspecialchars(trim($_POST['source']));
   if(empty($name)){
  ?><div class="menu2"><a href="/code.php"> Куски кодов</a> | Ошибка </div>
  <div class="raz"><center> Введите название кода </div></center><?
  F();
   exit;
    }
  if(empty($about)){
  ?><div class="menu2"><a href="/code.php"> Куски кодов</a> | Ошибка </div>
  <div class="raz"><center> Введите описание кода </div></center><?
  F();
   exit;
    }
  if(empty($source)){
  ?><div class="menu2"><a href="/code.php"> Куски кодов</a> | Ошибка </div>
  <div class="raz"><center> Введите код </div></center><?
  F();
   exit;
    }
   DB :: $dbs -> query('insert into `code` (`name`,`category`,`about`,`source`,`user`) values (?,?,?,?,?)', array($name,$id,$about,$source,$us['id']));
   header('location: /code.php?act=category&id='.$id);
   exit;
   }

   ?><div class="menu2"><a href="/code.php"> Куски кода</a> | Добавить код</div>
 <form class="raz" action="" method="post"> Название: </br>
  <input type="text" name="name"></br>
   Описание: </br>
  <textarea name="about"></textarea>
   </br>
  Код: </br>
  <textarea name="source"></textarea>
   </br>
   <input type="submit" value="Добавить"></form>
   <?
   break;
   case 'source':
   $id = abs(intval($_GET['id']));
   $source = DB :: $dbs -> query('select * from `code` where `id` = ?', array($id));
   $source = $source -> fetch();
   if(!isset($source['id'])){
   header('location: /code.php');
   exit;
   }
   ?><div class="menu2"><a href="/code.php"> Куски кода </a> | <?=$source['name'];?></div>
     <div class="raz"> Описание: <?=nl2br($source['about']);?></div>
   <div class="raz">Код: <?=highlight_string(htmlspecialchars_decode($source['source']));?></div>
    <div class="raz"> Добавлен: <?=$source['time'];?></div>
   <?

   ?><div class="raz"> Выложил: <?=bb('us{'.$source['user'].'}');?></div><?
   if($us['id'] == $source['user'] || $us['level'] > 2){
  ?><div class="raz"><a href="/code.php?act=edit&id=<?=$source['id'];?>"> Редактировать</a></div><?
    }
   break;

   case 'edit':
 $id = abs(intval($_GET['id']));
   $source = DB :: $dbs -> query('select * from `code` where `id` = ?', array($id));
   $source = $source -> fetch();
   if(!isset($source['id'])){
   header('location: /code.php');
   exit;
   }
   if($us['id'] != $source['user'] and $us['level'] < 3){
   header('location: /code.php');
   exit;
   }
 if(isset($_POST['name'])){
  $name = htmlspecialchars(trim($_POST['name']));
  $about = htmlspecialchars(trim($_POST['about']));
  $code = htmlspecialchars(trim($_POST['source']));
   if(empty($name)){
  ?><div class="menu2"><a href="/code.php"> Куски кодов</a> | Ошибка </div>
  <div class="raz"><center> Введите название кода </div></center><?
  F();
   exit;
    }
  if(empty($about)){
  ?><div class="menu2"><a href="/code.php"> Куски кодов</a> | Ошибка </div>
  <div class="raz"><center> Введите описание кода </div></center><?
  F();
   exit;
    }
  if(empty($code)){
  ?><div class="menu2"><a href="/code.php"> Куски кодов</a> | Ошибка </div>
  <div class="raz"><center> Введите код </div></center><?
  F();
   exit;
    }
   DB :: $dbs -> query('update `code` set `name` = ?, `about` = ?, `source` = ? where `id` = ?', array($name,$about,$code,$source['id']));
   header('location: /code.php?act=source&id='.$id);
   exit;
   }

   ?><div class="menu2"><a href="/code.php"> Куски кода</a> | Редактировать код</div>
 <form class="raz" action="" method="post"> Название: </br>
  <input type="text" name="name" value="<?=$source['name'];?>"></br>
   Описание: </br>
  <textarea name="about"><?=$source['about'];?></textarea>
   </br>
  Код: </br>
  <textarea name="source"><?=$source['source'];?></textarea>
   </br>
   <input type="submit" value="Редактировать"></form>
   <?
   break;
   case 'delCategory':
$id = abs(intval($_GET['id']));
  $cat = DB :: $dbs -> query('select `name`,`id` from `codeCat` where `id` = ?', array($id));
   $cat = $cat -> fetch(PDO :: FETCH_ASSOC);
   if(!isset($cat['id']) || $us['level'] < 4){
   header('location: /');
   exit;
   }
  ?><div class="menu2"><a href="/code.php"> Куски кода </a> |  Удаление категории </div>
   <div class="raz"> Вы действительно хотите удалить категорию <?=$cat['name'];?>?</br>
   <a href="/code.php?act=delCategory&id=<?=$id;?>&yes">  Да </a> | <a href="/code.php"> Нет </a> </div>
    <?
if(isset($_GET['yes'])){
    DB :: $dbs -> query('delete from `code` where `category` = ?', array($id));
    DB :: $dbs ->query('delete from `codeCat` where `id` = ?', array($id));
    header('location: /code.php');
    exit;
    }
    break;
   }
   F();

?>