source: extensions/AdditionalPages/admin/upgrade.inc.php @ 9313

Last change on this file since 9313 was 9310, checked in by patdenice, 13 years ago

Lot of optimization.
Add privacy level management.

File size: 4.0 KB
Line 
1<?php
2
3if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
4
5global $prefixeTable, $conf;
6
7$query = 'SHOW FULL COLUMNS FROM ' . $prefixeTable . 'additionalpages;';
8$result = array_from_query($query, 'Collation');
9if (strpos($result[4], 'utf8') === false)
10{
11  $query = 'ALTER TABLE ' . $prefixeTable . 'additionalpages
12MODIFY COLUMN lang varchar(255) CHARACTER SET utf8 NOT NULL,
13MODIFY COLUMN title varchar(255) CHARACTER SET utf8 NOT NULL,
14MODIFY COLUMN text longtext CHARACTER SET utf8 NOT NULL,
15DEFAULT CHARACTER SET utf8;';
16
17  pwg_query($query);
18}
19
20if ($conf['additional_pages'] === false)
21{
22  load_conf_from_db('param = "additional_pages"');
23  $old_conf = explode ("," , $conf['additional_pages']);
24
25  $query = '
26ALTER TABLE ' . $prefixeTable . 'additionalpages
27CHANGE `id` `id` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
28CHANGE `pos` `pos` SMALLINT( 5 ) NULL DEFAULT NULL ,
29CHANGE `lang` `lang` VARCHAR( 255 ) NULL DEFAULT NULL ,
30CHANGE `text` `content` LONGTEXT NOT NULL ,
31ADD `users` VARCHAR( 255 ) NULL DEFAULT NULL ,
32ADD `groups` VARCHAR( 255 ) NULL DEFAULT NULL ,
33ADD `permalink` VARCHAR( 64 ) NULL DEFAULT NULL ,
34ADD `standalone` ENUM( "true", "false" ) NOT NULL DEFAULT "false";';
35  pwg_query($query);
36
37  $query = '
38SELECT id, pos, title, lang
39FROM '.$prefixeTable.'additionalpages
40ORDER BY pos ASC
41;';
42  $result = pwg_query($query);
43  while ($row = pwg_db_fetch_assoc($result))
44  {
45    $title = $row['title'];
46    $authorized_users = 'NULL';
47    $authorized_groups = 'NULL';
48
49    if ($old_conf[7] == 'on' and strpos($title , '/user_id='))
50    {
51      $array = explode('/user_id=' , $title);
52      $title = $array[0];
53      $authorized_users = !empty($array[1]) ? '"'.$array[1].'"' : '"admin"';
54    }
55    if ($old_conf[6] == 'on' and strpos($title , '/group_id='))
56    {
57      $array = explode('/group_id=' , $title);
58      $title = $array[0];
59      $authorized_groups = !empty($array[1]) ? '"'.$array[1].'"' : 'NULL';
60    }
61
62    $position = $row['pos'];
63    if ($row['pos'] === '0')
64      $position = '-100';
65    elseif (empty($row['pos']))
66      $position = '0';
67
68    $language = $row['lang'] != 'ALL' ? '"'.$row['lang'].'"' : 'NULL';
69
70    $query = '
71UPDATE '.$prefixeTable.'additionalpages
72SET title = "'.addslashes($title).'",
73    pos = '.$position.',
74    lang = '.$language.',
75    users = '.$authorized_users.',
76    groups = '.$authorized_groups.'
77WHERE id = '.$row['id'].'
78;';
79    pwg_query($query);
80  }
81
82  if ($old_conf[1] == 'off')
83  {
84    $mb_conf = @unserialize($conf['blk_menubar']);
85    if (!isset($mb_conf['mbAdditionalPages']))
86    {
87      $last = @abs(end($mb_conf));
88      $mb_conf['mbAdditionalPages'] = $last + 50;
89    }
90    $mb_conf['mbAdditionalPages'] = -1 * abs($mb_conf['mbAdditionalPages']);
91    conf_update_param('blk_menubar', pwg_db_real_escape_string(serialize($mb_conf)));
92  }
93
94  $new_conf = array(
95    'show_home' => @($old_conf[2] == 'on'),
96    'group_perm' => @($old_conf[6] == 'on'),
97    'user_perm' => @($old_conf[7] == 'on'),
98    'homepage' => null,
99    );
100
101  $languages = explode('/', $old_conf[0]);
102  $new_conf['languages'] = array();
103  foreach($languages as $language)
104  {
105    $array = explode(':', $language);
106    if (!isset($array[1])) $new_conf['languages']['default'] = $array[0];
107    else $new_conf['languages'][$array[0]] = $array[1];
108  }
109
110  $conf['additional_pages'] = $new_conf;
111
112  conf_update_param('additional_pages', pwg_db_real_escape_string(serialize($new_conf)));
113}
114
115if (!isset($conf['additional_pages']['level_perm']))
116{
117  $query = '
118ALTER TABLE ' . $prefixeTable . 'additionalpages
119ADD `level` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT "0" AFTER `groups`
120;';
121  pwg_query($query);
122
123  $query = '
124UPDATE ' . $prefixeTable . 'additionalpages
125SET users = CONCAT( users, ",admin,webmaster" )
126WHERE users IS NOT NULL
127;';
128  pwg_query($query);
129
130  $conf['additional_pages']['level_perm'] = false;
131
132  conf_update_param('additional_pages', pwg_db_real_escape_string(serialize($conf['additional_pages'])));
133}
134
135?>
Note: See TracBrowser for help on using the repository browser.