private function format($topics) { $_topics = array(); $i = 0; foreach ($topics as $topic) { $message = \CODOF\Format::message($topic['message']); $_topics[$i] = array("cat_alias" => $topic['cat_alias'], "cat_img" => $topic['cat_img'], "id" => $topic['id'], "avatar" => \CODOF\Util::get_avatar_path($topic['avatar'], $topic['id']), "name" => $topic['name'], "post_created" => \CODOF\Time::get_pretty_time($topic['post_created']), "topic_id" => $topic['topic_id'], "post_id" => $topic['post_id'], "safe_title" => \CODOF\Filter::URL_safe($topic['title']), "title" => \CODOF\Util::mid_cut($topic['title'], 200), "no_replies" => \CODOF\Util::abbrev_no($topic['no_posts'] - 1, 1), "no_views" => \CODOF\Util::abbrev_no($topic['no_views'], 1), "last_post_uid" => $topic['last_post_uid'], "last_post_name" => $topic['last_post_name'], "last_post_time" => \CODOF\Time::get_pretty_time($topic['last_post_time'] != $topic['topic_created'] ? $topic['last_post_time'] : NULL)); $excerpt = \CODOF\Format::excerpt($message, $topic['topic_id'], $_topics[$i]["safe_title"]); $_topics[$i]["message"] = $excerpt['message']; $_topics[$i]["overflow"] = $excerpt['overflow']; $_topics[$i]["status"] = $topic['topic_status']; $_topics[$i]["what"] = 'is_topic'; $i++; } return $_topics; }
private function gen_posts_arr($posts) { $_posts = array(); $i = 0; $topics_set = array(); foreach ($posts as $post) { if (isset($topics_set[$post['topic_id']])) { $_posts[$topics_set[$post['topic_id']]]['contents'][] = array("post_id" => $post['post_id'], "message" => \CODOF\Format::message($post['message']), "post_created" => \CODOF\Time::get_pretty_time($post['post_created'])); //$topics_set[$post['topic_id']]++; continue; } $_posts[$i] = array("id" => $post['id'], "avatar" => \CODOF\Util::get_avatar_path($post['avatar'], $post['id']), "name" => $post['name'], "no_replies" => \CODOF\Util::abbrev_no($post['no_posts'] - 1, 1), "no_views" => \CODOF\Util::abbrev_no($post['no_views'], 1), "topic_created" => \CODOF\Time::get_pretty_time($post['topic_created']), "cat_alias" => $post['cat_alias'], "cat_img" => $post['cat_img'], "contents" => array(array("post_id" => $post['post_id'], "message" => \CODOF\Format::message($post['message']), "post_created" => \CODOF\Time::get_pretty_time($post['post_created']))), "topic_id" => $post['topic_id'], "safe_title" => \CODOF\Filter::URL_safe($post['title']), "title" => html_entity_decode(\CODOF\Util::mid_cut($post['title'], 200), ENT_NOQUOTES, "UTF-8")); $topics_set[$post['topic_id']] = $i; $i++; } return $_posts; }
public function ins_posts($post_info, $offset = 0) { $posts = array(); $i = 0; //$defs = array(); $html = new \Ext\Html(); //imessage -> pure text MD or BBCode can be used //omessage -> HTML foreach ($post_info as $post) { //$posts[$i] = $this->set_value($post, $defs); $posts[$i] = $post; $posts[$i]["post_id"] += $offset; if (isset($post['imessage']) && isset($post['omessage'])) { //everything is perfect } else { $posts[$i]["imessage"] = Format::br2nl(Format::imessage($post['message'])); $posts[$i]["omessage"] = $html->filter(Format::parseBBCode($post['message']), false, true); } if (method_exists($this->driver, 'modify_posts')) { $posts[$i] = $this->driver->modify_posts($posts[$i]); } $i++; } // var_dump($cats); $attrs = array("post_id", "topic_id", "cat_id", "uid", "imessage", "omessage", "post_created"); $qry = $this->prepare_ins_qry($posts, $attrs, "codo_posts"); //$this->query .= $qry; }
public function create() { //hacking attempt if ($_POST['end_of_line'] != "") { exit; } if (isset($_POST['title']) && isset($_POST['cat']) && isset($_POST['imesg']) && isset($_POST['omesg'])) { $catid = (int) $_POST['cat']; $category = new \CODOF\Forum\Category($this->db); if (!$category->exists($catid) || !$category->canCreateTopicIn($catid)) { exit(_t("No such category exists!")); } $post = new \CODOF\Forum\Post($this->db); $topic = new \CODOF\Forum\Topic($this->db); $notifier = new \CODOF\Forum\Notification\Notifier(); $subscriber = new \CODOF\Forum\Notification\Subscriber(); $title = \CODOF\Format::title($_POST['title']); $filter = new \CODOF\SpamFilter(); $needsModeration = false; $sticky = $_POST['sticky'] === "true" ? 'yes' : 'no'; $frontpage = $_POST['frontpage'] === "true" ? 'yes' : 'no'; if ($filter->isSpam($_POST['imesg'])) { $needsModeration = true; } $user = \CODOF\User\User::get(); if ($sticky == 'yes' && $user->can('make sticky')) { if ($frontpage == 'yes') { $tid = $topic->ins_topic($catid, $title, $needsModeration, \CODOF\Forum\Forum::STICKY); } else { $tid = $topic->ins_topic($catid, $title, $needsModeration, \CODOF\Forum\Forum::STICKY_ONLY_CATEGORY); } } else { $tid = $topic->ins_topic($catid, $title, $needsModeration, \CODOF\Forum\Forum::APPROVED); } $pid = $post->ins_post($catid, $tid, $_POST['imesg'], $_POST['omesg']); $topic->link_topic_post($pid, $tid); //get any @mentions from the topic post $mentions = $subscriber->getMentions($_POST['imesg']); //get userids from mentions that actually exists in the database $ids = $subscriber->getIdsThatExisits($mentions); //subscribe self to topic as a Subscriber::NOTIFIED $subscriber->toTopic($catid, $tid, \CODOF\Forum\Notification\Subscriber::$NOTIFIED); //if post was inserted successfully if ($pid) { $topicData = array("label" => 'New topic', "cid" => $catid, "tid" => $tid, "tuid" => $user->id, "pid" => $pid, "mentions" => $ids, "message" => \CODOF\Util::start_cut(\CODOF\Format::imessage($_POST['imesg']), 120), "notification" => "%actor% created <b>%title%</b>", "bindings" => array("title" => \CODOF\Util::start_cut($title, 100))); $notifier->queueNotify('new_topic', $topicData); //$notifier->dequeueNotify(); \CODOF\Hook::call('after_topic_insert', $topicData); } //insert tags if any present in the topic if (isset($_POST['tags']) && $user->can('add tags')) { //the method does the filtering $topic->insertTags($tid, $_POST['tags']); } echo json_encode(array('tid' => $tid)); } }
/** private functions --------------------------------------------------------- */ public function gen_posts_arr($posts, $search = false) { $_posts = array(); $user = \CODOF\User\User::get(); $uid = $user->id; $i = 0; foreach ($posts as $post) { $message = \CODOF\Format::message($post['message']); if ($search) { $message = $search->get_matching_str($message); } $_posts[$i] = array("id" => $post['id'], "avatar" => \CODOF\Util::get_avatar_path($post['avatar'], $post['id']), "name" => $post['name'], "post_created" => \CODOF\Time::get_pretty_time($post['post_created']), "post_modified" => \CODOF\Time::get_pretty_time($post['post_modified']), "post_id" => $post['post_id'], "message" => $message, "imessage" => $post['imessage'], "reputation" => $post['reputation'], "role" => \CODOF\User\User::getRoleName($post['rid']), "no_posts" => \CODOF\Util::abbrev_no($post['no_posts'], 1), "signature" => $post['signature']); $_posts[$i]['tid'] = $this->tid; $_posts[$i]['page'] = $this->from + 1; $_posts[$i]['safe_title'] = $this->safe_title; if ($this->topic_post_id == $post['post_id']) { //is a topic $_posts[$i]['is_topic'] = true; if ($post['id'] == $uid) { //this topic belongs to current user $_posts[$i]['can_edit_topic'] = $user->can(array('edit my topics', 'edit all topics'), $this->cat_id); $_posts[$i]['can_delete_topic'] = $user->can(array('delete my topics', 'delete all topics'), $this->cat_id); } else { $_posts[$i]['can_edit_topic'] = $user->can('edit all topics', $this->cat_id); $_posts[$i]['can_delete_topic'] = $user->can('delete all topics', $this->cat_id); } $_posts[$i]['can_manage_topic'] = $_posts[$i]['can_edit_topic'] || $_posts[$i]['can_delete_topic']; } else { $_posts[$i]['is_topic'] = false; if ($post['id'] == $uid) { //this topic belongs to current user $_posts[$i]['can_edit_post'] = $user->can(array('edit my posts', 'edit all posts'), $this->cat_id); $_posts[$i]['can_delete_post'] = $user->can(array('delete my posts', 'delete all posts'), $this->cat_id); } else { $_posts[$i]['can_edit_post'] = $user->can('edit all posts', $this->cat_id); $_posts[$i]['can_delete_post'] = $user->can('delete all posts', $this->cat_id); } $_posts[$i]['can_manage_post'] = $_posts[$i]['can_edit_post'] || $_posts[$i]['can_delete_post']; } $_posts[$i]['can_see_history'] = $user->can('see history', $this->cat_id); if ($this->tuid == $uid) { //if my topic $_posts[$i]['can_reply'] = true; //i can reply to my own topic } else { $_posts[$i]['can_reply'] = $user->can('reply to all topics', $this->cat_id, $this->tid); } if ($search) { $_posts[$i]['in_search'] = true; } $i++; } return $_posts; }
public function gen_topic_arr($topics, $cid) { $_topics = array(); $user = \CODOF\User\User::get(); $uid = $user->id; $i = 0; foreach ($topics as $topic) { $message = \CODOF\Format::message($topic['message']); $_topics[$i] = array("id" => $topic['id'], "avatar" => \CODOF\Util::get_avatar_path($topic['avatar'], $topic['id']), "name" => $topic['name'], "post_created" => \CODOF\Time::get_pretty_time($topic['post_created']), "topic_created" => $topic['topic_created'], "topic_id" => $topic['topic_id'], "post_id" => $topic['post_id'], "safe_title" => \CODOF\Filter::URL_safe(html_entity_decode($topic['title'])), "title" => $topic['title'], "no_replies" => \CODOF\Util::abbrev_no($topic['no_posts'] - 1, 1), "no_views" => \CODOF\Util::abbrev_no($topic['no_views'], 1), "last_post_name" => $topic['lname'], "last_post_uid" => $topic['luid'], "sticky" => Forum::isSticky($topic['topic_status']), "last_post_id" => $topic['last_post_id'], "last_post_time" => \CODOF\Time::get_pretty_time($topic['lpost_time'] != $topic['topic_created'] ? $topic['lpost_time'] : NULL)); $excerpt = \CODOF\Format::excerpt($message, $topic['topic_id'], $_topics[$i]["safe_title"]); $_topics[$i]["message"] = $excerpt['message']; $_topics[$i]["overflow"] = $excerpt['overflow']; if ($topic['uid'] == $uid) { //this topic belongs to current user $_topics[$i]['can_edit_topic'] = $user->can(array('edit my topics', 'edit all topics'), $cid); $_topics[$i]['can_delete_topic'] = $user->can(array('delete my topics', 'delete all topics'), $cid); } else { $_topics[$i]['can_edit_topic'] = $user->can('edit all topics', $cid); $_topics[$i]['can_delete_topic'] = $user->can('delete all topics', $cid); } $_topics[$i]['can_manage_topic'] = $_topics[$i]['can_edit_topic'] || $_topics[$i]['can_delete_topic']; if (isset($search)) { $_topics[$i]['in_search'] = true; } if (in_array($topic['topic_id'], $this->new_topic_ids)) { $_topics[$i]["new_topic"] = true; } if (in_array($topic['topic_id'], $this->new_replies)) { $_topics[$i]["new_replies"] = $this->new_replies[$topic['topic_id']][0]; $_topics[$i]["last_reply_id"] = $this->new_replies[$topic['topic_id']][1]; } if (isset($this->tags[$topic['topic_id']])) { $_topics[$i]["tags"] = $this->tags[$topic['topic_id']]; } $i++; } return $_topics; }
public function edit_profile($id) { $edit = \CODOF\User\User::get(); $id = (int) $id; if (!$this->can_edit_profile($id)) { $this->view = 'access_denied'; return false; } $values = array("name" => \CODOF\Filter::msg_safe($_POST['name']), "signature" => \CODOF\Format::omessage($_POST['signature'])); $success = true; if (isset($_FILES) && $_FILES['avatar']['error'] != UPLOAD_ERR_NO_FILE) { $success = false; \CODOF\File\Upload::$width = 128; \CODOF\File\Upload::$height = 128; \CODOF\File\Upload::$resizeImage = true; \CODOF\File\Upload::$resizeIconPath = DATA_PATH . PROFILE_ICON_PATH; $result = \CODOF\File\Upload::do_upload($_FILES['avatar'], PROFILE_IMG_PATH); if (\CODOF\File\Upload::$error) { $this->smarty->assign('file_upload_error', $result); } else { $values["avatar"] = $result['name']; $success = true; } } $edited = $edit->set($values); if (!$edited) { Util::log("Failed to update user details profile/id/edit"); $success = false; } $this->smarty->assign('user_profile_edit', $success); $this->profile($id, 'edit'); }