home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / CMS / xoops-2.0.18.1.exe / xoops-2.0.18.1 / htdocs / modules / system / admin / blocksadmin / blocksadmin.php < prev    next >
Encoding:
PHP Script  |  2008-01-10  |  25.3 KB  |  472 lines

  1. <?php
  2. // $Id: blocksadmin.php 1240 2008-01-10 04:06:08Z julionc $
  3. //  ------------------------------------------------------------------------ //
  4. //                XOOPS - PHP Content Management System                      //
  5. //                    Copyright (c) 2000 XOOPS.org                           //
  6. //                       <http://www.xoops.org/>                             //
  7. //  ------------------------------------------------------------------------ //
  8. //  This program is free software; you can redistribute it and/or modify     //
  9. //  it under the terms of the GNU General Public License as published by     //
  10. //  the Free Software Foundation; either version 2 of the License, or        //
  11. //  (at your option) any later version.                                      //
  12. //                                                                           //
  13. //  You may not change or alter any portion of this comment or credits       //
  14. //  of supporting developers from this source code or any supporting         //
  15. //  source code which is considered copyrighted (c) material of the          //
  16. //  original comment or credit authors.                                      //
  17. //                                                                           //
  18. //  This program is distributed in the hope that it will be useful,          //
  19. //  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
  20. //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
  21. //  GNU General Public License for more details.                             //
  22. //                                                                           //
  23. //  You should have received a copy of the GNU General Public License        //
  24. //  along with this program; if not, write to the Free Software              //
  25. //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
  26. //  ------------------------------------------------------------------------ //
  27. // Author: Kazumi Ono (AKA onokazu)                                          //
  28. // URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
  29. // Project: The XOOPS Project                                                //
  30. // ------------------------------------------------------------------------- //
  31.  
  32. if ( !is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid()) ) {
  33.     exit("Access Denied");
  34. }
  35. // check if the user is authorised
  36. if ( $xoopsUser->isAdmin($xoopsModule->mid()) ) {
  37.     include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php';
  38.  
  39.     function list_blocks()
  40.     {
  41.         global $xoopsUser, $xoopsConfig;
  42.         include_once XOOPS_ROOT_PATH.'/class/xoopslists.php';
  43.         //OpenTable();
  44.         $selmod = isset($_GET['selmod']) ? intval($_GET['selmod']) : 0;
  45.         $selvis = isset($_GET['selvis']) ? intval($_GET['selvis']) : 2;
  46.         $selgrp = isset($_GET['selgrp']) ? intval($_GET['selgrp']) : XOOPS_GROUP_USERS;
  47.         echo "
  48.         <h4 style='text-align:left;'>"._AM_BADMIN."</h4>";
  49.         echo '<form action="admin.php" method="get">';
  50.         $form = "<select size=\"1\" name=\"selmod\" onchange=\"location='".XOOPS_URL."/modules/system/admin.php?fct=blocksadmin&selvis=$selvis&selgrp=$selgrp&selmod='+this.options[this.selectedIndex].value\">";
  51.         $module_handler =& xoops_gethandler('module');
  52.         $criteria = new CriteriaCompo(new Criteria('hasmain', 1));
  53.         $criteria->add(new Criteria('isactive', 1));
  54.         $module_list =& $module_handler->getList($criteria);
  55.         $toponlyblock = false;
  56.         $module_list[-1] = _AM_TOPPAGE;
  57.         $selmod = isset($_GET['selmod']) ? intval($_GET['selmod']) : -1;
  58.         ksort($module_list);
  59.         foreach ($module_list as $k => $v) {
  60.             $sel = '';
  61.             if ($k == $selmod) {
  62.                 $sel = ' selected="selected"';
  63.             }
  64.             $form .= '<option value="'.$k.'"'.$sel.'>'.$v.'</option>';
  65.         }
  66.         $form .= '</select> <input type="hidden" name="fct" value="blocksadmin" />';
  67.         printf(_AM_SVISIBLEIN, $form);
  68.         $member_handler =& xoops_gethandler('member');
  69.         $group_list =& $member_handler->getGroupList();
  70.         $group_sel = _AM_GROUP." <select size=\"1\" name=\"selgrp\" onchange=\"location='".XOOPS_URL."/modules/system/admin.php?fct=blocksadmin&selvis=$selvis&selmod=$selmod&selgrp='+this.options[this.selectedIndex].value\">";
  71.         $group_list[0] = '#'._AM_UNASSIGNED; // fix for displaying blocks unassigned to any group
  72.         foreach ($group_list as $k => $v) {
  73.             $sel = '';
  74.             if ($k == $selgrp) {
  75.                 $sel = ' selected="selected"';
  76.             }
  77.             $group_sel .= '<option value="'.$k.'"'.$sel.'>'.$v.'</option>';
  78.         }
  79.         $group_sel .= '</select> ';
  80.         echo $group_sel;
  81.         echo _AM_VISIBLE." <select size=\"1\" name=\"selvis\" onchange=\"location='".XOOPS_URL."/modules/system/admin.php?fct=blocksadmin&selmod=$selmod&selgrp=$selgrp&selvis='+this.options[this.selectedIndex].value\">";
  82.         $selvis0 = $selvis1 = $selvis2 = "";
  83.         switch($selvis){
  84.         case 0:
  85.             $selvis0 = 'selected="selected"';
  86.             break;
  87.         case 1:
  88.             $selvis1 = 'selected="selected"';
  89.             break;
  90.         case 2:
  91.         default:
  92.             $selvis2 = 'selected="selected"';
  93.             break;
  94.         }
  95.         echo '<option value="0" '.$selvis0.'>'._NO.'</option>';
  96.         echo '<option value="1" '.$selvis1.'>'._YES.'</option>';
  97.         echo '<option value="2" '.$selvis2.'>'._ALL.'</option>';
  98.         echo '</select> <input type="submit" value="'._GO.'" name="selsubmit" />';
  99.         echo '</form>';
  100.         echo "<form action='admin.php' name='blockadmin' method='post'>
  101.         <table width='100%' class='outer' cellpadding='4' cellspacing='1'>
  102.         <tr valign='middle'><th width='20%'>"._AM_BLKDESC."</th><th>"._AM_TITLE."</th><th>"._AM_MODULE."</th><th align='center' nowrap='nowrap'>"._AM_SIDE."<br />"._LEFT."-"._CENTER."-"._RIGHT."</th><th align='center'>"._AM_WEIGHT."</th><th align='center'>"._AM_VISIBLE."</th><th align='right'>"._AM_ACTION."</th></tr>
  103.         ";
  104.         if ($selvis == 2) $selvis = null;
  105.         if ($selgrp == 0) {
  106.             // get blocks that are not assigned to any groups
  107.             $block_arr =& XoopsBlock::getNonGroupedBlocks($selmod, $toponlyblock, $selvis, 'b.side,b.weight,b.bid');
  108.         } else {
  109.             $block_arr =& XoopsBlock::getAllByGroupModule($selgrp, $selmod, $toponlyblock, $selvis, 'b.side,b.weight,b.bid');
  110.         }
  111.         $block_count = count($block_arr);
  112.         $class = 'even';
  113.         $module_list2 =& $module_handler->getList();
  114.         // for custom blocks
  115.         $module_list2[0] = ' ';
  116.         foreach (array_keys($block_arr) as $i) {
  117.             $sel0 = $sel1 = $ssel0 = $ssel1 = $ssel2 = $ssel3 = $ssel4 = $ssel5 = $ssel6 = $ssel7 = "";
  118.             if ( $block_arr[$i]->getVar("visible") == 1 ) {
  119.                 $sel1 = " checked='checked'";
  120.             } else {
  121.                 $sel0 = " checked='checked'";
  122.             }
  123.             if ( $block_arr[$i]->getVar("side") == XOOPS_SIDEBLOCK_LEFT){
  124.                 $ssel0 = " checked='checked'";
  125.             } elseif ( $block_arr[$i]->getVar("side") == XOOPS_SIDEBLOCK_RIGHT ){
  126.                 $ssel1 = " checked='checked'";
  127.             } elseif ( $block_arr[$i]->getVar("side") == XOOPS_CENTERBLOCK_LEFT ){
  128.                 $ssel2 = " checked='checked'";
  129.             } elseif ( $block_arr[$i]->getVar("side") == XOOPS_CENTERBLOCK_RIGHT ){
  130.                 $ssel4 = " checked='checked'";
  131.             } elseif ( $block_arr[$i]->getVar("side") == XOOPS_CENTERBLOCK_CENTER ){
  132.                 $ssel3 = " checked='checked'";
  133.             } elseif ( $block_arr[$i]->getVar("side") == XOOPS_CENTERBLOCK_BOTTOMLEFT ){
  134.                 $ssel5 = " checked='checked'";
  135.             } elseif ( $block_arr[$i]->getVar("side") == XOOPS_CENTERBLOCK_BOTTOMRIGHT ){
  136.                 $ssel6 = " checked='checked'";
  137.             } elseif ( $block_arr[$i]->getVar("side") == XOOPS_CENTERBLOCK_BOTTOM ){
  138.                 $ssel7 = " checked='checked'";
  139.             }
  140.             if ( $block_arr[$i]->getVar("title") == "" ) {
  141.                 $title = " ";
  142.             } else {
  143.                 $title = $block_arr[$i]->getVar("title");
  144.             }
  145.             $name = $block_arr[$i]->getVar("name");
  146.             //echo "<tr valign='top'><td class='$class'>".$name."</td><td class='$class'>".$title."</td><td class='$class'>".$module_list2[$block_arr[$i]->getVar('mid')]."</td><td class='$class' align='center' nowrap='nowrap'><input type='radio' name='side[$i]' value='".XOOPS_SIDEBLOCK_LEFT."'$ssel0 />-<input type='radio' name='side[$i]' value='".XOOPS_CENTERBLOCK_LEFT."'$ssel2 /><input type='radio' name='side[$i]' value='".XOOPS_CENTERBLOCK_CENTER."'$ssel3 /><input type='radio' name='side[$i]' value='".XOOPS_CENTERBLOCK_RIGHT."'$ssel4 />-<input type='radio' name='side[$i]' value='".XOOPS_SIDEBLOCK_RIGHT."'$ssel1 /></td><td class='$class' align='center'><input type='text' name='weight[$i]' value='".$block_arr[$i]->getVar("weight")."' size='5' maxlength='5' /></td><td class='$class' align='center' nowrap><input type='radio' name='visible[$i]' value='1'$sel1>"._YES." <input type='radio' name='visible[$i]' value='0'$sel0>"._NO."</td><td class='$class' align='right'><a href='admin.php?fct=blocksadmin&op=edit&bid=".$block_arr[$i]->getVar("bid")."'>"._EDIT."</a>";
  147.             echo "<tr valign='top'><td class='$class'>".$name."</td><td class='$class'>".$title."</td><td class='$class'>".$module_list2[$block_arr[$i]->getVar('mid')]."</td><td class='$class' align='center' nowrap='nowrap'>
  148.                     <div align='center' >
  149.                     <input type='radio' name='side[$i]' value='".XOOPS_CENTERBLOCK_LEFT."'$ssel2 />
  150.                         <input type='radio' name='side[$i]' value='".XOOPS_CENTERBLOCK_CENTER."'$ssel3 />
  151.                     <input type='radio' name='side[$i]' value='".XOOPS_CENTERBLOCK_RIGHT."'$ssel4 />
  152.                     </div>
  153.                     <div>
  154.                         <span style='float:right'><input type='radio' name='side[$i]' value='".XOOPS_SIDEBLOCK_RIGHT."'$ssel1 /></span>
  155.                     <div align='left'><input type='radio' name='side[$i]' value='".XOOPS_SIDEBLOCK_LEFT."'$ssel0 /></div>
  156.                     </div>
  157.                     <div align='center'>
  158.                     <input type='radio' name='side[$i]' value='".XOOPS_CENTERBLOCK_BOTTOMLEFT."'$ssel5 />
  159.                         <input type='radio' name='side[$i]' value='".XOOPS_CENTERBLOCK_BOTTOM."'$ssel7 />
  160.                     <input type='radio' name='side[$i]' value='".XOOPS_CENTERBLOCK_BOTTOMRIGHT."'$ssel6 />
  161.                     </div>
  162.                 </td><td class='$class' align='center'><input type='text' name='weight[$i]' value='".$block_arr[$i]->getVar("weight")."' size='5' maxlength='5' /></td><td class='$class' align='center' nowrap><input type='radio' name='visible[$i]' value='1'$sel1 />"._YES." <input type='radio' name='visible[$i]' value='0'$sel0 />"._NO."</td><td class='$class' align='right'><a href='admin.php?fct=blocksadmin&op=edit&bid=".$block_arr[$i]->getVar("bid")."'>"._EDIT."</a>";
  163.             
  164.             
  165.             if ($block_arr[$i]->getVar('block_type') != 'S') {
  166.                 echo " <a href='admin.php?fct=blocksadmin&op=delete&bid=".$block_arr[$i]->getVar("bid")."'>"._DELETE."</a>";
  167.             }
  168.             echo "
  169.             <input type='hidden' name='oldside[$i]' value='".$block_arr[$i]->getVar('side')."' />
  170.             <input type='hidden' name='oldweight[$i]' value='".$block_arr[$i]->getVar('weight')."' />
  171.             <input type='hidden' name='oldvisible[$i]' value='".$block_arr[$i]->getVar('visible')."' />
  172.             <input type='hidden' name='bid[$i]' value='".$i."' />
  173.             </td></tr>
  174.             ";
  175.             $class = ($class == 'even') ? 'odd' : 'even';
  176.         }
  177.         echo "<tr><td class='foot' align='center' colspan='7'>
  178.         <input type='hidden' name='fct' value='blocksadmin' />
  179.         <input type='hidden' name='op' value='order' />
  180.         ".$GLOBALS['xoopsSecurity']->getTokenHTML()."
  181.         <input type='submit' name='submit' value='"._SUBMIT."' />
  182.         </td></tr></table>
  183.         </form>
  184.         <br /><br />";
  185.  
  186.         $block = array('form_title' => _AM_ADDBLOCK, 'side' => 0, 'weight' => 0, 'visible' => 1, 'title' => '', 'content' => '', 'modules' => array(-1), 'is_custom' => true, 'ctype' => 'H', 'cachetime' => 0, 'op' => 'save', 'edit_form' => false);
  187.         include XOOPS_ROOT_PATH.'/modules/system/admin/blocksadmin/blockform.php';
  188.         $form->display();
  189.     }
  190.  
  191.     function save_block($bside, $bweight, $bvisible, $btitle, $bcontent, $bctype, $bmodule, $bcachetime)
  192.     {
  193.         global $xoopsUser;
  194.         if (empty($bmodule)) {
  195.             xoops_cp_header();
  196.             xoops_error(sprintf(_AM_NOTSELNG, _AM_VISIBLEIN));
  197.             xoops_cp_footer();
  198.             exit();
  199.         }
  200.         $myblock = new XoopsBlock();
  201.         $myblock->setVar('side', $bside);
  202.         $myblock->setVar('weight', $bweight);
  203.         $myblock->setVar('visible', $bvisible);
  204.         $myblock->setVar('weight', $bweight);
  205.         $myblock->setVar('title', $btitle);
  206.         $myblock->setVar('content', $bcontent);
  207.         $myblock->setVar('c_type', $bctype);
  208.         $myblock->setVar('block_type', 'C');
  209.         $myblock->setVar('bcachetime', $bcachetime);
  210.         switch ($bctype) {
  211.         case 'H':
  212.             $name = _AM_CUSTOMHTML;
  213.             break;
  214.         case 'P':
  215.             $name = _AM_CUSTOMPHP;
  216.             break;
  217.         case 'S':
  218.             $name = _AM_CUSTOMSMILE;
  219.             break;
  220.         default:
  221.             $name = _AM_CUSTOMNOSMILE;
  222.             break;
  223.         }
  224.         $myblock->setVar('name', $name);
  225.         $newid = $myblock->store();
  226.         if (!$newid) {
  227.             xoops_cp_header();
  228.             $myblock->getHtmlErrors();
  229.             xoops_cp_footer();
  230.             exit();
  231.         }
  232.         $db =& Database::getInstance();
  233.         foreach ($bmodule as $bmid) {
  234.             $sql = 'INSERT INTO '.$db->prefix('block_module_link').' (block_id, module_id) VALUES ('.$newid.', '.intval($bmid).')';
  235.             $db->query($sql);
  236.         }
  237.         $groups = array(XOOPS_GROUP_ADMIN, XOOPS_GROUP_USERS, XOOPS_GROUP_ANONYMOUS);
  238.         $count = count($groups);
  239.         for ($i = 0; $i < $count; $i++) {
  240.             $sql = "INSERT INTO ".$db->prefix('group_permission')." (gperm_groupid, gperm_itemid, gperm_name, gperm_modid) VALUES (".$groups[$i].", ".$newid.", 'block_read', 1)";
  241.             $db->query($sql);
  242.         }
  243.         redirect_header('admin.php?fct=blocksadmin&t='.time(),1,_AM_DBUPDATED);
  244.         exit();
  245.     }
  246.  
  247.     function edit_block($bid)
  248.     {
  249.         $myblock = new XoopsBlock($bid);
  250.         $db =& Database::getInstance();
  251.         $sql = 'SELECT module_id FROM '.$db->prefix('block_module_link').' WHERE block_id='.intval($bid);
  252.         $result = $db->query($sql);
  253.         $modules = array();
  254.         while ($row = $db->fetchArray($result)) {
  255.             $modules[] = intval($row['module_id']);
  256.         }
  257.         $is_custom = ($myblock->getVar('block_type') == 'C' || $myblock->getVar('block_type') == 'E') ? true : false;
  258.         $block = array('form_title' => _AM_EDITBLOCK, 'name' => $myblock->getVar('name'), 'side' => $myblock->getVar('side'), 'weight' => $myblock->getVar('weight'), 'visible' => $myblock->getVar('visible'), 'title' => $myblock->getVar('title', 'E'), 'content' => $myblock->getVar('content', 'E'), 'modules' => $modules, 'is_custom' => $is_custom, 'ctype' => $myblock->getVar('c_type'), 'cachetime' => $myblock->getVar('bcachetime'), 'op' => 'update', 'bid' => $myblock->getVar('bid'), 'edit_form' => $myblock->getOptions(), 'template' => $myblock->getVar('template'), 'options' => $myblock->getVar('options'));
  259.         echo '<a href="admin.php?fct=blocksadmin">'. _AM_BADMIN .'</a> <span style="font-weight:bold;">»»</span> '._AM_EDITBLOCK.'<br /><br />';
  260.         include XOOPS_ROOT_PATH.'/modules/system/admin/blocksadmin/blockform.php';
  261.         $form->display();
  262.     }
  263.  
  264.     function update_block($bid, $bside, $bweight, $bvisible, $btitle, $bcontent, $bctype, $bcachetime, $bmodule, $options=array())
  265.     {
  266.         global $xoopsConfig;
  267.         if (empty($bmodule)) {
  268.             xoops_cp_header();
  269.             xoops_error(sprintf(_AM_NOTSELNG, _AM_VISIBLEIN));
  270.             xoops_cp_footer();
  271.             exit();
  272.         }
  273.         $myblock = new XoopsBlock($bid);
  274.         $myblock->setVar('side', $bside);
  275.         $myblock->setVar('weight', $bweight);
  276.         $myblock->setVar('visible', $bvisible);
  277.         $myblock->setVar('title', $btitle);
  278.         $myblock->setVar('content', $bcontent);
  279.         $myblock->setVar('bcachetime', $bcachetime);
  280.         if (isset($options)) {
  281.             $options_count = count($options);
  282.             if ($options_count > 0) {
  283.                 //Convert array values to comma-separated
  284.                 for ( $i = 0; $i < $options_count; $i++ ) {
  285.                     if (is_array($options[$i])) {
  286.                         $options[$i] = implode(',', $options[$i]);
  287.                     }
  288.                 }
  289.                 $options = implode('|', $options);
  290.                 $myblock->setVar('options', $options);
  291.             }
  292.         }
  293.         if ($myblock->getVar('block_type') == 'C') {
  294.             switch ($bctype) {
  295.             case 'H':
  296.                 $name = _AM_CUSTOMHTML;
  297.                 break;
  298.             case 'P':
  299.                 $name = _AM_CUSTOMPHP;
  300.                 break;
  301.             case 'S':
  302.                 $name = _AM_CUSTOMSMILE;
  303.                 break;
  304.             default:
  305.                 $name = _AM_CUSTOMNOSMILE;
  306.                 break;
  307.             }
  308.             $myblock->setVar('name', $name);
  309.             $myblock->setVar('c_type', $bctype);
  310.         } else {
  311.             $myblock->setVar('c_type', 'H');
  312.         }
  313.         $msg = _AM_DBUPDATED;
  314.         if ($myblock->store() != false) {
  315.             $db =& Database::getInstance();
  316.             $sql = sprintf("DELETE FROM %s WHERE block_id = %u", $db->prefix('block_module_link'), $bid);
  317.             $db->query($sql);
  318.             foreach ($bmodule as $bmid) {
  319.                 $sql = sprintf("INSERT INTO %s (block_id, module_id) VALUES (%u, %d)", $db->prefix('block_module_link'), $bid, intval($bmid));
  320.                 $db->query($sql);
  321.             }
  322.             include_once XOOPS_ROOT_PATH.'/class/template.php';
  323.             $xoopsTpl = new XoopsTpl();
  324.             $xoopsTpl->xoops_setCaching(2);
  325.             if ($myblock->getVar('template') != '') {
  326.                 if ($xoopsTpl->is_cached('db:'.$myblock->getVar('template'), 'blk_'.$myblock->getVar('bid'))) {
  327.                     if (!$xoopsTpl->clear_cache('db:'.$myblock->getVar('template'), 'blk_'.$myblock->getVar('bid'))) {
  328.                         $msg = 'Unable to clear cache for block ID '.$bid;
  329.                     }
  330.                 }
  331.             } else {
  332.                 if ($xoopsTpl->is_cached('db:system_dummy.html', 'blk_'.$bid)) {
  333.                     if (!$xoopsTpl->clear_cache('db:system_dummy.html', 'blk_'.$bid)) {
  334.                         $msg = 'Unable to clear cache for block ID '.$bid;
  335.                     }
  336.                 }
  337.             }
  338.         } else {
  339.             $msg = 'Failed update of block. ID:'.$bid;
  340.         }
  341.         redirect_header('admin.php?fct=blocksadmin&t='.time(),1,$msg);
  342.         exit();
  343.     }
  344.  
  345.     function delete_block($bid)
  346.     {
  347.         $myblock = new XoopsBlock($bid);
  348.         if ( $myblock->getVar('block_type') == 'S' ) {
  349.             $message = _AM_SYSTEMCANT;
  350.             redirect_header('admin.php?fct=blocksadmin',4,$message);
  351.             exit();
  352.         } elseif ($myblock->getVar('block_type') == 'M') {
  353.             // Fix for duplicated blocks created in 2.0.9 module update
  354.             // A module block can be deleted if there is more than 1 that
  355.             // has the same func_num/show_func which is mostly likely
  356.             // be the one that was duplicated in 2.0.9
  357.             if (1 >= $count = XoopsBlock::countSimilarBlocks($myblock->getVar('mid'), $myblock->getVar('func_num'), $myblock->getVar('show_func'))) {
  358.                 $message = _AM_MODULECANT;
  359.                 redirect_header('admin.php?fct=blocksadmin',4,$message);
  360.                 exit();
  361.             }
  362.         }
  363.         xoops_confirm(array('fct' => 'blocksadmin', 'op' => 'delete_ok', 'bid' => $myblock->getVar('bid')), 'admin.php', sprintf(_AM_RUSUREDEL,$myblock->getVar('title')));
  364.     }
  365.  
  366.     function delete_block_ok($bid)
  367.     {
  368.         $myblock = new XoopsBlock($bid);
  369.         $myblock->delete();
  370.         if ($myblock->getVar('template') != '') {
  371.             $tplfile_handler =& xoops_gethandler('tplfile');
  372.             $btemplate =& $tplfile_handler->find($GLOBALS['xoopsConfig']['template_set'], 'block', $bid);
  373.             if (count($btemplate) > 0) {
  374.                 $tplfile_handler->delete($btemplate[0]);
  375.             }
  376.         }
  377.         redirect_header('admin.php?fct=blocksadmin&t='.time(),1,_AM_DBUPDATED);
  378.         exit();
  379.     }
  380.  
  381.     function order_block($bid, $weight, $visible, $side)
  382.     {
  383.         $myblock = new XoopsBlock($bid);
  384.         $myblock->setVar('weight', $weight);
  385.         $myblock->setVar('visible', $visible);
  386.         $myblock->setVar('side', $side);
  387.         $myblock->store();
  388.     }
  389.  
  390.     function clone_block($bid)
  391.     {
  392.         global $xoopsConfig;
  393.         xoops_cp_header();
  394.         $myblock = new XoopsBlock($bid);
  395.         $db =& Database::getInstance();
  396.         $sql = 'SELECT module_id FROM '.$db->prefix('block_module_link').' WHERE block_id='.intval($bid);
  397.         $result = $db->query($sql);
  398.         $modules = array();
  399.         while ($row = $db->fetchArray($result)) {
  400.             $modules[] = intval($row['module_id']);
  401.         }
  402.         $is_custom = ($myblock->getVar('block_type') == 'C' || $myblock->getVar('block_type') == 'E') ? true : false;
  403.         $block = array('form_title' => _AM_CLONEBLOCK, 'name' => $myblock->getVar('name'), 'side' => $myblock->getVar('side'), 'weight' => $myblock->getVar('weight'), 'visible' => $myblock->getVar('visible'), 'content' => $myblock->getVar('content', 'N'), 'modules' => $modules, 'is_custom' => $is_custom, 'ctype' => $myblock->getVar('c_type'), 'cachetime' => $myblock->getVar('bcachetime'), 'op' => 'clone_ok', 'bid' => $myblock->getVar('bid'), 'edit_form' => $myblock->getOptions(), 'template' => $myblock->getVar('template'), 'options' => $myblock->getVar('options'));
  404.         echo '<a href="admin.php?fct=blocksadmin">'. _AM_BADMIN .'</a> <span style="font-weight:bold;">»»</span> '._AM_CLONEBLOCK.'<br /><br />';
  405.         include XOOPS_ROOT_PATH.'/modules/system/admin/blocksadmin/blockform.php';
  406.         $form->display();
  407.         xoops_cp_footer();
  408.         exit();
  409.     }
  410.  
  411.     function clone_block_ok($bid, $bside, $bweight, $bvisible, $bcachetime, $bmodule, $options)
  412.     {
  413.         global $xoopsUser;
  414.         $block = new XoopsBlock($bid);
  415.         $clone =& $block->xoopsClone();
  416.         if (empty($bmodule)) {
  417.             xoops_cp_header();
  418.             xoops_error(sprintf(_AM_NOTSELNG, _AM_VISIBLEIN));
  419.             xoops_cp_footer();
  420.             exit();
  421.         }
  422.         $clone->setVar('side', $bside);
  423.         $clone->setVar('weight', $bweight);
  424.         $clone->setVar('visible', $bvisible);
  425.         $clone->setVar('content', $bcontent);
  426.         //$clone->setVar('title', $btitle);
  427.         $clone->setVar('bcachetime', $bcachetime);
  428.         if ( isset($options) && (count($options) > 0) ) {
  429.             $options = implode('|', $options);
  430.             $clone->setVar('options', $options);
  431.         }
  432.         $clone->setVar('bid', 0);
  433.         if ($block->getVar('block_type') == 'C' || $block->getVar('block_type') == 'E') {
  434.             $clone->setVar('block_type', 'E');
  435.         } else {
  436.             $clone->setVar('block_type', 'D');
  437.         }
  438.         $newid = $clone->store();
  439.         if (!$newid) {
  440.             xoops_cp_header();
  441.             $clone->getHtmlErrors();
  442.             xoops_cp_footer();
  443.             exit();
  444.         }
  445.         if ($clone->getVar('template') != '') {
  446.             $tplfile_handler =& xoops_gethandler('tplfile');
  447.             $btemplate =& $tplfile_handler->find($GLOBALS['xoopsConfig']['template_set'], 'block', $bid);
  448.             if (count($btemplate) > 0) {
  449.                 $tplclone =& $btemplate[0]->xoopsClone();
  450.                 $tplclone->setVar('tpl_id', 0);
  451.                 $tplclone->setVar('tpl_refid', $newid);
  452.                 $tplman->insert($tplclone);
  453.             }
  454.         }
  455.         $db =& Database::getInstance();
  456.         foreach ($bmodule as $bmid) {
  457.             $sql = 'INSERT INTO '.$db->prefix('block_module_link').' (block_id, module_id) VALUES ('.$newid.', '.$bmid.')';
  458.             $db->query($sql);
  459.         }
  460.         $groups =& $xoopsUser->getGroups();
  461.         $count = count($groups);
  462.         for ($i = 0; $i < $count; $i++) {
  463.             $sql = "INSERT INTO ".$db->prefix('group_permission')." (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES (".$groups[$i].", ".$newid.", 1, 'block_read')";
  464.             $db->query($sql);
  465.         }
  466.         redirect_header('admin.php?fct=blocksadmin&t='.time(),1,_AM_DBUPDATED);
  467.     }
  468. } else {
  469.     echo "Access Denied";
  470. }
  471. ?>
  472.