Files
drmaterac.pl/modules/leobootstrapmenu/classes/BtmegamenuGroup.php
2025-01-06 20:47:25 +01:00

422 lines
15 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* 2007-2015 Leotheme
*
* NOTICE OF LICENSE
*
* Leo Bootstrap Menu
*
* DISCLAIMER
*
* @author leotheme <leotheme@gmail.com>
* @copyright 2007-2015 Leotheme
* @license http://leotheme.com - prestashop template provider
*/
if (!defined('_PS_VERSION_')) {
# module validation
exit;
}
class BtmegamenuGroup extends ObjectModel
{
public $title;
public $title_fo;
public $active;
public $hook;
public $position;
public $id_shop;
public $params;
//DONGD:: check call via appagebuilder
public $active_ap;
public $randkey;
public $data = array();
public $form_id;
const GROUP_STATUS_DISABLE = '0';
const GROUP_STATUS_ENABLE = '1';
/**
* @see ObjectModel::$definition
*/
public static $definition = array(
'table' => 'btmegamenu_group',
'primary' => 'id_btmegamenu_group',
'multilang' => true,
'fields' => array(
'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true),
//'hook' => array('type' => self::TYPE_STRING, 'lang' => false, 'validate' => 'isCleanHtml', 'required' => true, 'size' => 64),
'hook' => array('type' => self::TYPE_STRING, 'lang' => false, 'validate' => 'isCleanHtml', 'size' => 64),
'position' => array('type' => self::TYPE_INT),
'id_shop' => array('type' => self::TYPE_INT, 'validate' => 'isunsignedInt', 'required' => true),
'params' => array('type' => self::TYPE_HTML, 'lang' => false),
'active_ap' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
'randkey' => array('type' => self::TYPE_STRING, 'lang' => false, 'size' => 255),
'form_id' => array('type' => self::TYPE_STRING, 'lang' => false, 'size' => 255),
# Lang fields
'title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 255),
'title_fo' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
)
);
public function add($autodate = true, $null_values = false)
{
$res = parent::add($autodate, $null_values);
return $res;
}
public static function groupExists($id_group, $id_shop = null)
{
$req = 'SELECT gr.`id_btmegamenu_group` as id_group
FROM `'._DB_PREFIX_.'btmegamenu_group` gr
WHERE gr.`id_btmegamenu_group` = '.(int)$id_group;
if ($id_shop != null) {
$req .= ' AND gr.`id_shop` = '.(int)$id_shop;
}
$row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($req);
return ($row);
}
public static function getGroups($active, $id_shop = null)
{
// $this->context = Context::getContext();
if (!isset($id_shop)) {
$id_shop = Context::getContext()->shop->id;
}
$id_lang = Context::getContext()->language->id;
$req = 'SELECT *
FROM `'._DB_PREFIX_.'btmegamenu_group` gr
LEFT JOIN '._DB_PREFIX_.'btmegamenu_group_lang grl ON gr.id_btmegamenu_group = grl.id_btmegamenu_group AND grl.id_lang = '.(int)$id_lang.'
WHERE (`id_shop` = '.(int)$id_shop.')'.
($active ? ' AND gr.`active` = 1' : ' ').' ORDER BY gr.position';
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($req);
}
// public static function deleteAllSlider($id_group)
// {
// $sql = 'SELECT sl.`id_leoslideshow_slides` as id
// FROM `'._DB_PREFIX_.'leoslideshow_slides` sl
// WHERE sl.`id_group` = '.(int)$id_group;
// $sliders = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
// if ($sliders) {
// $where = '';
// foreach ($sliders as $sli) {
// # module validation
// $where .= $where ? ','.$sli['id'] : $sli['id'];
// }
// $sql = 'DELETE FROM `'._DB_PREFIX_.'leoslideshow_slides_lang` '
// .'WHERE `id_leoslideshow_slides` IN ('.$where.')';
// Db::getInstance()->execute($sql); # module validation
// }
// }
public function delete()
{
$res = true;
$sql = 'DELETE FROM `'._DB_PREFIX_.'btmegamenu_group` '
.'WHERE `id_btmegamenu_group` = '.(int)$this->id;
$res &= Db::getInstance()->execute($sql);
$sql = 'DELETE FROM `'._DB_PREFIX_.'btmegamenu_group_lang` '
.'WHERE `id_btmegamenu_group` = '.(int)$this->id;
$res &= Db::getInstance()->execute($sql);
// Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'btmegamenu` '
// .'WHERE `id_btmegamenu_group` = '.(int)$this->id);
//$this->deleteAllSlider((int)$this->id);
$sql = 'SELECT bt.`id_btmegamenu` as id
FROM `'._DB_PREFIX_.'btmegamenu` bt
WHERE bt.`id_group` = '.(int)$this->id;
$btmegamenu = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
if ($btmegamenu) {
$where = '';
foreach ($btmegamenu as $bt) {
# module validation
$where .= $where ? ','.(int)$bt['id'] : (int)$bt['id'];
}
$sql = 'DELETE FROM `'._DB_PREFIX_.'btmegamenu` '
.'WHERE `id_btmegamenu` IN ('.$where.')';
Db::getInstance()->execute($sql); # module validation
$sql = 'DELETE FROM `'._DB_PREFIX_.'btmegamenu_lang` '
.'WHERE `id_btmegamenu` IN ('.$where.')';
Db::getInstance()->execute($sql); # module validation
$sql = 'DELETE FROM `'._DB_PREFIX_.'btmegamenu_shop` '
.'WHERE `id_btmegamenu` IN ('.$where.')';
Db::getInstance()->execute($sql); # module validation
}
$res &= parent::delete();
return $res;
}
/**
* Get and validate StartWithSlide field.
*/
public static function showStartWithSlide($start_with_slide = 0, $slider = array())
{
$result = 1;
if (is_array($slider)) {
$start_with_slide = (int)$start_with_slide;
$slider_num = count($slider);
// 1 <= $start_with_slide <= $slider_num
if (1 <= $start_with_slide && $start_with_slide <= $slider_num) {
$result = $start_with_slide;
}
}
$result--; // index begin from 0
return $result;
}
public function getDelay()
{
$temp_result = Tools::jsonDecode(LeoSlideshowSlide::base64Decode($this->params), true);
$result = $temp_result['delay'];
return $result;
}
// public static function getGroupOption()
// {
// $result = array();
// $mod_group = new LeoSlideshowGroup();
// $groups = $mod_group->getGroups(null, null);
// foreach ($groups as $group) {
// $temp = array();
// $temp['id'] = $group['id_leoslideshow_groups'];
// $temp['name'] = $group['title'];
// $result[] = $temp;
// }
// return $result;
// }
/**
* Get group to frontend
*/
public static function getActiveGroupByHook($hook_name = '', $active = 1)
{
$id_shop = Context::getContext()->shop->id;
$id_lang = Context::getContext()->language->id;
$sql = '
SELECT *
FROM '._DB_PREFIX_.'btmegamenu_group gr
LEFT JOIN '._DB_PREFIX_.'btmegamenu_group_lang grl ON gr.id_btmegamenu_group = grl.id_btmegamenu_group AND grl.id_lang = '.(int)$id_lang.'
WHERE gr.id_shop = '.(int)$id_shop.'
AND gr.hook = "'.pSQL($hook_name).'"'.
($active ? ' AND gr.`active` = 1' : ' ').'
ORDER BY gr.position';
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
}
/**
* Get group to preview
*/
public static function getGroupByID($id_group)
{
$sql = '
SELECT *
FROM '._DB_PREFIX_.'btmegamenu_group gr
WHERE gr.id_btmegamenu_group = '.(int)$id_group;
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql);
}
// public function setData($data = array())
// {
// if (is_array($data)) {
// $this->data = $data;
// }
// return $this;
// }
// public function getData()
// {
// return $this->data;
// }
// public function beforeLoad()
// {
// $data = $this->data;
// #Timer
// if ($data['timer_show'] == LeoSlideshowConfig::TIMER_HIDE_AUTO) {
// $data['autoAdvance'] = 1;
// } elseif ($data['timer_show'] == LeoSlideshowConfig::TIMER_HIDE_STOP)
// $data['autoAdvance'] = 0;
// elseif ($data['timer_show'] == LeoSlideshowConfig::TIMER_SHOW_AUTO)
// $data['autoAdvance'] = 1;
// elseif ($data['timer_show'] == LeoSlideshowConfig::TIMER_SHOW_STOP)
// $data['autoAdvance'] = 0;
// # Navigator
// if ($data['navigator_type'] == LeoSlideshowConfig::IVIEW_NAV_THUMBNAIL) {
// $data['controlNavThumbs'] = 1;
// } elseif ($data['navigator_type'] == LeoSlideshowConfig::IVIEW_NAV_BULLET)
// $data['controlNavThumbs'] = 0;
// # Multi language
// $data['playLabel'] = LeoSlideshowHelper::l('Play');
// $data['pauseLabel'] = LeoSlideshowHelper::l('Pause');
// $data['closeLabel'] = LeoSlideshowHelper::l('Close');
// $data['nextLabel'] = LeoSlideshowHelper::l('Next');
// $data['previousLabel'] = LeoSlideshowHelper::l('Previous');
// $this->data = $data;
// return $this;
// }
// public function loadFrontEnd()
// {
// return $this->getData();
// }
public function count()
{
$sql = 'SELECT id_btmegamenu_group FROM '._DB_PREFIX_.'btmegamenu_group';
$groups = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
$number_groups = count($groups);
return $number_groups;
}
//DONGND:: reset params widget by group
// public function resetParamsWidget($id_shop = null)
// {
// $sql = '
// UPDATE `'._DB_PREFIX_.'btmegamenu_group`
// SET `params_widget`= ""
// WHERE `id_btmegamenu_group` = '.(int)$this->id.' AND `id_shop` = '.$id_shop.'';
// return Db::getInstance(_PS_USE_SQL_SLAVE_)->execute($sql);
// }
//DONGND:: get params widget by group
// public function getParamsWidget($id_shop = null)
// {
// $sql = 'SELECT `params_widget` FROM `'._DB_PREFIX_.'btmegamenu_group`
// WHERE `id_btmegamenu_group` = '.(int)$this->id.' AND `id_shop` = '.$id_shop;
// return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql);
// }
//DONGND:: get params widget by group
// public function updateParamsWidget($params, $id_shop = null)
// {
// $sql = 'UPDATE `'._DB_PREFIX_.'btmegamenu_group`
// SET `params_widget`= "'.$params.'"
// WHERE `id_btmegamenu_group` = '.(int)$this->id.' AND `id_shop` = '.$id_shop;
// return Db::getInstance(_PS_USE_SQL_SLAVE_)->execute($sql);
// }
//DONGND:: get last position of group
public static function getLastPosition($id_shop)
{
return (Db::getInstance()->getValue('SELECT MAX(position)+1 FROM `'._DB_PREFIX_.'btmegamenu_group` WHERE `id_shop` = '.(int)$id_shop));
}
//DONGND:: get all menu of group
public static function getMenuByGroup($id_group)
{
$sql = 'SELECT `id_btmegamenu`,`id_parent` FROM `'._DB_PREFIX_.'btmegamenu`
WHERE `id_group` = '.(int)$id_group.'
ORDER BY `id_parent` ASC';
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
}
//DONGND:: get all menu parent of group
public static function getMenuParentByGroup($id_group)
{
$sql = 'SELECT `id_btmegamenu`,`id_parent` FROM `'._DB_PREFIX_.'btmegamenu`
WHERE `id_group` = '.(int)$id_group.' AND `id_parent` = 0';
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
}
//DONGND:: set data for group when import
public static function setDataForGroup($group, $content, $override)
{
$languages = Language::getLanguages();
$lang_list = array();
foreach ($languages as $lang) {
# module validation
$lang_list[$lang['iso_code']] = $lang['id_lang'];
}
if (is_array($content['title'])) {
foreach ($content['title'] as $key => $title_item) {
if (isset($lang_list[$key])) {
$group->title[$lang_list[$key]] = $title_item;
}
}
} else {
foreach ($languages as $lang) {
$group->title[$lang['id_lang']] = $content['title'];
}
}
if (is_array($content['title_fo'])) {
foreach ($content['title_fo'] as $key => $title_item) {
if (isset($lang_list[$key])) {
$group->title_fo[$lang_list[$key]] = $title_item;
}
}
} else {
$group_title_fo = '';
foreach ($languages as $lang) {
if ($lang['iso_code'] == 'en') {
$group_title_fo = 'Categories';
}
if ($lang['iso_code'] == 'es') {
$group_title_fo = 'Categorías';
}
if ($lang['iso_code'] == 'fr') {
$group_title_fo = 'Catégories';
}
if ($lang['iso_code'] == 'de') {
$group_title_fo = 'Kategorien';
}
if ($lang['iso_code'] == 'it') {
$group_title_fo = 'Categorie';
}
if ($lang['iso_code'] == 'ar') {
$group_title_fo = 'ال<D8A7>?ئات';
}
$group->title_fo[$lang['id_lang']] = $group_title_fo;
}
}
// $group->title = $content['title'];
$group->id_shop = Context::getContext()->shop->id;
$group->hook = $content['hook'];
if (!$override) {
$group->position = self::getLastPosition(Context::getContext()->shop->id);
include_once(_PS_MODULE_DIR_.'leobootstrapmenu/libs/Helper.php');
$group->randkey = LeoBtmegamenuHelper::genKey();
}
$group->active = $content['active'];
$group->params = $content['params'];
// $group->params_widget = $content['params_widget'];
$group->active_ap = $content['active_ap'];
return $group;
}
public static function autoCreateKey()
{
$sql = 'SELECT '.self::$definition['primary'].' FROM '._DB_PREFIX_.bqSQL(self::$definition['table']).
' WHERE randkey IS NULL OR randkey = ""';
$rows = Db::getInstance()->executes($sql);
foreach ($rows as $row) {
$mod_group = new BtmegamenuGroup((int)$row[self::$definition['primary']]);
include_once(_PS_MODULE_DIR_.'leobootstrapmenu/libs/Helper.php');
$mod_group->randkey = LeoBtmegamenuHelper::genKey();
$mod_group->update();
}
}
}