/**
  * Deletes a category by its associated id
  * 
  * @param string $id Category id
  * @return boolean
  */
 public function deleteById($id)
 {
     // Grab category's name before we remove it
     $name = Filter::escape($this->categoryMapper->fetchNameById($id));
     if ($this->categoryMapper->deleteById($id) && $this->announceMapper->deleteAllByCategoryId($id)) {
         $this->track('Category "%s" has been removed', $name);
         return true;
     } else {
         return false;
     }
 }
 /**
  * {@inheritDoc}
  */
 protected function toEntity(array $announce)
 {
     $entity = new VirtualEntity();
     $entity->setId($announce['id'], VirtualEntity::FILTER_INT)->setCategoryId($announce['category_id'], VirtualEntity::FILTER_INT)->setLangId($announce['lang_id'], VirtualEntity::FILTER_INT)->setWebPageId($announce['web_page_id'], VirtualEntity::FILTER_INT)->setCategoryName($this->categoryMapper->fetchNameById($announce['category_id']), VirtualEntity::FILTER_HTML)->setTitle($announce['title'], VirtualEntity::FILTER_HTML)->setName($announce['name'], VirtualEntity::FILTER_HTML)->setIntro($announce['intro'], VirtualEntity::FILTER_SAFE_TAGS)->setFull($announce['full'], VirtualEntity::FILTER_SAFE_TAGS)->setOrder($announce['order'], VirtualEntity::FILTER_INT)->setIcon($announce['icon'], VirtualEntity::FILTER_HTML)->setPublished($announce['published'], VirtualEntity::FILTER_BOOL)->setSeo($announce['seo'], VirtualEntity::FILTER_BOOL)->setSlug($this->webPageManager->fetchSlugByWebPageId($announce['web_page_id']), VirtualEntity::FILTER_HTML)->setKeywords($announce['keywords'], VirtualEntity::FILTER_HTML)->setMetaDescription($announce['meta_description'], VirtualEntity::FILTER_HTML)->setPermanentUrl('/module/announcement/' . $entity->getId())->setUrl($this->webPageManager->surround($entity->getSlug(), $entity->getLangId()));
     return $entity;
 }