/** * View the discussion * */ function view() { if ($this->active_discussion->isNew()) { $this->httpError(HTTP_ERR_NOT_FOUND); } // if if (!$this->active_discussion->canView($this->logged_user)) { $this->httpError(HTTP_ERR_FORBIDDEN); } // if ProjectObjectViews::log($this->active_discussion, $this->logged_user); $parent = $this->active_discussion->getParent(); if (instance_of($parent, 'Category')) { $this->active_category = $parent; $this->smarty->assign('active_category', $parent); } // if $page = $this->request->get('page'); if ($page < 1) { $page = 1; } // if $this->smarty->assign(array('page_back_url' => assemble_url('mobile_access_view_discussions', array('project_id' => $this->active_project->getId())), 'page' => $page)); $this->addBreadcrumb(str_excerpt(clean($this->active_discussion->getName()), 10), mobile_access_module_get_view_url($this->active_discussion)); $this->addBreadcrumb(lang('View')); }
public function onBeforeWrite() { if ($this->owner->BaseClass == "Discussion" && $this->owner->ID == 0) { $discussion = Discussion::get()->byID($this->owner->ParentID); $discussion_author = $discussion->Author(); $holder = $discussion->Parent(); $author = Member::get()->byID($this->owner->AuthorID); // Get our default email from address if (DiscussionHolder::config()->send_emails_from) { $from = DiscussionHolder::config()->send_email_from; } else { $from = Email::config()->admin_email; } // Vars for the emails $vars = array("Title" => $discussion->Title, "Author" => $author, "Comment" => $this->owner->Comment, 'Link' => Controller::join_links($holder->Link("view"), $discussion->ID, "#comments-holder")); // Send email to discussion owner if ($discussion_author && $discussion_author->Email && $discussion_author->RecieveCommentEmails && $discussion_author->ID != $this->owner->AuthorID) { $subject = _t("Discussions.NewCreatedReplySubject", "{Nickname} replied to your discussion", null, array("Nickname" => $author->Nickname)); $email = new Email($from, $discussion_author->Email, $subject); $email->setTemplate('NewCreatedReplyEmail'); $email->populateTemplate($vars); $email->send(); } // Send to anyone who liked this, if they want notifications foreach ($discussion->LikedBy() as $liked) { if ($liked->RecieveLikedReplyEmails && $liked->Email && $liked->ID != $author->ID) { $subject = _t("Discussions.NewLikedReplySubject", "{Nickname} replied to your liked discussion", null, array("Nickname" => $author->Nickname)); $email = new Email($from, $liked->Email, $subject); $email->setTemplate('NewLikedReplyEmail'); $email->populateTemplate($vars); $email->send(); } } } }
public function getTagsCollection() { $allTags = new ArrayList(); $max = 0; $member = Member::currentUser(); // Find if we need to filter tags by current discussion page $controller = Controller::curr(); if (method_exists($controller, "data")) { $page = $controller->data(); } else { $page = null; } if ($page != null && $page instanceof DiscussionPage) { $discussions = $page->Discussions(); } else { $discussions = Discussion::get(); } if ($discussions) { foreach ($discussions as $discussion) { if ($discussion->canView($member)) { $theseTags = preg_split(" *, *", trim($discussion->Tags)); foreach ($theseTags as $tag) { if ($tag) { if ($allTags->find("Tag", $tag)) { $allTags->find("Tag", $tag)->Count++; } else { $allTags->push(new ArrayData(array("Tag" => $tag, "Count" => 1, "Link" => Controller::join_links($discussion->Parent()->Link("tag"), Convert::raw2url($tag))))); } $tag_count = $allTags->find("Tag", $tag)->Count; $max = $tag_count > $max ? $tag_count : $max; } } } } if ($allTags->exists()) { // First sort our tags $allTags->sort($this->SortParam, $this->SortOrder); // Now if a limit has been set, limit the list if ($this->Limit) { $allTags = $allTags->limit($this->Limit); } } return $allTags; } return; }
function grab(&$param_pool) { $result = NULL; $Forum = $this->_Parent->ExtensionManager->create('forum'); $members = $this->_Parent->ExtensionManager->create('members'); $members->initialiseCookie(); if (!$members->isLoggedIn() || !isset($param_pool['ds-forum-discussions']) || empty($param_pool['ds-forum-discussions'])) { $result = $this->emptyXMLSet(); } else { if (!$members->Member) { $members->initialiseMemberObject(); } $member_id = $members->Member->get('id'); $member_read_cutoff_date = Symphony::Database()->fetchVar('local', 0, sprintf("SELECT `local` FROM `tbl_entries_data_%d` WHERE `entry_id` = %d LIMIT 1", Discussion::getUnreadCutoffField(), $member_id)); if (is_null($member_read_cutoff_date)) { $member_read_cutoff_date = strtotime(Symphony::Database()->fetchVar('creation_date', 0, "SELECT `creation_date` FROM `tbl_entries` WHERE `id` = {$member_id} LIMIT 1")); } $discussion_last_active_field = Symphony::Configuration()->get('discussion-last-active-field', 'forum'); $pre_dated_discussions = Symphony::Database()->fetchCol('entry_id', sprintf("SELECT `entry_id` \n\t\t\t\t\t\tFROM `tbl_entries_data_%d` \n\t\t\t\t\t\tWHERE `entry_id` IN (" . @implode(',', $param_pool['ds-forum-discussions']) . ") \n\t\t\t\t\t\tAND `local` <= '%s'", $discussion_last_active_field, $member_read_cutoff_date)); $read_discussions = @implode(',', array_diff($param_pool['ds-forum-discussions'], $pre_dated_discussions)); if (empty($read_discussions)) { $read_discussions = 0; } $read = $this->_Parent->Database->fetch(sprintf("SELECT * FROM `tbl_forum_read_discussions` \n\t\t\t\t\t\tWHERE `member_id` = {$member_id} \n\t\t\t\t\t\tAND `discussion_id` IN (%s)", $read_discussions)); if (empty($read) && empty($pre_dated_discussions)) { $result = $this->emptyXMLSet(); } else { $result = new XMLElement($this->dsParamROOTELEMENT); foreach ($read as $r) { $result->appendChild(new XMLElement('discussion', NULL, array('id' => $r['discussion_id'], 'comments' => $r['comments'], 'last-viewed' => DateTimeObj::get('c', $r['last_viewed'])))); if (isset($pre_dated_discussions[$r['discussion_id']])) { unset($pre_dated_discussions[$r['discussion_id']]); } } foreach ($pre_dated_discussions as $id) { $result->appendChild(new XMLElement('discussion', NULL, array('id' => $id, 'comments' => '100000', 'last-viewed' => DateTimeObj::get('c', strtotime($member_registration_date))))); } } } return $result; }
/** * Unpin specific discussion * * @param void * @return null * */ function unpin() { if (!$this->request->isSubmitted()) { $this->httpError(HTTP_ERR_BAD_REQUEST, null, true, $this->request->isAsyncCall()); } // if if (!$this->active_discussion->canChangePinedState($this->logged_user)) { $this->httpError(HTTP_ERR_FORBIDDEN, null, true, $this->request->isAsyncCall()); } // if $this->active_discussion->setIsPinned(false); $save = $this->active_discussion->save(); if ($save && !is_error($save)) { flash_success('Discussion has been successfully unpinned'); $activity_log = new DiscussionUnpinnedActivityLog(); $activity_log->log($this->active_discussion, $this->logged_user); } else { flash_error('Failed to unpin selected discussion'); } // if $this->redirectToReferer($this->active_discussion->getViewUrl()); }
/** * Process the submitted form data and save to database * * @return Redirect */ public function post(array $data, Form $form) { $discussion = null; $page = DiscussionHolder::get()->byID($this->controller->ID); $member = Member::currentUser(); if ($this->controller->canStartDiscussions($member)) { // Check if we are editing or creating if (isset($data['ID']) && $data['ID']) { $discussion = Discussion::get()->byID($data['ID']); } if (!$discussion || $discussion == null) { $discussion = Discussion::create(); } $form->saveInto($discussion); $discussion->AuthorID = $member->ID; $discussion->ParentID = $page->ID; $form->saveInto($discussion); $discussion->write(); $discussion_url = Controller::join_links($this->controller->Link("view"), $discussion->ID); return $this->controller->redirect($discussion_url); } else { return $this->controller->httpError(404); } }
" scope="col"><?php echo $col; ?> </th> <?php $n++; } ?> </tr> </thead> <tbody> <?php $style = ''; foreach ($wp_discussion_search->get_results() as $discussion) { $discussion_obj = new Discussion($discussion->ID); $discussion_object = $discussion_obj->get_discussion(); $style = ' class="alternate"' == $style ? '' : ' class="alternate"'; ?> <tr id='user-<?php echo $discussion_object->ID; ?> ' <?php echo $style; ?> > <th scope='row' class='check-column'> <input type='checkbox' name='discussions[]' id='user_<?php echo $discussion_object->ID; ?> ' class='' value='<?php
function discussion_post($where = array()) { $discussion = new Discussion("t_discussions"); $result = $discussion->insert($where); return $result; }
public function markAllAsRead($member_id) { Symphony::Database()->query(sprintf('DELETE FROM `tbl_entries_data_%d` WHERE `entry_id` = %d', Discussion::getUnreadCutoffField(), (int) $member_id)); Symphony::Database()->query(sprintf("INSERT INTO `tbl_entries_data_%d` VALUES (NULL, %d, '%s', %d, %d)", Discussion::getUnreadCutoffField(), (int) $member_id, DateTimeObj::get('c'), strtotime(DateTimeObj::get('c')), strtotime(DateTimeObj::getGMT('Y-m-d H:i:s')))); }
/** * @return \yii\db\ActiveQuery */ public function getDiscussions() { return $this->hasMany(Discussion::className(), ['userID' => 'id']); }
<?php require_once "../../global.php"; $slug = Filter::text($_GET['slug']); $project = Project::getProjectFromSlug($slug); // kick us out if slug invalid if ($project == null) { header('Location: ' . Url::error()); exit; } // if private project, limit access to invited users, members, and admins // and exclude banned members if ($project->getPrivate()) { if (!Session::isAdmin() && !$project->isCreator(Session::getUserID())) { if (!$project->isInvited(Session::getUserID()) && !$project->isMember(Session::getUserID()) && !$project->isTrusted(Session::getUserID()) || ProjectUser::isBanned(Session::getUserID(), $project->getID())) { header('Location: ' . Url::error()); exit; } } } $events = Event::getBasicsEventsByProjectID($project->getID(), 5); $discussions = Discussion::getBasicsDiscussionsByProjectID($project->getID(), 5); $soup = new Soup(); $soup->set('project', $project); $soup->set('events', $events); $soup->set('discussions', $discussions); $soup->render('project/page/details');
/** * Defines the process for adding a new row. */ protected function addRow() { $fields = array('DiscussionID' => Discussion::getInstance()->getRandomId(), 'InsertUserID' => User::getInstance()->getRandomId(), 'Body' => \Faker\Lorem::paragraph()); $this->prepareAndInsert($fields); }
if ($project == null) { header('Location: ' . Url::error()); exit; } // if private project, limit access to invited users, members, and admins // and exclude banned members if ($project->getPrivate()) { if (!Session::isAdmin() && !$project->isCreator(Session::getUserID())) { if (!$project->isInvited(Session::getUserID()) && !$project->isMember(Session::getUserID()) && !$project->isTrusted(Session::getUserID()) || ProjectUser::isBanned(Session::getUserID(), $project->getID())) { header('Location: ' . Url::error()); exit; } } } $events = Event::getTasksEventsByProjectID($project->getID(), 5); $discussions = Discussion::getTasksDiscussionsByProjectID($project->getID(), 5); $soup = new Soup(); $soup->set('project', $project); $soup->set('events', $events); $soup->set('discussions', $discussions); if (Session::isLoggedIn()) { $projectId = $project->getID(); $yourTasks = Task::getYourTasks(Session::getUserID(), $projectId); $soup->set('yourTasks', $yourTasks); $unclaimedTasks = Task::getUnclaimedTasks(Session::getUserID(), $projectId, null, true); $soup->set('unclaimedTasks', $unclaimedTasks); $moreTasks = Task::getMoreTasks(Session::getUserID(), $projectId, null, true); $moreTasksFiltered = array(); foreach ($moreTasks as $task) { if ($task->getNumAccepted() > 0) { array_push($moreTasksFiltered, $task);
<?php /** * @package CoursePress */ $discussion = new Discussion(get_the_ID()); ?> <article id="post-<?php the_ID(); ?> " <?php post_class(); ?> > <header class="entry-header"> <div class="discussion-archive-single-meta"> <div class="discussion-comments-circle"><span class="comments-count"><?php _e('Q', 'cp'); ?> </span></div> </div> <div class="discussion-archive-single"> <h1 class="discussion-title"><?php the_title(); ?> </h1> <div class="entry-content"> <?php
public function updateDiscussionPrivateStatus($data_arr) { Discussion::where('discussion_id', '=', $data_arr['discussion_id'])->update(array('is_private' => $data_arr['is_private'])); return true; }
$slug = Filter::text($_GET['slug']); $project = Project::getProjectFromSlug($slug); // kick us out if slug invalid if ($project == null) { header('Location: ' . Url::error()); exit; } // if private project, limit access to invited users, members, and admins // and exclude banned members if ($project->getPrivate()) { if (!Session::isAdmin() && !$project->isCreator(Session::getUserID())) { if (!$project->isInvited(Session::getUserID()) && !$project->isMember(Session::getUserID()) && !$project->isTrusted(Session::getUserID()) || ProjectUser::isBanned(Session::getUserID(), $project->getID())) { header('Location: ' . Url::error()); exit; } } } $events = Event::getDiscussionsEventsByProjectID($project->getID(), 5); $soup = new Soup(); $soup->set('project', $project); $soup->set('events', $events); // if(Session::isLoggedIn()) { // $moreDiscussions = Discussion::getMoreDiscussions(Session::getUserID(), $project->getID()); // $soup->set('moreDiscussions',$moreDiscussions); // $yourDiscussions = Discussion::getByUserID(Session::getUserID(), $project->getID()); // $soup->set('yourDiscussions', $yourDiscussions); // } else { $discussions = Discussion::getByProjectID($project->getID()); $soup->set('discussions', $discussions); // } $soup->render('project/page/discussions');
/** * Like a particular discussion by ID * */ public function like() { $member = Member::currentUser(); $discussion = Discussion::get()->byID($this->request->param("ID")); if ($discussion && $discussion->canView($member)) { $this->setSessionMessage("message good", _t("Discussions.Liked", "Liked") . " '{$discussion->Title}'"); $member->LikedDiscussions()->add($discussion); $member->write(); $author = $discussion->Author(); // Send a notification (if the author wants it) if ($author && $author->RecieveLikedEmails && $author->Email && $member->ID != $author->ID) { if (DiscussionHolder::config()->send_email_from) { $from = DiscussionHolder::config()->send_email_from; } else { $from = Email::config()->admin_email; } $subject = _t("Discussions.LikedDiscussionSubject", "{Nickname} liked your discussion", null, array("Nickname" => $member->Nickname)); // Vars for the emails $vars = array("Title" => $discussion->Title, "Member" => $member, 'Link' => Controller::join_links($this->Link("view"), $discussion->ID, "#comments-holder")); $email = new Email($from, $author->Email, $subject); $email->setTemplate('LikedDiscussionEmail'); $email->populateTemplate($vars); $email->send(); } } return $this->redirect(Controller::join_links($this->Link("view"), $discussion->ID)); }
public static function getDiscussionEvents($discussionID = null, $limit = null) { if ($discussionID == null) { return null; } $discussion = Discussion::load($discussionID); $projectID = $discussion->getProjectID(); $query = "SELECT e.id AS id FROM " . self::DB_TABLE . " e"; $query .= " INNER JOIN " . EventType::DB_TABLE . " et ON "; $query .= " e.event_type_id = et.id"; $query .= " WHERE e.project_id = " . $projectID; $query .= " AND ( e.item_1_id = " . $discussionID . " AND e.event_type_id = 'create_discussion' )"; $query .= " OR ( e.item_1_id = " . $discussionID . " AND e.event_type_id = 'lock_discussion' )"; $query .= " OR ( e.item_1_id = " . $discussionID . " AND e.event_type_id = 'unlock_discussion' )"; $query .= " OR ( e.item_2_id = " . $discussionID . " AND e.event_type_id = 'create_discussion_reply' )"; $query .= " AND et.hidden = 0"; $query .= " ORDER BY e.date_created DESC"; if ($limit != null) { $query .= " LIMIT " . $limit; } //echo $query; $db = Db::instance(); $result = $db->lookup($query); if (!mysql_num_rows($result)) { return array(); } $events = array(); while ($row = mysql_fetch_assoc($result)) { $events[$row['id']] = self::load($row['id']); } return $events; }
<?php global $action, $page; global $page, $user_id, $cp_admin_notice; global $coursepress; $discussion_id = ''; if (isset($_GET['discussion_id'])) { $discussion = new Discussion($_GET['discussion_id']); $discussion_details = $discussion->get_discussion(); $discussion_id = (int) $_GET['discussion_id']; } else { $discussion = new Discussion(); $discussion_id = 0; } wp_reset_vars(array('action', 'page')); if (isset($_POST['action']) && ($_POST['action'] == 'add' || $_POST['action'] == 'update')) { check_admin_referer('discussion_details'); $new_post_id = $discussion->update_discussion(); if ($_POST['action'] == 'update') { wp_redirect(admin_url('admin.php?page=' . $page . '&ms=du')); exit; } if ($new_post_id !== 0) { ob_start(); // if( defined('DOING_AJAX') && DOING_AJAX ) { cp_write_log('doing ajax'); } if ($_POST['action'] == 'add') { wp_redirect(admin_url('admin.php?page=' . $page . '&ms=da')); exit; } exit; } else {
$project = Project::getProjectFromSlug($slug); // kick us out if slug invalid if ($project == null) { header('Location: ' . Url::error()); exit; } // if private project, limit access to invited users, members, and admins // and exclude banned members if ($project->getPrivate()) { if (!Session::isAdmin() && !$project->isCreator(Session::getUserID())) { if (!$project->isInvited(Session::getUserID()) && !$project->isMember(Session::getUserID()) && !$project->isTrusted(Session::getUserID()) || ProjectUser::isBanned(Session::getUserID(), $project->getID())) { header('Location: ' . Url::error()); exit; } } } //$followers = $project->getFollowers(); $banned = $project->getBanned(); $allMembers = $project->getAllMembers(); $memberInvites = $project->getInvitations(); $discussions = Discussion::getPeopleDiscussionsByProjectID($project->getID(), 3); $events = Event::getPeopleEventsByProjectID($project->getID(), 5); $soup = new Soup(); $soup->set('project', $project); $soup->set('allMembers', $allMembers); $soup->set('memberInvites', $memberInvites); $soup->set('banned', $banned); //$soup->set('followers', $followers); $soup->set('events', $events); $soup->set('discussions', $discussions); $soup->render('project/page/credits');
function formatEvent($event, $showProject = false) { switch ($event->getEventTypeID()) { case 'create_user': $formatted = sprintf("%s registered for %s.", formatUserLink($event->getUser1ID()), '<a href="' . Url::base() . '">' . PIPELINE_NAME . '</a>'); break; case 'send_message': $formatted = sprintf("%s sent a message to %s.", formatUserLink($event->getUser1ID()), formatUserLink($event->getUser2ID())); break; case 'accept_member_invitation': $predicate = $showProject ? 'the project ' . formatProjectLink($event->getProjectID()) : "this project"; $formatted = sprintf("%s accepted %s's invitation to join %s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), formatUserLink($event->getUser2ID(), $event->getProjectID()), $predicate); break; case 'trust_member': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s trusted %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), formatUserLink($event->getUser2ID(), $event->getProjectID()), $predicate); break; case 'untrust_member': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s untrusted %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), formatUserLink($event->getUser2ID(), $event->getProjectID()), $predicate); break; case 'join_project': $predicate = $showProject ? ' ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s joined the project%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), $predicate); break; case 'leave_project': $predicate = $showProject ? ' ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s left the project%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), $predicate); break; case 'follow_project': $predicate = $showProject ? ' ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s followed the project%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), $predicate); break; case 'unfollow_project': $predicate = $showProject ? ' ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s unfollowed the project%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), $predicate); break; case 'ban_user': $predicate = $showProject ? ' from the project ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s banned %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), formatUserLink($event->getUser2ID(), $event->getProjectID()), $predicate); break; case 'unban_user': $predicate = $showProject ? ' from the project ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s unbanned %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), formatUserLink($event->getUser2ID(), $event->getProjectID()), $predicate); break; case 'create_project': $predicate = $showProject ? 'the project ' . formatProjectLink($event->getProjectID()) : 'this project'; $formatted = sprintf("%s created %s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), formatProjectLink($event->getProjectID())); break; case 'edit_pitch': $predicate = $showProject ? ' for the project ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s edited the %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . Url::pitch($event->getProjectID()) . '">pitch</a>', $predicate); break; case 'edit_specs': $predicate = $showProject ? ' for the project ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s edited the %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . Url::specs($event->getProjectID()) . '">specs</a>', $predicate); break; case 'edit_rules': $predicate = $showProject ? ' for the project ' . formatProjectLink($event->getProjectID()) : ''; $formatted = sprintf("%s edited the %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . Url::rules($event->getProjectID()) . '">rules</a>', $predicate); break; case 'edit_project_status': $predicate = $showProject ? 'the project ' . formatProjectLink($event->getProjectID()) : 'this project'; $status = $event->getData2(); $formatted = sprintf("%s changed the %s of %s to “%s.”", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . Url::status($event->getProjectID()) . '">status</a>', $predicate, formatProjectStatus($status)); break; case 'edit_project_deadline': $deadline = $event->getData2(); if ($deadline != null) { $predicate = $showProject ? 'the project ' . formatProjectLink($event->getProjectID()) : 'this project'; $formatted = sprintf("%s changed the %s of %s to %s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . Url::deadline($event->getProjectID()) . '">deadline</a>', $predicate, strftime("%a, %b %d, %Y", strtotime($deadline))); } else { $predicate = $showProject ? 'the project ' . formatProjectLink($event->getProjectID()) : 'this project'; $formatted = sprintf("%s removed the %s for %s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . Url::deadline($event->getProjectID()) . '">deadline</a>', $predicate); } break; case 'create_discussion': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $discussion = Discussion::load($event->getItem1ID()); $title = $discussion->getTitle(); $url = Url::discussion($discussion->getID()); $formatted = sprintf("%s posted the discussion %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'lock_discussion': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $discussion = Discussion::load($event->getItem1ID()); $title = $discussion->getTitle(); $url = Url::discussion($discussion->getID()); $formatted = sprintf("%s locked the discussion %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'unlock_discussion': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $discussion = Discussion::load($event->getItem1ID()); $title = $discussion->getTitle(); $url = Url::discussion($discussion->getID()); $formatted = sprintf("%s unlocked the discussion %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'create_discussion_reply': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $discussion = Discussion::load($event->getItem2ID()); $title = $discussion->getTitle(); $url = Url::discussion($discussion->getID()); $formatted = sprintf("%s replied to the discussion %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'create_task': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem1ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $formatted = sprintf("%s created the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'edit_task_title': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem1ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $formatted = sprintf("%s edited the name of the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'edit_task_status': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem1ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $status = $event->getData2(); if ($status == Task::STATUS_CLOSED) { $formatted = sprintf("%s closed the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); } else { $formatted = sprintf("%s opened the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); } break; case 'edit_task_num_needed': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem1ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $numNeeded = $event->getData2(); if ($numNeeded != '') { $formatted = sprintf("%s changed the # people needed for the task %s%s to %s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate, $numNeeded); } else { $formatted = sprintf("%s changed the # people needed for the task %s%s to ∞.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate, $numNeeded); } break; case 'edit_task_leader': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem1ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $formatted = sprintf("%s changed the leader of the task %s%s to %s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate, formatUserLink($event->getUser2ID(), $event->getProjectID())); break; case 'edit_task_description': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem1ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $formatted = sprintf("%s edited the instructions for the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'edit_task_uploads': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem1ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $formatted = sprintf("%s edited the attached files for the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'edit_task_deadline': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem1ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $deadline = $event->getData2(); if ($deadline != '') { $formatted = sprintf("%s changed the deadline for the task %s%s to %s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate, strftime("%a, %b %d, %Y", strtotime($deadline))); } else { $formatted = sprintf("%s removed the deadline for the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); } break; case 'accept_task': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $accepted = Accepted::load($event->getItem1ID()); //$acceptedUrl = Url::updates($accepted->getID()); $task = Task::load($event->getItem2ID()); $taskTitle = $task->getTitle(); $taskUrl = Url::task($task->getID()); $formatted = sprintf("%s joined the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $taskUrl . '">' . $taskTitle . '</a>', $predicate); break; case 'release_task': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $accepted = Accepted::load($event->getItem1ID()); //$acceptedUrl = Url::updates($accepted->getID()); $task = Task::load($event->getItem2ID()); $taskTitle = $task->getTitle(); $taskUrl = Url::task($task->getID()); $formatted = sprintf("%s left the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $taskUrl . '">' . $taskTitle . '</a>', $predicate); break; case 'edit_accepted_status': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $update = Update::load($event->getItem1ID()); $updateTitle = $update->getTitle(); $updateUrl = Url::update($update->getID()); $accepted = Accepted::load($event->getItem2ID()); $task = Task::load($event->getItem3ID()); $taskTitle = $task->getTitle(); $taskUrl = Url::task($task->getID()); $status = $event->getData2(); if ($status == Accepted::STATUS_FEEDBACK) { $formatted = sprintf("%s is seeking feedback on his/her work on the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $taskUrl . '">' . $taskTitle . '</a>', $predicate); } elseif ($status == Accepted::STATUS_COMPLETED) { $formatted = sprintf("%s is finished working on the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $taskUrl . '">' . $taskTitle . '</a>', $predicate); } elseif ($status == Accepted::STATUS_PROGRESS) { $formatted = sprintf("%s is working on the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $taskUrl . '">' . $taskTitle . '</a>', $predicate); } break; case 'create_task_comment': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem2ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $formatted = sprintf("%s commented on the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'create_task_comment_reply': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $task = Task::load($event->getItem3ID()); $title = $task->getTitle(); $url = Url::task($task->getID()); $formatted = sprintf("%s replied to a comment on the task %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'create_update_comment': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $update = Update::load($event->getItem2ID()); $title = $update->getTitle(); $url = Url::update($update->getID()); $formatted = sprintf("%s commented on the contribution %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'create_update_comment_reply': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $update = Update::load($event->getItem3ID()); $title = $update->getTitle(); $url = Url::update($update->getID()); $formatted = sprintf("%s replied to a comment on the contribution %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $url . '">' . $title . '</a>', $predicate); break; case 'create_update': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $update = Update::load($event->getItem1ID()); $updateTitle = $update->getTitle(); $updateUrl = Url::update($update->getID()); $formatted = sprintf("%s created the contribution %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $updateUrl . '">' . $updateTitle . '</a>', $predicate); break; case 'edit_update_title': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $update = Update::load($event->getItem1ID()); $updateTitle = $update->getTitle(); $updateUrl = Url::update($update->getID()); $formatted = sprintf("%s edited the title of the contribution %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $updateUrl . '">' . $updateTitle . '</a>', $predicate); break; case 'edit_update_message': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $update = Update::load($event->getItem1ID()); $updateTitle = $update->getTitle(); $updateUrl = Url::update($update->getID()); $formatted = sprintf("%s edited the contents of the contribution %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $updateUrl . '">' . $updateTitle . '</a>', $predicate); break; case 'edit_update_uploads': $predicate = $showProject ? ' in the project ' . formatProjectLink($event->getProjectID()) : ''; $update = Update::load($event->getItem1ID()); $updateTitle = $update->getTitle(); $updateUrl = Url::update($update->getID()); $formatted = sprintf("%s edited the attached files for the contribution %s%s.", formatUserLink($event->getUser1ID(), $event->getProjectID()), '<a href="' . $updateUrl . '">' . $updateTitle . '</a>', $predicate); break; default: $formatted = 'Event type "' . $event->getEventTypeID() . '" not found.'; } return $formatted; }
if (!$project->isInvited(Session::getUserID()) && !$project->isMember(Session::getUserID()) && !$project->isTrusted(Session::getUserID()) || ProjectUser::isBanned(Session::getUserID(), $project->getID())) { header('Location: ' . Url::error()); exit; } } } // get category, if exists $c = isset($_GET['cat']) ? Filter::text($_GET['cat']) : null; switch ($c) { case 'basics': $cat = BASICS_ID; break; case 'tasks': $cat = TASKS_ID; break; case 'people': $cat = PEOPLE_ID; break; case 'activity': $cat = ACTIVITY_ID; break; default: $cat = null; } // get your discussions $yourDiscussions = Discussion::getByUserID(Session::getUserID(), $project->getID()); $soup = new Soup(); $soup->set('project', $project); $soup->set('cat', $cat); $soup->set('yourDiscussions', $yourDiscussions); $soup->render('project/page/discussionNew');
$successURL = Url::activity($project->getID()); break; default: $successURL = Url::discussion($discussion->getID()); } $json = array('success' => '1', 'successUrl' => $successURL); echo json_encode($json); } elseif ($action == 'reply') { $discussionID = Filter::numeric($_POST['discussionID']); $message = Filter::formattedText($_POST['message']); if ($message == '') { $json = array('error' => 'Your reply can not be blank.'); exit(json_encode($json)); } $discussion = Discussion::load($discussionID); $reply = new Discussion(array('creator_id' => Session::getUserID(), 'project_id' => $discussion->getProjectID(), 'parent_id' => $discussion->getID(), 'title' => $discussion->getTitle(), 'message' => $message, 'category' => $discussion->getCategory())); $reply->save(); // attach any uploads // Upload::attachToItem( // $token, // Upload::TYPE_DISCUSSION, // $reply->getID(), // $project->getID() // ); // log it $logEvent = new Event(array('event_type_id' => 'create_discussion_reply', 'project_id' => $discussion->getProjectID(), 'user_1_id' => Session::getUserID(), 'item_1_id' => $reply->getID(), 'item_2_id' => $discussion->getID(), 'data_1' => $message)); $logEvent->save(); // send email notification, if desired // discussion creator $creator = User::load($discussion->getCreatorID()); if ($creator->getID() != Session::getUserID()) {
protected function __trigger() { $result = new XMLElement('forum-post'); $fields = $_POST['fields']; $entry_id = NULL; if (isset($_POST['id']) && is_numeric($_POST['id'])) { $entry_id = $_POST['id']; } $fields = self::prepareFieldValues($_POST['fields'], $_FILES['fields']); ## Create the post data cookie element if (is_array($fields) && !empty($fields)) { $cookie = new XMLElement('post-values'); foreach ($fields as $element_name => $value) { if (strlen($value) == 0) { continue; } $cookie->appendChild(new XMLElement($element_name, General::sanitize($value))); } } $discussion = $comment = $fields; $action = $_POST['action']; $Forum =& $this->_Parent->ExtensionManager->create('forum'); $Members =& $this->_Parent->ExtensionManager->create('members'); $Members->initialiseCookie(); $isLoggedIn = $Members->isLoggedIn(); $Members->initialiseMemberObject(); if ($isLoggedIn && is_object($Members->Member)) { $role_data = $Members->Member->getData($Members->roleField()); } $role = $Members->fetchRole($isLoggedIn ? $role_data['role_id'] : 1, true); /* if(!$loggedin || !$member = $Members->initialiseMemberObject()){ $result->setAttribute('result', 'error'); $result->appendChild(new XMLElement('message', 'Not authorised')); return $result; } */ /* add_comment <action name="edit_comment" /> <action name="edit_discussion" /> <action name="edit_own_comment" /> <action name="edit_own_discussion" /> <action name="start_discussion" /> if($role->canPerformEventAction('forum', $action.'_discussion')){ $Forum->Discussion->$action($discussion_id); $success = true; } */ $success = false; $discussion_id = NULL; $comment_discussion_id_field_handle = Symphony::Database()->fetchVar('element_name', 0, "SELECT `element_name` FROM `tbl_fields` \n\t\t\t\tWHERE `id` = " . (int) Symphony::Configuration()->get('comment-discussion-link-field', 'forum') . " LIMIT 1"); if (isset($action['forum-new-discussion'])) { if ($role->canPerformEventAction('forum', 'start_discussion')) { if (!($oDiscussion = $this->__doit($Forum->getDiscussionSectionID(), $discussion, $result, NULL, $cookie))) { return $result; } $comment[$comment_discussion_id_field_handle] = $oDiscussion->get('id'); if (!($oComment = $this->__doit($Forum->getCommentSectionID(), $comment, $result, NULL, $cookie))) { $Forum->Discussion->remove($oDiscussion->get('id')); return $result; } if ($isLoggedIn) { $Forum->Discussion->updateRead($Members->Member->get('id'), $oDiscussion->get('id')); } $success = true; $discussion_id = $oDiscussion->get('id'); } else { $result->appendChild(new XMLElement('message', 'Not authorised')); } } elseif (isset($action['forum-edit-discussion'])) { $is_owner = $isLoggedIn ? $Forum->Discussion->isDiscussionOwner((int) $Members->Member->get('id'), $entry_id) : false; if ($role->canPerformEventAction('forum', 'edit_discussion') || $is_owner && $role->canPerformEventAction('forum', 'edit_own_discussion')) { if (!($oDiscussion = $this->__doit($Forum->getDiscussionSectionID(), $discussion, $result, $entry_id, $cookie))) { return $result; } if (!($oComment = $this->__doit($Forum->getCommentSectionID(), $comment, $result, $discussion['comment-id'], $cookie))) { return $result; } $success = true; $discussion_id = $entry_id; } else { $result->appendChild(new XMLElement('message', 'Not authorised')); } } elseif (isset($action['forum-new-comment'])) { $oDiscussion = new Discussion($this->_Parent, $comment[$comment_discussion_id_field_handle]); $isOpen = Symphony::Database()->fetchVar('value', 0, 'SELECT `value` FROM `sym_entries_data_' . $oDiscussion->getLockedField() . '` WHERE `entry_id` = ' . $oDiscussion->Entry()->get('id') . ' LIMIT 1'); if ($role->canPerformEventAction('forum', 'add_comment') && $isOpen == 'no') { //if(!$oDiscussion = $this->__doit($Forum->getDiscussionSectionID(), $discussion, $result, $comment[$comment_discussion_id_field_handle], $cookie)) return $result; try { if (!($oComment = $this->__doit($Forum->getCommentSectionID(), $comment, $result, NULL, $cookie))) { return $result; } if ($isLoggedIn) { $username_and_password = $Members->Member->getData($Members->usernameAndPasswordField()); $oDiscussion->Entry()->setData(Discussion::getLastActiveField(), array('local' => strtotime($oComment->get('creation_date')), 'gmt' => strtotime($oComment->get('creation_date_gmt')), 'value' => DateTimeObj::get('c', strtotime($oComment->get('creation_date'))))); $oDiscussion->Entry()->setData(Discussion::getLastPostField(), array('member_id' => $Members->Member->get('id'), 'username' => $username_and_password['username'])); $oDiscussion->Entry()->commit(); $Forum->Discussion->updateRead($Members->Member->get('id'), $comment[$comment_discussion_id_field_handle]); } $success = true; $discussion_id = $oDiscussion->Entry()->get('id'); } catch (Exception $e) { $result->appendChild(new XMLElement('error', General::sanitize($e->getMessage()))); $success = false; } } else { $result->appendChild(new XMLElement('message', 'Not authorised')); } } elseif (isset($action['forum-edit-comment'])) { $is_owner = $isLoggedIn ? $Forum->Discussion->isCommentOwner((int) $Members->Member->get('id'), $entry_id) : false; if ($role->canPerformEventAction('forum', 'edit_comment') || $is_owner && $role->canPerformEventAction('forum', 'edit_own_comment')) { if (!($oComment = $this->__doit($Forum->getCommentSectionID(), $comment, $result, $entry_id, $cookie))) { return $result; } $success = true; $discussion_id = $comment[$comment_discussion_id_field_handle]; } else { $result->appendChild(new XMLElement('message', 'Not authorised')); } } if ($success && isset($_REQUEST['redirect'])) { redirect(str_replace('{$id}', $discussion_id, $_REQUEST['redirect'])); } $result->setAttributeArray(array('result' => $success ? 'success' : 'failed', 'type' => isset($entry_id) ? 'edited' : 'created')); if ($success) { $result->appendChild(new XMLElement('message', 'Entry ' . (isset($entry_id) ? 'edited' : 'created') . ' successfully.')); } return $result; }
public static function discussion($discussionID = null) { $discussion = Discussion::load($discussionID); $title = $discussion->getTitle(); $projectID = $discussion->getProjectID(); return array_merge(self::discussions($projectID), self::oneCrumb($title, Url::discussion($discussionID))); }
public static function handleBrowseRequest() { // execute search and return response return static::respond('discussions', array('data' => Discussion::getAll(array('order' => array('ID' => 'DESC'))))); }
_e('Ask a Question', 'cp'); ?> </button> </div> <ul class="discussion-archive-list"> <?php $page = isset($wp->query_vars['paged']) ? (int) $wp->query_vars['paged'] : 1; do_shortcode('[course_discussion_loop]'); if (have_posts()) { ?> <?php while (have_posts()) { the_post(); //foreach ( $myposts as $post ) : setup_postdata($post); $discussion = new Discussion(get_the_ID()); ?> <li> <div class="discussion-archive-single-meta"> <div class="<?php if (get_comments_number() > 0) { echo 'discussion-answer-circle'; } else { echo 'discussion-comments-circle'; } ?> "> <span class="comments-count"><?php echo get_comments_number(); ?> <?php
if ($project->getPrivate()) { if (!Session::isAdmin() && !$project->isCreator(Session::getUserID())) { if (!$project->isInvited(Session::getUserID()) && !$project->isMember(Session::getUserID()) && !$project->isTrusted(Session::getUserID()) || ProjectUser::isBanned(Session::getUserID(), $project->getID())) { header('Location: ' . Url::error()); exit; } } } // page number, if any if (empty($_GET['page'])) { $page = 1; } else { $page = Filter::numeric($_GET['page']); } $discussionID = Filter::numeric($_GET['d']); $discussion = Discussion::load($discussionID); define('REPLIES_PER_PAGE', 10); // how many replies per page $totalNumReplies = count($discussion->getReplies()); // total # replies $numPages = ceil($totalNumReplies / REPLIES_PER_PAGE); // get # pages if ($numPages != 0 && $page > $numPages) { // invalid page number header('Location: ' . Url::error()); exit; } $limit = ($page - 1) * REPLIES_PER_PAGE . ', ' . REPLIES_PER_PAGE; $replies = $discussion->getReplies("ASC", $limit); // get replies $events = Event::getDiscussionEvents($discussionID, 10);
/** * Add New Discussion template file * * @package CoursePress */ global $coursepress; $course_id = do_shortcode('[get_parent_course_id]'); $coursepress->check_access($course_id); get_header(); $form_message_class = ''; $form_message = ''; if (isset($_POST['new_question_submit'])) { check_admin_referer('new_question'); if ($_POST['question_title'] !== '') { if ($_POST['question_description'] !== '') { $discussion = new Discussion(); $discussion->update_discussion($_POST['question_title'], $_POST['question_description'], $course_id); // if( defined('DOING_AJAX') && DOING_AJAX ) { cp_write_log('doing ajax'); } wp_redirect(get_permalink($course_id) . $coursepress->get_discussion_slug()); exit; } else { $form_message = __('Question description is required.'); $form_message_class = 'red'; } } else { $form_message = __('Question title is required.'); $form_message_class = 'red'; } } ?> <div id="primary" class="content-area">
public static function discussion($discussionID = null) { if ($discussionID == null) { return null; } $discussion = Discussion::load($discussionID); return self::discussions($discussion->getProjectID()) . '/' . $discussionID; }