protected function exportData(Mage_Catalog_Model_Category $category, $file, $depth = 0)
 {
     $data = array('id' => $category->getId(), 'parent_id' => $category->getParentId(), 'attribute_set_id' => $category->getAttributeSetId(), 'urlPath' => $category->getUrlPath(), 'urlKey' => $category->getUrlKey(), 'path' => $category->getPath(), 'position' => $category->getPosition(), 'page_layout' => $category->getPageLayout(), 'description' => $category->getDescription(), 'display_mode' => $category->getDisplayMode(), 'is_active' => $category->getIsActive(), 'is_anchor' => $category->getIsAnchor(), 'include_in_menu' => $category->getIncludeInMenu(), 'custom_design' => $category->getCustomDesign(), 'level' => $category->getLevel(), 'name' => $category->getName(), 'metaTitle' => $category->getMetaTitle(), 'metaKeywords' => $category->getMetaKeywords(), 'metaDescription' => $category->getMetaDescription());
     echo str_repeat('  ', $depth);
     echo '* ' . $category->getName() . sprintf(' (%s products)', $category->getProductCount()) . PHP_EOL;
     fputcsv($file, $data);
     if ($category->hasChildren()) {
         $children = Mage::getModel('catalog/category')->getCategories($category->getId());
         foreach ($children as $child) {
             $child = Mage::getModel('catalog/category')->load($child->getId());
             $this->exportData($child, $file, $depth + 1);
         }
     }
 }
Exemple #2
0
 /**
  * Process positions of old parent category children and new parent category children.
  * Get position for moved category
  *
  * @param Mage_Catalog_Model_Category $category
  * @param Mage_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));
         $bind = array('position' => new Zend_Db_Expr($positionField . ' + 1'));
         $where = array('parent_id = ?' => $newParent->getId(), $positionField . ' > ?' => $position);
         $adapter->update($table, $bind, $where);
     } elseif ($afterCategoryId !== null) {
         $position = 0;
         $bind = array('position' => new Zend_Db_Expr($positionField . ' + 1'));
         $where = array('parent_id = ?' => $newParent->getId(), $positionField . ' > ?' => $position);
         $adapter->update($table, $bind, $where);
     } else {
         $select = $adapter->select()->from($table, array('position' => new Zend_Db_Expr('MIN(' . $positionField . ')')))->where('parent_id = :parent_id');
         $position = $adapter->fetchOne($select, array('parent_id' => $newParent->getId()));
     }
     $position += 1;
     return $position;
 }
 /**
  * Process positions of old parent category children and new parent category children.
  * Get position for moved category
  *
  * @param   Mage_Catalog_Model_Category $category
  * @param   Mage_Catalog_Model_Category $newParent
  * @param   null|int $afterCategoryId
  * @return  int
  */
 protected function _processPositions($category, $newParent, $afterCategoryId)
 {
     $table = $this->getEntityTable();
     $adapter = $this->_getWriteAdapter();
     $sql = "UPDATE {$table} SET `position`=`position`-1 WHERE " . $adapter->quoteInto('parent_id=? AND ', $category->getParentId()) . $adapter->quoteInto('position>?', $category->getPosition());
     $adapter->query($sql);
     /**
      * Prepare position value
      */
     if ($afterCategoryId) {
         $sql = "SELECT `position` FROM {$table} WHERE entity_id=?";
         $position = $adapter->fetchOne($adapter->quoteInto($sql, $afterCategoryId));
         $sql = "UPDATE {$table} SET `position`=`position`+1 WHERE " . $adapter->quoteInto('parent_id=? AND ', $newParent->getId()) . $adapter->quoteInto('position>?', $position);
         $adapter->query($sql);
     } elseif ($afterCategoryId !== null) {
         $position = 0;
         $sql = "UPDATE {$table} SET `position`=`position`+1 WHERE " . $adapter->quoteInto('parent_id=? AND ', $newParent->getId()) . $adapter->quoteInto('position>?', $position);
         $adapter->query($sql);
     } else {
         $sql = "SELECT MIN(`position`) FROM {$table} WHERE parent_id=?";
         $position = $adapter->fetchOne($adapter->quoteInto($sql, $newParent->getId()));
     }
     $position += 1;
     return $position;
 }
Exemple #4
0
 /**
  * Fill the Field order_index in the given array
  * 3rd param $isRoot bool default false
  *
  * @param Mage_Catalog_Model_Category $category
  */
 protected function _setOrderIndex($category)
 {
     $this->_defaultRow["order_index"] = $this->getMaximumPosition() - $category->getPosition();
 }