/**
  * 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;
 }