function process($params, $options) { $qparams = Url::getRequestQueryParams(); $gpage = Url::tryQueryParam("gpage"); $gpage = empty($gpage) ? "1" : $gpage; $redis = new redis\Activity(); $pageSize = Config::getInstance()->get_value("main.page.items"); $paginator = new \com\indigloo\ui\Pagination($qparams, $pageSize); $zsetKey = Nest::score("post", "likes"); $members = $redis->getPagedZSet($zsetKey, $paginator); //first one is id, second one is score $count = 0; $scores = array(); $ids = array(); for ($i = 1; $i < sizeof($members); $i++) { if ($i % 2 == 0) { array_push($scores, $members[$i - 1]); } else { $itemId = $members[$i - 1]; $postId = PseudoId::decode($itemId); array_push($ids, $postId); } } //get post rows using ids $postDao = new \com\indigloo\sc\dao\Post(); $postDBRows = $postDao->getOnSearchIds($ids); $pageHeader = 'Most popular'; $pageBaseUrl = '/pub/popular'; $pageTitle = SeoData::getPageTitleWithNumber($gpage, "popular items"); $metaKeywords = SeoData::getHomeMetaKeywords(); $metaDescription = SeoData::getMetaDescriptionWithNumber($gpage, "popular items"); $file = APP_WEB_DIR . '/view/tiles-page.php'; include $file; }
case 2: $sortVariable = "likes"; break; case 3: $sortVariable = "comments"; break; case 4: $sortVariable = "posts"; break; case 5: $sortVariable = "followings"; break; default: $sortVariable = "followers"; } $zsetKey = Nest::score("user", $sortVariable); $members = $redis->getPagedZSet($zsetKey, $paginator); $count = 0; $scores = array(); $ids = array(); if (sizeof($members) >= 2) { // odd one is login_id // next one is score. for ($i = 1; $i < sizeof($members); $i++) { if ($i % 2 != 0) { $loginId = $members[$i - 1]; array_push($ids, $loginId); $scores[$loginId] = isset($members[$i]) ? $members[$i] : 0; } } }
function addComment($loginId, $itemId, $feed) { $redis = Redis::getInstance()->connection(); //notify post subscribers + subject's followers $this->fanoutOnPost($redis, $loginId, $feed); $this->fanoutOnSubject($redis, $loginId, $feed); $key1 = Nest::subscribers("post", $itemId); $key2 = Nest::activities("user", $loginId); $key3 = Nest::feeds("post", $itemId); $key4 = Nest::score("post", "comments"); $key5 = Nest::score("user", "comments"); $redis->pipeline()->sadd($key1, $loginId)->lpush($key2, $feed)->lpush($key3, $feed)->zincrby($key4, 1, $itemId)->zincrby($key5, 1, $loginId)->uncork(); }
$sortVariable = "likes"; $pageSize = 25; $paginator = new \com\indigloo\ui\Pagination($qparams, $pageSize); $baseURI = "/monitor/analytic/posts.php"; $postDao = new \com\indigloo\sc\dao\Post(); switch ($tab) { case 1: $sortVariable = "likes"; break; case 2: $sortVariable = "comments"; break; default: $sortVariable = "likes"; } $zsetKey = Nest::score("post", $sortVariable); $members = $redis->getPagedZSet($zsetKey, $paginator); $count = 0; $scores = array(); $ids = array(); if (sizeof($members) >= 2) { for ($i = 1; $i < sizeof($members); $i++) { // odd ones are members // evens are scores if ($i % 2 != 0) { $itemId = $members[$i - 1]; $postId = PseudoId::decode($itemId); array_push($ids, $postId); //score is next one $scores[$itemId] = isset($members[$i]) ? $members[$i] : 0; }