public function execute() { if (!wa()->getUser()->getRights('blog', blogRightConfig::RIGHT_ADD_BLOG, true)) { throw new waAPIException('access_denied', 403); } $data = waRequest::post(); // check required param name $this->post('name', true); $data = array_merge($data, array('color' => 'b-white', 'icon' => 'blog', 'url' => blogHelper::transliterate($data['name']))); $blog_model = new blogBlogModel(); $data['sort'] = (int) $blog_model->select('MAX(`sort`)')->fetchField() + 1; $blog_id = $blog_model->insert($data); wa()->getUser()->setRight('blog', "blog.{$blog_id}", blogRightConfig::RIGHT_FULL); // return info of the new blog $_GET['id'] = $blog_id; $method = new blogBlogGetInfoMethod(); $this->response = $method->getResponse(true); }
public function validate(&$data) { $messages = array(); $no_settlement = waRequest::post('no_settlement', 0, waRequest::TYPE_INT); if ($data['status'] != blogBlogModel::STATUS_PRIVATE && !$no_settlement) { if (isset($data['id'])) { $url_validator = new blogSlugValidator(array('id' => $data['id'])); } else { $url_validator = new blogSlugValidator(); } $url_validator->setSubject(blogSlugValidator::SUBJECT_BLOG); $name_validator = new waStringValidator(array('max_length' => 255, 'required' => true), array('required' => _w('Blog name must not be empty'))); if (!$url_validator->isValid($data['url'])) { $messages['blog_url'] = current($url_validator->getErrors()); } if (!$name_validator->isValid($data['name'])) { $messages['blog_name'] = current($name_validator->getErrors()); } } else { $blog_model = new blogBlogModel(); if (!$data['id']) { $data['url'] = $blog_model->genUniqueUrl($data['name']); } else { $url = $blog_model->select('url')->where('id = i:id', array('id' => $data['id']))->fetchField('url'); $data['url'] = $url ? $url : $blog_model->genUniqueUrl($data['name']); } } return $messages; }
public function validate(&$data) { $messages = array(); $new_route_setup = waRequest::post('new_route_setup', 0, waRequest::TYPE_INT); $route_enabled = waRequest::post('route_enabled', 0, waRequest::TYPE_INT); $no_settlement = $new_route_setup && !$route_enabled; if ($data['status'] != blogBlogModel::STATUS_PRIVATE && !$no_settlement) { if (isset($data['id'])) { $url_validator = new blogSlugValidator(array('id' => $data['id'])); } else { $url_validator = new blogSlugValidator(); } $url_validator->setSubject(blogSlugValidator::SUBJECT_BLOG); $name_validator = new waStringValidator(array('max_length' => 255, 'required' => true), array('required' => _w('Blog name must not be empty'))); if (!$url_validator->isValid($data['url'])) { $messages['blog_url'] = current($url_validator->getErrors()); } if (!$name_validator->isValid($data['name'])) { $messages['blog_name'] = current($name_validator->getErrors()); } } else { $blog_model = new blogBlogModel(); if (!$data['id']) { $data['url'] = $blog_model->genUniqueUrl($data['name']); } else { $url = $blog_model->select('url')->where('id = i:id', array('id' => $data['id']))->fetchField('url'); $data['url'] = $url ? $url : $blog_model->genUniqueUrl($data['name']); } } /** * @event blog_validate * @param array[string]mixed $data * @param array['plugin']['%plugin_id%']mixed plugin data * @return array['%plugin_id%']['field']string error */ $messages['plugin'] = wa()->event('blog_validate', $data); if (empty($messages['plugin'])) { unset($messages['plugin']); } return $messages; }