Advertisement
fabi0

Untitled

Nov 9th, 2013
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.03 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Models;
  4.  
  5. class Category {
  6.  
  7.     private $_query;
  8.  
  9.     public function __construct() {
  10.         $this->_query = \Models\DB::getInstance();
  11.     }
  12.  
  13.     /**
  14.      * Category name is mandatory.
  15.      *
  16.      * Return category and all subcategories.
  17.      *
  18.      * @param string $category Category Name
  19.      * @param string $select Optional - select clause. Default is 'node.category_id, node.name, node.lft' .
  20.      */
  21.     public function getCategoryTree($category, $select = 'node.category_id, node.name, node.lft') {
  22.         return $this->_query->query("
  23.            SELECT $select FROM categories AS node, categories AS parent
  24.            WHERE node.lft BETWEEN parent.lft AND parent.rgt AND parent.name = '$category' AND parent.allowed = 1
  25.            ORDER BY node.lft;")->getResult();
  26.     }
  27.  
  28.     /**
  29.      * Return categories depths.
  30.      */
  31.     public function getCategoryDepth() {
  32.  
  33.         $result = $this->_query->query("
  34.            SELECT node.name, node.category_id, (COUNT(parent.name) - 1) AS depth
  35.            FROM categories AS node,
  36.            categories AS parent
  37.            WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.name != 'bbdbe444288550204c968fe7002a97a9'
  38.            GROUP BY node.name
  39.            ORDER BY node.lft;")->getResult();
  40.         foreach ($result as $key => $value) {
  41.             $return[] = (array) $value;
  42.         }
  43.         return $return;
  44.     }
  45.  
  46.     public function insertCategory($categoryName, $leftCategory) {
  47.  
  48.  
  49.         return ($leftCategory == '' ?
  50.                         $this->_query->query("
  51.                        LOCK TABLE categories WRITE;
  52.                        SELECT @myRight := rgt FROM categories WHERE name = 'bbdbe444288550204c968fe7002a97a9';
  53.                        UPDATE categories SET rgt = rgt + 2 WHERE rgt > @myRight;
  54.                        UPDATE categories SET lft = lft + 2 WHERE lft > @myRight;
  55.                        INSERT INTO categories(name, lft, rgt) VALUES('$categoryName', @myRight + 1, @myRight + 2);
  56.                        UNLOCK TABLES;") :
  57.                         $this->_query->query("
  58.                        LOCK TABLE categories WRITE;
  59.                        SELECT @myLeft := lft FROM categories
  60.                        WHERE name = '$leftCategory';
  61.                        UPDATE categories SET rgt = rgt + 2 WHERE rgt > @myLeft;
  62.                        UPDATE categories SET lft = lft + 2 WHERE lft > @myLeft;
  63.                        INSERT INTO categories(name, lft, rgt) VALUES('$categoryName', @myLeft + 1, @myLeft + 2);
  64.                        UNLOCK TABLES;")
  65.                 );
  66.     }
  67.  
  68.     public function renameCategory($id, $newName) {
  69.         $this->_query->query("UPDATE `forum`.`categories` SET `name` = '$newName' WHERE `categories`.`category_id` = $id;");
  70.         return $this;
  71.     }
  72.  
  73.     public function setPrivilege($id, $privilege) {
  74.         $this->_query->query("UPDATE `forum`.`categories` SET `allowed` = $privilege WHERE `categories`.`category_id` = $id;");
  75.         return $this;
  76.     }
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement