Exemplo n.º 1
0
Arquivo: Bookmark.php Projeto: rjha/sc
 function execute($params)
 {
     $action = $params->action;
     $itemId = intval($params->itemId);
     $loginId = intval($params->loginId);
     $name = $params->name;
     if (empty($action) || empty($itemId) || empty($loginId) || empty($name)) {
         $message = "Bad input: missing required parameters.";
         $response = array("code" => 500, "message" => $message);
         return $response;
     }
     $bookmarkDao = new \com\indigloo\sc\dao\Bookmark();
     $postDao = new \com\indigloo\sc\dao\Post();
     $postId = PseudoId::decode($itemId);
     $postDBRow = $postDao->getOnId($postId);
     $title = $postDBRow["title"];
     $ownerId = $postDBRow["login_id"];
     $code = 200;
     switch ($action) {
         case UIConstants::LIKE_POST:
             $bookmarkDao->like($ownerId, $loginId, $name, $itemId, $title);
             $message = sprintf(" Success! Like for item %s done.", $title);
             break;
         default:
             break;
     }
     $response = array("code" => $code, "message" => $message);
     return $response;
 }
Exemplo n.º 2
0
Arquivo: Popular.php Projeto: rjha/sc
 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;
 }
Exemplo n.º 3
0
Arquivo: Lists.php Projeto: rjha/sc
 function process($params, $options)
 {
     if (is_null($params) || empty($params)) {
         $controller = new \com\indigloo\sc\controller\Http400();
         $controller->process();
         exit;
     }
     $plistId = Util::getArrayKey($params, "list_id");
     $listId = PseudoId::decode($plistId);
     $qparams = Url::getRequestQueryParams();
     $gpage = Url::tryQueryParam("gpage");
     $gpage = empty($gpage) ? "1" : $gpage;
     //@todo input check
     // people can type all sort of input garbage
     settype($listId, "int");
     $listDao = new \com\indigloo\sc\dao\Lists();
     $listDBRow = $listDao->getOnId($listId);
     if (empty($listDBRow)) {
         //not found
         $controller = new \com\indigloo\sc\controller\Http404();
         $controller->process();
         exit;
     }
     $listName = $listDBRow["name"];
     $listPubUrl = sprintf("%s/pub/list/%d/%s", Url::base(), $plistId, $listDBRow["seo_name"]);
     //get items from sc_list_item table
     $model = new \com\indigloo\sc\model\ListItem();
     $filter = new Filter($model);
     $filter->add($model::LIST_ID, Filter::EQ, $listId);
     $pageSize = Config::getInstance()->get_value("user.page.items");
     $filters = array();
     array_push($filters, $filter);
     $paginator = new \com\indigloo\ui\Pagination($qparams, $pageSize);
     $itemDBRows = $listDao->getPagedItems($paginator, $filters);
     $loginId = $listDBRow["login_id"];
     $userDao = new \com\indigloo\sc\dao\User();
     $userDBRow = $userDao->getOnLoginId($loginId);
     $template = APP_WEB_DIR . '/view/list/pub.php';
     //page variables
     $pageBaseUrl = $listPubUrl;
     $pageTitle = sprintf("page %d of %s", $gpage, $listDBRow["name"]);
     $description = Util::abbreviate($listDBRow["description"], 160);
     $metaDescription = SeoData::thisOrHomeDescription($description);
     $metaKeywords = SeoData::getHomeMetaKeywords();
     include $template;
 }
Exemplo n.º 4
0
}
printf("\n\n");
/*  
Do not select items that were liked but deleted in the iterim
select subject_id, object_id, verb  from sc_bookmark b,sc_post p 
where b.object_id = p.pseudo_id and b.verb = 1 ;
*/
$sql = "select subject_id, object_id  from sc_bookmark b,sc_post p ";
$sql .= " where b.object_id = p.pseudo_id and b.verb = 1 ";
$rows = MySQL\Helper::fetchRows($mysqli, $sql);
$t11 = " update sc_user_counter set like_count = like_count + 1 where login_id = %s ; ";
$t21 = " update sc_post_counter set like_count = like_count + 1 where post_id = %s ; ";
foreach ($rows as $row) {
    $t1sql = sprintf($t11, $row["subject_id"]);
    //sc_bookmark.object_id is pseudo_id
    $postId = PseudoId::decode($row["object_id"]);
    $t2sql = sprintf($t21, $postId);
    printf("%s \n", $t1sql);
    printf("%s \n", $t2sql);
}
printf("\n\n");
/* no concept of deleting the user in system as on 22 nov. 2012 */
$sql = " select follower_id, following_id from sc_follow ";
$rows = MySQL\Helper::fetchRows($mysqli, $sql);
$t1 = " update sc_user_counter set follower_count = follower_count + 1 where login_id = %s ; ";
$t2 = " update sc_user_counter set following_count = following_count + 1 where login_id = %s ; ";
foreach ($rows as $row) {
    $t1sql = sprintf($t1, $row["following_id"]);
    $t2sql = sprintf($t2, $row["follower_id"]);
    printf("%s \n", $t1sql);
    printf("%s \n", $t2sql);
Exemplo n.º 5
0
Arquivo: Activity.php Projeto: rjha/sc
 function getPostFeed($row)
 {
     $postDao = new \com\indigloo\sc\dao\Post();
     $itemId = $row["object_id"];
     $postId = PseudoId::decode($itemId);
     $image = $postDao->getImageOnId($postId);
     $feedVO = new \stdClass();
     $feedVO->subject = $row["subject"];
     $feedVO->subjectId = $row["subject_id"];
     $feedVO->object = "post";
     $feedVO->objectId = $row["object_id"];
     $feedVO->title = $row["object"];
     $feedVO->verb = $row["verb"];
     $feedVO->srcImage = $image["thumbnail"];
     $feedVO->nameImage = $image["name"];
     $feed = json_encode($feedVO);
     if ($feed === FALSE || $feed == 'null' || $feed == 'NULL') {
         //encoding went wrong
         $message = sprintf("problem with encoding activity row %d ", $row["id"]);
         trigger_error($message, E_USER_ERROR);
     }
     return $feed;
 }
Exemplo n.º 6
0
Arquivo: posts.php Projeto: rjha/sc
        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;
        }
    }
}
$rows = $postDao->getOnSearchIds($ids);
$pageNo = $paginator->getPageNo();
$startId = ($pageNo - 1) * $pageSize;
$endId = $startId + $pageSize - 1;
$rowsHtml = "";
$gNumRecords = sizeof($rows);
foreach ($rows as $row) {
    $score = isset($scores[$row["pseudo_id"]]) ? $scores[$row["pseudo_id"]] : 0;
    $rowsHtml .= \com\indigloo\sc\html\Post::getAdminWidget($row, $score);
Exemplo n.º 7
0
Arquivo: users.php Projeto: rjha/sc
            break;
        case "tainted":
            $filter = new Filter($model);
            $filter->add($model::TAINTED, Filter::EQ, 1);
            array_push($filters, $filter);
            $ftname = "Tainted";
            break;
        case "name":
            $filter = new Filter($model);
            $filter->add($model::USER_NAME, Filter::LIKE, $gtoken);
            array_push($filters, $filter);
            $ftname = "name:" . $gtoken;
            break;
        case "user":
            $filter = new Filter($model);
            $loginId = PseudoId::decode($userId);
            $filter->add($model::LOGIN_ID, Filter::EQ, $loginId);
            array_push($filters, $filter);
            $ftname = "user:"******"user.page.items");
$total = $userDao->getTotal($filters);
$paginator = new \com\indigloo\ui\Pagination($qparams, $pageSize);
$userDBRows = $userDao->getPaged($paginator, $filters);
$gtoken = "";
Exemplo n.º 8
0
Arquivo: detail.php Projeto: rjha/sc
use com\indigloo\sc\auth\Login;
use com\indigloo\ui\form\Message as FormMessage;
use com\indigloo\ui\form\Sticky;
use com\indigloo\ui\Filter;
use com\indigloo\sc\util\PseudoId;
$sticky = new Sticky($gWeb->find(Constants::STICKY_MAP, true));
$panelId = $sticky->get("panel_id");
$qparams = Url::getRequestQueryParams();
$gSessionLogin = \com\indigloo\sc\auth\Login::getLoginInSession();
$loginId = $gSessionLogin->id;
$loginName = $gSessionLogin->name;
if (is_null($loginId)) {
    trigger_error("Error : NULL or invalid login_id", E_USER_ERROR);
}
$plistId = Url::getQueryParam("list_id");
$listId = PseudoId::decode($plistId);
settype($listId, "int");
$listDao = new \com\indigloo\sc\dao\Lists();
$listDBRow = $listDao->getOnId($listId);
$listName = $listDBRow["name"];
//list owner check
if (!Login::isOwner($listDBRow["login_id"])) {
    header("Location: /site/error/403.html");
    exit;
}
$listPubUrl = sprintf("%s/pub/list/%d/%s", Url::base(), $plistId, $listDBRow["seo_name"]);
//get items from sc_list_item table
$model = new \com\indigloo\sc\model\ListItem();
$filter = new Filter($model);
$filter->add($model::LIST_ID, Filter::EQ, $listId);
$pageSize = Config::getInstance()->get_value("user.page.items");
Exemplo n.º 9
0
Arquivo: Post.php Projeto: rjha/sc
 function process($params, $options)
 {
     if (is_null($params) || empty($params)) {
         $controller = new \com\indigloo\sc\controller\Http400();
         $controller->process();
         exit;
     }
     $itemId = Util::getArrayKey($params, "item_id");
     if ($itemId < 1200) {
         //@todo remove permanent redirect
         $redirectUrl = "/item/" . PseudoId::encode($itemId);
         header("HTTP/1.1 301 Moved Permanently");
         header("Location: " . $redirectUrl);
         exit;
     }
     $postDao = new \com\indigloo\sc\dao\Post();
     $postId = PseudoId::decode($itemId);
     $postDBRow = $postDao->getOnId($postId);
     if (empty($postDBRow)) {
         //not found
         $controller = new \com\indigloo\sc\controller\Http404();
         $controller->process();
         exit;
     }
     $options = array();
     $options["group"] = true;
     $postView = \com\indigloo\sc\html\Post::createPostView($postDBRow, $options);
     // links is separate from postView for historical reasons
     $linksJson = $postDBRow['links_json'];
     $dblinks = json_decode($linksJson);
     $links = array();
     foreach ($dblinks as $link) {
         $link = Url::addHttp($link);
         array_push($links, $link);
     }
     /* data for facebook/google+ dialogs */
     $itemObj = new \stdClass();
     $itemObj->appId = Config::getInstance()->get_value("facebook.app.id");
     $itemObj->host = Url::base();
     /* google+ cannot redirect to local box */
     $itemObj->netHost = "http://www.3mik.com";
     $itemObj->callback = $itemObj->host . "/callback/fb-share.php";
     if ($postView->hasImage) {
         /* use original image for og snippets, smaller images may be ignored */
         /* facebook and google+ dialogs need absolute URL */
         $itemObj->picture = $postView->srcImage;
     } else {
         $itemObj->picture = $itemObj->host . "/css/asset/sc/logo.png";
     }
     //do not urlencode - as we use this value as canonical url
     $itemObj->link = $itemObj->host . "/item/" . $itemId;
     $itemObj->netLink = $itemObj->netHost . "/item/" . $itemId;
     // title in DB is 128 chars long.
     // here on page we want to use a 70 char title.
     // also used in item images alt text
     // item description should be 160 chars.
     $itemObj->title = Util::abbreviate($postView->title, 70);
     $itemObj->title = sprintf("item %s - %s", $itemId, $itemObj->title);
     $itemObj->description = Util::abbreviate($postView->description, 160);
     $itemObj->description = sprintf("item %s - %s by user %s", $itemId, $itemObj->description, $postView->userName);
     $strItemObj = json_encode($itemObj);
     //make the item json string form safe
     $strItemObj = Util::formSafeJson($strItemObj);
     /* likes data */
     $bookmarkDao = new \com\indigloo\sc\dao\Bookmark();
     $likeDBRows = $bookmarkDao->getLikeOnItemId($itemId);
     $gWeb = \com\indigloo\core\Web::getInstance();
     /* sticky is used by comment form */
     $sticky = new Sticky($gWeb->find(Constants::STICKY_MAP, true));
     $gRegistrationPopup = false;
     $loginIdInSession = \com\indigloo\sc\auth\Login::tryLoginIdInSession();
     //show registration popup
     if (is_null($loginIdInSession)) {
         $register_popup = $gWeb->find("sc:browser:registration:popup");
         $register_popup = is_null($register_popup) ? false : $register_popup;
         if (!$register_popup) {
             $gRegistrationPopup = true;
             $gWeb->store("sc:browser:registration:popup", true);
         }
     }
     $group_slug = $postDBRow["group_slug"];
     $groupDao = new \com\indigloo\sc\dao\Group();
     $group_names = $groupDao->tokenizeSlug($group_slug, ",", true);
     $pageTitle = $itemObj->title;
     $metaKeywords = SeoData::getMetaKeywords($group_names);
     $pageUrl = Url::base() . Url::current();
     $file = APP_WEB_DIR . '/view/item.php';
     include $file;
 }
Exemplo n.º 10
0
Arquivo: edit.php Projeto: rjha/sc
<?php

//sc/qa/comment/edit.php
include 'sc-app.inc';
include APP_WEB_DIR . '/inc/header.inc';
include APP_WEB_DIR . '/inc/role/user.inc';
use com\indigloo\Util;
use com\indigloo\Url;
use com\indigloo\ui\form\Sticky;
use com\indigloo\Constants;
use com\indigloo\ui\form\Message as FormMessage;
use com\indigloo\sc\auth\Login;
use com\indigloo\sc\util\PseudoId;
$sticky = new Sticky($gWeb->find(Constants::STICKY_MAP, true));
$encodedId = Url::getQueryParam("id");
$commentId = PseudoId::decode($encodedId);
$qUrl = Url::tryBase64QueryParam("q", "/");
$fUrl = Url::current();
$commentDao = new com\indigloo\sc\dao\Comment();
$commentDBRow = $commentDao->getOnId($commentId);
if (!(Login::isOwner($commentDBRow['login_id']) || Login::isAdmin())) {
    header("Location: /site/error/403.html");
    exit;
}
$sticky = new Sticky($gWeb->find(Constants::STICKY_MAP, true));
$itemId = PseudoId::encode($commentDBRow['post_id']);
?>

<!DOCTYPE html>
<html>
Exemplo n.º 11
0
Arquivo: Post.php Projeto: rjha/sc
 function getOnItemId($itemId)
 {
     $postId = PseudoId::decode($itemId);
     $row = mysql\Post::getOnId($postId);
     return $row;
 }
Exemplo n.º 12
0
Arquivo: Lists.php Projeto: rjha/sc
 function deleteItems($loginId, $listId, $itemsJson)
 {
     $items = json_decode($itemsJson);
     //get all the itemIds
     $itemIds = array();
     foreach ($items as $item) {
         $itemId = PseudoId::decode($item);
         array_push($itemIds, $itemId);
     }
     if (empty($itemIds)) {
         //@todo - throw error?
         return;
     }
     mysql\Lists::deleteItems($loginId, $listId, $itemIds);
 }
Exemplo n.º 13
0
Arquivo: User.php Projeto: rjha/sc
 private function processLists($params, $options)
 {
     $pubUserId = Util::getArrayKey($params, "login_id");
     $loginId = PseudoId::decode($pubUserId);
     $qparams = Url::getRequestQueryParams();
     $userDao = new \com\indigloo\sc\dao\User();
     $userDBRow = $userDao->getOnLoginId($loginId);
     $this->isValidUser($userDBRow);
     $gpage = Url::tryQueryParam("gpage");
     $gpage = empty($gpage) ? "1" : $gpage;
     $listDao = new \com\indigloo\sc\dao\Lists();
     $qparams = Url::getRequestQueryParams();
     $pageSize = Config::getInstance()->get_value("user.page.items");
     $paginator = new \com\indigloo\ui\Pagination($qparams, $pageSize);
     $listDBRows = $listDao->getPagedOnLoginId($paginator, $loginId);
     $template = APP_WEB_DIR . '/view/user/lists.php';
     //page variables
     $pageBaseUrl = "/pub/user/" . $pubUserId;
     $pageTitle = sprintf("page %d of lists by %s", $gpage, $userDBRow["name"]);
     $metaKeywords = SeoData::getHomeMetaKeywords();
     $metaDescription = SeoData::getHomeMetaDescription();
     include $template;
 }
Exemplo n.º 14
0
<?php

include 'sc-app.inc';
include APP_CLASS_LOADER;
use com\indigloo\sc\util\PseudoId;
if ($argc < 3) {
    printf("Usage : {$php} change.php <pseudo_id> <password> \n");
    exit;
}
$pseudoId = $argv[1];
$pseudoId = trim($pseudoId);
$password = $argv[2];
$loginId = PseudoId::decode($pseudoId);
//get email lookup on loginId
$userDao = new \com\indigloo\sc\dao\User();
$row = $userDao->getOnLoginId($loginId);
$email = $row["email"];
printf("change for login_id = %s, email = %s \n ", $loginId, $email);
$data = \com\indigloo\auth\User::changePassword("sc_user", $loginId, $email, $password);