/** * 喜欢增加策略 * Enter description here ... * @param PwUserBo $userBo * @param int $typeid * @param int $fromid */ public function addLike(PwUserBo $userBo, $typeid, $fromid = 0) { $uid = $userBo->uid; $likeDs = $this->_getLikeContentDs(); list($beLikeUid, $isspecial, $count, $fid, $extend) = $this->_getSourceInfo($typeid, $fromid); if ($beLikeUid == $uid) { return new PwError('BBS:like.fail.myself.post'); } $time = Pw::getTime(); //判断是否存在喜欢内容 $info = $likeDs->getInfoByTypeidFromid($typeid, $fromid); $likeid = isset($info['likeid']) ? (int) $info['likeid'] : 0; Wind::import('SRV:like.dm.PwLikeDm'); $dm = new PwLikeDm(); $dm->setTypeid($typeid)->setFromid($fromid)->setIsspecial($isspecial); if ($likeid < 1) { $likeid = $likeDs->addInfo($dm); } //判断是否喜欢过 $logInfo = $this->_getLikeLogDs()->getInfoByUidLikeid($uid, $likeid); if ($logInfo) { return new PwError('BBS:like.fail.already.liked'); } //写入喜欢记录 Wind::import('SRV:like.dm.PwLikeLogDm'); $logDm = new PwLikeLogDm(); $logDm->setUid($uid)->setLikeid($likeid)->setCreatedTime($time); $logid = $this->_getLikeLogDs()->addInfo($logDm); if ($logid < 1) { return new PwError('BBS:like.fail'); } //更新喜欢内容 $count++; $this->_updateLikeCount($typeid, $fromid, $count); $likeDs->updateUsers($likeid, $uid); //写入用户喜欢统计 Wind::import('SRV:user.dm.PwUserInfoDm'); $likeNumber = isset($userBo->info['likes']) ? intval($userBo->info['likes']) : 0; $likeNumber++; $infoDm = new PwUserInfoDm($uid); $infoDm->setLikes($likeNumber); $userDs = Wekit::load('user.PwUser'); $userDs->editUser($infoDm, PwUser::FETCH_DATA); //用户积分 Wind::import('SRV:forum.bo.PwForumBo'); $forumBo = new PwForumBo($fid); Wind::import('SRV:credit.bo.PwCreditBo'); $credit = PwCreditBo::getInstance(); $credit->operate('belike', new PwUserBo($beLikeUid), true, array('forumname' => $userBo->username), $forumBo->getCreditSet('belike')); $credit->execute(); //喜欢挂勾 $dm->setBeLikeUid($beLikeUid); //$this->_getHook()->runDo('addLike', $userBo, $dm); PwSimpleHook::getInstance('PwLikeService_addLike')->runDo($userBo, $dm); //喜欢后续操作 如果不需要排行,return true $this->setLikeBrand($likeid, $count, $typeid, $fromid); return array('likeCount' => $likeNumber, 'extend' => $extend); }
/** * 发送推送消息 */ public function afterPush($pushid) { $extend = ''; $pushDs = Wekit::load('design.PwDesignPush'); $push = $pushDs->getPush($pushid); if (!$push) { return false; } $thread = Wekit::load('forum.PwThread')->getThread($push['push_from_id']); if (!$thread) { return false; } $info = unserialize($push['push_extend']); $standard = unserialize($push['push_standard']); $sTitle = $info[$standard['sTitle']]; $sUrl = $info[$standard['sUrl']]; $user = Wekit::load('SRV:user.PwUser')->getUserByUid($push['created_userid']); Wind::import('SRV:credit.bo.PwCreditBo'); Wind::import('SRV:forum.bo.PwForumBo'); $credit = PwCreditBo::getInstance(); $operation = 'push_thread'; $forum = new PwForumBo($thread['fid']); $credit->operate($operation, PwUserBo::getInstance($thread['created_userid']), true, array('forumname' => $forum->foruminfo['name']), $forum->getCreditSet($operation)); $credit->execute(); $strategy = $credit->getStrategy($operation); foreach ((array) $strategy['credit'] as $k => $v) { $v && ($extend .= $credit->cType[$k] . '+' . $v); } //$bo->sets($push['author_uid'], $credit['credit']); if ($push['neednotice']) { $content = '恭喜,您的帖子<a href="' . $sUrl . '">' . Pw::substrs($sTitle, 20) . '</a>被<a href="' . WindUrlHelper::createUrl('space/index/run', array('uid' => $push['created_userid']), '', 'pw') . '">' . $user['username'] . '</a>执行 推送 操作。'; $extend && ($content .= '获得' . $extend); $title = '帖子《<a href="' . $sUrl . '">' . Pw::substrs($sTitle, 20) . '</a>》被推送'; Wekit::load('SRV:message.srv.PwNoticeService')->sendDefaultNotice($push['author_uid'], $content, $title); $pushDs->updateNeedNotice($pushid, 0); } return true; }
/** * 用户相关操作 */ private function _operateUser() { $operation = $this->digest == 1 ? 'digest_topic' : 'remove_digest'; $digestNum = $this->digest == 1 ? 1 : -1; Wind::import('SRV:credit.bo.PwCreditBo'); Wind::import('SRV:forum.bo.PwForumBo'); /* @var $userDs PwUser */ $userDs = Wekit::load('user.PwUser'); $credit = PwCreditBo::getInstance(); foreach ($this->threads as $thread) { //更新用户精华数 $userInfo = new PwUserInfoDm($thread['created_userid']); $userInfo->addDigest($digestNum); $userDs->editUser($userInfo, PwUser::FETCH_DATA); //更新用户积分 $forum = new PwForumBo($thread['fid']); $credit->operate($operation, PwUserBo::getInstance($thread['created_userid']), true, array('forumname' => $forum->foruminfo['name']), $forum->getCreditSet($operation)); $credit->execute(); } return true; }
/** * 更新积分 */ protected function _operateCredit($operate, PwForumBo $forum) { Wind::import('SRV:credit.bo.PwCreditBo'); $credit = PwCreditBo::getInstance(); $user = Wekit::getLoginUser(); $credit->operate($operate, $user, true, array('forumname' => $forum->foruminfo['name']), $forum->getCreditSet($operate)); $credit->execute(); }
/** * 积分操作 * * @param array $value 帖子 */ protected function _operateCredit($value) { Wind::import('SRV:forum.bo.PwForumBo'); $forum = new PwForumBo($value['fid']); PwCreditBo::getInstance()->operate('delete_topic', PwUserBo::getInstance($value['created_userid']), true, array('operator' => $this->srv->user->username, 'title' => $value['subject']), $forum->getCreditSet('delete_topic')); }