public function execute()
 {
     $data = $this->getReqiestData();
     $comment_id = $data['comment_id'];
     unset($data['comment_id']);
     $data['datetime'] = date('Y-m-d H:i:s');
     $contact_data = $this->getContactData();
     $data = array_merge($data, $contact_data);
     $this->errors += $this->comment_model->validate($data);
     if ($this->errors) {
         return false;
     }
     // taking into account possibility of stack
     $photo_id = $data['photo_id'];
     $photo_model = new photosPhotoModel();
     $parent_id = $photo_model->getStackParentId($photo_id);
     if ($parent_id) {
         // if it is stack work with parent
         $photo_id = $parent_id;
     }
     $data['photo_id'] = $photo_id;
     if (!isset($data['ip']) && ($ip = waRequest::getIp())) {
         $ip = ip2long($ip);
         if ($ip > 2147483647) {
             $ip -= 4294967296;
         }
         $data['ip'] = $ip;
     }
     $id = $this->comment_model->add($data, $comment_id);
     $this->added_comment = $this->comment_model->getById($id);
     if (preg_match('/(\\d+)/', $data['photo_comments_count_text'], $m)) {
         $count = $m[1] + 1;
         $this->response['photo_comments_count_text'] = _wp('%d comment', '%d comments', $count);
     }
     $comment = $data;
     $comment['id'] = $id;
     $comment['author'] = $this->getResponseAuthorData();
     $comment['status'] = photosCommentModel::STATUS_PUBLISHED;
     $photo_id = $comment['photo_id'];
     $this->view->assign('wrap_li', true);
     $this->view->assign('comment', $comment);
     $this->view->assign('contact_rights', wa()->getUser()->getRights('contacts', 'backend'));
     $this->response['html'] = $this->view->fetch($this->template);
 }