public function categorizeAction()
 {
     $feedDAO = new FreshRSS_FeedDAO();
     $catDAO = new FreshRSS_CategoryDAO();
     $defaultCategory = $catDAO->getDefault();
     $defaultId = $defaultCategory->id();
     if (Minz_Request::isPost()) {
         $cats = Minz_Request::param('categories', array());
         $ids = Minz_Request::param('ids', array());
         $newCat = trim(Minz_Request::param('new_category', ''));
         foreach ($cats as $key => $name) {
             if (strlen($name) > 0) {
                 $cat = new FreshRSS_Category($name);
                 $values = array('name' => $cat->name());
                 $catDAO->updateCategory($ids[$key], $values);
             } elseif ($ids[$key] != $defaultId) {
                 $feedDAO->changeCategory($ids[$key], $defaultId);
                 $catDAO->deleteCategory($ids[$key]);
             }
         }
         if ($newCat != '') {
             $cat = new FreshRSS_Category($newCat);
             $values = array('id' => $cat->id(), 'name' => $cat->name());
             if ($catDAO->searchByName($newCat) == false) {
                 $catDAO->addCategory($values);
             }
         }
         invalidateHttpCache();
         $notif = array('type' => 'good', 'content' => Minz_Translate::t('categories_updated'));
         Minz_Session::_param('notification', $notif);
         Minz_Request::forward(array('c' => 'configure', 'a' => 'categorize'), true);
     }
     $this->view->categories = $catDAO->listCategories(false);
     $this->view->defaultCategory = $catDAO->getDefault();
     $this->view->feeds = $feedDAO->listFeeds();
     $this->view->flux = false;
     Minz_View::prependTitle(Minz_Translate::t('categories_management') . ' · ');
 }
 /**
  * This action deletes a category.
  * Feeds in the given category are moved in the default category.
  * Related user queries are deleted too.
  *
  * Request parameter is:
  *   - id (of a category)
  */
 public function deleteAction()
 {
     $feedDAO = FreshRSS_Factory::createFeedDao();
     $catDAO = new FreshRSS_CategoryDAO();
     $default_category = $catDAO->getDefault();
     $url_redirect = array('c' => 'subscription', 'a' => 'index');
     if (Minz_Request::isPost()) {
         invalidateHttpCache();
         $id = Minz_Request::param('id');
         if (!$id) {
             Minz_Request::bad(_t('feedback.sub.category.no_id'), $url_redirect);
         }
         if ($id === $default_category->id()) {
             Minz_Request::bad(_t('feedback.sub.category.not_delete_default'), $url_redirect);
         }
         if ($feedDAO->changeCategory($id, $default_category->id()) === false) {
             Minz_Request::bad(_t('feedback.sub.category.error'), $url_redirect);
         }
         if ($catDAO->deleteCategory($id) === false) {
             Minz_Request::bad(_t('feedback.sub.category.error'), $url_redirect);
         }
         // Remove related queries.
         FreshRSS_Context::$user_conf->queries = remove_query_by_get('c_' . $id, FreshRSS_Context::$user_conf->queries);
         FreshRSS_Context::$user_conf->save();
         Minz_Request::good(_t('feedback.sub.category.deleted'), $url_redirect);
     }
     Minz_Request::forward($url_redirect, true);
 }