public function actionPostFeed() { if (EnvUtil::submitCheck("formhash")) { $return = array("isSuccess" => true, "data" => ""); $d["content"] = isset($_POST["content"]) ? StringUtil::filterDangerTag($_POST["content"]) : ""; $d["body"] = $_POST["body"]; $d["rowid"] = isset($_POST["rowid"]) ? intval($_POST["rowid"]) : 0; foreach ($_POST as $key => $val) { $_POST[$key] = StringUtil::filterCleanHtml($_POST[$key]); } $uid = Ibos::app()->user->uid; $user = User::model()->fetchByUid($uid); if (isset($_POST["view"])) { $_POST["view"] = $d["view"] = intval($_POST["view"]); if ($_POST["view"] == WbConst::SELFDEPT_VIEW_SCOPE) { $d["deptid"] = $user["deptid"]; } if ($_POST["view"] == WbConst::CUSTOM_VIEW_SCOPE) { $scope = StringUtil::getId($_POST["viewid"], true); if (isset($scope["u"])) { $d["userid"] = implode(",", $scope["u"]); } if (isset($scope["d"])) { $d["deptid"] = implode(",", $scope["d"]); } if (isset($scope["p"])) { $d["positionid"] = implode(",", $scope["p"]); } } } $d["source_url"] = isset($_POST["source_url"]) ? urldecode($_POST["source_url"]) : ""; $d["body"] = preg_replace("/#[\\s]*([^#^\\s][^#]*[^#^\\s])[\\s]*#/is", "#" . trim("\${1}") . "#", $d["body"]); if (isset($_POST["attachid"])) { $d["attach_id"] = trim(StringUtil::filterCleanHtml($_POST["attachid"])); if (!empty($d["attach_id"])) { $d["attach_id"] = explode(",", $d["attach_id"]); array_map("intval", $d["attach_id"]); } } $type = StringUtil::filterCleanHtml($_POST["type"]); $table = isset($_POST["table"]) ? StringUtil::filterCleanHtml($_POST["table"]) : "feed"; $module = isset($_POST["module"]) ? StringUtil::filterCleanHtml($_POST["module"]) : "weibo"; $data = Feed::model()->put(Ibos::app()->user->uid, $module, $type, $d, $d["rowid"], $table); if (!$data) { $return["isSuccess"] = false; $return["data"] = Feed::model()->getError("putFeed"); $this->ajaxReturn($return); } UserUtil::updateCreditByAction("addweibo", Ibos::app()->user->uid); $data["from"] = EnvUtil::getFromClient($data["from"], $data["module"]); $lang = Ibos::getLangSources(); $return["data"] = $this->renderPartial("feedlist", array("list" => array($data), "lang" => $lang), true); $return["feedid"] = $data["feedid"]; FeedTopic::model()->addTopic(html_entity_decode($d["body"], ENT_QUOTES, "UTF-8"), $data["feedid"], $type); $this->ajaxReturn($return); } }
protected function getData($var) { $data = array(); $type = isset($var["new"]) ? "new" . $var["type"] : $var["type"]; $where = "isdel = 0 AND uid = " . $this->getUid() . ($this->getIsMe() ? "" : " AND " . WbfeedUtil::getViewCondition(Ibos::app()->user->uid)); switch ($type) { case "all": $pages = PageUtil::create(WbConst::MAX_VIEW_FEED_NUMS, WbConst::DEF_LIST_FEED_NUMS); if (!empty($var["feedkey"])) { $loadId = isset($var["loadId"]) ? $var["loadId"] : 0; $list = Feed::model()->searchFeed($var["feedkey"], "all", $loadId, $var["nums"], $pages->getOffset(), "", $this->getUid()); $count = Feed::model()->countSearchAll($var["feedkey"], $loadId); } else { if (isset($var["loadId"]) && 0 < $var["loadId"]) { $where .= " AND feedid < '" . intval($var["loadId"]) . "'"; } if (!empty($var["feedtype"]) && $var["feedtype"] !== "all") { $where .= " AND type = '" . StringUtil::filterCleanHtml($var["feedtype"]) . "'"; } $list = Feed::model()->getList($where, $var["nums"], $pages->getOffset()); $count = Feed::model()->count($where); } break; case "movement": $pages = PageUtil::create(WbConst::MAX_VIEW_FEED_NUMS, WbConst::DEF_LIST_FEED_NUMS); if (!empty($var["feedkey"])) { $loadId = isset($var["loadId"]) ? $var["loadId"] : 0; $list = Feed::model()->searchFeed($var["feedkey"], "movement", $loadId, $var["nums"], $pages->getOffset(), "", $this->getUid()); $count = Feed::model()->countSearchMovement($var["feedkey"], $loadId); } else { if (isset($var["loadId"]) && 0 < $var["loadId"]) { $where .= " AND feedid < '" . intval($var["loadId"]) . "'"; } if (!empty($var["feedtype"]) && $var["feedtype"] !== "all") { $where .= " AND module = '" . StringUtil::filterCleanHtml($var["feedtype"]) . "'"; } else { $where .= " AND module != 'weibo'"; } $list = Feed::model()->getList($where, $var["nums"], $pages->getOffset()); $count = Feed::model()->count($where); } break; case "newmovement": if (0 < $var["maxId"]) { $where = sprintf("isdel = 0 AND %s AND feedid > %d AND uid = %d", WbfeedUtil::getViewCondition(Ibos::app()->user->uid), intval($var["maxId"]), $this->uid); $list = Feed::model()->getList($where); $count = Feed::model()->count($where); $data["count"] = count($list); } break; case "newall": if (0 < $var["maxId"]) { $where = sprintf("isdel = 0 %s AND feedid > %d AND uid = %d", $this->getIsMe() ? "" : " AND " . WbfeedUtil::getViewCondition(Ibos::app()->user->uid), intval($var["maxId"]), $this->getUid()); $list = Feed::model()->getList($where); $count = Feed::model()->countFollowingFeed($where); $data["count"] = count($list); } break; default: break; } $count = isset($count) ? $count : WbConst::MAX_VIEW_FEED_NUMS; $pages = PageUtil::create($count, WbConst::DEF_LIST_FEED_NUMS); if (!isset($var["new"])) { $pages->route = "personal/index"; $currentUrl = (string) Ibos::app()->getRequest()->getUrl(); $replaceUrl = str_replace("weibo/personal/loadmore", "weibo/personal/index", $currentUrl); $data["pageData"] = $this->widget("IWPage", array("pages" => $pages, "currentUrl" => $replaceUrl), true); } if (!empty($list)) { $data["firstId"] = $list[0]["feedid"]; $data["lastId"] = $list[count($list) - 1]["feedid"]; $feedids = ConvertUtil::getSubByKey($list, "feedid"); $diggArr = FeedDigg::model()->checkIsDigg($feedids, $this->getUid()); foreach ($list as &$v) { switch ($v["module"]) { case "mobile": break; default: $v["from"] = EnvUtil::getFromClient($v["from"], $v["module"]); break; } } $data["html"] = $this->renderPartial("application.modules.message.views.feed.feedlist", array("list" => $list, "diggArr" => $diggArr), true); } else { $data["html"] = ""; $data["firstId"] = $data["lastId"] = 0; } return $data; }
} ?> <p> <?php echo StringUtil::filterCleanHtml($sourceInfo["source_content"]); ?> </p> </div> <div class="wb-info-ads clearfix"> <div class="wb-info-from pull-left"> <span><?php echo $sourceInfo["ctime"]; ?> </span> <span> <?php echo EnvUtil::getFromClient($sourceInfo["from"], $sourceInfo["module"]); ?> </span> </div> <div class="wb-handle pull-right"> <a href="<?php echo Ibos::app()->urlManager->createUrl("weibo/personal/feed", array("uid" => $sourceInfo["uid"], "feedid" => $sourceInfo["feedid"])); ?> " target="_blank"> <i class="o-wbi-frow"></i> 转发( <?php echo $sourceInfo["repostcount"]; ?> ) </a> <a href="<?php
protected function getData($var) { $data = array(); $type = isset($var["new"]) ? "new" . $var["type"] : $var["type"]; switch ($type) { case "following": $pages = PageUtil::create(1000, WbConst::DEF_LIST_FEED_NUMS); if (!empty($var["feedkey"])) { $list = Feed::model()->searchFeed($var["feedkey"], "following", $var["loadId"], $var["nums"], $pages->getOffset()); } else { $where = "a.isdel = 0 AND " . WbfeedUtil::getViewCondition($this->uid, "a."); if (isset($var["loadId"]) && 0 < $var["loadId"]) { $where .= " AND a.feedid < '" . intval($var["loadId"]) . "'"; } if (!empty($var["feedtype"]) && $var["feedtype"] !== "all") { $where .= " AND a.type = '" . $var["feedtype"] . "'"; } $list = Feed::model()->getFollowingFeed($where, $var["nums"], $pages->getOffset()); } break; case "all": $pages = PageUtil::create(WbConst::MAX_VIEW_FEED_NUMS, WbConst::DEF_LIST_FEED_NUMS); if (!empty($var["feedkey"])) { $list = Feed::model()->searchFeed($var["feedkey"], "all", $var["loadId"], $var["nums"], $pages->getOffset()); } else { $where = "isdel = 0 AND " . WbfeedUtil::getViewCondition($this->uid); if (isset($var["loadId"]) && 0 < $var["loadId"]) { $where .= " AND feedid < '" . intval($var["loadId"]) . "'"; } if (!empty($var["feedtype"]) && $var["feedtype"] !== "all") { $where .= " AND type = '" . StringUtil::filterCleanHtml($var["feedtype"]) . "'"; } $list = Feed::model()->getList($where, $var["nums"], $pages->getOffset()); } break; case "movement": $pages = PageUtil::create(WbConst::MAX_VIEW_FEED_NUMS, WbConst::DEF_LIST_FEED_NUMS); if (!empty($var["feedkey"])) { $list = Feed::model()->searchFeed($var["feedkey"], "movement", $var["loadId"], $var["nums"], $pages->getOffset()); } else { $where = "isdel = 0 AND " . WbfeedUtil::getViewCondition($this->uid); if (isset($var["loadId"]) && 0 < $var["loadId"]) { $where .= " AND feedid < '" . intval($var["loadId"]) . "'"; } if (!empty($var["feedtype"]) && $var["feedtype"] !== "all") { $where .= " AND module = '" . StringUtil::filterCleanHtml($var["feedtype"]) . "'"; } else { $where .= " AND module != 'weibo'"; } $list = Feed::model()->getList($where, $var["nums"], $pages->getOffset()); } break; case "newmovement": if (0 < $var["maxId"]) { $where = sprintf("isdel = 0 AND %s AND feedid > %d", WbfeedUtil::getViewCondition($this->uid), intval($var["maxId"]), $this->uid); $list = Feed::model()->getList($where); $data["count"] = count($list); } break; case "newfollowing": $where = "a.isdel = 0 AND " . WbfeedUtil::getViewCondition($this->uid, "a."); if (0 < $var["maxId"]) { $where .= " AND a.feedid > '" . intval($var["maxId"]) . "'"; $list = Feed::model()->getFollowingFeed($where); $data["count"] = count($list); } break; case "newall": if (0 < $var["maxId"]) { $where = sprintf("isdel = 0 AND %s AND feedid > %d AND uid <> %d", WbfeedUtil::getViewCondition($this->uid), intval($var["maxId"]), $this->uid); $list = Feed::model()->getList($where); $data["count"] = count($list); } break; default: break; } if (!isset($var["new"])) { $pages->route = "home/index"; } if (!empty($list)) { $data["firstId"] = $list[0]["feedid"]; $data["lastId"] = $list[count($list) - 1]["feedid"]; $feedids = ConvertUtil::getSubByKey($list, "feedid"); $diggArr = FeedDigg::model()->checkIsDigg($feedids, $this->uid); foreach ($list as &$v) { switch ($v["module"]) { case "mobile": break; default: $v["from"] = EnvUtil::getFromClient($v["from"], $v["module"]); break; } if (isset($v["attach_id"][0])) { $_tmp = AttachUtil::getAttachData($v["attach_id"][0]); $v["attach_url"] = FileUtil::getAttachUrl() . "/" . $_tmp[$v["attach_id"][0]]["attachment"]; } if (isset($v["api_source"]["attach"][0]["attach_url"])) { $v["api_source"]["attach_url"] = $v["api_source"]["attach"][0]["attach_url"]; unset($v["api_source"]["attach"]); unset($v["api_source"]["source_body"]); } unset($v["user_info"]); unset($v["body"]); unset($v["sourceInfo"]); unset($v["api_source"]["source_user_info"]); unset($v["api_source"]["avatar_big"]); unset($v["api_source"]["avatar_middle"]); unset($v["api_source"]["avatar_small"]); unset($v["api_source"]["source_url"]); unset($v["feeddata"]); } $data["list"] = $list; $data["diggArr"] = $diggArr; } else { $data["list"] = array(); $data["firstId"] = $data["lastId"] = 0; } return $data; }
public function shareFeed($data, $from = "share", $lessUids = null) { $return = array("isSuccess" => false, "data" => "转发失败"); if (empty($data["sid"])) { return $return; } $type = StringUtil::filterCleanHtml($data["type"]); $table = isset($data["table"]) ? $data["table"] : $type; $module = isset($data["module"]) ? $data["module"] : "weibo"; $forApi = isset($data["forApi"]) && $data["forApi"] ? true : false; if (!($oldInfo = Source::getSourceInfo($table, $data["sid"], $forApi, $data["module"]))) { $return["data"] = "此信息不可以被转发"; return $return; } $d["content"] = isset($data["content"]) ? str_replace(Ibos::app()->setting->get("siteurl"), "[SITE_URL]", $data["content"]) : ""; $d["body"] = str_replace(Ibos::app()->setting->get("siteurl"), "[SITE_URL]", $data["body"]); $feedType = "repost"; if (!empty($oldInfo["feedType"]) && !in_array($oldInfo["feedType"], array("post", "postimage"))) { $feedType = $oldInfo["feedType"]; } $d["sourceInfo"] = !empty($oldInfo["sourceInfo"]) ? $oldInfo["sourceInfo"] : $oldInfo; $isOther = $from == "comment" ? false : true; $d["curid"] = $data["curid"]; if ($oldInfo["rowid"] == 0) { $id = $oldInfo["source_id"]; $table = $oldInfo["source_table"]; } else { $id = $oldInfo["rowid"]; $table = $oldInfo["table"]; } $d["from"] = isset($data["from"]) ? intval($data["from"]) : 0; $res = $this->put(Ibos::app()->user->uid, $module, $feedType, $d, $id, $table, null, $lessUids, $isOther, 1); if ($res) { if (isset($data["comment"])) { $c["module"] = $module; $c["moduleuid"] = $data["curid"]; $c["table"] = "feed"; $c["uid"] = $oldInfo["uid"]; $c["content"] = !empty($d["body"]) ? $d["body"] : $d["content"]; $c["rowid"] = !empty($oldInfo["sourceInfo"]) ? $oldInfo["sourceInfo"]["source_id"] : $id; $c["from"] = EnvUtil::getVisitorClient(); $notCount = $from == "share" ? $data["comment"] == 1 ? false : true : false; Comment::model()->addComment($c, false, $notCount, $lessUids); } FeedTopic::model()->addTopic(html_entity_decode($d["body"], ENT_QUOTES), $res["feedid"], $feedType); $rdata = $res; $rdata["feedid"] = $res["feedid"]; $rdata["rowid"] = $data["sid"]; $rdata["table"] = $data["type"]; $rdata["module"] = $module; $rdata["isrepost"] = 1; switch ($module) { case "mobile": break; default: $rdata["from"] = EnvUtil::getFromClient($from, $module); break; } $return["data"] = $rdata; $return["isSuccess"] = true; if ($module == "weibo" && $type == "feed") { $this->updateCounters(array("repostcount" => 1), "feedid = " . $data["sid"]); $this->cleanCache($data["sid"]); if ($data["curid"] != $data["sid"] && !empty($data["curid"])) { $this->updateCounters(array("repostcount" => 1), "feedid = " . $data["curid"]); $this->cleanCache($data["curid"]); } } } else { $return["data"] = $this->getError("putFeed"); } return $return; }