PHP Classes

File: htdocs/modules/system/admin/blocksadmin/main.php

Recommend this page to a friend!
  Classes of Michael Beck   Xoops 2.5   htdocs/modules/system/admin/blocksadmin/main.php   Download  
File: htdocs/modules/system/admin/blocksadmin/main.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Xoops 2.5
Modular content management publication system
Author: By
Last change: non-canonical order

In docblock var tags, use "type variableName" more consistently
Date: 5 years ago
Size: 22,056 bytes
 

Contents

Class file image Download
<?php /* * 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 XOOPS Project http://xoops.org/ * @license GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html) * @package * @since * @author XOOPS Development Team, Kazumi Ono (AKA onokazu) */ // Check users rights if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) { exit(_NOPERM); } // Get Action type $op = system_CleanVars($_REQUEST, 'op', 'list', 'string'); $filter = system_CleanVars($_GET, 'filter', 0, 'int'); if ($filter) { $method = $_GET; } else { $method = $_REQUEST; } $sel = array( 'selmod' => -2, 'selgen' => -1, 'selgrp' => XOOPS_GROUP_USERS, 'selvis' => -1); foreach ($sel as $key => $value) { $_{$key} = isset($_COOKIE[$key]) ? (int)$_COOKIE[$key] : $value; ${$key} = system_CleanVars($method, $key, $_{$key}, 'int'); setcookie($key, ${$key}); } $type = system_CleanVars($method, 'type', '', 'string'); if ($type === 'preview') { $op = 'preview'; } if (isset($_GET['op'])) { if ($_GET['op'] === 'edit' || $_GET['op'] === 'delete' || $_GET['op'] === 'delete_ok' || $_GET['op'] === 'clone') { $op = $_GET['op']; $bid = isset($_GET['bid']) ? (int)$_GET['bid'] : 0; } } switch ($op) { case 'list': // Define main template $GLOBALS['xoopsOption']['template_main'] = 'system_blocks.tpl'; // Call Header xoops_cp_header(); // Define Stylesheet $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css'); // Define scripts $xoTheme->addScript('browse.php?Frameworks/jquery/jquery.js'); $xoTheme->addScript('browse.php?Frameworks/jquery/plugins/jquery.ui.js'); $xoTheme->addScript('modules/system/js/admin.js'); $xoTheme->addScript('modules/system/js/blocks.js'); // Define Breadcrumb and tips $xoBreadCrumb->addLink(_AM_SYSTEM_BLOCKS_ADMIN, system_adminVersion('blocksadmin', 'adminpath')); $xoBreadCrumb->addHelp(system_adminVersion('blocksadmin', 'help')); $xoBreadCrumb->addTips(sprintf(_AM_SYSTEM_BLOCKS_TIPS, system_AdminIcons('block.png'), system_AdminIcons('success.png'), system_AdminIcons('cancel.png'))); $xoBreadCrumb->render(); // Initialize module handler /* @var XoopsModuleHandler $module_handler */ $module_handler = xoops_getHandler('module'); $modules = $module_handler->getObjects(null, true); $criteria = new CriteriaCompo(new Criteria('hasmain', 1)); $criteria->add(new Criteria('isactive', 1)); // Modules for blocks to be visible in $display_list = $module_handler->getList($criteria); unset($criteria); // Initialize blocks handler /* @var SystemBlockHandler $block_handler */ $block_handler = xoops_getModuleHandler('block'); // Initialize module handler /* @var XoopsModuleHandler $module_handler */ $module_handler = xoops_getHandler('module'); $modules = $module_handler->getObjects(null, true); $filterform = new XoopsThemeForm('', 'filterform', 'admin.php', 'get'); $filterform->addElement(new XoopsFormHidden('fct', 'blocksadmin')); $filterform->addElement(new XoopsFormHidden('op', 'list')); $filterform->addElement(new XoopsFormHidden('filter', 1)); $sel_gen = new XoopsFormSelect(_AM_SYSTEM_BLOCKS_GENERATOR, 'selgen', $selgen); $sel_gen->setExtra("onchange='submit()'"); $sel_gen->addOption(-1, _AM_SYSTEM_BLOCKS_TYPES); $sel_gen->addOption(0, _AM_SYSTEM_BLOCKS_CUSTOM); foreach ($modules as $list) { $sel_gen->addOption($list->getVar('mid'), $list->getVar('name')); } $filterform->addElement($sel_gen); $sel_mod = new XoopsFormSelect(_AM_SYSTEM_BLOCKS_SVISIBLEIN, 'selmod', $selmod); $sel_mod->setExtra("onchange='submit()'"); ksort($display_list); $display_list_spec[0] = _AM_SYSTEM_BLOCKS_ALLPAGES; $display_list_spec[-1] = _AM_SYSTEM_BLOCKS_TOPPAGE; $display_list_spec[-2] = _AM_SYSTEM_BLOCKS_TYPES; $display_list = $display_list_spec + $display_list; foreach ($display_list as $k => $v) { $sel_mod->addOption($k, $v); } $filterform->addElement($sel_mod); // For selection of group access $sel_grp = new XoopsFormSelect(_AM_SYSTEM_BLOCKS_GROUP, 'selgrp', $selgrp); $sel_grp->setExtra("onchange='submit()'"); /* @var XoopsMemberHandler $member_handler */ $member_handler = xoops_getHandler('member'); $group_list = $member_handler->getGroupList(); $sel_grp->addOption(-1, _AM_SYSTEM_BLOCKS_TYPES); $sel_grp->addOption(0, _AM_SYSTEM_BLOCKS_UNASSIGNED); foreach ($group_list as $k => $v) { $sel_grp->addOption($k, $v); } $filterform->addElement($sel_grp); $sel_vis = new XoopsFormSelect(_AM_SYSTEM_BLOCKS_VISIBLE, 'selvis', $selvis); $sel_vis->setExtra("onchange='submit()'"); $sel_vis->addOption(-1, _AM_SYSTEM_BLOCKS_TYPES); $sel_vis->addOption(0, _NO); $sel_vis->addOption(1, _YES); $filterform->addElement($sel_vis); $filterform->assign($xoopsTpl); /* Get blocks */ $selvis = ($selvis == -1) ? null : $selvis; $selmod = ($selmod == -2) ? null : $selmod; $order_block = (isset($selvis) ? '' : 'b.visible DESC, ') . 'b.side,b.weight,b.bid'; if ($selgrp == 0) { // get blocks that are not assigned to any groups $blocks_arr = $block_handler->getNonGroupedBlocks($selmod, $toponlyblock = false, $selvis, $order_block); } else { $blocks_arr = $block_handler->getAllByGroupModule($selgrp, $selmod, $toponlyblock = false, $selvis, $order_block); } if ($selgen >= 0) { foreach (array_keys($blocks_arr) as $bid) { if ($blocks_arr[$bid]->getVar('mid') != $selgen) { unset($blocks_arr[$bid]); } } } $arr = array(); foreach (array_keys($blocks_arr) as $i) { $arr[$i] = $blocks_arr[$i]->toArray(); $xoopsTpl->append_by_ref('blocks', $arr[$i]); } $block = $block_handler->create(); $blockform = $block->getForm(); $xoopsTpl->assign('blockform', $blockform->render()); // Call Footer xoops_cp_footer(); break; case 'add': // Define main template $GLOBALS['xoopsOption']['template_main'] = 'system_blocks.tpl'; // Call Header xoops_cp_header(); // Define Stylesheet $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css'); $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/ui/' . xoops_getModuleOption('jquery_theme', 'system') . '/ui.all.css'); // Define scripts $xoTheme->addScript('browse.php?Frameworks/jquery/jquery.js'); $xoTheme->addScript('browse.php?Frameworks/jquery/plugins/jquery.ui.js'); $xoTheme->addScript('browse.php?Frameworks/jquery/plugins/jquery.form.js'); $xoTheme->addScript('modules/system/js/admin.js'); $xoTheme->addScript('modules/system/js/blocks.js'); // Define Breadcrumb and tips $xoBreadCrumb->addLink(_AM_SYSTEM_BLOCKS_ADMIN, system_adminVersion('blocksadmin', 'adminpath')); $xoBreadCrumb->addLink(_AM_SYSTEM_BLOCKS_ADDBLOCK); $xoBreadCrumb->render(); // Initialize blocks handler $block_handler = xoops_getModuleHandler('block'); /* @var SystemBlock $block */ $block = $block_handler->create(); $blockform = $block->getForm(); $xoopsTpl->assign('blockform', $blockform->render()); // Call Footer xoops_cp_footer(); break; case 'display': // Initialize blocks handler /* @var SystemBlockHandler $block_handler */ $block_handler = xoops_getModuleHandler('block'); // Get variable $block_id = system_CleanVars($_POST, 'bid', 0, 'int'); $visible = system_CleanVars($_POST, 'visible', 0, 'int'); if ($block_id > 0) { $block = $block_handler->get($block_id); $block->setVar('visible', $visible); if (!$block_handler->insert($block)) { $error = true; } } break; case 'drag': // Initialize blocks handler $block_handler = xoops_getModuleHandler('block'); // Get variable $block_id = system_CleanVars($_POST, 'bid', 0, 'int'); $side = system_CleanVars($_POST, 'side', 0, 'int'); if ($block_id > 0) { $block = $block_handler->get($block_id); $block->setVar('side', $side); if (!$block_handler->insert($block)) { $error = true; } } break; case 'order': // Initialize blocks handler $block_handler = xoops_getModuleHandler('block'); if (isset($_POST['blk'])) { $i = 0; foreach ($_POST['blk'] as $order) { if ($order > 0) { $block = $block_handler->get($order); $block->setVar('weight', $i); if (!$block_handler->insert($block)) { $error = true; } ++$i; } } } exit; break; case 'preview': if (!$GLOBALS['xoopsSecurity']->check()) { redirect_header('admin.php?fct=blocksadmin', 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors())); } // Initialize blocks handler /* @var XoopsBlockHandler $block_handler */ $block_handler = xoops_getModuleHandler('block'); $block = $block_handler->create(); $block->setVars($_POST); $content = isset($_POST['content_block']) ? $_POST['content_block'] : ''; $block->setVar('content', $content); $myts = MyTextSanitizer::getInstance(); echo '<div id="xo-preview-dialog" title="' . $block->getVar('title', 's') . '">' . $block->getContent('s', $block->getVar('c_type')) . '</div>'; break; case 'save': if (!$GLOBALS['xoopsSecurity']->check()) { redirect_header('admin.php?fct=blocksadmin', 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors())); } // Initialize blocks handler $block_handler = xoops_getModuleHandler('block'); // Get avatar id $block_id = system_CleanVars($_POST, 'bid', 0, 'int'); if ($block_id > 0) { $block = $block_handler->get($block_id); } else { $block = $block_handler->create(); } $block_type = system_CleanVars($_POST, 'block_type', '', 'string'); $block->setVar('block_type', $block_type); if (!$block->isCustom()) { $block->setVars($_POST); $type = $block->getVar('block_type'); $name = $block->getVar('name'); // Save block options $options = $_POST['options']; if (isset($options)) { $options_count = count($options); if ($options_count > 0) { //Convert array values to comma-separated for ($i = 0; $i < $options_count; ++$i) { if (is_array($options[$i])) { $options[$i] = implode(',', $options[$i]); } } $options = implode('|', $options); $block->setVar('options', $options); } } } else { $block->setVars($_POST); switch ($block->getVar('c_type')) { case 'H': $name = _AM_SYSTEM_BLOCKS_CUSTOMHTML; break; case 'P': $name = _AM_SYSTEM_BLOCKS_CUSTOMPHP; break; case 'S': $name = _AM_SYSTEM_BLOCKS_CUSTOMSMILE; break; default: $name = _AM_SYSTEM_BLOCKS_CUSTOMNOSMILE; break; } } $block->setVar('name', $name); $block->setVar('isactive', 1); $content = isset($_POST['content_block']) ? $_POST['content_block'] : ''; $block->setVar('content', $content); if (!$newid = $block_handler->insert($block)) { xoops_cp_header(); xoops_error($block->getHtmlErrors()); xoops_cp_footer(); exit(); } if ($newid != 0) { $blocklinkmodule_handler = xoops_getModuleHandler('blocklinkmodule'); // Delete old link $criteria = new CriteriaCompo(new Criteria('block_id', $newid)); $blocklinkmodule_handler->deleteAll($criteria); // Assign link $modules = $_POST['modules']; foreach ($modules as $mid) { $blocklinkmodule = $blocklinkmodule_handler->create(); $blocklinkmodule->setVar('block_id', $newid); $blocklinkmodule->setVar('module_id', $mid); if (!$blocklinkmodule_handler->insert($blocklinkmodule)) { xoops_cp_header(); xoops_error($blocklinkmodule->getHtmlErrors()); xoops_cp_footer(); exit(); } } } /* @var XoopsGroupPermHandler $groupperm_handler */ $groupperm_handler = xoops_getHandler('groupperm'); $groups = $_POST['groups']; $groups_with_access = $groupperm_handler->getGroupIds('block_read', $newid); $removed_groups = array_diff($groups_with_access, $groups); if (count($removed_groups) > 0) { foreach ($removed_groups as $groupid) { $criteria = new CriteriaCompo(new Criteria('gperm_name', 'block_read')); $criteria->add(new Criteria('gperm_groupid', $groupid)); $criteria->add(new Criteria('gperm_itemid', $newid)); $criteria->add(new Criteria('gperm_modid', 1)); $perm = $groupperm_handler->getObjects($criteria); if (isset($perm[0]) && is_object($perm[0])) { $groupperm_handler->delete($perm[0]); } } } $new_groups = array_diff($groups, $groups_with_access); if (count($new_groups) > 0) { foreach ($new_groups as $groupid) { $groupperm_handler->addRight('block_read', $newid, $groupid); } } redirect_header('admin.php?fct=blocksadmin', 1, _AM_SYSTEM_BLOCKS_DBUPDATED); break; case 'edit': // Initialize blocks handler $block_handler = xoops_getModuleHandler('block'); // Get avatar id $block_id = system_CleanVars($_REQUEST, 'bid', 0, 'int'); if ($block_id > 0) { // Define main template $GLOBALS['xoopsOption']['template_main'] = 'system_blocks.tpl'; // Call Header xoops_cp_header(); // Define Stylesheet $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css'); $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/ui/' . xoops_getModuleOption('jquery_theme', 'system') . '/ui.all.css'); // Define scripts $xoTheme->addScript('browse.php?Frameworks/jquery/jquery.js'); $xoTheme->addScript('browse.php?Frameworks/jquery/plugins/jquery.ui.js'); $xoTheme->addScript('browse.php?Frameworks/jquery/plugins/jquery.form.js'); $xoTheme->addScript('modules/system/js/admin.js'); // Define Breadcrumb and tips $xoBreadCrumb->addLink(_AM_SYSTEM_BLOCKS_ADMIN, system_adminVersion('blocksadmin', 'adminpath')); $xoBreadCrumb->addLink(_AM_SYSTEM_BLOCKS_EDITBLOCK); $xoBreadCrumb->render(); $block = $block_handler->get($block_id); $blockform = $block->getForm(); $xoopsTpl->assign('blockform', $blockform->render()); // Call Footer xoops_cp_footer(); } else { redirect_header('admin.php?fct=blocksadmin', 1, _AM_SYSTEM_DBERROR); } break; case 'delete': // Initialize blocks handler /* @var SystemBlockHandler $block_handler */ $block_handler = xoops_getModuleHandler('block'); // Get avatar id $block_id = system_CleanVars($_REQUEST, 'bid', 0, 'int'); if ($block_id > 0) { $block = $block_handler->get($block_id); if ($block->getVar('block_type') === 'S') { redirect_header('admin.php?fct=blocksadmin', 4, _AM_SYSTEM_BLOCKS_SYSTEMCANT); } elseif ($block->getVar('block_type') === 'M') { // Fix for duplicated blocks created in 2.0.9 module update // A module block can be deleted if there is more than 1 that // has the same func_num/show_func which is mostly likely // be the one that was duplicated in 2.0.9 if (1 >= $count = $block_handler->countSimilarBlocks($block->getVar('mid'), $block->getVar('func_num'), $block->getVar('show_func'))) { redirect_header('admin.php?fct=blocksadmin', 4, _AM_SYSTEM_BLOCKS_MODULECANT); } } // Define main template $GLOBALS['xoopsOption']['template_main'] = 'system_header.tpl'; // Call Header xoops_cp_header(); // Display Question xoops_confirm(array( 'op' => 'delete_ok', 'fct' => 'blocksadmin', 'bid' => $block->getVar('bid')), 'admin.php', sprintf(_AM_SYSTEM_BLOCKS_RUSUREDEL, $block->getVar('title'))); // Call Footer xoops_cp_footer(); } break; case 'delete_ok': if (!$GLOBALS['xoopsSecurity']->check()) { redirect_header('admin.php?fct=blocksadmin', 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors())); } // Initialize blocks handler $block_handler = xoops_getModuleHandler('block'); // Get avatar id $block_id = system_CleanVars($_POST, 'bid', 0, 'int'); if ($block_id > 0) { $block = $block_handler->get($block_id); if ($block_handler->delete($block)) { // Delete Group link $blocklinkmodule_handler = xoops_getModuleHandler('blocklinkmodule'); $blocklinkmodule = $blocklinkmodule_handler->getObjects(new CriteriaCompo(new Criteria('block_id', $block_id))); foreach ($blocklinkmodule as $link) { $blocklinkmodule_handler->delete($link, true); } // Delete Group permission /* @var XoopsGroupPermHandler $groupperm_handler */ $groupperm_handler = xoops_getHandler('groupperm'); $criteria = new CriteriaCompo(new Criteria('gperm_name', 'block_read')); $criteria->add(new Criteria('gperm_itemid', $block_id)); $groupperm = $groupperm_handler->getObjects($criteria); foreach ($groupperm as $perm) { $groupperm_handler->delete($perm, true); } // Delete template if ($block->getVar('template') != '') { $tplfile_handler = xoops_getHandler('tplfile'); $btemplate = $tplfile_handler->find($GLOBALS['xoopsConfig']['template_set'], 'block', $block_id); if (count($btemplate) > 0) { $tplfile_handler->delete($btemplate[0]); } } redirect_header('admin.php?fct=blocksadmin', 1, _AM_SYSTEM_BLOCKS_DBUPDATED); } } else { redirect_header('admin.php?fct=blocksadmin', 1, _AM_SYSTEM_DBERROR); } break; case 'clone': // Initialize blocks handler $block_handler = xoops_getModuleHandler('block'); // Get avatar id $block_id = system_CleanVars($_REQUEST, 'bid', 0, 'int'); if ($block_id > 0) { // Define main template $GLOBALS['xoopsOption']['template_main'] = 'system_blocks.tpl'; // Call Header xoops_cp_header(); // Define Stylesheet $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css'); // Define Breadcrumb and tips $xoBreadCrumb->addLink(_AM_SYSTEM_BLOCKS_ADMIN, system_adminVersion('blocksadmin', 'adminpath')); $xoBreadCrumb->addLink(_AM_SYSTEM_BLOCKS_CLONEBLOCK); $xoBreadCrumb->render(); /* @var XoopsBlock $block */ $block = $block_handler->get($block_id); $blockform = $block->getForm('clone'); $xoopsTpl->assign('blockform', $blockform->render()); // Call Footer xoops_cp_footer(); } else { redirect_header('admin.php?fct=blocksadmin', 1, _AM_SYSTEM_DBERROR); } break; }