/** * @param array|object $array * @param string $ignore * @param string $prefix * @return boolean */ public function bind( $array, $ignore = '', $prefix = null ) { $bind = parent::bind( $array, $ignore, $prefix ); if ( $bind ) { $data = array(); foreach ( $this as $k => $v ) { switch ( $k ) { case 'user_id': $k = 'userid'; break; case 'category': $k = 'catid'; break; case 'date': $k = 'time'; $v = Application::Date( $v, 'UTC' )->getTimestamp(); break; case 'published': $k = 'hold'; $v = ( $v == 1 ? 0 : 1 ); break; } $data[$k] = $v; } $bind = $this->_post->bind( $data, explode( ' ', $ignore ), false ); } return $bind; }
public function newTopic($fields=array(), $user=null) { kimport ('kunena.forum.topic'); kimport ('kunena.forum.message'); $catid = $this->getNewTopicCategory()->id; $user = KunenaUserHelper::get($user); $message = new KunenaForumMessage(); $message->catid = $catid; $message->name = $user->getName(''); $message->userid = $user->userid; $message->ip = $_SERVER ["REMOTE_ADDR"]; $message->hold = $this->review ? (int)!$this->authorise ('moderate', $user, true) : 0; $message->bind($fields, array ('name', 'email', 'subject', 'message')); $topic = new KunenaForumTopic(); $topic->category_id = $catid; $topic->hold = $message->hold; $topic->bind($fields, array ('subject','icon_id')); $message->setTopic($topic); return array($topic, $message); }
/** * @param array|bool $fields * @param mixed $user * @param array|null $safefields * * @return KunenaForumMessage */ public function newReply($fields = array(), $user = null, $safefields = null) { $user = KunenaUserHelper::get($user); $category = $this->getCategory(); $message = new KunenaForumMessage(); $message->setTopic($this); $message->parent = $this->first_post_id; $message->thread = $this->id; $message->catid = $this->category_id; $message->name = $user->getName(''); $message->userid = $user->userid; $message->subject = $this->subject; $message->ip = !empty($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : ''; if ($this->hold) { // If topic was unapproved or deleted, use the same state for the new message $message->hold = $this->hold; } else { // Otherwise message is either unapproved or published depending if the category is moderated or not $message->hold = $category->review ? (int) (!$category->authorise('moderate', $user, true)) : 0; } if ($fields === true) { $user = KunenaUserHelper::get($this->first_post_userid); $text = preg_replace('/\\[confidential\\](.*?)\\[\\/confidential\\]/su', '', $this->first_post_message); $message->message = "[quote=\"{$user->getName($this->first_post_guest_name)}\" post={$this->first_post_id}]" . $text . "[/quote]"; } else { if ($safefields) { $message->bind($safefields); } if ($fields) { $message->bind($fields, array('name', 'email', 'subject', 'message'), true); } } return $message; }
/** * @param array $fields * @param mixed $user * @param array $safefields * * @return array */ public function newTopic(array $fields = null, $user = null, array $safefields = null) { $catid = isset($safefields['category_id']) ? $safefields['category_id'] : $this->getNewTopicCategory($user)->id; $user = KunenaUserHelper::get($user); $message = new KunenaForumMessage(); $message->catid = $catid; $message->name = $user->getName(''); $message->userid = $user->userid; $message->ip = !empty($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; $message->hold = $this->review ? (int) (!$this->authorise('moderate', $user, true)) : 0; if ($safefields) { $message->bind($safefields); } if ($fields) { $message->bind($fields, array('name', 'email', 'subject', 'message'), true); } $topic = new KunenaForumTopic(); $topic->category_id = $catid; $topic->hold = KunenaForum::TOPIC_CREATION; if ($safefields) { $topic->bind($safefields); } if ($fields) { $topic->bind($fields, array('subject', 'icon_id'), true); } $message->setTopic($topic); return array($topic, $message); }