/** * postSave * * @param Data $data * * @return void */ protected function postSave(Data $data) { $this->post = $data; $this->topic = $topic = $this->model->getRecord('Topic'); $topic->load($data->topic_id); $this->category = $this->model->getRecord('Category'); $this->category->load($topic->category_id); if ($this->isNew) { if (!$data->primary) { $user = User::get(); $date = DateTime::create(); $topic->last_reply_user = $user->id; $topic->last_reply_post = $data->id; $topic->last_reply_date = $date->toSql(); $topic->replies++; $topic->store(); } else { $this->category->topics++; } $this->category->posts++; $this->category->store(); } // Mail $this->sendMail($topic, $data); // Add Notification Notification::addNotification('topic', $topic->id, $topic->user_id); }
/** * prepareData * * @param \Windwalker\Data\Data $data * * @return void */ protected function prepareData($data) { $paths = $data->currentCategory->path; $data->breadcrumbs = BreadcrumbHelper::getBreadcrumbs($paths); if ($data->currentCategory->id != 1) { $this->setTitle($data->currentCategory->title); } // Prepare format foreach ($data->categories as $category) { $category->last_post->user_params = new Registry($category->last_post->user_params); } foreach ($data->topics as $topic) { $topic->last_user_params = new Registry($topic->last_user_params); } $user = User::get(); $data->isWatch = Notification::getNotification('category', $data->currentCategory->id, $user->id)->notNull(); if ($data->currentCategory->id != 1) { $desc = $data->currentCategory->description; $desc = Utf8String::substr(strip_tags($desc), 0, 150); HtmlHeader::addMetadata('description', $desc, true); HtmlHeader::addOpenGraph('og:title', HtmlHeader::getPageTitle(), true); HtmlHeader::addOpenGraph('og:description', $desc, true); HtmlHeader::addOpenGraph('og:image', $data->currentCategory->image, true); } }
/** * prepareData * * @param \Windwalker\Data\Data $data * * @return void */ protected function prepareData($data) { if ($this->layout == 'default') { $paths = $this['topic']->category->path; $data->breadcrumbs = BreadcrumbHelper::getBreadcrumbs($paths); foreach ($data->posts as $post) { $post->raw_body = $post->body; $post->body = Markdown::render($post->body); } $user = User::get(); $data->isWatch = Notification::getNotification('topic', $this['topic']->id, $user->id)->notNull(); $this->setTitle($data->topic->title); } else { $this->setTitle('New Topic'); } $desc = $data->topic->title; if ($data->posts[0]) { $desc = $data->posts[0]->body; $desc = Utf8String::substr(strip_tags($desc), 0, 150); } HtmlHeader::addMetadata('description', $desc, true); HtmlHeader::addOpenGraph('og:title', HtmlHeader::getPageTitle(), true); HtmlHeader::addOpenGraph('og:description', $desc, true); HtmlHeader::getMetadata()->removeOpenGraph('og:image'); }
/** * doExecute * * @return mixed * @throws \Exception */ protected function doExecute() { $username = $this->input->getUsername('username'); $token = $this->input->getUsername('token'); $password = $this->input->getString('password'); $password2 = $this->input->getString('password2'); try { if (!trim($password)) { throw new ValidFailException(Translator::translate('windwalker.user.password.not.entered')); } if ($password != $password2) { throw new ValidFailException(Translator::translate('windwalker.user.password.not.match')); } $user = User::get(array('username' => $username)); if ($user->isNull()) { throw new ValidFailException(Translator::translate('windwalker.user.not.found')); } $passwordObject = new Password(); if (!$passwordObject->verify($token, $user->reset_token)) { throw new ValidFailException(Translator::translate('windwalker.user.invalid.token')); } $user->password = $passwordObject->create($password); $user->reset_token = ''; $user->last_reset = ''; User::save($user); } catch (ValidFailException $e) { $this->setRedirect($this->router->http('reset', array('task' => 'reset', 'username' => $username, 'token' => $token)), $e->getMessage(), Bootstrap::MSG_DANGER); return false; } $this->setRedirect($this->router->http('reset', array('task' => 'complete'))); return true; }
/** * Execute the controller. * * @return mixed Return executed result. * * @throws \LogicException * @throws \RuntimeException */ public function doExecute() { $model = new LoginModel(); $router = $this->package->getRouter(); $user = User::get(); if ($user->isNull()) { $this->setRedirect($router->http('login', array(), Router::TYPE_FULL), 'Already logout', 'success'); } $model->logout($user->username); $this->setRedirect($router->http('login', array(), Router::TYPE_FULL), 'Logout success', 'success'); return true; }
/** * onViewBeforeRender * * @param Event $event * * @return void */ public function onViewBeforeRender(Event $event) { $data = $event['data']; $data->user = $data->user ?: User::get(); $articleMapper = new ArticleMapper(); $data->articles = $data->articles ?: $articleMapper->find(['state' => 1], 'ordering'); foreach ($data->articles as $article) { $article->link = $article->url ?: Router::html('forum@article', ['id' => $article->id, 'alias' => $article->alias]); } // Template $config = Ioc::getConfig(); if ($config['natika.theme']) { $event['view']->getRenderer()->addPath(WINDWALKER_TEMPLATES . '/theme/' . $config['natika.theme'] . '/' . $event['view']->getName(), Priority::HIGH); } }
/** * prepareRecord * * @param Record $record * * @return void */ protected function prepareRecord(Record $record) { $user = User::get(); $date = DateTime::create(); if (!$record->id) { $record->version = 1; $record->rating = 0; $record->state = 1; $record->user_id = $user->id; $record->created = $date->toSql(); $record->created_by = $user->id; $this->setOrderPosition($record); } else { $record->modified = $date->toSql(); $record->modified_by = $user->id; } }
/** * confirm * * @return boolean */ protected function confirm() { $token = $this->input->get('token'); $username = $this->input->getUsername('username'); $user = User::get(array('username' => $username)); if ($user->isNull()) { $this->setRedirect($this->router->http('forgot', array('task' => 'confirm', 'token' => $token)), Translator::translate('windwalker.user.no.user.found')); return false; } // Check token $password = new Password(); if (!$password->verify($token, $user->reset_token)) { $this->setRedirect($this->router->http('forgot', array('task' => 'confirm')), Translator::translate('windwalker.user.invalid.token')); return false; } $this->setRedirect($this->router->http('reset', array('username' => $username, 'token' => $token))); return true; }
/** * prepareRecord * * @param Record $record * * @return void */ protected function prepareRecord(Record $record) { $user = User::get(); $date = DateTime::create(); // New if (!$record->id) { $record->user_id = $user->id; $record->created_by = $user->id; $record->version = 1; $record->replies = 1; $record->hits = 0; $record->favorites = 0; $record->rating = 0; $record->created = $date->toSql(); $record->state = 1; } $record->last_reply_user = $user->id; $record->last_reply_date = $date->toSql(); }
/** * prepareRecord * * @param NestedRecord|Record $record * * @return void */ protected function prepareRecord(Record $record) { $user = User::get(); $date = DateTime::create(); if (!$record->alias) { $record->alias = $record->title; } $record->alias = OutputFilter::stringURLUnicodeSlug($record->alias); if (!$record->alias) { $record->alias = OutputFilter::stringURLSafe($date->format('Y-m-d-H-i-s')); } // Created date if (!$record->created) { $record->created = $date->toSql(); } // Modified date if ($record->id) { $record->modified = $date->toSql(); } // Created user if (!$record->created_by) { $record->created_by = $user->id; } // Modified user if ($record->id) { $record->modified_by = $user->id; } // Set Ordering or Nested ordering if (!$record->id) { $record->setLocation($record->parent_id, $record::LOCATION_LAST_CHILD); } if (!$record->id) { $record->state = 1; $record->access = 1; $record->topics = 0; $record->posts = 0; } }
/** * doSave * * @param Data $data * * @return void * * @throws ValidFailException */ protected function doSave(Data $data) { $user = User::get(); if (!$user->isMember()) { throw new ValidFailException('User not login'); } Notification::removeNotification($data->type, $data->target_id, $user->id); }