diff --git a/app/code/community/Mage/Catalog/Helper/Category/Url/Rewrite.php b/app/code/community/Mage/Catalog/Helper/Category/Url/Rewrite.php new file mode 100644 index 0000000..ade9e9d --- /dev/null +++ b/app/code/community/Mage/Catalog/Helper/Category/Url/Rewrite.php @@ -0,0 +1,123 @@ + + */ +class Mage_Catalog_Helper_Category_Url_Rewrite + implements Mage_Catalog_Helper_Category_Url_Rewrite_Interface +{ + /** + * Adapter instance + * + * @var Varien_Db_Adapter_Interface + */ + protected $_connection; + + /** + * Resource instance + * + * @var Mage_Core_Model_Resource + */ + protected $_resource; + + /** + * Initialize resource and connection instances + * + * @param array $args + */ + public function __construct(array $args = array()) + { + $this->_resource = Mage::getSingleton('core/resource'); + $this->_connection = !empty($args['connection']) ? $args['connection'] : $this->_resource + ->getConnection(Mage_Core_Model_Resource::DEFAULT_READ_RESOURCE); + } + + /** + * Join url rewrite table to eav collection + * + * @param Mage_Eav_Model_Entity_Collection_Abstract $collection + * @param int $storeId + * @return Mage_Catalog_Helper_Category_Url_Rewrite + */ + public function joinTableToEavCollection(Mage_Eav_Model_Entity_Collection_Abstract $collection, $storeId) + { + $collection->joinTable( + 'core/url_rewrite', + 'category_id=entity_id', + array('request_path'), + "{{table}}.is_system=1 AND " . + "{{table}}.store_id='{$storeId}' AND " . + "{{table}}.category_id IS NOT NULL AND " . + "{{table}}.product_id IS NULL", + 'left' + ); + + return $this; + } + + /** + * Join url rewrite table to collection + * + * @param Mage_Catalog_Model_Resource_Category_Flat_Collection $collection + * @param int $storeId + * @return Mage_Catalog_Helper_Category_Url_Rewrite|Mage_Catalog_Helper_Category_Url_Rewrite_Interface + */ + public function joinTableToCollection(Mage_Catalog_Model_Resource_Category_Flat_Collection $collection, $storeId) + { + $collection->getSelect()->joinLeft( + array('url_rewrite' => $collection->getTable('core/url_rewrite')), + 'url_rewrite.category_id = main_table.entity_id AND url_rewrite.is_system = 1 '. + ' AND ' . $collection->getConnection()->quoteInto('url_rewrite.store_id = ?', $storeId). + ' AND ' . $collection->getConnection()->quoteInto('url_rewrite.id_path LIKE ?', 'category/%'), + array('request_path') + ); + return $this; + } + + /** + * Join url rewrite to select + * + * @param Varien_Db_Select $select + * @param int $storeId + * @return Mage_Catalog_Helper_Category_Url_Rewrite + */ + public function joinTableToSelect(Varien_Db_Select $select, $storeId) + { + $select->joinLeft( + array('url_rewrite' => $this->_resource->getTableName('core/url_rewrite')), + 'url_rewrite.category_id=main_table.entity_id AND url_rewrite.is_system=1 AND ' . + $this->_connection->quoteInto('url_rewrite.store_id = ? AND ', + (int)$storeId) . + $this->_connection->prepareSqlCondition('url_rewrite.id_path', array('like' => 'category/%')), + array('request_path' => 'url_rewrite.request_path')); + return $this; + } +} diff --git a/composer.json b/composer.json index 59450fe..5d465c2 100755 --- a/composer.json +++ b/composer.json @@ -21,6 +21,10 @@ "app/code/community/Webbhuset/Bugfix/", "app/code/community/Webbhuset/Bugfix/" ], + [ + "app/code/community/Mage/Catalog/Helper/Category/Url/Rewrite.php", + "app/code/community/Mage/Catalog/Helper/Category/Url/Rewrite.php" + ], [ "app/code/community/Mage/Adminhtml/Block/Media/Uploader.php", "app/code/community/Mage/Adminhtml/Block/Media/Uploader.php"