Здравствуйте, сделал удаление методом тыка по другим примерам, категорию удаляет и подкатегории все ок, добавил удаление фото у категории когда удаляешь категорию, так он удаляет все фото категорий что в разделе upload/cat
подскажите что не так сделал? нужно чтобы удалял категорию данной категории когда я ее удаляю, ну и если в ней есть подкатегории и фото, чтобы тоже удалял.
public function action_delete()
{
$id = (int)$this->request->param('id');
$cat = ORM::factory('category', $id);
if (!$cat->loaded())
{
$this->request->redirect('admin/category');
}
$cat->delete();
//delete sub cats
DB::delete('categories')
->where('parent_id', '=', $id)
->execute();
//delete not existed parent categories
$haveNotExisted = true;
while ($haveNotExisted)
{
$haveNotExisted = false;
$cats = ORM::factory('category')
->find_all();
foreach ($cats as $cat)
{
if ($cat->parent_id != 0)
{
$parent = ORM::factory('category', $cat->parent_id);
if (empty($parent->id))
{
$cat->delete();
$haveNotExisted = true;
}
}
}
}
$directory = DOCROOT . implode(DIRECTORY_SEPARATOR, array('media', 'uploads', 'cat'));
$existed = ORM::factory('category')
->find_all()
->as_array('image_id', 'image_id');
foreach (scandir($directory) as $image)
{
if ($image != '.' && $image != '..' && $image != 'noimage.jpg' && !in_array($image, $existed))
{
@unlink('media/uploads/cat/' . $image);
@unlink('media/uploads/cat/small/small_' . $image);
@unlink('media/uploads/cat/small/admin/admin_' . $image);
}
}
$this->request->redirect('admin/category');
}