admin/field.php
<?php
declare(strict_types=1);
/**
* TDMDownload
*
* You may not change or alter any portion of this comment or credits
* of supporting developers from this source code or any supporting source code
* which is considered copyrighted (c) material of the original comment or credit authors.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* @copyright Gregory Mage (Aka Mage)
* @license GNU GPL 2 (https://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
* @author Gregory Mage (Aka Mage)
*/
use Xmf\Module\Admin;
use XoopsModules\Tdmdownloads\Helper;
require __DIR__ . '/admin_header.php';
require dirname(__DIR__) . '/include/common.php';
// Template
$templateMain = 'tdmdownloads_admin_field.tpl';
$helper = Helper::getInstance();
//On recupere la valeur de l'argument op dans l'URL$
$op = \Xmf\Request::getCmd('op', 'list');
//Les valeurs de op qui vont permettre d'aller dans les differentes parties de la page
switch ($op) {
// Vue liste
case 'list':
//Affichage de la partie haute de l'administration de Xoops
xoops_cp_header();
$adminObject = Admin::getInstance();
$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
$adminObject->addItemButton(_AM_TDMDOWNLOADS_FIELD_NEW, 'field.php?op=new_field', 'add');
$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
$criteria = new \CriteriaCompo();
$criteria->setSort('weight ASC, title');
$criteria->setOrder('ASC');
$downloads_field = $fieldHandler->getAll($criteria);
$numrows = count($downloads_field);
//Affichage du tableau
if ($numrows > 0) {
$GLOBALS['xoopsTpl']->assign('fields_count', $numrows);
foreach (array_keys($downloads_field) as $i) {
/** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
$field = [
'title' => $downloads_field[$i]->getVar('title'),
'img' => $uploadurl_field . $downloads_field[$i]->getVar('img'),
'weight' => $downloads_field[$i]->getVar('weight'),
'fid' => $downloads_field[$i]->getVar('fid'),
'status' => $downloads_field[$i]->getVar('status'),
'search' => $downloads_field[$i]->getVar('search'),
'status_def' => $downloads_field[$i]->getVar('status_def'),
'search' => $downloads_field[$i]->getVar('search'),
];
$GLOBALS['xoopsTpl']->append('fields_list', $field);
unset($field);
}
}
break;
case 'update_status':
$obj = $fieldHandler->get(\Xmf\Request::getInt('fid', 0, 'REQUEST'));
$obj->setVar('status', \Xmf\Request::getInt('aff', 0, 'REQUEST'));
if ($fieldHandler->insert($obj)) {
redirect_header('field.php?op=list', 1, _AM_TDMDOWNLOADS_REDIRECT_SAVE);
}
$GLOBALS['xoopsTpl']->assign('message_erreur', $obj->getHtmlErrors());
break;
case 'update_search':
$obj = $fieldHandler->get(\Xmf\Request::getInt('fid', 0, 'REQUEST'));
$obj->setVar('search', \Xmf\Request::getInt('aff', 0, 'REQUEST'));
if ($fieldHandler->insert($obj)) {
redirect_header('field.php?op=list', 1, _AM_TDMDOWNLOADS_REDIRECT_SAVE);
}
$GLOBALS['xoopsTpl']->assign('message_erreur', $obj->getHtmlErrors());
break;
// vue création
case 'new_field':
//Affichage de la partie haute de l'administration de Xoops
xoops_cp_header();
$adminObject = Admin::getInstance();
$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
$adminObject->addItemButton(_AM_TDMDOWNLOADS_FIELD_LIST, 'field.php?op=list', 'list');
$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
//Affichage du formulaire de création des champs
/** @var \XoopsModules\Tdmdownloads\Field $obj */
$obj = $fieldHandler->create();
/** @var \XoopsThemeForm $form */
$form = $obj->getForm();
$GLOBALS['xoopsTpl']->assign('themeForm', $form->render());
break;
// Pour éditer un champ
case 'edit_field':
//Affichage de la partie haute de l'administration de Xoops
xoops_cp_header();
$adminObject = Admin::getInstance();
$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
$adminObject->addItemButton(_AM_TDMDOWNLOADS_FIELD_NEW, 'field.php?op=new_field', 'add');
$adminObject->addItemButton(_AM_TDMDOWNLOADS_FIELD_LIST, 'field.php?op=list', 'list');
$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
//Affichage du formulaire de création des champs
/** @var \XoopsModules\Tdmdownloads\Field $obj */
$obj = $fieldHandler->get(\Xmf\Request::getInt('fid', 0, 'GET'));
/** @var \XoopsThemeForm $form */
$form = $obj->getForm();
$GLOBALS['xoopsTpl']->assign('themeForm', $form->render());
break;
// Pour supprimer un champ
case 'del_field':
global $xoopsModule;
$obj = $fieldHandler->get(\Xmf\Request::getInt('fid', 0, 'GET'));
if (\Xmf\Request::hasVar('ok', 'POST') && 1 == \Xmf\Request::getInt('ok', 0, 'POST')) {
if (!$GLOBALS['xoopsSecurity']->check()) {
redirect_header('field.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
}
// supression des entrée du champ
$criteria = new \CriteriaCompo();
$criteria->add(new \Criteria('fid', \Xmf\Request::getInt('fid', 0)));
$downloadsArray = $fielddataHandler->getAll($criteria);
foreach (array_keys($downloadsArray) as $i) {
/** @var \XoopsModules\Tdmdownloads\Downloads[] $downloadsArray */
// supression de l'entrée
$objdownloadsfielddata = $fielddataHandler->get($downloadsArray[$i]->getVar('iddata'));
$fielddataHandler->delete($objdownloadsfielddata) || $objdownloads->getHtmlErrors();
}
if ($fieldHandler->delete($obj)) {
redirect_header('field.php', 1, _AM_TDMDOWNLOADS_REDIRECT_DELOK);
} else {
$GLOBALS['xoopsTpl']->assign('message_erreur', $obj->getHtmlErrors());
}
} else {
$downloadsfield = $fieldHandler->get(\Xmf\Request::getInt('fid', 0, 'GET'));
if (1 == $downloadsfield->getVar('status_def')) {
redirect_header('field.php', 2, _AM_TDMDOWNLOADS_REDIRECT_NODELFIELD);
}
$message = '';
$criteria = new \CriteriaCompo();
$criteria->add(new \Criteria('fid', \Xmf\Request::getInt('fid', 0, 'GET')));
/** @var \XoopsModules\Tdmdownloads\Fielddata[] $downloadsArray */
$downloadsArray = $fielddataHandler->getAll($criteria);
if (count($downloadsArray) > 0) {
$message .= _AM_TDMDOWNLOADS_DELDATA . '<br>';
foreach (array_keys($downloadsArray) as $i) {
$message .= '<span style="color: #ff0000;">' . $downloadsArray[$i]->getVar('data') . '</span><br>';
}
}
//Affichage de la partie haute de l'administration de Xoops
xoops_cp_header();
$adminObject = Admin::getInstance();
$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
$adminObject->addItemButton(_AM_TDMDOWNLOADS_FIELD_NEW, 'field.php?op=new_field', 'add');
$adminObject->addItemButton(_AM_TDMDOWNLOADS_FIELD_LIST, 'field.php?op=list', 'list');
$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
xoops_confirm(['ok' => 1, 'fid' => \Xmf\Request::getInt('fid', 0, 'GET'), 'op' => 'del_field'], $_SERVER['REQUEST_URI'], sprintf(_AM_TDMDOWNLOADS_FORMSUREDEL, $obj->getVar('title')) . '<br><br>' . $message);
}
break;
// Pour sauver un champ
case 'save_field':
if (!$GLOBALS['xoopsSecurity']->check()) {
redirect_header('field.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
}
/** @var \XoopsModules\Tdmdownloads\Field $obj */
if (\Xmf\Request::hasVar('fid', 'POST')) {
$obj = $fieldHandler->get(\Xmf\Request::getInt('fid', 0, 'POST'));
} else {
$obj = $fieldHandler->create();
}
$erreur = false;
$errorMessage = '';
// Récupération des variables:
// Pour l'image
require_once XOOPS_ROOT_PATH . '/class/uploader.php';
$uploader = new \XoopsMediaUploader(
$uploaddir_field, [
'image/gif',
'image/jpeg',
'image/pjpeg',
'image/x-png',
'image/png',
], $helper->getConfig('maxuploadsize'), 16, null
);
if ($uploader->fetchMedia($_POST['xoops_upload_file'][0])) {
$uploader->setPrefix('downloads_');
$uploader->fetchMedia($_POST['xoops_upload_file'][0]);
if ($uploader->upload()) {
$obj->setVar('img', $uploader->getSavedFileName());
} else {
$errors = $uploader->getErrors();
redirect_header('javascript:history.go(-1)', 3, $errors);
}
} else {
$obj->setVar('img', \Xmf\Request::getString('downloadsfield_img', '', 'POST'));
}
// Pour les autres variables
$obj->setVar('title', \Xmf\Request::getString('title', '', 'POST'));
$obj->setVar('weight', \Xmf\Request::getInt('weight', 0, 'POST'));
$obj->setVar('status', \Xmf\Request::getInt('status', 0, 'POST'));
$obj->setVar('search', \Xmf\Request::getInt('search', 0, 'POST'));
$obj->setVar('status_def', \Xmf\Request::getInt('status_def', 0, 'POST'));
if (true === $erreur) {
xoops_cp_header();
$GLOBALS['xoopsTpl']->assign('message_erreur', $errorMessage);
} else {
if ($fieldHandler->insert($obj)) {
redirect_header('field.php', 1, _AM_TDMDOWNLOADS_REDIRECT_SAVE);
}
xoops_cp_header();
$GLOBALS['xoopsTpl']->assign('message_erreur', $obj->getHtmlErrors());
}
$form = $obj->getForm();
$GLOBALS['xoopsTpl']->assign('themeForm', $form->render());
break;
}
// Local icons path
if (is_object($helper->getModule())) {
$pathModIcon16 = $helper->getModule()->getInfo('modicons16');
$pathModIcon32 = $helper->getModule()->getInfo('modicons32');
$GLOBALS['xoopsTpl']->assign('pathModIcon16', XOOPS_URL . '/modules/' . $moduleDirName . '/' . $pathModIcon16);
$GLOBALS['xoopsTpl']->assign('pathModIcon32', $pathModIcon32);
}
//Affichage de la partie basse de l'administration de Xoops
require_once __DIR__ . '/admin_footer.php';