/**
  * Создаёт новую категорию
  * @param $args array mixed
  * @return void
  */
 function add(array $args = array())
 {
     $category = array('system' => 0, 'parent' => 0);
     $types = array_flip(Category::getTypesArray());
     if (array_key_exists(0, $args) && array_key_exists($args[0], $types)) {
         $category['type'] = $types[$args[0]];
     } else {
         $category['type'] = Category::TYPE_WASTE;
     }
     if ($this->request->method == 'POST') {
         $errors = array();
         $category = array('name' => trim($this->request->post['name']), 'parent' => (int) $this->request->post['parent'], 'system' => (int) $this->request->post['system'], 'type' => isset($this->request->post['type']) ? $this->request->post['type'] : $category['type']);
         if (!$category['name']) {
             $errors[] = 'Не указано название!';
         }
         if (!$category['system']) {
             $errors[] = 'Не указана системная категория!';
         }
         if (!array_key_exists($category['type'], Category::getTypesArray())) {
             $errors[] = 'Некорректный тип категории!';
         }
         if (!sizeof($errors)) {
             $category['id'] = $this->model->add($category['name'], $category['parent'], $category['system'], $category['type']);
             $this->tpl->assign('result', array('text' => "Категория успешно добавлена.", 'id' => $category['id']));
         } else {
             $this->tpl->assign('error', array('text' => implode(" \n", $errors)));
         }
     }
     $this->tpl->assign('category', $category);
     $this->tpl->assign('name_page', 'category/edit');
 }