public function testGetParentId() { $this->assertEquals(0, $this->_model->getParentId()); $this->_model->unsetData(); $this->_model->load(4); $this->assertEquals(3, $this->_model->getParentId()); }
/** * Process positions of old parent category children and new parent category children. * Get position for moved category * * @param \Magento\Catalog\Model\Category $category * @param \Magento\Catalog\Model\Category $newParent * @param null|int $afterCategoryId * @return int */ protected function _processPositions($category, $newParent, $afterCategoryId) { $table = $this->getEntityTable(); $adapter = $this->_getWriteAdapter(); $positionField = $adapter->quoteIdentifier('position'); $bind = array('position' => new \Zend_Db_Expr($positionField . ' - 1')); $where = array('parent_id = ?' => $category->getParentId(), $positionField . ' > ?' => $category->getPosition()); $adapter->update($table, $bind, $where); /** * Prepare position value */ if ($afterCategoryId) { $select = $adapter->select()->from($table, 'position')->where('entity_id = :entity_id'); $position = $adapter->fetchOne($select, array('entity_id' => $afterCategoryId)); $position += 1; } else { $position = 1; } $bind = array('position' => new \Zend_Db_Expr($positionField . ' + 1')); $where = array('parent_id = ?' => $newParent->getId(), $positionField . ' >= ?' => $position); $adapter->update($table, $bind, $where); return $position; }
/** * @param \Magento\Catalog\Model\Category $category * @param int $storeId * @return bool */ protected function isCategoryProperForGenerating($category, $storeId) { if ($category->getParentId() != \Magento\Catalog\Model\Category::TREE_ROOT_ID) { list(, $rootCategoryId) = $category->getParentIds(); return $rootCategoryId == $this->storeManager->getStore($storeId)->getRootCategoryId(); } return false; }
public function getCategoryQueryTerm(Category $category, $store = null) { $queryType = $this->helper->getCategoryQueryType($store); if ($queryType == CategoryQueryType::NAME) { return $category->getName(); } $parents = $category->getParentCategories(); $parentIds = array_intersect($category->getParentIds(), array_keys($parents)); switch ($queryType) { case CategoryQueryType::FULL_PATH: break; case CategoryQueryType::NAME_AND_PARENT_NAME: $parentId = $category->getParentId(); $parentIds = in_array($parentId, $parentIds) ? [$parentId] : []; break; case CategoryQueryType::NAME_AND_ROOT_NAME: $parentIds = array_slice($parentIds, 0, 1); break; } $names = array_map(function ($id) use($parents) { return $parents[$id]->getName(); }, $parentIds); $names[] = $category->getName(); return implode(' ', $names); }
/** * @param \Magento\Catalog\Model\Category $category * @param int $storeId * @return bool */ protected function isCategoryProperForGenerating($category, $storeId) { if (isset($this->acceptableCategories[$storeId]) && isset($this->acceptableCategories[$storeId][$category->getId()])) { return $this->acceptableCategories[$storeId][$category->getId()]; } $acceptable = false; if ($category->getParentId() != \Magento\Catalog\Model\Category::TREE_ROOT_ID) { list(, $rootCategoryId) = $category->getParentIds(); $acceptable = $rootCategoryId == $this->storeManager->getStore($storeId)->getRootCategoryId(); } if (!isset($this->acceptableCategories[$storeId])) { $this->acceptableCategories[$storeId] = []; } $this->acceptableCategories[$storeId][$category->getId()] = $acceptable; return $acceptable; }
/** * {@inheritdoc} */ public function getParentId() { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getParentId'); if (!$pluginInfo) { return parent::getParentId(); } else { return $this->___callPlugins('getParentId', func_get_args(), $pluginInfo); } }