Beispiel #1
0
 /**
  * Update quick flags for a category
  *
  * @param \XLite\Model\Category $entity Category
  * @param array                 $flags  Flags to set
  *
  * @return void
  */
 protected function updateQuickFlags(\XLite\Model\Category $entity, array $flags)
 {
     $quickFlags = $entity->getQuickFlags();
     if (!isset($quickFlags)) {
         $quickFlags = new \XLite\Model\Category\QuickFlags();
         $quickFlags->setCategory($entity);
         $entity->setQuickFlags($quickFlags);
     }
     foreach ($flags as $name => $delta) {
         $name = \Includes\Utils\Converter::convertToPascalCase($name);
         $quickFlags->{'set' . $name}($quickFlags->{'get' . $name}() + $delta);
     }
 }
Beispiel #2
0
 /**
  * Correct categories structure: lpos, rpos and depth fields
  *
  * @return void
  */
 public function correctCategoriesStructure()
 {
     $all = $this->defineFindAllSortedQueryBuilder()->getResult();
     if (!empty($all)) {
         $allCategories = array();
         $byKey = array();
         foreach ($all as $category) {
             $byKey[intval($category->getParentId())][] = array('category_id' => $category->getCategoryId(), 'parent_id' => $category->getParentId(), 'lpos' => 0, 'rpos' => 0, 'depth' => 0, 'pos' => $category->getPos(), 'enabled' => $category->getEnabled(), 'subcats' => 0, 'subcats_enabled' => 0, 'total_subcats' => 0);
         }
         ksort($byKey);
         foreach ($byKey as $children) {
             foreach ($children as $c) {
                 $allCategories[] = $c;
             }
         }
         unset($byKey);
         $allCategories[0]['lpos'] = 1;
         $allCategories[0]['rpos'] = 2;
         $allCategories[0]['depth'] = -1;
         $this->correctCategoryData($allCategories);
         $categories = array();
         foreach ($allCategories as $c) {
             $categories[$c['category_id']] = $c;
         }
         foreach ($all as $category) {
             $catId = $category->getCategoryId();
             $data = array('lpos' => $categories[$catId]['lpos'], 'rpos' => $categories[$catId]['rpos'], 'depth' => $categories[$catId]['depth']);
             $this->update($category, $data);
             $qf = $category->getQuickFlags();
             if (!$qf) {
                 $qf = new \XLite\Model\Category\QuickFlags();
                 $qf->setCategory($category);
                 $category->setQuickFlags($qf);
             }
             $qf->setSubcategoriesCountAll($categories[$catId]['subcats']);
             $qf->setSubcategoriesCountEnabled($categories[$catId]['subcats_enabled']);
         }
     }
 }
Beispiel #3
0
 public function testHasSubcategories()
 {
     $c = new \XLite\Model\Category();
     $c->map($this->categoryData);
     $this->assertFalse($c->hasSubcategories(), 'check childs #1');
     $child = new \XLite\Model\Category();
     $c->addChildren($child);
     $child->setParent($c);
     $this->assertFalse($c->hasSubcategories(), 'check childs #2');
     $qf = new \XLite\Model\Category\QuickFlags();
     $qf->setCategory($c);
     $c->setQuickFlags($qf);
     $this->assertEquals($qf, $c->getQuickFlags(), 'test quick flags');
     $qf->setSubcategoriesCountEnabled(1);
     $qf->setSubcategoriesCountAll(2);
     $this->assertTrue($c->hasSubcategories(), 'check childs #3');
 }