600 lines
23 KiB
PHP
600 lines
23 KiB
PHP
<?php
|
|
|
|
use KupShop\AdminBundle\AdminBlocksTrait;
|
|
use KupShop\AdminBundle\Util\AdminSectionTree;
|
|
use KupShop\AdminBundle\Util\BlocksHistory;
|
|
use KupShop\CatalogBundle\Util\SectionUtil;
|
|
use KupShop\ContentBundle\Util\BlocksTrait;
|
|
use KupShop\ContentBundle\Util\SliderUtil;
|
|
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
|
|
use KupShop\KupShopBundle\Util\System\UniqueUrlUtil;
|
|
use KupShop\RewriteBundle\Util\Rewrite;
|
|
use Query\Operator;
|
|
|
|
$main_class = 'sections';
|
|
|
|
class Sections extends Window
|
|
{
|
|
use BlocksTrait;
|
|
use AdminBlocksTrait;
|
|
|
|
private AdminSectionTree $adminSectionTree;
|
|
protected $show_on_web = 'category';
|
|
|
|
protected $defaults = [
|
|
'behaviour' => 2,
|
|
'orderby' => 'title',
|
|
'orderdir' => 'ASC',
|
|
'figure' => 'Y',
|
|
'show_in_search' => 'Y',
|
|
'lead_figure' => 'N',
|
|
'lead_products' => '',
|
|
'lead_products_figure' => 'N',
|
|
'producers_indexing' => 'N',
|
|
'producers_to_title' => 'N',
|
|
'data' => null,
|
|
'virtual' => 'N',
|
|
];
|
|
|
|
/** @var BlocksHistory */
|
|
private $blocksHistory;
|
|
private SectionUtil $sectionUtil;
|
|
private ?SliderUtil $sliders = null;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->blocksHistory = ServiceContainer::getService(BlocksHistory::class);
|
|
$this->adminSectionTree = ServiceContainer::getService(AdminSectionTree::class);
|
|
$this->sectionUtil = ServiceContainer::getService(SectionUtil::class);
|
|
|
|
if (findModule(\Modules::SLIDERS)) {
|
|
$this->sliders = ServiceContainer::getService(SliderUtil::class);
|
|
}
|
|
}
|
|
|
|
public function get_vars()
|
|
{
|
|
$vars = parent::get_vars();
|
|
|
|
$pageVars = getVal('body', $vars);
|
|
$acn = $this->getAction();
|
|
$ID = $this->getID();
|
|
if ($acn == 'edit' && $ID == 0) {
|
|
$pageVars['data'] = $this->getObject();
|
|
}
|
|
|
|
if ($acn == 'remove') {
|
|
$pageVars['tree'] = $this->adminSectionTree->getCategories();
|
|
}
|
|
|
|
$categoryView = ServiceContainer::getService(\KupShop\CatalogBundle\View\CategoryView::class);
|
|
$pageVars['sortOptions'] = $categoryView->getSortOptions();
|
|
|
|
if ($acn == 'remove' && !empty($ID)) {
|
|
$this->setTemplate('window/sectionErase.tpl');
|
|
|
|
$SQL = sqlQuery('SELECT * FROM '.getTableName('sections')." WHERE id='{$ID}' ");
|
|
foreach ($SQL as $row) {
|
|
$pageVars['data'] = $row;
|
|
}
|
|
|
|
$pageVars['isTopBranch'] = returnSQLResult('SELECT COUNT(*) FROM '.getTableName('sections_relation')." WHERE id_topsection='{$ID}' ");
|
|
$pageVars['deleteSubsections'] = getVal('deleteSubsections');
|
|
$pageVars['acn'] = 'erase';
|
|
} else {
|
|
$pageVars['data']['lead_products_figure'] = (isset($pageVars['data']['lead_products']) && $pageVars['data']['lead_products'] != '') ? 'Y' : 'N';
|
|
|
|
// Parameters
|
|
$qb = sqlQueryBuilder()
|
|
->select('*')
|
|
->from('parameters_sections')
|
|
->where(Operator::equals(['id_section' => $ID, 'filter' => 'Y']))
|
|
->orderBy('weight', 'ASC');
|
|
|
|
$parameters = [];
|
|
foreach ($qb->execute() as $row) {
|
|
$parameters[$row['id_parameter']] = [
|
|
'checked' => 1,
|
|
'weight' => $row['weight'],
|
|
];
|
|
|
|
if (findModule(Modules::INDEXED_FILTER)) {
|
|
$parameters[$row['id_parameter']] += [
|
|
'index_checked' => ($row['indexing'] == 'Y') ? true : false,
|
|
'toTitle_checked' => ($row['to_title'] == 'Y') ? true : false,
|
|
];
|
|
}
|
|
}
|
|
|
|
$SQL = sqlQuery('SELECT id, name, name_frontend, unit
|
|
FROM '.getTableName('parameters').'
|
|
ORDER BY name ASC ');
|
|
foreach ($SQL as $row) {
|
|
$parameters[$row['id']] = array_merge(getVal($row['id'], $parameters, []), $row);
|
|
}
|
|
|
|
$pageVars['parameters'] = $parameters;
|
|
|
|
// Variants
|
|
$SQL = sqlQuery('SELECT *
|
|
FROM '.getTableName('products_variations_sections')."
|
|
WHERE id_section='".$ID."'
|
|
ORDER BY weight ASC");
|
|
|
|
$variants = [];
|
|
while ($row = sqlFetchArray($SQL)) {
|
|
$variants[$row['id_label']] = [
|
|
'checked' => 1,
|
|
'weight' => $row['weight'],
|
|
];
|
|
|
|
if (findModule(Modules::INDEXED_FILTER)) {
|
|
$variants[$row['id_label']] += [
|
|
'index_checked' => ($row['indexing'] == 'Y') ? true : false,
|
|
'toTitle_checked' => ($row['to_title'] == 'Y') ? true : false,
|
|
];
|
|
}
|
|
|
|
if (findModule(Modules::CONVERTORS)) {
|
|
$variants[$row['id_label']] += [
|
|
'convertor' => $row['convertor'],
|
|
];
|
|
}
|
|
}
|
|
|
|
$SQL = sqlQuery('SELECT id, label
|
|
FROM '.getTableName('products_variations_choices_labels').'
|
|
WHERE 1');
|
|
foreach ($SQL as $row) {
|
|
$variants[$row['id']] = array_merge(getVal($row['id'], $variants, []), $row);
|
|
}
|
|
|
|
$pageVars['variants'] = $variants;
|
|
|
|
// Sections
|
|
$SQL = sqlQuery('SELECT id_topsection
|
|
FROM '.getTableName('sections_relation')."
|
|
WHERE id_section='{$ID}'");
|
|
$sections = getVal('sections', null, []);
|
|
foreach ($SQL as $row) {
|
|
$sections[] = $row['id_topsection'];
|
|
}
|
|
|
|
$pageVars['sections'] = array_filter($sections);
|
|
|
|
$data = &$pageVars['data'];
|
|
|
|
if (!empty($data['photo'])) {
|
|
$data['photo'] = getImage($this->getID(), $data['photo'], '../section/', 6, '', strtotime($data['date_updated']));
|
|
}
|
|
|
|
if (!empty($data['flags'])) {
|
|
$data['flags'] = explodeFlags($data['flags']);
|
|
}
|
|
|
|
$data['behaviour'] = (isset($data['behaviour']) && $data['behaviour'] == 2) ? 'Y' : 'N';
|
|
|
|
if (!empty($pageVars['data']['feed_heureka'])) {
|
|
$pageVars['data']['feed_heureka_text'] = returnSQLResult("SELECT CONCAT(name, ' - ', category_text) FROM kupshop_shared.feed_heureka WHERE id=:id", ['id' => $pageVars['data']['feed_heureka']]);
|
|
if (!$pageVars['data']['feed_heureka_text']) {
|
|
$pageVars['data']['feed_heureka'] = null;
|
|
}
|
|
}
|
|
|
|
if (!empty($pageVars['data']['feed_heureka_sk'])) {
|
|
$pageVars['data']['feed_heureka_sk_text'] = returnSQLResult("SELECT CONCAT(name, ' - ', category_text) FROM kupshop_shared.feed_heureka_sk WHERE id=:id", ['id' => $pageVars['data']['feed_heureka_sk']]);
|
|
if (!$pageVars['data']['feed_heureka_sk_text']) {
|
|
$pageVars['data']['feed_heureka_sk'] = null;
|
|
}
|
|
}
|
|
|
|
if (!empty($pageVars['data']['feed_google'])) {
|
|
$pageVars['data']['feed_google_text'] = returnSQLResult("SELECT CONCAT(name, ' - ', category_text) as feed_text FROM kupshop_shared.feed_google WHERE id=:id", ['id' => $pageVars['data']['feed_google']]);
|
|
|
|
if (!$pageVars['data']['feed_google_text']) {
|
|
$pageVars['data']['feed_google'] = null;
|
|
}
|
|
}
|
|
|
|
if (!empty($pageVars['data']['feed_seznam'])) {
|
|
$pageVars['data']['feed_seznam_text'] = returnSQLResult("SELECT CONCAT(name, ' - ', category_text) FROM kupshop_shared.feed_seznam WHERE id=:id", ['id' => $pageVars['data']['feed_seznam']]);
|
|
if (!$pageVars['data']['feed_seznam_text']) {
|
|
$pageVars['data']['feed_seznam'] = null;
|
|
}
|
|
}
|
|
if (!empty($pageVars['data']['feed_glami'])) {
|
|
$pageVars['data']['feed_glami_text'] = returnSQLResult("SELECT CONCAT(name, ' - ', category_text) FROM kupshop_shared.feed_glami WHERE id=:id", ['id' => $pageVars['data']['feed_glami']]);
|
|
if (!$pageVars['data']['feed_glami_text']) {
|
|
$pageVars['data']['feed_glami'] = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($pageVars['data']['id_block'])) {
|
|
$pageVars['data']['blocks'] = $this->getBlocks($pageVars['data']['id_block']);
|
|
$pageVars['data']['blocks_history'] = $this->blocksHistory->getBlocksHistory($pageVars['data']['id_block']);
|
|
}
|
|
|
|
if (!empty($ID)) {
|
|
$pageVars['sectionURL'] = path('kupshop_content_redirect_redirect', $this->getShowOnWeb());
|
|
}
|
|
|
|
$pageVars['data']['photos'] = sqlQueryBuilder()->select('id_photo')->from('photos_sections_relation')
|
|
->where(Operator::equals(['id_section' => $this->getID()]))
|
|
->orderBy('position')->execute()->fetchAll();
|
|
|
|
if ($this->sliders) {
|
|
$sliders = $this->sliders->getSliderPositions(static function (Query\QueryBuilder $qb) use ($ID) {
|
|
$qb->andWhere(Operator::equals(['id_section' => $ID]));
|
|
});
|
|
|
|
$pageVars['data']['sliders'] = $sliders[$ID] ?? null;
|
|
}
|
|
|
|
$this->unserializeCustomData($pageVars['data']);
|
|
|
|
$vars['body'] = $pageVars;
|
|
|
|
return $vars;
|
|
}
|
|
|
|
public function getData()
|
|
{
|
|
global $cfg;
|
|
$data = parent::getData();
|
|
|
|
if (getVal('Submit')) {
|
|
$data['name'] = trim($data['name']);
|
|
$data['name_short'] = $this->prepareNull($data['name_short']);
|
|
if (findModule('sections_lead')) {
|
|
$data['lead_text'] = trim($data['lead_text']);
|
|
$data['lead_figure'] = ($data['lead_figure'] == 'Y') ? 'Y' : 'N';
|
|
$data['lead_products'] = '';
|
|
if ($data['lead_figure'] == 'Y' && getVal('lead_products_figure', $data) == 'Y') {
|
|
$data['lead_products'] = join('|', getVal('lead_products_show', $data, []));
|
|
}
|
|
}
|
|
$data['behaviour'] = ($data['behaviour'] == 'Y') ? 2 : 1;
|
|
|
|
if (isset($data['lead_products_figure'])) {
|
|
$data['lead_products_figure'] = ($data['lead_products_figure'] == 'Y') ? 'Y' : 'N';
|
|
}
|
|
|
|
$data['meta_title'] = (empty($data['meta_title']) ? null : $data['meta_title']);
|
|
$data['meta_description'] = (empty($data['meta_description']) ? null : $data['meta_description']);
|
|
$data['meta_keywords'] = (empty($data['meta_keywords']) ? null : $data['meta_keywords']);
|
|
$data['feed_heureka'] = (empty($data['feed_heureka']) ? null : $data['feed_heureka']);
|
|
$data['feed_google'] = (empty($data['feed_google']) ? null : $data['feed_google']);
|
|
$data['id_slider'] = (empty($data['id_slider']) ? null : $data['id_slider']);
|
|
$data['url'] = trim($data['url'] ?? '', '/');
|
|
$data['date_updated'] = (new DateTime())->format('Y-m-d H:i:s');
|
|
$data['virtual'] = $data['virtual'] ?? 'N';
|
|
|
|
if (!empty($cfg['Sections']['Flags'])) {
|
|
$flags = [];
|
|
foreach ($cfg['Sections']['Flags'] as $flag => $name) {
|
|
if (getVal("flags{$flag}", $data) == 'ON') {
|
|
$flags[] = $flag;
|
|
}
|
|
}
|
|
|
|
$data['flags'] = join(',', $flags);
|
|
}
|
|
|
|
$this->serializeCustomData($data);
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
public function handleUpdate()
|
|
{
|
|
$data = $this->getData();
|
|
$originalObject = $this->getObject();
|
|
|
|
$uniqueUrlUtil = ServiceContainer::getService(UniqueUrlUtil::class);
|
|
if (!empty($data['url']) && $uniqueTxt = $uniqueUrlUtil->validateUniqueUrl(UniqueUrlUtil::SECTIONS, $this->getID(), $data['url'])) {
|
|
$this->returnError($uniqueTxt);
|
|
}
|
|
|
|
$SQL = parent::handleUpdate();
|
|
|
|
$ID = $this->getID();
|
|
|
|
if ($SQL) {
|
|
if (findModule(Modules::PRODUCTS_SECTIONS, 'virtual_to_db')
|
|
&& (($data['virtual'] ?? false) === 'Y' || $originalObject['virtual'] !== ($data['virtual'] ?? 'N'))) {
|
|
$this->sectionUtil->generateVirtualSections([$ID]);
|
|
}
|
|
|
|
// section url changed
|
|
if ($originalObject['url'] !== null && $data['url'] != $originalObject['url']
|
|
&& findModule(Modules::DB_REWRITE)) {
|
|
$rewrite = ServiceContainer::getService(Rewrite::class);
|
|
$rewrite->addRewrite($originalObject['url'], Rewrite::TYPE_CATEGORY, $ID);
|
|
}
|
|
|
|
if ($this->getAction() == 'edit') {
|
|
// historii je treba ulozit jeste pred ulozenim bloku
|
|
$this->blocksHistory->saveBlocksHistory(getVal('blocks', $data, []));
|
|
}
|
|
|
|
$this->saveBlocks($data, $ID, 'sections');
|
|
$this->updateBlocksPhotosPositions($ID, 'sections', 'id_section');
|
|
|
|
if (!function_exists('mb_strcmp')) {
|
|
function mb_strcmp($s1, $s2)
|
|
{
|
|
return strcasecmp(
|
|
iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s1),
|
|
iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s2));
|
|
}
|
|
}
|
|
|
|
if (!empty($_FILES['picture']['name'])) {
|
|
$img = new Photos('section');
|
|
$img->newImage($ID);
|
|
$img->uploadImage($_FILES['picture'], strtolower(substr(strrchr($_FILES['picture']['name'], '.'), 0)));
|
|
|
|
if ($img->checkFileType()) {
|
|
$img->insertImageIntoDB();
|
|
} else {
|
|
$this->returnError(getTextString('producers', 'errorBadPhoto'));
|
|
}
|
|
|
|
// Clear section thumbnail
|
|
$img->clearThumbnails([6]);
|
|
|
|
unset($img);
|
|
}
|
|
|
|
// ############################################
|
|
// # ZARAZENI DO SEKCI
|
|
if (isset($_POST['sections'])) {
|
|
$positions = sqlFetchAll(sqlQuery('SELECT id_topsection, position
|
|
FROM '.getTableName('sections_relation').'
|
|
WHERE id_section=:id_section',
|
|
['id_section' => $ID]), 'id_topsection');
|
|
|
|
$currentTopSection = reset($positions)['id_topsection'] ?? null;
|
|
$childrenIds = $currentTopSection ? $this->sectionUtil->getDescendantCategories($ID) : [];
|
|
|
|
sqlStartTransaction();
|
|
|
|
sqlQuery('DELETE FROM '.getTableName('sections_relation')."
|
|
WHERE id_section='{$ID}' ");
|
|
|
|
foreach ($_POST['sections'] as $id_topsection) {
|
|
if (in_array($id_topsection, $childrenIds)) {
|
|
$this->returnError('Nelze zvolit jako nadřazenou sekci některou z podsekcí!');
|
|
}
|
|
|
|
if ($id_topsection) {
|
|
$select = 'id_topsection=:id_topsection';
|
|
} else {
|
|
$select = 'id_topsection IS NULL';
|
|
}
|
|
$selectData = [
|
|
'id_topsection' => ($id_topsection && $id_topsection != $ID) ? $id_topsection : null,
|
|
'id_section' => $ID,
|
|
];
|
|
|
|
$position = getVal($id_topsection ?: '', $positions)['position'];
|
|
|
|
if (is_null($position)) {
|
|
$position = returnSqlResult('SELECT COUNT(*) FROM '.getTableName('sections_relation')." WHERE {$select}", $selectData);
|
|
}
|
|
|
|
$selectData['position'] = $position;
|
|
sqlQuery('INSERT INTO '.getTableName('sections_relation').'
|
|
SET id_section=:id_section, position=:position, id_topsection=:id_topsection', $selectData);
|
|
}
|
|
|
|
sqlFinishTransaction();
|
|
}
|
|
// ############################################
|
|
// # ZARAZENI PARAMETRU DO VYHLEDAVANI
|
|
$params = getVal('param', $data, []);
|
|
if ($params) {
|
|
$insertData = [];
|
|
$deleteSectionParameters = [];
|
|
foreach ($params as $id_parameter => $param) {
|
|
$insertValues = [
|
|
'id_parameter' => $id_parameter,
|
|
'id_section' => $ID,
|
|
'weight' => $param['weight'],
|
|
'filter' => ($param['use'] ?? 'N') === 'Y' ? 'Y' : 'N',
|
|
];
|
|
|
|
if (findModule(Modules::INDEXED_FILTER)) {
|
|
$insertValues['indexing'] = $param['index'];
|
|
$insertValues['to_title'] = $param['to_title'];
|
|
}
|
|
|
|
if ($insertValues['filter'] === 'N') {
|
|
$deleteSectionParameters[] = $id_parameter;
|
|
continue;
|
|
}
|
|
|
|
$insertData[] = $insertValues;
|
|
}
|
|
|
|
$duplicateKeys = [
|
|
'weight',
|
|
'filter',
|
|
];
|
|
|
|
if (findModule(Modules::INDEXED_FILTER)) {
|
|
$duplicateKeys[] = 'indexing';
|
|
$duplicateKeys[] = 'to_title';
|
|
}
|
|
|
|
if (!empty($insertData)) {
|
|
$insertQb = sqlQueryBuilder()
|
|
->insert('parameters_sections')
|
|
->onDuplicateKeyUpdate($duplicateKeys);
|
|
|
|
foreach ($insertData as $values) {
|
|
$insertQb->multiDirectValues($values);
|
|
}
|
|
|
|
$insertQb->execute();
|
|
}
|
|
|
|
if (!empty($deleteSectionParameters)) {
|
|
sqlQueryBuilder()
|
|
->delete('parameters_sections')
|
|
->andWhere(Operator::equals(['id_section' => $ID]))
|
|
->andWhere(Operator::inIntArray($deleteSectionParameters, 'id_parameter'))
|
|
->execute();
|
|
}
|
|
}
|
|
// ############################################
|
|
// # ZARAZENI JMENOVEK VARIANT DO VYHLEDAVANI
|
|
$variants = getVal('variants', $data, []);
|
|
if ($variants) {
|
|
sqlQuery('DELETE FROM '.getTableName('products_variations_sections')."
|
|
WHERE id_section='".$ID."' ");
|
|
|
|
foreach ($variants as $id_label => $variant) {
|
|
if (!empty($variant['use'])) {
|
|
$insertValues = [
|
|
'id_label' => $id_label,
|
|
'id_section' => $ID,
|
|
'weight' => $variant['weight'],
|
|
];
|
|
|
|
if (findModule(Modules::INDEXED_FILTER)) {
|
|
$insertValues['indexing'] = $variant['index'];
|
|
$insertValues['to_title'] = $variant['to_title'];
|
|
}
|
|
|
|
if (!empty($variant['convertor'])) {
|
|
$insertValues['convertor'] = $variant['convertor'];
|
|
}
|
|
|
|
$this->insertSQL('products_variations_sections', $insertValues);
|
|
}
|
|
}
|
|
}
|
|
// ############################################
|
|
|
|
if (findModule(Modules::INDEXED_FILTER)) {
|
|
\KupShop\IndexedFilterBundle\Util\FilterUrlDefaultValue::upgrade_filter_url('sections');
|
|
}
|
|
|
|
if ($this->sliders && ($sliders = getVal('sliders', $data, []))) {
|
|
$this->saveSliders($sliders);
|
|
}
|
|
|
|
MenuSectionTree::invalidateCache();
|
|
}
|
|
|
|
return $SQL;
|
|
}
|
|
|
|
public function handleDelete()
|
|
{
|
|
if (!findRight('SEC_ERASE')) {
|
|
redirect('launch.php?s=error.php&id=1');
|
|
}
|
|
|
|
$subsectionIDs = $this->getSubsectionIDs();
|
|
$this->deleteSection($this->getID());
|
|
if (getVal('deleteSubsections')) {
|
|
foreach ($subsectionIDs as $subsectionID) {
|
|
$this->deleteSection($subsectionID);
|
|
}
|
|
}
|
|
|
|
parent::handleDelete();
|
|
}
|
|
|
|
private function deleteSection($IDsec)
|
|
{
|
|
$IDsecSel = getVal('IDsecSel');
|
|
|
|
$data = $this->selectSQL('sections', ['id' => $IDsec])->fetch();
|
|
writeDownActivity(sprintf(getTextString('sections', 'activityDeleted'), $data['name']));
|
|
|
|
if ($IDsecSel > 0) {
|
|
sqlQuery("UPDATE IGNORE products_in_sections SET id_section='{$IDsecSel}' WHERE id_section='{$IDsec}' ");
|
|
} elseif ($IDsecSel == 0) {
|
|
sqlQuery('DELETE FROM '.getTableName('products-sections')." WHERE id_section='{$IDsec}' ");
|
|
}
|
|
|
|
// ########################################################################
|
|
$img = new Photos('section');
|
|
$img->newImage($IDsec);
|
|
$img->deletePhoto();
|
|
unset($img);
|
|
// ########################################################################
|
|
|
|
sqlQuery('DELETE FROM '.getTableName('sections_relation')." WHERE id_section='".$IDsec."' ");
|
|
|
|
$this->removeBlocks($data['id_block']);
|
|
|
|
$this->deleteSQL('sections', ['id' => $IDsec]);
|
|
|
|
MenuSectionTree::invalidateCache();
|
|
|
|
return true;
|
|
}
|
|
|
|
private function getSubsectionIDs()
|
|
{
|
|
if (!($section = $this->adminSectionTree->getCategoryById($this->getID()))) {
|
|
return [];
|
|
}
|
|
|
|
return $this->getSectionChildrenRecursive($section);
|
|
}
|
|
|
|
private function getSectionChildrenRecursive(KupShop\CatalogBundle\Entity\Section $section, ?array &$ids = null)
|
|
{
|
|
foreach ($section->getChildren() as $child) {
|
|
$ids[] = $child->getId();
|
|
|
|
$this->getSectionChildrenRecursive($child, $ids);
|
|
}
|
|
|
|
return $ids;
|
|
}
|
|
|
|
public function handleErasephoto()
|
|
{
|
|
$IDsec = getVal('ID');
|
|
// sqlQuery("DELETE FROM ".getTableName("photos")." WHERE id='$IDsec'");
|
|
|
|
// ########################################################################
|
|
$img = new Photos('section');
|
|
$img->newImage($IDsec);
|
|
$img->deletePhoto();
|
|
unset($img);
|
|
// ########################################################################
|
|
|
|
$this->returnOK('Logo bylo smazáno');
|
|
}
|
|
|
|
protected function saveSliders(array $sliders): void
|
|
{
|
|
$ID = (int) $this->getID();
|
|
|
|
$slidersData = [];
|
|
foreach ($sliders as $position => $sliderId) {
|
|
if ($sliderId > 0) {
|
|
$slidersData[] = [
|
|
'id_section' => $ID,
|
|
'id_slider' => $sliderId,
|
|
'position' => $position,
|
|
];
|
|
}
|
|
}
|
|
|
|
sqlGetConnection()->transactional(function () use ($slidersData, $ID) {
|
|
$this->sliders->clearSliderSections(idSection: $ID);
|
|
$this->sliders->saveSliderPositions($slidersData, ['id_section']);
|
|
});
|
|
}
|
|
}
|