Example #1
0
 /**
  * 喜欢增加策略
  * 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'));
 }