Exemplo n.º 1
0
 /**
  * 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');
 }
Exemplo n.º 2
0
 /**
  * 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);
     }
 }
Exemplo n.º 3
0
 /**
  * postAuthenticate
  *
  * @param UserData                 $user
  * @param Data                     $socialMapping
  * @param Credential               $credential
  * @param \Hybrid_Provider_Adapter $adapter
  *
  * @return  void
  */
 protected function postAuthenticate(UserData $user, Data $socialMapping, Credential $credential, \Hybrid_Provider_Adapter $adapter)
 {
     unset($credential->username);
     $user->id = $socialMapping->user_id;
     $user->bind($credential);
     User::save($user);
 }
Exemplo n.º 4
0
 /**
  * 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);
 }
Exemplo n.º 5
0
 /**
  * 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;
 }
Exemplo n.º 6
0
 /**
  * logout
  *
  * @param   string  $username
  *
  * @return  boolean
  */
 public function logout($username)
 {
     $credential = new Credential(array('username' => $username));
     if (User::logout($credential)) {
         return false;
     }
     return true;
 }
Exemplo n.º 7
0
 /**
  * register
  *
  * @param array $user
  *
  * @throws \Exception
  * @return  bool
  */
 public function register($user)
 {
     $user = new Data($user);
     if ($user->password != $user->password2) {
         throw new \Exception('Password not match.');
     }
     $password = new Password();
     $user->password = $password->create($user->password);
     unset($user->password2);
     User::save($user);
     return true;
 }
Exemplo n.º 8
0
 /**
  * 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;
 }
Exemplo n.º 9
0
 /**
  * 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);
     }
 }
Exemplo n.º 10
0
 /**
  * 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;
     }
 }
Exemplo n.º 11
0
 /**
  * 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;
 }
Exemplo n.º 12
0
 /**
  * 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();
 }
Exemplo n.º 13
0
 /**
  * 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;
     }
 }
Exemplo n.º 14
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);
 }
Exemplo n.º 15
0
 /**
  * initialise
  *
  * @return  void
  */
 public function initialise()
 {
     parent::initialise();
     Translator::load('main', $this);
     User::setHandler(new UserHandler());
 }