Option.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. /**
  3. * Option.php UTF-8
  4. * Option
  5. *
  6. * @date : 2018/5/4 19:33
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\wap;
  13. use h5wap\wap\controller\GameController;
  14. use h5wap\wap\controller\NewsController;
  15. use huo\controller\common\Base;
  16. use huo\controller\game\CategoryCache;
  17. use huo\controller\game\Game;
  18. use huo\controller\game\GameCache;
  19. use huo\controller\gift\GiftCache;
  20. use huo\logic\posts\PostsLogic;
  21. use huolib\constant\OptionConst;
  22. class Option extends Base {
  23. /**
  24. * 获取配置值
  25. *
  26. * @param string $option_name 配置名
  27. * @param int $autoload 是否自动加载 1是 0否
  28. * @param bool $auto_add 是否自动添加
  29. * @param string $auto_add_data 自动添加配置值
  30. *
  31. * @return array
  32. */
  33. public function getOptionData($option_name = '', $autoload = 1, $auto_add = false, $auto_add_data = '') {
  34. if (empty($option_name)) {
  35. return null;
  36. }
  37. $option_name = trim($option_name);
  38. $_option_data = OptionCache::ins()->getInfoByOptionName($option_name, $autoload, $auto_add, $auto_add_data);
  39. return $_option_data;
  40. }
  41. /**
  42. * 保存配置值
  43. *
  44. * @param string $option_name
  45. * @param string $option_value
  46. *
  47. * @return bool|string
  48. */
  49. public function saveOptionData($option_name = '', $option_value = '') {
  50. if (empty($option_name)) {
  51. return '';
  52. }
  53. $option_name = trim($option_name);
  54. return OptionCache::ins()->updateOption($option_name, $option_value);
  55. }
  56. public function getValue($option_name) {
  57. if (empty($option_name)) {
  58. return '';
  59. }
  60. $option_name = trim($option_name);
  61. $_data = OptionCache::ins()->getInfoByOptionName($option_name);
  62. if (!empty($_data) && !empty($_data['option_value'])) {
  63. $_data = json_decode($_data['option_value'], true);
  64. }
  65. return $_data;
  66. }
  67. /**
  68. * 获取网站seo优化内容
  69. *
  70. * @param $option_name
  71. * @param $game_id
  72. * @param $gift_id
  73. * @param $news_id
  74. *
  75. * @return array|bool|mixed|string
  76. */
  77. public function getSeoValue($option_name, $game_id = 0, $gift_id = 0, $news_id = 0) {
  78. $_data = $this->getValue($option_name);
  79. if (empty($_data)) {
  80. return array();
  81. }
  82. $_data['title'] = $this->replaceSeoValue($_data['title'], $game_id, $gift_id, $news_id);
  83. $_data['keyword'] = $this->replaceSeoValue($_data['keyword'], $game_id, $gift_id, $news_id);
  84. $_data['description'] = $this->replaceSeoValue($_data['description'], $game_id, $gift_id, $news_id);
  85. return $_data;
  86. }
  87. /**
  88. * 统一替换seo优化中的变量
  89. *
  90. * @param $value
  91. * @param $game_id
  92. * @param $gift_id
  93. * @param $news_id
  94. *
  95. * @return mixed
  96. */
  97. private function replaceSeoValue($value, $game_id = 0, $gift_id = 0, $news_id = 0) {
  98. if (strpos($value, OptionConst::SEO_REPLACE_WEBNAME) !== false) {
  99. $_wap_basic = $this->getValue(OptionConst::WAP_BASIC);
  100. if (!empty($_wap_basic)) {
  101. $_site_title = $_wap_basic[OptionConst::WAP_BASIC_SITE_NAME];
  102. if (!empty($_site_title)) {
  103. $value = str_replace(OptionConst::SEO_REPLACE_WEBNAME, $_site_title, $value);
  104. }
  105. }
  106. }
  107. if (!empty($game_id)) {
  108. $_game_cache = GameCache::ins();
  109. $_game_data = $_game_cache->getInfoByAppId($game_id);
  110. if (!empty($_game_data)) {
  111. if (strpos($value, OptionConst::SEO_REPLACE_GAMENAME) !== false) {
  112. $_name = isset($_game_data['gamename']) ? $_game_data['gamename'] : $_game_data['name'];
  113. $value = str_replace(OptionConst::SEO_REPLACE_GAMENAME, $_name, $value);
  114. }
  115. if (strpos($value, OptionConst::SEO_REPLACE_GAMETYPE) !== false) {
  116. $_category_name = CategoryCache::ins()->getNameByIds(2, $_game_data['category']);
  117. if (is_array($_category_name) && count($_category_name)) {
  118. $_category_name = $_category_name[0];
  119. }
  120. if (!empty($_category_name)) {
  121. $value = str_replace(OptionConst::SEO_REPLACE_GAMETYPE, $_category_name, $value);
  122. }
  123. }
  124. }
  125. }
  126. if (strpos($value, OptionConst::SEO_REPLACE_GIFTNAME) !== false) {
  127. if (!empty($gift_id)) {
  128. $_gift_data = GiftCache::ins()->getInfoByGiftId($gift_id);
  129. if (!empty($_gift_data)) {
  130. $value = str_replace(OptionConst::SEO_REPLACE_GIFTNAME, $_gift_data['title'], $value);
  131. }
  132. }
  133. }
  134. if (strpos($value, OptionConst::SEO_REPLACE_NEWSNAME) !== false) {
  135. if (!empty($news_id)) {
  136. $_news_data = (new PostsLogic())->getDetail($news_id);
  137. if (!empty($_news_data)) {
  138. $value = str_replace(OptionConst::SEO_REPLACE_NEWSNAME, $_news_data['title'], $value);
  139. }
  140. }
  141. }
  142. return $value;
  143. }
  144. public function getValues($option_names) {
  145. if (empty($option_names) || !is_array($option_names)) {
  146. return '';
  147. }
  148. $_data = Array();
  149. foreach ($option_names as $option_name) {
  150. if (empty($_data)) {
  151. $_data[$option_name] = $this->getValue($option_name);
  152. }
  153. }
  154. return $_data;
  155. }
  156. }