PageRenderTime 44ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/store/catalog/controller/module/journal2_side_blocks.php

https://bitbucket.org/learn1thing/learn1thing
PHP | 145 lines | 110 code | 32 blank | 3 comment | 25 complexity | 298eb043085c78725687c5b180ea8cce MD5 | raw file
Possible License(s): Apache-2.0, LGPL-2.1, BSD-3-Clause, GPL-3.0, MPL-2.0-no-copyleft-exception
  1. <?php
  2. /* @property ModelCatalogManufacturer model_catalog_manufacturer */
  3. /* @property ModelCatalogCategory model_catalog_category */
  4. class ControllerModuleJournal2SideBlocks extends Controller {
  5. private static $CACHEABLE = null;
  6. protected $data = array();
  7. protected function render() {
  8. if (version_compare(VERSION, '2.2', '<')) {
  9. $this->template = $this->config->get('config_template') . '/template/' . $this->template;
  10. }
  11. $this->template = str_replace($this->config->get('config_template') . '/template/' . $this->config->get('config_template') . '/template/', $this->config->get('config_template') . '/template/', $this->template);
  12. return Front::$IS_OC2 ? $this->load->view($this->template, $this->data) : parent::render();
  13. }
  14. public function __construct($registry) {
  15. parent::__construct($registry);
  16. if (!defined('JOURNAL_INSTALLED')) {
  17. return;
  18. }
  19. $this->load->model('journal2/module');
  20. $this->load->model('journal2/menu');
  21. if (self::$CACHEABLE === null) {
  22. self::$CACHEABLE = (bool)$this->journal2->settings->get('config_system_settings.side_blocks_cache');
  23. }
  24. }
  25. public function index($setting) {
  26. if (!defined('JOURNAL_INSTALLED')) {
  27. return;
  28. }
  29. if (Journal2Cache::$mobile_detect->isMobile()) return;
  30. Journal2::startTimer(get_class($this));
  31. $this->journal2->html_classes->addClass('side-blocks-active');
  32. /* get module data from db */
  33. $module_data = $this->model_journal2_module->getModule($setting['module_id']);
  34. if (!$module_data || !isset($module_data['module_data']) || !$module_data['module_data']) return;
  35. $cache_property = "module_journal_side_blocks_{$setting['module_id']}_{$setting['layout_id']}_{$setting['position']}";
  36. $cache = $this->journal2->cache->get($cache_property);
  37. if ($cache === null || self::$CACHEABLE !== true) {
  38. $module = mt_rand();
  39. $this->data['module_id'] = $setting['module_id'];
  40. $css = array();
  41. if (Journal2Utils::getProperty($module_data, 'module_data.position')) {
  42. $css[] = 'position: ' . Journal2Utils::getProperty($module_data, 'module_data.position');
  43. }
  44. if (Journal2Utils::getProperty($module_data, 'module_data.offset_top')) {
  45. $css[] = 'top: ' . Journal2Utils::getProperty($module_data, 'module_data.offset_top', 0) . 'px';
  46. }
  47. $this->data['icon'] = Journal2Utils::getIconOptions2(Journal2Utils::getProperty($module_data, 'module_data.icon'));
  48. $this->data['icon_bgcolor'] = 'transparent';
  49. if (Journal2Utils::getProperty($module_data, 'module_data.icon_bg_color')) {
  50. $this->data['icon_bgcolor'] = Journal2Utils::getColor(Journal2Utils::getProperty($module_data, 'module_data.icon_bg_color'));
  51. }
  52. $this->data['icon_border'] = implode('; ', Journal2Utils::getBorderCssProperties(Journal2Utils::getProperty($module_data, 'module_data.icon_border')));
  53. $this->data['content_bgcolor'] = 'transparent';
  54. $position = Journal2Utils::getProperty($module_data, 'module_data.alignment', 'left');
  55. switch (Journal2Utils::getProperty($module_data, 'module_data.module_type', 'block')) {
  56. case 'button':
  57. $this->data['type'] = 'button';
  58. $this->data['url'] = $this->model_journal2_menu->getLink(Journal2Utils::getProperty($module_data, 'module_data.link'));
  59. $this->data['target'] = Journal2Utils::getProperty($module_data, 'module_data.new_window') ? 'target="_blank"' : '';
  60. if (Journal2Utils::getProperty($module_data, 'module_data.icon_bg_hover_color')) {
  61. $this->data['icon_bg_hover_color'] = Journal2Utils::getColor(Journal2Utils::getProperty($module_data, 'module_data.icon_bg_hover_color'));
  62. } else {
  63. $this->data['icon_bg_hover_color'] = false;
  64. }
  65. $offset = Journal2Utils::getProperty($module_data, 'module_data.offset_side', 0) . 'px';
  66. $css[] = "{$position}: {$offset}";
  67. break;
  68. case 'block':
  69. $this->data['type'] = 'block';
  70. $this->data['url'] = 'index.php?route=module/journal2_side_blocks/load&amp;module_id=' . $setting['module_id'];
  71. $this->data['content_padding'] = Journal2Utils::getProperty($module_data, 'module_data.content_padding', 0) . 'px';
  72. if (Journal2Utils::getProperty($module_data, 'module_data.content_width', 300)) {
  73. $css[] = 'width: ' . Journal2Utils::getProperty($module_data, 'module_data.content_width', 300) . 'px';
  74. $css[] = (Journal2Utils::getProperty($module_data, 'module_data.alignment') === 'left' ? 'left' : 'right') . ': -' . Journal2Utils::getProperty($module_data, 'module_data.content_width', 300) . 'px';
  75. }
  76. if (Journal2Utils::getProperty($module_data, 'module_data.content_bg_color')) {
  77. $this->data['content_bgcolor'] = Journal2Utils::getColor(Journal2Utils::getProperty($module_data, 'module_data.content_bg_color'));
  78. }
  79. break;
  80. }
  81. $this->data['icon_width'] = Journal2Utils::getProperty($module_data, 'module_data.icon_width', 50) . 'px';
  82. $this->data['icon_height'] = Journal2Utils::getProperty($module_data, 'module_data.icon_height', 50) . 'px';
  83. if ($position === 'left') {
  84. $this->data['pos_offset'] = 'right: -' . $this->data['icon_width'];
  85. } else {
  86. $this->data['pos_offset'] = 'left: -' . $this->data['icon_width'];
  87. }
  88. $this->data['module'] = $module;
  89. $this->data['alignment'] = Journal2Utils::getProperty($module_data, 'module_data.alignment');
  90. $this->data['css'] = implode('; ', $css);
  91. $this->template = 'journal2/module/side_blocks.tpl';
  92. if (self::$CACHEABLE === true) {
  93. $html = Minify_HTML::minify($this->render(), array(
  94. 'xhtml' => false,
  95. 'jsMinifier' => 'j2_js_minify'
  96. ));
  97. $this->journal2->cache->set($cache_property, $html);
  98. }
  99. } else {
  100. $this->template = 'journal2/cache/cache.tpl';
  101. $this->data['cache'] = $cache;
  102. }
  103. $output = $this->render();
  104. Journal2::stopTimer(get_class($this));
  105. return $output;
  106. }
  107. public function load() {
  108. $module_id = isset($this->request->get['module_id']) ? $this->request->get['module_id'] : -1;
  109. $module_data = $this->model_journal2_module->getModule($module_id);
  110. if (!$module_data || !isset($module_data['module_data']) || !$module_data['module_data']) return;
  111. $this->response->setOutput(Journal2Utils::getProperty($module_data, 'module_data.content.' . $this->config->get('config_language_id')));
  112. }
  113. }