public function copyPoll($tid, $newTid)
 {
     list($poll, $pollOption, $pollVoter) = $this->initInfo($tid);
     if (!$poll) {
         return;
     }
     Wind::import('SRV:poll.dm.PwPollDm');
     $pollDm = new PwPollDm();
     /* @var $pollDm PwPollDm */
     $pollDm->setVoterNum($poll['voter_num']);
     $pollDm->setIsViewResult($poll['isafter_view']);
     $pollDm->setIsIncludeImg($poll['isinclude_img']);
     $pollDm->setOptionLimit($poll['option_limit']);
     $pollDm->setRegtimeLimit($poll['regtime_limit']);
     $pollDm->setCreatedUserid($poll['created_userid']);
     $pollDm->setAppType($poll['app_type']);
     $pollDm->setExpiredTime($poll['expired_time']);
     $newPollid = $this->_getPollDS()->addPoll($pollDm);
     $optionVoter = array();
     foreach ($pollVoter as $value) {
         $optionVoter[$value['option_id']][] = $value['uid'];
     }
     Wind::import('SRV:poll.dm.PwPollOptionDm');
     foreach ($pollOption as $key => $value) {
         $pollOptionDm = new PwPollOptionDm();
         $pollOptionDm->setPollid($newPollid);
         $pollOptionDm->setVotedNum($value['voted_num']);
         $pollOptionDm->setContent($value['content']);
         $pollOptionDm->setImage($value['image']);
         $newOptionid = $this->_getPollOptionDs()->add($pollOptionDm);
         if (isset($optionVoter[$key]) && is_array($optionVoter[$key])) {
             $this->copyVoter($optionVoter[$key], $newPollid, $newOptionid);
         }
     }
     Wind::import('SRV:poll.dm.PwThreadPollDm');
     $threadPollDm = new PwThreadPollDm();
     $threadPollDm->setTid($newTid);
     $threadPollDm->setPollid($newPollid);
     $threadPollDm->setCreatedUserid($poll['created_userid']);
     $this->_getThreadPollDs()->addPoll($threadPollDm);
     return true;
 }
Beispiel #2
0
 /**
  * 批量更新
  *
  * @param array $optionids
  * @param PwPollOptionDm $dm
  */
 public function batchUpdate($optionids, PwPollOptionDm $dm)
 {
     if (empty($optionids) || !is_array($optionids)) {
         return false;
     }
     if (($result = $dm->beforeUpdate()) !== true) {
         return $result;
     }
     return $this->_getDao()->batchUpdate($optionids, $dm->getData());
 }
Beispiel #3
0
 /**
  * 重置选项投票数
  *
  * @param int $optionid
  */
 public function resetOptionVotedNum($optionid)
 {
     if (!$optionid) {
         return false;
     }
     $optionInfo = $this->_getPollOptionDs()->get($optionid);
     $votedNum = intval($optionInfo['voted_num']);
     $total = intval($this->_getPollVoterDs()->countUserByOptionid($optionid));
     if ($votedNum == $total) {
         return true;
     }
     wind::import('SRV:poll.dm.PwPollOptionDm');
     $dm = new PwPollOptionDm($optionid);
     /* @var $dm PwPollOptionDm */
     $dm->setVotedNum($total);
     return $this->_getPollOptionDs()->update($dm);
 }
Beispiel #4
0
 private function _updatePollOption($attachInfo)
 {
     $optionInfo = $this->info['option'];
     $optionData = $this->poll['option'];
     Wind::import('SRV:poll.dm.PwPollOptionDm');
     $deleteIds = array();
     foreach (array_keys($optionInfo) as $_id) {
         $attach = isset($attachInfo['optionpic'][$_id]) ? $attachInfo['optionpic'][$_id] : '';
         $optionContent = trim($optionData[$_id]);
         $isUpdate = $optionInfo[$_id]['content'] != $optionContent || $attach ? true : false;
         !$optionContent && ($deleteIds[] = $_id);
         if (!($isUpdate && $optionContent)) {
             continue;
         }
         $dm = new PwPollOptionDm($_id);
         /* @var $pwPollDm PwPollDm */
         $optionInfo[$_id]['content'] != $optionData[$_id] && $dm->setContent($optionData[$_id]);
         if ($attach) {
             $dm->setImage($attach['path']);
             $optionImgPath = $optionInfo[$_id]['image'];
             $optionImgPath && $this->_getPollService()->removeImg($optionImgPath);
         }
         $this->_getPollOptionDS()->update($dm);
     }
     if ($deleteIds) {
         $this->_getPollOptionDS()->batchDelete($deleteIds);
     }
     foreach ((array) $this->poll['newoption'] as $key => $value) {
         if (!$value) {
             continue;
         }
         $dm = new PwPollOptionDm();
         /* @var $pwPollDm PwPollDm */
         $image = isset($attachInfo['newoptionpic'][$key]) ? $attachInfo['newoptionpic'][$key]['path'] : '';
         $dm->setContent($value)->setPollid($this->info['poll_id'])->setImage($image);
         $this->_getPollOptionDS()->add($dm);
     }
     $this->_afterUpdate($this->info['poll_id']);
     return true;
 }
Beispiel #5
0
 public function deloptionimgAction()
 {
     list($pollid, $optionid) = $this->getInput(array('pollid', 'optionid'));
     $pollid = intval($pollid);
     $optionid = intval($optionid);
     if (!$pollid || !$optionid) {
         $this->showError('VOTE:fail');
     }
     $poll = $this->_getPollService()->getPoll($pollid);
     if (!$poll) {
         $this->showError('VOTE:thread.not.exist');
     }
     if ($poll['voter_num'] || $this->loginUser->uid != $poll['created_userid']) {
         $this->showError('VOTE:options.not.allow.delete');
     }
     $pollOptionDs = Wekit::load('poll.PwPollOption');
     /* @var $pollOptionDs PwPollOption */
     $option = $pollOptionDs->get($optionid);
     Wind::import('SRV:poll.dm.PwPollOptionDm');
     $dm = new PwPollOptionDm($optionid);
     $dm->setImage('');
     $this->_getPollOptionDS()->update($dm);
     //		$optionTotal = $pollOptionDs->countByPollid($pollid);
     //		if ($optionTotal < 3) $this->showError('VOTE:options.default.option.num');
     $option['image'] && $this->_getPollService()->removeImg($option['image']);
     $this->_afterDelete($pollid);
     $this->showMessage('success');
 }