Subversion Repositories svnkaklik

Rev

Go to most recent revision | Details | Last modification | View Log

Rev Author Line No. Line
6 kaklik 1
<?php
2
// +-----------------------------------------------------------------------+
3
// | PhpWebGallery - a PHP based picture gallery                           |
4
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
5
// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net |
6
// +-----------------------------------------------------------------------+
7
// | branch        : BSF (Best So Far)
8
// | file          : $RCSfile: upgrade_1.3.0.php,v $
9
// | last update   : $Date: 2005/01/07 23:10:51 $
10
// | last modifier : $Author: plg $
11
// | revision      : $Revision: 1.2 $
12
// +-----------------------------------------------------------------------+
13
// | This program is free software; you can redistribute it and/or modify  |
14
// | it under the terms of the GNU General Public License as published by  |
15
// | the Free Software Foundation                                          |
16
// |                                                                       |
17
// | This program is distributed in the hope that it will be useful, but   |
18
// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
19
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
20
// | General Public License for more details.                              |
21
// |                                                                       |
22
// | You should have received a copy of the GNU General Public License     |
23
// | along with this program; if not, write to the Free Software           |
24
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
25
// | USA.                                                                  |
26
// +-----------------------------------------------------------------------+
27
 
28
if (!defined('IN_UPGRADE') or !IN_UPGRADE)
29
{
30
  die('Hacking attempt!');
31
}
32
 
33
$last_time = get_moment();
34
 
35
// save data before deletion
36
$query = '
37
SELECT prefix_thumbnail, mail_webmaster
38
  FROM '.PREFIX_TABLE.'config
39
;';
40
$save = mysql_fetch_array(mysql_query($query));
41
 
