/**
  * 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 
示例#8
0
function discussion_post($where = array())
{
    $discussion = new Discussion("t_discussions");
    $result = $discussion->insert($where);
    return $result;
}
示例#9
0
 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'))));
 }
示例#10
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getDiscussions()
 {
     return $this->hasMany(Discussion::className(), ['userID' => 'id']);
 }
示例#11
0
<?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');
示例#12
0
 /**
  * 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);
 }
示例#13
0
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 
示例#15
0
 public function updateDiscussionPrivateStatus($data_arr)
 {
     Discussion::where('discussion_id', '=', $data_arr['discussion_id'])->update(array('is_private' => $data_arr['is_private']));
     return true;
 }
示例#16
0
$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));
 }
示例#18
0
 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 {
示例#20
0
$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');
示例#21
0
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 &ldquo;%s.&rdquo;", 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 &#8734;.", 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;
}
示例#22
0
        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');
示例#23
0
            $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;
 }
示例#25
0
 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 
示例#28
0
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">
示例#30
0
 public static function discussion($discussionID = null)
 {
     if ($discussionID == null) {
         return null;
     }
     $discussion = Discussion::load($discussionID);
     return self::discussions($discussion->getProjectID()) . '/' . $discussionID;
 }