brand_helper.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2016/12/28
  6. * Time: 下午12:31
  7. */
  8. require_once(BASE_ROOT_PATH . '/helper/img_helper.php');
  9. require_once(BASE_ROOT_PATH . '/helper/special_helper.php');
  10. require_once(BASE_ROOT_PATH . '/helper/time_interval.php');
  11. class brand_helper
  12. {
  13. static private $stInstance = null;
  14. private $mBrandPageResult;
  15. private $mTimeInterval;
  16. private $mCountries;
  17. private function __construct()
  18. {
  19. $this->mTimeInterval = new time_interval(60);
  20. }
  21. static public function instance()
  22. {
  23. if (self::$stInstance == null) {
  24. self::$stInstance = new brand_helper();
  25. }
  26. if (self::$stInstance->mTimeInterval->need_init()) {
  27. self::$stInstance->init();
  28. }
  29. return self::$stInstance;
  30. }
  31. public function country($brand_id)
  32. {
  33. $brand_id = intval($brand_id);
  34. if(array_key_exists($brand_id,$this->mCountries)) {
  35. return $this->mCountries[$brand_id];
  36. } else {
  37. return '';
  38. }
  39. }
  40. private function init()
  41. {
  42. $prefix = 'mb_';
  43. $ret = rcache('brandex', $prefix);
  44. if (empty($ret) || empty($this->mCountries)) {
  45. $model = Model('brand');
  46. $items = $model->field('brand_id,brand_logo,brand_name,brand_country')->where(array('brand_apply' => '1'))->order('brand_sort asc')->limit(false)->select();
  47. $this->mCountries = [];
  48. $brands = [];
  49. foreach ($items as $brand)
  50. {
  51. if(empty($brand['brand_logo'])) continue;
  52. $image = UPLOAD_SITE_URL . $brand['brand_logo'];
  53. $ret = @getimagesize($image, $info);
  54. if ($ret != false) {
  55. $brand['brand_logo'] = $image;
  56. $brands[] = $brand;
  57. } else {
  58. Log::record("cant getimagesize {$image}." ,Log::ERR);
  59. }
  60. $brand_id = intval($brand['brand_id']);
  61. $this->mCountries[$brand_id] = $brand['brand_country'];
  62. }
  63. $block = special_formater::format_grid_brands($brands);
  64. wcache("brandex", array("brands" => serialize($brands), "block" => serialize($block)), $prefix);
  65. $result = array("brands" => $brands, "block" => $block);
  66. } else {
  67. $brands = unserialize($ret['brands']);
  68. $block = unserialize($ret['block']);
  69. $result = array("brands" => $brands, "block" => $block);
  70. }
  71. $this->mBrandPageResult = $result;
  72. }
  73. public function brandex()
  74. {
  75. return $this->mBrandPageResult;
  76. }
  77. //////////for old interface/////////////////////////////////////////////////////////////////////////////////////////
  78. static function brands()
  79. {
  80. $prefix = 'mb_';
  81. $ret = rcache('brand', $prefix);
  82. if (empty($ret)) {
  83. $model = Model();
  84. $brand_area_list = $model->table('brand_area')->order('area_sort asc')->limit(false)->select();
  85. $filed = 'brand_id,brand_name,brand_pic,brand_img_bg,brand_img_logo,brand_area_id';
  86. $brand_c_list = $model->table('brand')->field($filed)->where(array('brand_apply' => '1'))->order('brand_sort asc')->limit(false)->select();
  87. $brands = array();
  88. foreach ($brand_area_list as $brand_area) {
  89. foreach ($brand_c_list as $brand) {
  90. $brand['brand_pic'] = image_helper::format_brand_img_rect($brand['brand_pic']);
  91. $brand['brand_img_bg'] = image_helper::format_brand_img_bg($brand['brand_img_bg']);
  92. $brand['brand_img_logo'] = image_helper::format_brand_img_circle($brand['brand_img_logo']);
  93. if ($brand['brand_area_id'] == $brand_area['area_id']) {
  94. if (empty($brand_area['data'])) {
  95. $brand_area['data'] = array();
  96. }
  97. array_push($brand_area['data'], $brand);
  98. }
  99. }
  100. if (!empty($brand_area['data'])) {
  101. array_push($brands, $brand_area);
  102. }
  103. }
  104. wcache("brand", array("brands" => serialize($brands)), $prefix);
  105. } else {
  106. $brands = unserialize($ret['brands']);
  107. }
  108. return $brands;
  109. }
  110. }