42
$queries = array(
43
  "
44
DROP TABLE phpwebgallery_config
45
;",
46
 
47
  "
48
CREATE TABLE phpwebgallery_config (
49
  param varchar(40) NOT NULL default '',
50
  value varchar(255) default NULL,
51
  comment varchar(255) default NULL,
52
  PRIMARY KEY  (param)
53
) TYPE=MyISAM COMMENT='configuration table'
54
;",
55
 
56
  "
57
ALTER TABLE phpwebgallery_categories
58
  CHANGE COLUMN site_id site_id tinyint(4) unsigned default '1',
59
  ADD COLUMN commentable enum('true','false') NOT NULL default 'true',
60
  ADD COLUMN uppercats varchar(255) NOT NULL default '',
61
  ADD COLUMN global_rank varchar(255) default NULL,
62
  ADD INDEX categories_i2 (id_uppercat)
63
;",
64
 
65
  "
66
ALTER TABLE phpwebgallery_comments
67
  ADD COLUMN date_temp int(11) unsigned
68
;",
69
 
70
  "
71
UPDATE phpwebgallery_comments
72
  SET date_temp = date
73
;",
74
 
75
  "
76
ALTER TABLE phpwebgallery_comments
77
  CHANGE COLUMN date date datetime NOT NULL default '0000-00-00 00:00:00'
78
;",
79
 
80
  "
81
UPDATE phpwebgallery_comments
82
  SET date = FROM_UNIXTIME(date_temp)
83
;",
84
 
85
  "
86
ALTER TABLE phpwebgallery_comments
87
  DROP COLUMN date_temp
88
;",
89
 
90
  "
91
ALTER TABLE phpwebgallery_favorites
92
  DROP INDEX user_id,
93
  ADD PRIMARY KEY (user_id,image_id)
94
;",
95
 
96
  "
97
ALTER TABLE phpwebgallery_history
98
  ADD COLUMN date_temp int(11) unsigned
99
;",
100
 
101
  "
102
UPDATE phpwebgallery_history
103
  SET date_temp = date
104
;",
105
 
106
  "
107
ALTER TABLE phpwebgallery_history
108
  CHANGE COLUMN date date datetime NOT NULL default '0000-00-00 00:00:00'
109
;",
110
 
111
  "
112
UPDATE phpwebgallery_history
113
  SET date = FROM_UNIXTIME(date_temp)
114
;",
115
 
116
  "
117
ALTER TABLE phpwebgallery_history
118
  DROP COLUMN date_temp
119
;",
120
 
121
  "
122
ALTER TABLE phpwebgallery_history
123
  ADD INDEX history_i1 (date)
124
;",
125
 
126
  "
127
ALTER TABLE phpwebgallery_image_category
128
  ADD INDEX image_category_i1 (image_id),
129
  ADD INDEX image_category_i2 (category_id)
130
;",
131
 
132
  "
133
ALTER TABLE phpwebgallery_images
134
  CHANGE COLUMN tn_ext tn_ext varchar(4) default '',
135
  ADD COLUMN path varchar(255) NOT NULL default '',
136
  ADD COLUMN date_metadata_update date default NULL,
137
  ADD COLUMN average_rate float(5,2) unsigned default NULL,
138
  ADD COLUMN representative_ext varchar(4) default NULL,
139
  DROP INDEX storage_category_id,
140
  ADD INDEX images_i1 (storage_category_id),
141
  ADD INDEX images_i2 (date_available),
142
  ADD INDEX images_i3 (average_rate),
143
  ADD INDEX images_i4 (hit),
144
  ADD INDEX images_i5 (date_creation)
145
;",
146
 
147
  "
148
ALTER TABLE phpwebgallery_sessions
149
  DROP COLUMN ip
150
;",
151
 
152
    "
153
ALTER TABLE phpwebgallery_sessions
154
  ADD COLUMN expiration_temp int(11) unsigned
155
;",
156
 
157
  "
158
UPDATE phpwebgallery_sessions
159
  SET expiration_temp = expiration
160
;",
161
 
162
  "
163
ALTER TABLE phpwebgallery_sessions
164
  CHANGE COLUMN expiration expiration datetime NOT NULL default '0000-00-00 00:00:00'
165
;",
166
 
167
  "
168
UPDATE phpwebgallery_sessions
169
  SET expiration = FROM_UNIXTIME(expiration_temp)
170
;",
171
 
172
  "
173
ALTER TABLE phpwebgallery_sessions
174
  DROP COLUMN expiration_temp
175
;",
176
 
177
  "
178
ALTER TABLE phpwebgallery_sites
179
  DROP INDEX galleries_url,
180
  ADD UNIQUE sites_ui1 (galleries_url)
181
;",
182
 
183
  "
184
ALTER TABLE phpwebgallery_users
185
  DROP COLUMN long_period,
186
  DROP COLUMN short_period,
187
  ADD COLUMN recent_period tinyint(3) unsigned NOT NULL default '7',
188
  DROP INDEX username,
189
  ADD UNIQUE users_ui1 (username)
190
;",
191
 
192
  "
193
CREATE TABLE phpwebgallery_rate (
194
  user_id smallint(5) unsigned NOT NULL default '0',
195
  element_id mediumint(8) unsigned NOT NULL default '0',
196
  rate tinyint(2) unsigned NOT NULL default '0',
197
  PRIMARY KEY  (user_id,element_id)
198
) TYPE=MyISAM
199
;",
200
 
201
  "
202
CREATE TABLE phpwebgallery_user_forbidden (
203
  user_id smallint(5) unsigned NOT NULL default '0',
204
  need_update enum('true','false') NOT NULL default 'true',
205
  forbidden_categories text,
206
  PRIMARY KEY  (user_id)
207
) TYPE=MyISAM
208
;",
209
 
210
  "
211
UPDATE phpwebgallery_users
212
  SET language = 'en_UK.iso-8859-1'
213
    , template = 'default'
214
;",
215
 
216
  "
217
DELETE FROM phpwebgallery_user_access
218
;",
219
 
220
  "
221
DELETE FROM phpwebgallery_group_access
222
;"
223
 
224
  );
225
 
226
foreach ($queries as $query)
227
{
228
  $query = str_replace('phpwebgallery_', PREFIX_TABLE, $query);
229
  pwg_query($query);
230
}
231
 
232
$new_time = get_moment();
233
echo '<pre>['.get_elapsed_time($last_time, $new_time).']';
234
echo ' Basic database structure upgrade done</pre>';
235
flush();
236
$last_time = $new_time;
237
 
238
execute_sqlfile(PHPWG_ROOT_PATH.'install/config.sql',
239
                'phpwebgallery_',
240
                PREFIX_TABLE);
241
 
242
$queries = array(
243
  "
244
UPDATE phpwebgallery_config
245
  SET value = '".$save['prefix_thumbnail']."'
246
  WHERE param = 'prefix_thumbnail'
247
;",
248
 
249
  "
250
UPDATE phpwebgallery_config
251
  SET value = '".$save['mail_webmaster']."'
252
  WHERE param = 'mail_webmaster'
253
;"
254
  );
255
 
256
foreach ($queries as $query)
257
{
258
  $query = str_replace('phpwebgallery_', PREFIX_TABLE, $query);
259
  pwg_query($query);
260
}
261
 
262
$new_time = get_moment();
263
echo '<pre>['.get_elapsed_time($last_time, $new_time).']';
264
echo ' Saved configuration information restored</pre>';
265
flush();
266
$last_time = $new_time;
267
 
