public function transformResults($results, $verbose) { $total = $results['total']; unset($results['total']); $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; // add per-item links if (is_array($list) && count($list)) { foreach ($results as $key => $row) { if (true === $verbose) { $list[$key]['gravatar_hash'] = md5(strtolower($row['email'])); } $list[$key]['uri'] = $base . '/' . $version . '/talk_comments/' . $row['ID']; $list[$key]['verbose_uri'] = $base . '/' . $version . '/talk_comments/' . $row['ID'] . '?verbose=yes'; $list[$key]['talk_uri'] = $base . '/' . $version . '/talks/' . $row['talk_id']; $list[$key]['talk_comments_uri'] = $base . '/' . $version . '/talks/' . $row['talk_id'] . '/comments'; if ($row['user_id']) { $list[$key]['user_uri'] = $base . '/' . $version . '/users/' . $row['user_id']; } } } $retval = array(); $retval['comments'] = $list; $retval['meta'] = $this->getPaginationLinks($list, $total); return $retval; }
public function transformResults($results, $verbose) { $total = $results['total']; unset($results['total']); $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; if (is_array($list) && count($list)) { foreach ($results as $key => $row) { if (true === $verbose) { $list[$key]['gravatar_hash'] = md5(strtolower($row['email'])); } // figure out user if ($row['user_id']) { $list[$key]['user_display_name'] = $row['full_name']; $list[$key]['user_uri'] = $base . '/' . $version . '/users/' . $row['user_id']; } else { $list[$key]['user_display_name'] = $row['cname']; } // useful links $list[$key]['comment_uri'] = $base . '/' . $version . '/event_comments/' . $row['ID']; $list[$key]['verbose_comment_uri'] = $base . '/' . $version . '/event_comments/' . $row['ID'] . '?verbose=yes'; $list[$key]['event_uri'] = $base . '/' . $version . '/events/' . $row['event_id']; $list[$key]['event_comments_uri'] = $base . '/' . $version . '/events/' . $row['event_id'] . '/comments'; } } $retval = array(); $retval['comments'] = $list; $retval['meta'] = $this->getPaginationLinks($list, $total); return $retval; }
public function transformResults($results, $verbose) { $list = parent::transformResults($results, $verbose); $host = $this->_request->host; if (is_array($list) && count($list)) { foreach ($results as $key => $row) { // figure out user if ($row['user_id']) { $list[$key]['user_display_name'] = $row['full_name']; $list[$key]['user_uri'] = 'http://' . $host . '/v2/users/' . $row['user_id']; } else { $list[$key]['user_display_name'] = $row['cname']; } // useful links $list[$key]['comment_uri'] = 'http://' . $host . '/v2/event_comments/' . $row['ID']; $list[$key]['verbose_comment_uri'] = 'http://' . $host . '/v2/event_comments/' . $row['ID'] . '?verbose=yes'; $list[$key]['event_uri'] = 'http://' . $host . '/v2/events/' . $row['event_id']; $list[$key]['event_comments_uri'] = 'http://' . $host . '/v2/events/' . $row['event_id'] . '/comments'; } if (count($list) > 1) { $list = $this->addPaginationLinks($list); } } return $list; }
public function transformResults($results, $verbose) { $total = $results['total']; unset($results['total']); $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; if (is_array($list) && count($list)) { foreach ($results as $key => $row) { $list[$key]['uri'] = $base . '/' . $version . '/languages/' . $row['ID']; $list[$key]['verbose_uri'] = $base . '/' . $version . '/languages/' . $row['ID'] . '?verbose=yes'; } } return array('languages' => $list, 'meta' => $this->getPaginationLinks($list, $total)); }
public function transformResults($results, $verbose) { $list = parent::transformResults($results, $verbose); $host = $this->_request->host; // add per-item links if (is_array($list) && count($list)) { foreach ($results as $key => $row) { $list[$key]['uri'] = 'http://' . $host . '/v2/talk_comments/' . $row['ID']; $list[$key]['verbose_uri'] = 'http://' . $host . '/v2/talk_comments/' . $row['ID'] . '?verbose=yes'; $list[$key]['talk_uri'] = 'http://' . $host . '/v2/talks/' . $row['talk_id']; $list[$key]['talk_comments_uri'] = 'http://' . $host . '/v2/talks/' . $row['talk_id'] . '/comments'; if ($row['user_id']) { $list[$key]['user_uri'] = 'http://' . $host . '/v2/users/' . $row['user_id']; } } } return $list; }
public function transformResults($results, $verbose) { $total = $results['total']; unset($results['total']); $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; // loop again and add links specific to this item if (is_array($list) && count($list)) { foreach ($results as $key => $row) { $list[$key]['uri'] = $base . '/' . $version . '/tracks/' . $row['ID']; $list[$key]['verbose_uri'] = $base . '/' . $version . '/tracks/' . $row['ID'] . '?verbose=yes'; $list[$key]['event_uri'] = $base . '/' . $version . '/events/' . $row['event_id']; } } $retval = array(); $retval['tracks'] = $list; $retval['meta'] = $this->getPaginationLinks($list, $total); return $retval; }
public function transformResults($results, $verbose) { $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; // add per-item links if (is_array($list) && count($list)) { foreach ($results as $key => $row) { $list[$key]['uri'] = $base . '/' . $version . '/users/' . $row['ID']; $list[$key]['verbose_uri'] = $base . '/' . $version . '/users/' . $row['ID'] . '?verbose=yes'; $list[$key]['website_uri'] = 'http://joind.in/user/view/' . $row['ID']; $list[$key]['talks_uri'] = $base . '/' . $version . '/users/' . $row['ID'] . '/talks/'; $list[$key]['attended_events_uri'] = $base . '/' . $version . '/users/' . $row['ID'] . '/attended/'; } } $retval = array(); $retval['users'] = $list; $retval['meta'] = $this->getPaginationLinks($list); return $retval; }
public function transformResults($results, $verbose) { $list = parent::transformResults($results, $verbose); $host = $this->_request->host; // loop again and add links specific to this item if (is_array($list) && count($list)) { foreach ($results as $key => $row) { // add speakers $list[$key]['speakers'] = $this->getSpeakers($row['ID']); $list[$key]['tracks'] = $this->getTracks($row['ID']); $list[$key]['uri'] = 'http://' . $host . '/v2/talks/' . $row['ID']; $list[$key]['verbose_uri'] = 'http://' . $host . '/v2/talks/' . $row['ID'] . '?verbose=yes'; $list[$key]['website_uri'] = 'http://joind.in/talk/view/' . $row['ID']; $list[$key]['comments_uri'] = 'http://' . $host . '/v2/talks/' . $row['ID'] . '/comments'; $list[$key]['verbose_comments_uri'] = 'http://' . $host . '/v2/talks/' . $row['ID'] . '/comments?verbose=yes'; $list[$key]['event_uri'] = 'http://' . $host . '/v2/events/' . $row['event_id']; } } return $list; }
public function transformResults($results, $verbose) { $total = $results['total']; unset($results['total']); $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; // loop again and add links specific to this item if (is_array($list) && count($list)) { foreach ($results as $key => $row) { // generate and store an inflected talk title if there isn't one if (empty($row['url_friendly_talk_title'])) { $list[$key]['url_friendly_talk_title'] = $this->generateInflectedTitle($row['talk_title'], $row['ID']); } if (isset($this->_request->user_id)) { $list[$key]['starred'] = $this->hasUserStarredTalk($row['ID'], $this->_request->user_id); } else { $list[$key]['starred'] = false; } // if the stub is empty, we need to generate one and store it if (empty($row['stub'])) { $list[$key]['stub'] = $this->generateStub($row['ID']); } // add speakers $list[$key]['speakers'] = $this->getSpeakers($row['ID']); $list[$key]['tracks'] = $this->getTracks($row['ID']); $list[$key]['uri'] = $base . '/' . $version . '/talks/' . $row['ID']; $list[$key]['verbose_uri'] = $base . '/' . $version . '/talks/' . $row['ID'] . '?verbose=yes'; $list[$key]['website_uri'] = 'http://joind.in/talk/view/' . $row['ID']; $list[$key]['comments_uri'] = $base . '/' . $version . '/talks/' . $row['ID'] . '/comments'; $list[$key]['starred_uri'] = $base . '/' . $version . '/talks/' . $row['ID'] . '/starred'; $list[$key]['verbose_comments_uri'] = $base . '/' . $version . '/talks/' . $row['ID'] . '/comments?verbose=yes'; $list[$key]['event_uri'] = $base . '/' . $version . '/events/' . $row['event_id']; } } $retval = array(); $retval['talks'] = $list; $retval['meta'] = $this->getPaginationLinks($list, $total); return $retval; }
public function transformResults($results, $verbose) { $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; // add per-item links if (is_array($list) && count($list)) { foreach ($results as $key => $row) { $list[$key]['uri'] = $base . '/' . $version . '/talk_comments/' . $row['ID']; $list[$key]['verbose_uri'] = $base . '/' . $version . '/talk_comments/' . $row['ID'] . '?verbose=yes'; $list[$key]['talk_uri'] = $base . '/' . $version . '/talks/' . $row['talk_id']; $list[$key]['talk_comments_uri'] = $base . '/' . $version . '/talks/' . $row['talk_id'] . '/comments'; if ($row['user_id']) { $list[$key]['user_uri'] = $base . '/' . $version . '/users/' . $row['user_id']; } } } $retval = array(); $retval['comments'] = $list; $retval['meta'] = $this->getPaginationLinks($list); return $retval; }
public function transformResults($results, $verbose) { $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; // loop again and add links specific to this item if (is_array($list) && count($list)) { foreach ($results as $key => $row) { // add speakers $list[$key]['speakers'] = $this->getSpeakers($row['ID']); $list[$key]['tracks'] = $this->getTracks($row['ID']); $list[$key]['uri'] = $base . '/' . $version . '/talks/' . $row['ID']; $list[$key]['verbose_uri'] = $base . '/' . $version . '/talks/' . $row['ID'] . '?verbose=yes'; $list[$key]['website_uri'] = 'http://joind.in/talk/view/' . $row['ID']; $list[$key]['comments_uri'] = $base . '/' . $version . '/talks/' . $row['ID'] . '/comments'; $list[$key]['verbose_comments_uri'] = $base . '/' . $version . '/talks/' . $row['ID'] . '/comments?verbose=yes'; $list[$key]['event_uri'] = $base . '/' . $version . '/events/' . $row['event_id']; } } $retval = array(); $retval['talks'] = $list; $retval['meta'] = $this->getPaginationLinks($list); return $retval; }
/** * Get all the talk comments that have been reported for this event * * Includes verbose nested comment info * * @param $event_id int The event whose comments should be returned * @param $moderated bool Whether to include comments that have been moderated * @return array A list of the comments */ public function getReportedCommentsByEventId($event_id, $moderated = false) { $sql = "select rc.reporting_user_id, rc.deciding_user_id, rc.decision,\n rc.talk_comment_id, t.event_id, tc.talk_id,\n ru.username as reporting_username,\n du.username as deciding_username,\n UNIX_TIMESTAMP(rc.reporting_date) as reporting_date,\n UNIX_TIMESTAMP(rc.deciding_date) as deciding_date\n from reported_talk_comments rc\n join talk_comments tc on tc.ID = rc.talk_comment_id\n join talks t on t.ID = tc.talk_id\n left join user ru on ru.ID = rc.reporting_user_id\n left join user du on du.ID = rc.deciding_user_id\n where t.event_id = :event_id"; if (false === $moderated) { $sql .= " and rc.decision is null"; } $stmt = $this->_db->prepare($sql); $result = $stmt->execute(['event_id' => $event_id]); // need to also set the comment info $list = []; $total = 0; $comment_sql = $this->getBasicSQL(true) . " and tc.ID = :comment_id"; $comment_stmt = $this->_db->prepare($comment_sql); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $total++; $comment_result = $comment_stmt->execute(['comment_id' => $row['talk_comment_id']]); if ($comment_result && ($comment = $comment_stmt->fetch(PDO::FETCH_ASSOC))) { // work around the existing transform logic $comment_array = [$comment]; $comment_array = parent::transformResults($comment_array, true); $item = current($comment_array); $row['comment'] = array_merge($item, $this->formatOneComment($comment, true)); } $list[] = new TalkCommentReportModel($row); } return new TalkCommentReportModelCollection($list, $total); }
/** * Get an event by ID, but just the event table fields * and including pending events * * @param int $event_id The event you want * * @return array The event details, or false if it wasn't found */ public function getPendingEventById($event_id) { $sql = 'select events.* ' . 'from events ' . 'where events.ID = :event_id '; $stmt = $this->_db->prepare($sql); $response = $stmt->execute(array("event_id" => $event_id)); if ($response) { $results = $stmt->fetchAll(PDO::FETCH_ASSOC); $retval = parent::transformResults($results, true); return $retval[0]; } return false; }
/** * Turn results into arrays with correct fields, add hypermedia * * @param array $results Results of the database query * @param boolean $verbose whether to return detailed information * @return array A dataset now with each record having its links, * and pagination if appropriate */ public function transformResults($results, $verbose) { $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; // add per-item links if (is_array($list) && count($list)) { foreach ($results as $key => $row) { // flip the attending to be true/false rather than user id or null if ($row['attending']) { $list[$key]['attending'] = true; } else { $list[$key]['attending'] = false; } $list[$key]['tags'] = $this->getTags($row['ID']); $list[$key]['uri'] = $base . '/' . $version . '/events/' . $row['ID']; $list[$key]['verbose_uri'] = $base . '/' . $version . '/events/' . $row['ID'] . '?verbose=yes'; $list[$key]['comments_uri'] = $base . '/' . $version . '/events/' . $row['ID'] . '/comments'; $list[$key]['talks_uri'] = $base . '/' . $version . '/events/' . $row['ID'] . '/talks'; $list[$key]['website_uri'] = 'http://joind.in/event/view/' . $row['ID']; // handle the slug if (!empty($row['event_stub'])) { $list[$key]['humane_website_uri'] = 'http://joind.in/event/' . $row['event_stub']; } if ($verbose) { $list[$key]['all_talk_comments_uri'] = $base . '/' . $version . '/events/' . $row['ID'] . '/talk_comments'; $list[$key]['hosts'] = $this->getHosts($row['ID']); } } } $retval = array(); $retval['events'] = $list; $retval['meta'] = $this->getPaginationLinks($list); return $retval; }
public function transformResults($results, $verbose) { $total = $results['total']; unset($results['total']); $list = parent::transformResults($results, $verbose); $base = $this->_request->base; $version = $this->_request->version; // add per-item links if (is_array($list) && count($list)) { $userIsSiteAdmin = false; if ($this->_request->user_id && $this->isSiteAdmin($this->_request->user_id)) { $userIsSiteAdmin = true; } foreach ($results as $key => $row) { // can the logged in user edit this user? $canEdit = false; if ($userIsSiteAdmin || $row['ID'] == $this->_request->user_id) { $canEdit = true; } if (true === $verbose) { $list[$key]['gravatar_hash'] = md5(strtolower($row['email'])); // if this record can be edited, then expose the email address if ($canEdit) { $list[$key]['email'] = $row['email']; } // expose the admin field if the currently logged in user is a site admin if ($userIsSiteAdmin) { $list[$key]['admin'] = $row['admin']; } } $list[$key]['uri'] = $base . '/' . $version . '/users/' . $row['ID']; $list[$key]['verbose_uri'] = $base . '/' . $version . '/users/' . $row['ID'] . '?verbose=yes'; $list[$key]['website_uri'] = $this->website_url . '/user/' . $row['username']; $list[$key]['talks_uri'] = $base . '/' . $version . '/users/' . $row['ID'] . '/talks/'; $list[$key]['attended_events_uri'] = $base . '/' . $version . '/users/' . $row['ID'] . '/attended/'; $list[$key]['hosted_events_uri'] = $base . '/' . $version . '/users/' . $row['ID'] . '/hosted/'; $list[$key]['talk_comments_uri'] = $base . '/' . $version . '/users/' . $row['ID'] . '/talk_comments/'; if ($verbose && isset($this->_request->user_id)) { $list[$key]['can_edit'] = $canEdit; } } } $retval = array(); $retval['users'] = $list; $retval['meta'] = $this->getPaginationLinks($list, $total); return $retval; }
/** * Turn results into arrays with correct fields, add hypermedia * * @param array $results Results of the database query * @param boolean $verbose whether to return detailed information * @return array A dataset now with each record having its links, * and pagination if appropriate */ public function transformResults($results, $verbose) { $list = parent::transformResults($results, $verbose); $host = $this->_request->host; // add per-item links if (is_array($list) && count($list)) { foreach ($results as $key => $row) { $list[$key]['uri'] = 'http://' . $host . '/v2/events/' . $row['ID']; $list[$key]['verbose_uri'] = 'http://' . $host . '/v2/events/' . $row['ID'] . '?verbose=yes'; $list[$key]['comments_uri'] = 'http://' . $host . '/v2/events/' . $row['ID'] . '/comments'; $list[$key]['talks_uri'] = 'http://' . $host . '/v2/events/' . $row['ID'] . '/talks'; $list[$key]['website_uri'] = 'http://joind.in/event/view/' . $row['ID']; if ($verbose) { $list[$key]['all_talk_comments_uri'] = 'http://' . $host . '/v2/events/' . $row['ID'] . '/talk_comments'; } } if (count($list) > 1) { $list = $this->addPaginationLinks($list); } } return $list; }