source: temp/test-xoops.ec-cube.net/html/modules/tinyd0/include/updateblock.inc.php @ 405

Revision 405, 4.7 KB checked in by root, 20 years ago (diff)
Line 
1<?php
2// $Id$
3
4if( ! defined( 'XOOPS_ROOT_PATH' ) ) exit ;
5
6if( substr( XOOPS_VERSION , 6 , 3 ) < 2.1 ) {
7
8    // Keep Block option values when update (by nobunobu)
9    global $xoopsDB;
10    $query = "SELECT mid FROM ".$xoopsDB->prefix('modules')." WHERE dirname='".$modversion['dirname']."' ";
11    $result = $xoopsDB->query($query);
12    $record= $xoopsDB->fetcharray($result);
13    if ($record) {
14        $mid = $record['mid'];
15        $count = count($modversion['blocks']);
16        /* $sql = "SELECT * FROM ".$xoopsDB->prefix('newblocks')." WHERE mid=".$mid." AND block_type ='D'";
17        $fresult = $xoopsDB->query($sql);
18        $n_funcnum = $count;
19        while ($fblock = $xoopsDB->fetchArray($fresult)) {
20            $bnum = 0;
21            for ($i = 1 ; $i <= $count ; $i++) {
22                if (($modversion['blocks'][$i]['file'] == $fblock['func_file']) and ($modversion['blocks'][$i]['show_func'] == $fblock['show_func'])) {
23                    $bnum = $i;
24                    break;
25                }
26            }
27            if($bnum) {
28                $n_funcnum++;
29                $modversion['blocks'][$n_funcnum]['file'] = $fblock['func_file'];
30                $modversion['blocks'][$n_funcnum]['name'] = $fblock['name'];
31                $modversion['blocks'][$n_funcnum]['description'] = $fblock['name'];
32                $modversion['blocks'][$n_funcnum]['show_func'] = $fblock['show_func'];
33                $modversion['blocks'][$n_funcnum]['edit_func'] = $fblock['edit_func'];
34                $modversion['blocks'][$n_funcnum]['template'] = $fblock['template'];
35                if ($fblock['options']) {
36                    $old_vals=explode("|",$fblock['options']);
37                    $def_vals=explode("|",$modversion['blocks'][$bnum]['options']);
38                    if (count($old_vals) == count($def_vals)) {
39                        // the number of parameters is not changed
40                        $modversion['blocks'][$n_funcnum]['options'] = $fblock['options'];
41                        $local_msgs[] = "Option's values of the cloned block <b>".$fblock['name']."</b> will be kept. (value = <b>".$fblock['options']."</b>)";
42                    } else if (count($old_vals) < count($def_vals)){
43                        // the number of parameters is increased
44                        for ($j=0; $j < count($old_vals); $j++) {
45                            $def_vals[$j] = $old_vals[$j];
46                        }
47                        $modversion['blocks'][$n_funcnum]['options'] = implode("|",$def_vals);
48                        $local_msgs[] = "Option's values of the cloned block <b>".$fblock['name']."</b> will be kept and new options are added. (value = <b>".$modversion['blocks'][$fblock['func_num']]['options']."</b>)";
49                    } else {
50                        $modversion['blocks'][$n_funcnum]['options'] = implode("|",$def_vals);
51                        $local_msgs[] = "Option's values of the cloned block <b>".$fblock['name']."</b> will be reset to the default, because of some decrease of options. (value = <b>".$modversion['blocks'][$n_funcnum]['options']."</b>)";
52                    }
53                }
54                $sql = "UPDATE ".$xoopsDB->prefix('newblocks')." SET func_num='$n_funcnum' WHERE mid=".$mid." AND bid='".$fblock['bid']."'";
55                $iret = $xoopsDB->query($sql);
56
57            }
58        } */
59       
60        $sql = "SELECT * FROM ".$xoopsDB->prefix('newblocks')." WHERE mid=".$mid." AND block_type <>'D' AND func_num > $count";
61        $fresult = $xoopsDB->query($sql);
62        while ($fblock = $xoopsDB->fetchArray($fresult)) {
63            $local_msgs[] = "Non Defined Block <b>".$fblock['name']."</b> will be deleted";
64            $sql = "DELETE FROM ".$xoopsDB->prefix('newblocks')." WHERE bid='".$fblock['bid']."'";
65            $iret = $xoopsDB->query($sql);
66        }
67       
68        for ($i = 1 ; $i <= $count ; $i++) {
69            $sql = "SELECT name,options FROM ".$xoopsDB->prefix('newblocks')." WHERE mid=".$mid." AND func_num=".$i." AND show_func='".addslashes($modversion['blocks'][$i]['show_func'])."' AND func_file='".addslashes($modversion['blocks'][$i]['file'])."'";
70            $fresult = $xoopsDB->query($sql);
71            $fblock = $xoopsDB->fetchArray($fresult);
72            if ( isset( $fblock['options'] ) ) {
73                $old_vals=explode("|",$fblock['options']);
74                $def_vals=explode("|",$modversion['blocks'][$i]['options']);
75                if (count($old_vals) == count($def_vals)) {
76                    $modversion['blocks'][$i]['options'] = $fblock['options'];
77                    $local_msgs[] = "Option's values of the block <b>".$fblock['name']."</b> will be kept. (value = <b>".$fblock['options']."</b>)";
78                } else if (count($old_vals) < count($def_vals)){
79                    for ($j=0; $j < count($old_vals); $j++) {
80                        $def_vals[$j] = $old_vals[$j];
81                    }
82                    $modversion['blocks'][$i]['options'] = implode("|",$def_vals);
83                    $local_msgs[] = "Option's values of the block <b>".$fblock['name']."</b> will be kept and new option(s) are added. (value = <b>".$modversion['blocks'][$i]['options']."</b>)";
84                } else {
85                    $local_msgs[] = "Option's values of the block <b>".$fblock['name']."</b> will be reset to the default, because of some decrease of options. (value = <b>".$modversion['blocks'][$i]['options']."</b>)";
86                }
87            }
88        }
89    }
90
91    global $msgs , $myblocksadmin_parsed_updateblock ;
92    if( ! empty( $msgs ) && empty( $myblocksadmin_parsed_updateblock ) ) {
93        $msgs = array_merge( $msgs , $local_msgs ) ;
94        $myblocksadmin_parsed_updateblock = true ;
95    }
96
97}
98
99?>
Note: See TracBrowser for help on using the repository browser.