Удаление категорий вместе с подкатегориями в virtuemart

2014-12-25
5.0 / 5 (3 голоса)

Разработчики первой версии компонента явно сильно халтурили при его разработке, иначе это просто назвать нельзя :) В стандартной комплектации, например, нельзя удалить категорию, которая имеет подкатегории.  А работы там на 2 минуты, то ли лень было ребятам сделать, то ли просто забыли. Но такова задача была поставлена. Поэтому снова делюсь с вами.

 

Редактироваться будет всего-лишь 1 файл administrator\components\com_virtuemart\classes\ps_product_category.php в именно функция validate_delete

Было:

function validate_delete( $category_id, &$d) {
		global $vmLogger, $VM_LANG;
		$db = new ps_DB;
		require_once(CLASSPATH . 'imageTools.class.php' );
		if (empty( $category_id )) {
			$vmLogger->err( $VM_LANG->_('VM_PRODUCT_CATEGORY_ERR_DELETE_SELECT') );
			return False;
		}

		// Check for children
		$q  = "SELECT * FROM #__{vm}_category_xref where category_parent_id='$category_id'";
		$db->setQuery($q);   $db->query();
		if ($db->next_record()) {
			$vmLogger->err( $VM_LANG->_('VM_PRODUCT_CATEGORY_ERR_DELETE_CHILDREN') );
			return False;
		}
		$q = "SELECT category_thumb_image,category_full_image FROM #__{vm}_category WHERE category_id='$category_id'";
		$db->query( $q );
		$db->next_record();

Стало:

function validate_delete( $category_id, &$d) {
		global $vmLogger, $VM_LANG, $ps_product_category;
		$db = new ps_DB;
		require_once(CLASSPATH . 'imageTools.class.php' );

		if (empty( $category_id )) {
			$vmLogger->err( $VM_LANG->_('VM_PRODUCT_CATEGORY_ERR_DELETE_SELECT') );
			return False;
		}

		// Check for children
		$q  = "SELECT * FROM #__{vm}_category_xref where category_parent_id='$category_id'";
		$db->setQuery($q);   $db->query();
		if ($db->num_rows() > 0) {
                while ($db->next_record()) {
                  $cat_delete = array('category_id'=>$db->f("category_child_id"));
                  $ps_product_category->delete($cat_delete);
                }
		}

		$q = "SELECT category_thumb_image,category_full_image FROM #__{vm}_category WHERE category_id='$category_id'";
		$db->query( $q );
		$db->next_record();

 

Прочитано 1045 раз Последнее изменение 2015-10-17

Оставить комментарий

Все поля отмеченные (*) обязательны для заполнения