* @version : HUOSDK 8.0 */ namespace huo\controller\wap; use h5wap\wap\controller\GameController; use h5wap\wap\controller\NewsController; use huo\controller\common\Base; use huo\controller\game\CategoryCache; use huo\controller\game\Game; use huo\controller\game\GameCache; use huo\controller\gift\GiftCache; use huo\logic\posts\PostsLogic; use huolib\constant\OptionConst; class Option extends Base { /** * 获取配置值 * * @param string $option_name 配置名 * @param int $autoload 是否自动加载 1是 0否 * @param bool $auto_add 是否自动添加 * @param string $auto_add_data 自动添加配置值 * * @return array */ public function getOptionData($option_name = '', $autoload = 1, $auto_add = false, $auto_add_data = '') { if (empty($option_name)) { return null; } $option_name = trim($option_name); $_option_data = OptionCache::ins()->getInfoByOptionName($option_name, $autoload, $auto_add, $auto_add_data); return $_option_data; } /** * 保存配置值 * * @param string $option_name * @param string $option_value * * @return bool|string */ public function saveOptionData($option_name = '', $option_value = '') { if (empty($option_name)) { return ''; } $option_name = trim($option_name); return OptionCache::ins()->updateOption($option_name, $option_value); } public function getValue($option_name) { if (empty($option_name)) { return ''; } $option_name = trim($option_name); $_data = OptionCache::ins()->getInfoByOptionName($option_name); if (!empty($_data) && !empty($_data['option_value'])) { $_data = json_decode($_data['option_value'], true); } return $_data; } /** * 获取网站seo优化内容 * * @param $option_name * @param $game_id * @param $gift_id * @param $news_id * * @return array|bool|mixed|string */ public function getSeoValue($option_name, $game_id = 0, $gift_id = 0, $news_id = 0) { $_data = $this->getValue($option_name); if (empty($_data)) { return array(); } $_data['title'] = $this->replaceSeoValue($_data['title'], $game_id, $gift_id, $news_id); $_data['keyword'] = $this->replaceSeoValue($_data['keyword'], $game_id, $gift_id, $news_id); $_data['description'] = $this->replaceSeoValue($_data['description'], $game_id, $gift_id, $news_id); return $_data; } /** * 统一替换seo优化中的变量 * * @param $value * @param $game_id * @param $gift_id * @param $news_id * * @return mixed */ private function replaceSeoValue($value, $game_id = 0, $gift_id = 0, $news_id = 0) { if (strpos($value, OptionConst::SEO_REPLACE_WEBNAME) !== false) { $_wap_basic = $this->getValue(OptionConst::WAP_BASIC); if (!empty($_wap_basic)) { $_site_title = $_wap_basic[OptionConst::WAP_BASIC_SITE_NAME]; if (!empty($_site_title)) { $value = str_replace(OptionConst::SEO_REPLACE_WEBNAME, $_site_title, $value); } } } if (!empty($game_id)) { $_game_cache = GameCache::ins(); $_game_data = $_game_cache->getInfoByAppId($game_id); if (!empty($_game_data)) { if (strpos($value, OptionConst::SEO_REPLACE_GAMENAME) !== false) { $_name = isset($_game_data['gamename']) ? $_game_data['gamename'] : $_game_data['name']; $value = str_replace(OptionConst::SEO_REPLACE_GAMENAME, $_name, $value); } if (strpos($value, OptionConst::SEO_REPLACE_GAMETYPE) !== false) { $_category_name = CategoryCache::ins()->getNameByIds(2, $_game_data['category']); if (is_array($_category_name) && count($_category_name)) { $_category_name = $_category_name[0]; } if (!empty($_category_name)) { $value = str_replace(OptionConst::SEO_REPLACE_GAMETYPE, $_category_name, $value); } } } } if (strpos($value, OptionConst::SEO_REPLACE_GIFTNAME) !== false) { if (!empty($gift_id)) { $_gift_data = GiftCache::ins()->getInfoByGiftId($gift_id); if (!empty($_gift_data)) { $value = str_replace(OptionConst::SEO_REPLACE_GIFTNAME, $_gift_data['title'], $value); } } } if (strpos($value, OptionConst::SEO_REPLACE_NEWSNAME) !== false) { if (!empty($news_id)) { $_news_data = (new PostsLogic())->getDetail($news_id); if (!empty($_news_data)) { $value = str_replace(OptionConst::SEO_REPLACE_NEWSNAME, $_news_data['title'], $value); } } } return $value; } public function getValues($option_names) { if (empty($option_names) || !is_array($option_names)) { return ''; } $_data = Array(); foreach ($option_names as $option_name) { if (empty($_data)) { $_data[$option_name] = $this->getValue($option_name); } } return $_data; } }