public function execute()
 {
     // only allowed to global admin
     if (!wa()->getUser()->getRights('webasyst', 'backend')) {
         throw new waRightsException(_w('Access denied'));
     }
     $cm = new waContactCategoryModel();
     $id = waRequest::post('id');
     $name = waRequest::post('name', 'string');
     if (!$id) {
         if (!$name && $name !== '0') {
             throw new waException('No id and no name given.');
         }
         $id = $cm->add($name);
         $this->logAction('category_add', $id);
     } else {
         if ($name || $name === '0') {
             $cm->updateById($id, array('name' => $name));
         }
     }
     $this->response['id'] = $id;
 }