mTitle = empty($content['title']) ? "" : $content['title']; $this->mImages = $this->add_size($content['images']); if(empty($content['images'])) { throw new Exception("上传的图片不能为空"); } } private function add_size($images) { $result = []; foreach ($images as $uri) { $img = new tools\fast_image($uri); list($width, $height) = $img->getSize(); if($width > 0 && $height > 0) { $uri .= "?{$width},{$height}"; } $result[] = $uri; } return $result; } public function add_image($image) { $this->mImages[] = $image; } public function format_block() { $image = $this->image(); if($image == false) return false; $params = $this->base_info(); $params['item_data'] = $this->item_data('image',$image,$this->mTitle); return $params; } private function image() { if(empty($this->mImages)) return false; return $this->mImages[0]; } public function type() { return 'image'; } } class text_item extends UGContent { private $mText; public function __construct($content) { parent::__construct($content); $this->mText = trim($content['text']); if(empty($this->mText)) { throw new Exception("输入文字内容不能为空"); } } public function format_block() { $data = $this->mText; if(empty($data)) return false; $params = $this->base_info(); $params['item_data'] = $this->item_data('text',$data,'','text',$data); return $params; } public function text() { return $this->mText; } public function type() { return 'text'; } } class goods_item extends UGContent { private $mGoodsID; private $mRecommend; public function __construct($content) { parent::__construct($content); $this->mGoodsID = intval($content['goods_id']); $this->mRecommend = $content['text']; if($this->mGoodsID <= 0) { throw new Exception("选择的商品不能为空"); } } function format_block($item_sort = 0) { $params = $this->base_info(); $params['item_data'] = $this->item_data('goods',$this->mGoodsID,'','goods',$this->mGoodsID,$this->mRecommend); return $params; } public function type() { return 'goods'; } } class voice_item extends UGContent { public function __construct($content) { parent::__construct($content); } public function format_block() { return false; } public function type() { return 'voice'; } } class video_item extends UGContent { private $mTitle; private $mVideo; private $mImage; public function __construct($content) { parent::__construct($content); $this->mTitle = empty($content['title']) ? "" : $content['title']; $this->mVideo = $content['video']; $this->mImage = $content['cover']; if(empty($content['video'])) { throw new Exception("上传视频内容不能为空"); } } public function set_images($images) { $this->mVideo = $images; } public function add_image($image) { $this->mVideo[] = $image; } public function format_block() { $url = $this->video(); if($url == false) return false; $params = $this->base_info(); $params['item_data'] = $this->item_data('image',$this->mImage,$this->mTitle,'video',$this->mVideo); return $params; } private function video() { if(empty($this->mVideo)) return false; return $this->mVideo; } public function type() { return 'video'; } } class vote_item extends UGContent { private $mTitle; private $mDeadline; private $mOptions; private $mType; private $mSingle; private $mVotekey; public function __construct($content,$vote_key) { parent::__construct($content); $this->mTitle = $content['title']; $this->mDeadline = intval($content['deadline']); $this->mType = intval($content['vote_type']); $this->mVotekey = $vote_key; if(isset($content['vote_single'])) { $this->mSingle = boolval($content['vote_single']); } else { $this->mSingle = true; } $options = $content['options']; $this->mOptions = []; $i = 0; foreach ($options as $val) { $val = trim($val); if(!empty($val)) { $this->mOptions[$i++] = $val; } } if(empty($this->mTitle)) { throw new Exception("投票必须设置标题"); } if(empty($this->mOptions || count($this->mOptions) <= 1)) { throw new Exception("投票最少需要两个选项"); } } public function format_block() { $options = $this->options(); if(empty($options)) return false; $data = json_encode($options,JSON_UNESCAPED_UNICODE); $params = $this->base_info(); $reserved = "vote_type={$this->mType}"; //#vote_key={$this->mVotekey} $params['item_data'] = $this->item_data('vote','',$this->mTitle,'vote',$data,$reserved); return $params; } public function vote_param() { return ['options' => $this->mOptions,'deadline' => $this->mDeadline,'vote_type' => $this->mType,'vote_single' => $this->mSingle]; } private function options() { $result = []; foreach ($this->mOptions as $key => $val) { $item = []; $item['id'] = $key; $item['text'] = $val; $result[] = $item; } return $result; } public function type() { return 'vote'; } public function vote_result() { $result = []; foreach ($this->mOptions as $key => $val) { $result[$key] = 0; } return $result; } public function vote_type() { return $this->mType; } } class question_item extends UGContent { private $mTitle; private $mOptions; private $mAnswers; public function __construct($content) { parent::__construct($content); $this->mTitle = $content['title']; $this->mOptions = $content['options']; $answer = $content['answers']; $this->mAnswers = []; foreach ($answer as $val) { $this->mAnswers[] = intval($val); } if(empty($this->mTitle)) { throw new Exception("选择题必须设置题目"); } if(empty($this->mAnswers || count($this->mAnswers) <= 1)) { throw new Exception("选择题最少需要设置两个选项"); } } private function options() { $result = []; $i = 0; foreach ($this->mOptions as $key => $val) { $item = []; $item['id'] = $i; $item['text'] = $val; $result[] = $item; $i++; } return $result; } private function answer_type() { return count($this->mAnswers) == 1 ? 0 : 1; } public function question() { $result['title'] = $this->mTitle; $result['options'] = $this->options(); return $result; } public function answer() { return $this->mAnswers; } public function format_block() { $options = $this->options(); if(empty($options)) return false; $data = json_encode($options,JSON_UNESCAPED_UNICODE); $params = $this->base_info(); $answer_type = $this->answer_type(); $reserved = "answer_type={$answer_type}"; $params['item_data'] = $this->item_data('question','',$this->mTitle,'question',$data,$reserved); return $params; } public function type() { return 'question'; } public function answers() { return $this->mAnswers; } } class href_item extends UGContent { private $mUrl; private $mImage; public function __construct($content) { parent::__construct($content); $this->mUrl = $content['url']; $this->mImage = $content['image']; if(empty($this->mUrl)) { throw new Exception("链接不能为空"); } if(empty($this->mImage)) { throw new Exception("图片不能为空"); } } public function format_block() { $data = $this->mUrl; if(empty($data)) return false; $params = $this->base_info(); $params['item_data'] = $this->item_data('image',$this->mImage,"",'url',$this->mUrl); return $params; } public function type() { return 'href'; } }