/**
  * Get a list of categories
  *
  * @param Request $request
  * @param string $params
  * @return void
  */
 protected static function get($request, $params)
 {
     try {
         $categories = Category::query($request->get('queryParams'), $request->include);
     } catch (OutOfBoundsException $e) {
         $categories = Category::findAll($request->include);
     }
     static::response($categories, 200);
 }
 public function testRebuildRecomputesDepth()
 {
     $this->assertTrue(Category::isValidNestedSet());
     Category::query()->update(array('lft' => null, 'rgt' => null, 'depth' => 0));
     $this->assertFalse(Category::isValidNestedSet());
     Category::rebuild();
     $expected = array(0, 1, 1, 2, 1, 0);
     $this->assertEquals($expected, Category::all()->map(function ($n) {
         return $n->getDepth();
     })->all());
 }
 public function testChildrenRelationObeysDefaultOrdering()
 {
     $children = $this->categories('Root 1')->children()->get()->all();
     $expected = array($this->categories('Child 1'), $this->categories('Child 2'), $this->categories('Child 3'));
     $this->assertEquals($expected, $children);
     // Swap 2 nodes & re-test
     Category::query()->where('id', '=', 2)->update(array('lft' => 8, 'rgt' => 9));
     Category::query()->where('id', '=', 5)->update(array('lft' => 2, 'rgt' => 3));
     $children = $this->categories('Root 1')->children()->get()->all();
     $expected = array($this->categories('Child 3'), $this->categories('Child 2'), $this->categories('Child 1'));
     $this->assertEquals($expected, $children);
 }
 public function _navigation($view)
 {
     $departments = array();
     if ($deps = Department::query()->where([['`active`', '=', 1]])->order_by('`order`')->get()) {
         while ($row = $deps->fetch_assoc()) {
             $department = new Department($row);
             if ($cats = Category::query()->where([['`active`', '=', 1], ['`id_department`', '=', $department->id]])->order_by('`order`')->get()) {
                 $categories = array();
                 while ($other_row = $cats->fetch_assoc()) {
                     $category = new Category($other_row);
                     array_push($categories, $category);
                 }
                 $department->categories = $categories;
             }
             array_push($departments, $department);
         }
     }
     $this->render('views/_shared/' . $view, ['departments' => $departments]);
 }
 public function deleteNews($minititolo)
 {
     return parent::query("DELETE FROM {$this->prefix}news WHERE minititolo='{$minititolo}'") ? true : false;
 }
 public function testToHierarchyNestsCorrectly()
 {
     // Prune all categories
     Category::query()->delete();
     // Build a sample tree structure:
     //
     //   - A
     //     |- A.1
     //     |- A.2
     //   - B
     //     |- B.1
     //     |- B.2
     //         |- B.2.1
     //         |- B.2.2
     //           |- B.2.2.1
     //         |- B.2.3
     //     |- B.3
     //   - C
     //     |- C.1
     //     |- C.2
     //   - D
     //
     $a = Category::create(array('name' => 'A'));
     $b = Category::create(array('name' => 'B'));
     $c = Category::create(array('name' => 'C'));
     $d = Category::create(array('name' => 'D'));
     $ch = Category::create(array('name' => 'A.1'));
     $ch->makeChildOf($a);
     $ch = Category::create(array('name' => 'A.2'));
     $ch->makeChildOf($a);
     $ch = Category::create(array('name' => 'B.1'));
     $ch->makeChildOf($b);
     $ch = Category::create(array('name' => 'B.2'));
     $ch->makeChildOf($b);
     $ch2 = Category::create(array('name' => 'B.2.1'));
     $ch2->makeChildOf($ch);
     $ch2 = Category::create(array('name' => 'B.2.2'));
     $ch2->makeChildOf($ch);
     $ch3 = Category::create(array('name' => 'B.2.2.1'));
     $ch3->makeChildOf($ch2);
     $ch2 = Category::create(array('name' => 'B.2.3'));
     $ch2->makeChildOf($ch);
     $ch = Category::create(array('name' => 'B.3'));
     $ch->makeChildOf($b);
     $ch = Category::create(array('name' => 'C.1'));
     $ch->makeChildOf($c);
     $ch = Category::create(array('name' => 'C.2'));
     $ch->makeChildOf($c);
     $this->assertTrue(Category::isValidNestedSet());
     // Build expectations (expected trees/subtrees)
     $expectedWholeTree = array('A' => array('A.1' => null, 'A.2' => null), 'B' => array('B.1' => null, 'B.2' => array('B.2.1' => null, 'B.2.2' => array('B.2.2.1' => null), 'B.2.3' => null), 'B.3' => null), 'C' => array('C.1' => null, 'C.2' => null), 'D' => null);
     $expectedSubtreeA = array('A' => array('A.1' => null, 'A.2' => null));
     $expectedSubtreeB = array('B' => array('B.1' => null, 'B.2' => array('B.2.1' => null, 'B.2.2' => array('B.2.2.1' => null), 'B.2.3' => null), 'B.3' => null));
     $expectedSubtreeC = array('C.1' => null, 'C.2' => null);
     $expectedSubtreeD = array('D' => null);
     // Perform assertions
     $wholeTree = hmap(Category::all()->toHierarchy()->toArray());
     $this->assertArraysAreEqual($expectedWholeTree, $wholeTree);
     $subtreeA = hmap($this->categories('A')->getDescendantsAndSelf()->toHierarchy()->toArray());
     $this->assertArraysAreEqual($expectedSubtreeA, $subtreeA);
     $subtreeB = hmap($this->categories('B')->getDescendantsAndSelf()->toHierarchy()->toArray());
     $this->assertArraysAreEqual($expectedSubtreeB, $subtreeB);
     $subtreeC = hmap($this->categories('C')->getDescendants()->toHierarchy()->toArray());
     $this->assertArraysAreEqual($expectedSubtreeC, $subtreeC);
     $subtreeD = hmap($this->categories('D')->getDescendantsAndSelf()->toHierarchy()->toArray());
     $this->assertArraysAreEqual($expectedSubtreeD, $subtreeD);
     $this->assertTrue($this->categories('D')->getDescendants()->toHierarchy()->isEmpty());
 }
 public function testTreeIsValidWithMissingMiddleNode()
 {
     $this->assertTrue(Category::isValidNestedSet());
     Category::query()->delete($this->categories('Child 2')->getKey());
     $this->assertTrue(Category::isValidNestedSet());
 }