private function getArray($res, $hpid, $luck, $project, $blist, $gravurl, $users, $cg, $times, $lkd, $glue) { $i = 0; $ret = []; while ($o = $res->fetch(PDO::FETCH_OBJ)) { if (in_array($o->from, $blist)) { continue; } $ret[$i]['fromid_n'] = $o->from; $ret[$i]['gravatarurl_n'] = $gravurl[$o->from]; $ret[$i]['toid_n'] = $o->to; $ret[$i]['from_n'] = $users[$o->from]; $ret[$i]['uid_n'] = "c{$o->hcid}"; $ret[$i]['from4link_n'] = Utils::userLink($users[$o->from]); $ret[$i]['message_n'] = parent::bbcode($o->message, 1, $cg, 1, $o->hcid); $ret[$i]['datetime_n'] = $this->user->getDateTime($o->time); $ret[$i]['timestamp_n'] = $o->time; $ret[$i]['hcid_n'] = $o->hcid; $ret[$i]['hpid_n'] = $hpid; $ret[$i]['thumbs_n'] = $this->getThumbs($o->hcid, $project); $ret[$i]['uthumb_n'] = $this->getUserThumb($o->hcid, $project); $ret[$i]['revisions_n'] = $this->getRevisionsNumber($o->hcid, $project); $ret[$i]['caneditcomment_b'] = $this->canEdit((array) $o); if ($luck) { $ret[$i]['canshowlock_b'] = false; if (isset($lkd[$o->from]) && !in_array($o->from, $times) && $_SESSION['id'] != $o->from) { $ret[$i]['lock_b'] = true; $times[] = $o->from; $ret[$i]['canshowlock_b'] = true; } elseif (!in_array($o->from, $times) && $_SESSION['id'] != $o->from) { $ret[$i]['lock_b'] = false; $times[] = $o->from; $ret[$i]['canshowlock_b'] = true; } } else { $ret[$i]['canshowlock_b'] = $ret[$i]['lock_b'] = false; } $ret[$i]['canremove_b'] = $this->canRemove((array) $o, $project); ++$i; } if ($this->user->isLogged() && $i > 1) { Db::query(array('DELETE FROM "' . $glue . 'comments_notify" WHERE "to" = ? AND "hpid" = ?', array($_SESSION['id'], $hpid)), Db::NO_RETURN); } return $ret; }
public function read($fromid, $toid, $time, $pmid) { $ret = []; if (!is_numeric($fromid) || !is_numeric($toid) || !is_numeric($pmid) || !in_array($_SESSION['id'], array($fromid, $toid)) || !($res = Db::query(array('SELECT "message","to_read" FROM "pms" WHERE "from" = :from AND "to" = :to AND "pmid" = :pmid', array(':from' => $fromid, ':to' => $toid, ':pmid' => $pmid)), Db::FETCH_STMT))) { return false; } if ($o = $res->fetch(PDO::FETCH_OBJ)) { $from = User::getUsername($fromid); $ret['from4link_n'] = \NERDZ\Core\Utils::userLink($from); $ret['from_n'] = $from; $ret['datetime_n'] = $this->user->getDateTime($time); $ret['fromid_n'] = $fromid; $ret['toid_n'] = $toid; $ret['message_n'] = parent::bbcode($o->message); $ret['read_b'] = $o->to_read; $ret['pmid_n'] = $pmid; $ret['timestamp_n'] = $time; } return $ret; }
$fol = $project->getFollowers($info->counter); $vals['users_n'] = count($fol); $vals['users_a'] = []; $i = 0; foreach ($fol as $uid) { if (!($uname = User::getUsername($uid))) { continue; } $vals['users_a'][$i]['username_n'] = $uname; $vals['users_a'][$i]['username4link_n'] = \NERDZ\Core\Utils::userLink($uname); ++$i; } usort($vals['users_a'], 'NERDZ\\Core\\Utils::sortByUsername'); $vals['owner_n'] = User::getUsername($project->getOwner()); $vals['owner4link_n'] = \NERDZ\Core\Utils::userLink($vals['owner_n']); $vals['description_n'] = $messages->bbcode($info->description); $vals['goal_n'] = $messages->bbcode($info->goal); $vals['website_n'] = $vals['website4link_n'] = empty($info->website) ? 'http://' . Config\SITE_HOST . '/' : $info->website; $vals['openproject_b'] = $project->isOpen($info->counter); $vals['canifollow_b'] = $vals['logged_b'] && !in_array($_SESSION['id'], array_merge($mem, $fol)); $vals['canshowmenu_b'] = $vals['logged_b'] && $_SESSION['id'] != $project->getOwner(); if (!$vals['singlepost_b'] && !$vals['followers_b'] && !$vals['interactions_b'] && !$vals['members_b']) { $vals['canwrite_b'] = $vals['logged_b'] && ($project->isOpen($gid) || in_array($_SESSION['id'], $mem) || $_SESSION['id'] == $project->getOwner()); $vals['canwriteissue_b'] = $vals['logged_b'] && $info->counter == Config\ISSUE_BOARD; $vals['canwritenews_b'] = !$vals['canwriteissue_b'] && $vals['logged_b'] && (in_array($_SESSION['id'], $mem) || $_SESSION['id'] == $project->getOwner()); } else { // don't show textarea when in a singlepost $vals['canwritenews_b'] = $vals['canwrite_b'] = $vals['canwriteissue_b'] = false; } // single post handling $found = false;
$prj = isset($_GET['project']); $vals = []; $vals['project_b'] = $prj; if ($prj) { $orderby = $orderby == 'time' ? 'groups_bookmarks.time' : $orderby; $query = empty($q) ? array('SELECT p.*, EXTRACT(EPOCH FROM groups_bookmarks.time) AS time FROM "groups_bookmarks" INNER JOIN "groups_posts" p ON p.hpid = groups_bookmarks.hpid WHERE groups_bookmarks.from = ? ORDER BY ' . $orderby . ' ' . $order . ' LIMIT ' . $limit, array($_SESSION['id'])) : array("SELECT p.*, EXTRACT(EPOCH FROM groups_bookmarks.time) AS time FROM groups_bookmarks INNER JOIN groups_posts p ON p.hpid = groups_bookmarks.hpid WHERE groups_bookmarks.from = ? AND CAST({$orderby} AS TEXT) LIKE ? ORDER BY {$orderby} {$order} LIMIT {$limit}", array($_SESSION['id'], "%{$q}%")); $linkMethod = 'projectLink'; $nameMethod = 'getName'; $object = new Project(); } else { $orderby = $orderby == 'time' ? 'bookmarks.time' : $orderby; $query = empty($q) ? array("SELECT p.*, EXTRACT(EPOCH FROM bookmarks.time) AS time FROM bookmarks INNER JOIN posts p ON p.hpid = bookmarks.hpid WHERE bookmarks.from = ? ORDER BY {$orderby} {$order} LIMIT {$limit}", array($_SESSION['id'])) : array("SELECT p.*, EXTRACT(EPOCH FROM bookmarks.time) AS time FROM bookmarks INNER JOIN posts p ON p.hpid = bookmarks.hpid WHERE bookmarks.from = ? AND CAST({$orderby} AS TEXT) LIKE ? ORDER BY {$orderby} {$order} LIMIT {$limit}", array($_SESSION['id'], "%{$q}%")); $linkMethod = 'userLink'; $nameMethod = 'getUsername'; $object = $user; } $vals['list_a'] = []; if ($r = Db::query($query, Db::FETCH_STMT)) { $i = 0; while ($o = $r->fetch(PDO::FETCH_OBJ)) { $vals['list_a'][$i] = $messages->getPost($o, ['project' => $prj, 'truncate' => true]); $vals['list_a'][$i]['name_n'] = $object->{$nameMethod}($o->to); $vals['list_a'][$i]['preview_n'] = $messages->bbcode(htmlspecialchars(substr(html_entity_decode($o->message, ENT_QUOTES, 'UTF-8'), 0, 256), ENT_QUOTES, 'UTF-8') . '...', true); $vals['list_a'][$i]['link_n'] = '/' . Utils::$linkMethod($vals['list_a'][$i]['name_n']) . $o->pid; ++$i; } } \NERDZ\Core\Security::setNextAndPrevURLs($vals, $limit, ['order' => $order, 'query' => $q, 'field' => empty($_GET['orderby']) ? '' : $_GET['orderby'], 'validFields' => ['time']]); require_once $_SERVER['DOCUMENT_ROOT'] . '/pages/common/vars.php'; $user->getTPL()->assign($vals); $user->getTPL()->draw('profile/bookmarks');