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; }
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; }
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'); }