268
// filling the new column categories.uppercats
269
$id_uppercats = array();
270
 
271
$query = '
272
SELECT id, id_uppercat
273
  FROM '.CATEGORIES_TABLE.'
274
;';
275
$result = pwg_query($query);
276
while ($row = mysql_fetch_array($result))
277
{
278
  if (!isset($row['id_uppercat']) or $row['id_uppercat'] == '')
279
  {
280
    $row['id_uppercat'] = 'NULL';
281
  }
282
  $id_uppercats[$row['id']] = $row['id_uppercat'];
283
}
284
 
285
$datas = array();
286
 
287
foreach (array_keys($id_uppercats) as $id)
288
{
289
  $data = array();
290
  $data['id'] = $id;
291
  $uppercats = array();
292
 
293
  array_push($uppercats, $id);
294
  while (isset($id_uppercats[$id]) and $id_uppercats[$id] != 'NULL')
295
  {
296
    array_push($uppercats, $id_uppercats[$id]);
297
    $id = $id_uppercats[$id];
298
  }
299
  $data['uppercats'] = implode(',', array_reverse($uppercats));
300
 
301
  array_push($datas, $data);
302
}
303
 
304
$fields = array('primary' => array('id'), 'update' => array('uppercats'));
305
mass_updates(CATEGORIES_TABLE, $fields, $datas);
306
 
307
$new_time = get_moment();
308
echo '<pre>['.get_elapsed_time($last_time, $new_time).']';
309
echo ' filling the new column categories.uppercats</pre>';
310
flush();
311
$last_time = $new_time;
312
 
313
// refresh calculated datas
314
ordering();
315
update_global_rank();
316
update_category();
317
 
318
$new_time = get_moment();
319
echo '<pre>['.get_elapsed_time($last_time, $new_time).']';
320
echo ' Calculated data updated (categories.rank, categories.global_rank,
321
categories.date_last, categories.representative_picture_id,
322
categories.nb_images)</pre>';
323
flush();
324
$last_time = $new_time;
325
 
326
// update calculated field "images.path"
327
$cat_ids = array();
328
 
329
$query = '
330
SELECT DISTINCT(storage_category_id) AS unique_storage_category_id
331
  FROM '.IMAGES_TABLE.'
332
;';
333
$result = pwg_query($query);
334
while ($row = mysql_fetch_array($result))
335
{
336
  array_push($cat_ids, $row['unique_storage_category_id']);
337
}
338
$fulldirs = get_fulldirs($cat_ids);
339
 
340
foreach ($cat_ids as $cat_id)
341
{
342
  $query = '
343
UPDATE '.IMAGES_TABLE.'
344
  SET path = CONCAT(\''.$fulldirs[$cat_id].'\',\'/\',file)
345
  WHERE storage_category_id = '.$cat_id.'
346
;';
347
  pwg_query($query);
348
}
349
 
350
$new_time = get_moment();
351
echo '<pre>['.get_elapsed_time($last_time, $new_time).']';
352
echo ' new column images.path filled</pre>';
353
flush();
354
$last_time = $new_time;
355
 
356
// all sub-categories of private categories become private
357
$cat_ids = array();
358
 
359
$query = '
360
SELECT id
361
  FROM '.CATEGORIES_TABLE.'
362
  WHERE status = \'private\'
363
;';
364
$result = pwg_query($query);
365
while ($row = mysql_fetch_array($result))
366
{
367
  array_push($cat_ids, $row['id']);
368
}
369
 
370
if (count($cat_ids) > 0)
371
{
372
  $privates = get_subcat_ids($cat_ids);
373
 
374
  $query = '
375
UPDATE '.CATEGORIES_TABLE.'
376
  SET status = \'private\'
377
  WHERE id IN ('.implode(',', $privates).')
378
;';
379
  pwg_query($query);
380
}
381
 
382
$new_time = get_moment();
383
echo '<pre>['.get_elapsed_time($last_time, $new_time).']';
384
echo ' all sub-categories of private categories become private</pre>';
385
flush();
386
$last_time = $new_time;
387
 
388
$infos = array(
389
  'user permissions and group permissions have been erased',
390
 
391
  'only thumbnails prefix and webmaster mail address have been saved from
392
previous configuration',
393
 
394
  'in include/mysql.inc.php, before
395
<pre style="background-color:lightgray">?&gt;</pre>
396
insert
397
<pre style="background-color:lightgray">define(\'PHPWG_INSTALLED\', true);<pre>'
398
 
399
  );
400
 
401
?>