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;
 }
Beispiel #4
0
 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;
 }
Beispiel #6
0
 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;
 }
Beispiel #7
0
 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;
 }
Beispiel #8
0
 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;
 }
Beispiel #9
0
 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;
 }
Beispiel #10
0
 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;
 }
Beispiel #11
0
 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);
 }
Beispiel #13
0
 /**
  * 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;
 }
Beispiel #14
0
 /**
  * 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;
 }
Beispiel #16
0
 /**
  * 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;
 }