/** * Delete a category * * @param array $categoryInfo * integer id * string name * string language * @throws \MiniPhotoGallery\Exception\MiniPhotoGalleryException * @return boolean|string */ public function deleteCategory(array $categoryInfo) { try { $this->adapter->getDriver()->getConnection()->beginTransaction(); // get all images $select = $this->select(); $select->from('miniphotogallery_image')->columns(['image'])->where(['category_id' => $categoryInfo['id']]); $statement = $this->prepareStatementForSqlObject($select); $resultSet = new ResultSet(); $resultSet->initialize($statement->execute()); // delete assigned images foreach ($resultSet as $image) { // delete an image if (true !== ($imageDeleteResult = $this->deleteMiniPhotoGalleryImage($image['image']))) { throw new MiniPhotoGalleryException('Image deleting failed'); } } $delete = $this->delete()->from('miniphotogallery_category')->where(['id' => $categoryInfo['id']]); $statement = $this->prepareStatementForSqlObject($delete); $result = $statement->execute(); $this->adapter->getDriver()->getConnection()->commit(); } catch (Exception $e) { $this->adapter->getDriver()->getConnection()->rollback(); ApplicationErrorLogger::log($e); return $e->getMessage(); } $result = $result->count() ? true : false; // fire the delete category event if ($result) { MiniPhotoGalleryEvent::fireDeleteCategoryEvent($categoryInfo['id']); } return $result; }