-
Notifications
You must be signed in to change notification settings - Fork 8
/
upgrades
4605 lines (3493 loc) · 264 KB
/
upgrades
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# This is the upgrade file for SQL. What does this mean to you?
# If you are a developer you should leave notes here as to what
# was done and when. This includes inserts, alter tables and deletions.
# Changes should always be appended, and when a tag is applied,
# an End/Start comment should be appended.
#
# "End of X" means that tag X was applied "here" (at this point in
# the file, on the date given)..
# "Start of Y" is just intended to clarify that work on the next tag
# after X started at the same time that X was tagged.
#
# $Id$
#
# BEGIN tf23's additions
# for required changes to update a site from fry to devel
# this matches cvs diff -r fry -r T_2_3_0_10 -U3 sql/mysql/slashschema_create.sql
#
# So if you are upgrading a site from 2.2.x, you should start here
# and apply all the changes below. Simply pasting in the whole
# list almost certainly won't work, since we have several notes
# where you need to run a brief perl script or something; you will
# need to read down it and apply those brief moments of human
# intelligence. Sorry. We plan to build a tool to automate this
# upgrade process... someday. - Jamie 2003/03/31
ALTER TABLE vars CHANGE name name varchar(48) DEFAULT '' NOT NULL;
ALTER TABLE accesslist CHANGE uid uid mediumint UNSIGNED NOT NULL;
ALTER TABLE blocks ADD rss_template varchar(30);
ALTER TABLE blocks ADD items smallint NOT NULL DEFAULT '0';
ALTER TABLE blocks ADD FOREIGN KEY (rss_template) REFERENCES templates(name);
ALTER TABLE sections ADD FOREIGN KEY (feature_story) REFERENCES stories(sid);
DROP TABLE IF EXISTS story_topics;
CREATE TABLE story_topics (
id int(5) NOT NULL auto_increment,
sid varchar(16) NOT NULL default '',
tid smallint(5) unsigned default NULL,
FOREIGN KEY (sid) REFERENCES stories(sid),
FOREIGN KEY (tid) REFERENCES topics(tid),
PRIMARY KEY (id),
INDEX tid (tid),
INDEX sid (sid)
) TYPE = myisam;
DROP TABLE IF EXISTS string_param;
CREATE TABLE string_param (
param_id smallint UNSIGNED NOT NULL auto_increment,
type varchar(16) NOT NULL,
code varchar(16) NOT NULL,
name varchar(32) NOT NULL,
UNIQUE code_key (type,code),
PRIMARY KEY (param_id)
) TYPE = myisam;
DROP TABLE IF EXISTS submission_param;
CREATE TABLE submission_param (
param_id mediumint UNSIGNED NOT NULL auto_increment,
subid varchar(15) NOT NULL,
name varchar(32) DEFAULT '' NOT NULL,
value text NOT NULL,
UNIQUE submission_key (subid,name),
PRIMARY KEY (param_id)
) TYPE = myisam;
ALTER TABLE templates ADD COLUMN journal_last_entry_date datetime;
DROP TABLE IF EXISTS users_hits;
CREATE TABLE users_hits (
uid mediumint UNSIGNED NOT NULL,
lastclick TIMESTAMP,
hits int DEFAULT '0' NOT NULL,
PRIMARY KEY (uid)
) TYPE = myisam;
INSERT into users_hits (uid) select uid from users;
ALTER TABLE users_index CHANGE COLUMN exsect exsect varchar(255);
ALTER TABLE users_info ADD people blob;
DROP TABLE IF EXISTS temp_zoo;
# END tf23's additions
# (from sometime prior to when we had this file)
ALTER TABLE users_info DROP COLUMN hits;
# LCR 2/7, 10PM T_2_3_0_9
# To fix the data in users to add the + sign to positive values -Brian
UPDATE users_param SET value = CONCAT("+",value) WHERE (name LIKE "reason%" OR name LIKE "people_bonus%") AND value LIKE "_";
# Upgrade Zoo to latest schema, once you do this run the script
# "plugins/Zoo/rebuildPeople" - Brian
CREATE TABLE temp_zoo SELECT * FROM people;
DROP TABLE IF EXISTS people;
CREATE TABLE people (
id MEDIUMINT UNSIGNED NOT NULL auto_increment,
uid MEDIUMINT UNSIGNED NOT NULL,
person MEDIUMINT UNSIGNED NOT NULL,
type enum("friend","foe"),
perceive enum("fan","freak"),
fof MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
eof MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
UNIQUE degree_of_separation (uid,person),
PRIMARY KEY (id)
);
INSERT INTO people (uid,person,type) SELECT uid, person, type from temp_zoo;
# This was removed from the bonus system a while ago. -Brian
ALTER TABLE users_comments DROP anon_comments;
# Changes for sections
# Make sure you run install-plugin for sections and delete the old sections.pl from your
# slashcode theme. -Brian
ALTER TABLE sections ADD url char(32) DEFAULT '' NOT NULL;
ALTER TABLE sections ADD hostname char(32)DEFAULT '' NOT NULL;
# Well we didn't need either of these two indexes. We got the same data from two
# other rows. -Brian
ALTER TABLE comments DROP INDEX uid;
ALTER TABLE comments DROP INDEX sid;
# More key stuff. We had a number of duplicate keys in
# users. I should really spend time and go through the
# entire schema. -Brian
ALTER TABLE users DROP INDEX login;
ALTER TABLE users ADD INDEX login (nickname,uid,passwd);
ALTER TABLE users DROP INDEX chk4user;
ALTER TABLE users ADD INDEX chk4user (realemail,nickname);
ALTER TABLE users DROP INDEX nickname_lookup;
ALTER TABLE users DROP INDEX chk4email;
# Few more.
ALTER TABLE moderatorlog DROP INDEX sid_2;
ALTER TABLE moderatorlog ADD INDEX sid_2 (cid,uid,sid);
ALTER TABLE moderatorlog DROP INDEX cid;
# new multi topics stuff
DROP TABLE IF EXISTS story_topics;
CREATE TABLE story_topics (
id int(5) NOT NULL auto_increment,
sid varchar(16) NOT NULL default '',
tid smallint(5) unsigned default NULL,
FOREIGN KEY (sid) REFERENCES stories(sid),
FOREIGN KEY (tid) REFERENCES topics(tid),
PRIMARY KEY (id),
INDEX sid (sid),
INDEX tid (tid)
) TYPE=MyISAM;
# New var to regulate comment display - Jamie
INSERT INTO vars (name, value, description) VALUES ('comments_max_email_len','40','Max num of chars of fakeemail to display in comment header');
# End of T_2_3_0_10, Start of T_2_3_0_11
# New attribute for stories
ALTER TABLE stories ADD day_published date DEFAULT '0000-00-00' NOT NULL;
ALTER TABLE stories ADD INDEX published (day_published);
UPDATE stories SET day_published=time;
INSERT INTO vars (name, value, description) VALUES ('comments_moddable_archived','0','Are comments in discussions that have been archived moderatable?');
INSERT INTO vars (name, value, description) VALUES ('comments_moddable_hours','336','Num hours after being posted that a comment may be moderated');
# End of T_2_3_0_?, Start of R_2_3_0_13
# This was added to sql/mysql/slashschema_create.sql ... but is NOT yet live.
# Brian says "list" is being yanked and "type" is part of code that PatG
# hasn't yet committed, so I'm ignoring it for now... this is here in
# upgrades as a reminder.
# added new column to section_extras to accomodate pulldows
# (key/values stored in string_param)
ALTER TABLE section_extras add column type enum("text","list") DEFAULT 'text' NOT NULL;
ALTER TABLE string_param modify column code varchar(32) NOT NULL;
# End of R_2_3_0_13, Start of T_2_3_0_14
ALTER TABLE users_hits ADD COLUMN hits_bought_today SMALLINT UNSIGNED DEFAULT 0 NOT NULL AFTER hits_bought;
ALTER TABLE sessions add column last_subid varchar(15);
ALTER TABLE sessions add column last_sid varchar(16);
# End of R_2_3_0_14, Start of T_2_3_0_15
# add ECODE tag ...
UPDATE vars SET value=CONCAT(value,'|ECODE') WHERE name='approvedtags';
# Message threshold
INSERT INTO vars (name, value, description) VALUES ('message_threshold','1','Default threshold for a comment to trigger a message');
# End of R_2_3_0_15, Start of T_2_3_0_16
# Browser bug workaround
INSERT INTO vars (name, value, description) VALUES ('comment_nonstartwordchars','.,;:/','Chars which cannot start a word (will be forcibly separated from the rest of the word by a space) - this works around a Windows/MSIE "widening" bug - set blank for no action');
# Size changes and new column -Brian
ALTER TABLE sections CHANGE url url varchar(128) DEFAULT '' NOT NULL;
ALTER TABLE sections CHANGE hostname hostname varchar(128) DEFAULT '' NOT NULL;
ALTER TABLE sections ADD cookiedomain varchar(128) DEFAULT '' NOT NULL;
# freshenup.pl chunks article .shtml files
INSERT INTO vars (name, value, description) VALUES ('freshenup_max_stories','100','Maximum number of article.shtml files to write at a time in freshenup.pl');
# Start of T_2_3_0_20
# New hooks table
DROP TABLE IF EXISTS hooks;
CREATE TABLE hooks (
id mediumint(5) UNSIGNED NOT NULL auto_increment,
param varchar(50) DEFAULT '' NOT NULL,
class varchar(100) DEFAULT '' NOT NULL,
subroutine varchar(100) DEFAULT '' NOT NULL,
PRIMARY KEY (id),
UNIQUE hook_param (param,class,subroutine)
) TYPE = myisam;
ALTER TABLE stories ADD COLUMN qid MEDIUMINT UNSIGNED DEFAULT NULL;
# Same as below
#perl -MSlash::Test=virtusername -le '$qs = $slashdb->sqlSelectAllHashrefArray("pollquestions.qid AS qid, pollquestions.sid AS sid", "pollquestions, stories", "pollquestions.sid=stories.sid"); for my $hr (@$qs) { my($q,$s) = ($hr->{qid}, $hr->{sid}); my $sq=$slashdb->sqlQuote($s); print "$q -> $s"; $slashdb->sqlUpdate("stories", { qid => $q }, "sid=$sq") or die "\tFAILED" }'
# I have never tried to do a "source" from a file but I suspect it will work -Brian
select CONCAT('UPDATE stories SET qid=',qid,' WHERE sid="',sid,'";') into outfile "/tmp/pollquestions.sql" from pollquestions;
source /tmp/pollquestions.sql
# (and, once we're convinced everything works)
ALTER TABLE pollquestions DROP COLUMN sid;
# End of T_2_3_0_20, Start of T_2_3_0_21
# New submission_param table
DROP TABLE IF EXISTS submission_param;
CREATE TABLE submission_param (
param_id mediumint UNSIGNED NOT NULL auto_increment,
subid varchar(15) NOT NULL,
name varchar(32) DEFAULT '' NOT NULL,
value text NOT NULL,
UNIQUE submission_key (subid,name),
PRIMARY KEY (param_id)
) TYPE = myisam;
# This is the multi section topic stuff for Foundries
INSERT INTO code_param (type, code, name) VALUES ('section_topic_types',1,'default');
ALTER TABLE section_topics ADD COLUMN type smallint UNSIGNED NOT NULL;
UPDATE section_topics SET type=1;
ALTER TABLE section_extras MODIFY COLUMN type ENUM("text","list","topics") DEFAULT 'text' NOT NULL;
# Autopoll update
ALTER TABLE pollquestions ADD COLUMN autopoll enum("no","yes") DEFAULT 'no' NOT NULL;
# Submissions
ALTER TABLE submissions ADD COLUMN weight float DEFAULT '0' NOT NULL;
#New index_handler bits
INSERT INTO vars (name, value, description) VALUES ('index_handler','index.pl','The perl servlet to call for conections to the root of the server.');
ALTER TABLE sections ADD COLUMN index_handler varchar(30) DEFAULT "index.pl" NOT NULL;
ALTER TABLE sections ADD COLUMN writestatus ENUM("ok","dirty") DEFAULT 'ok' NOT NULL;
#slashd_log table
INSERT INTO menus (menu, label, value, seclev, menuorder) VALUES ('admin','Slashd','[% gSkin.rootdir %]/admin.pl?op=slashd',500,17);
# Note this is different than what Brian committed Wednesday morning;
# were any sites updated with that?
DROP TABLE IF EXISTS slashd_status;
CREATE TABLE slashd_status (
task varchar(50) NOT NULL default '',
next_begin DATETIME,
in_progress TINYINT NOT NULL DEFAULT '0',
last_completed DATETIME,
summary VARCHAR(255) NOT NULL DEFAULT '',
duration float(6,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY (task)
) TYPE=MyISAM;
# Remember pollBooth is now a plugin!
# Unique changes for Pat
ALTER TABLE section_topics DROP PRIMARY KEY;
ALTER TABLE section_topics ADD PRIMARY KEY (section,type,tid);
INSERT INTO string_param (type, code, name) VALUES ('yes_no','yes','yes');
INSERT INTO string_param (type, code, name) VALUES ('yes_no','no','no');
INSERT INTO vars (name, value, description) VALUES ('label_ui','0','Whether to label some things in the admin ui');
INSERT INTO vars (name, value, description) VALUES ('enable_index_topic','','set this to the value in string param for index topic \(something like "topic_4"\)');
INSERT INTO vars (name, value, description) VALUES ('get_titles','0','get the story titles');
INSERT INTO vars (name, value, description) VALUES ('organise_stories','','organise story blocks');
INSERT INTO string_param (Type, code, name) VALUES ('section_topic_type','topic_1','Default');
# another small change for topic types
ALTER TABLE section_topics MODIFY COLUMN type varchar(16) NOT NULL DEFAULT 'topic_1';
UPDATE section_topics SET type = 'topic_1' WHERE type = '1';
# Change for plugins/Subscribe (ignore if not using that plugin)
ALTER TABLE subscribe_payments ADD COLUMN method VARCHAR(6) AFTER transaction_id;
ALTER TABLE comments DROP index countreplies;
ALTER TABLE comments ADD KEY countreplies (pid,sid);
# Not read just yet but I am leaving it here as a note -Brian
ALTER TABLE blocks ADD autosubmit enum("no","yes") DEFAULT 'no' NOT NULL;
INSERT INTO vars (name, value, description) VALUES ('rss_store','0','Should we be saving incomming submissions for rss');
INSERT INTO vars (name, value, description) VALUES ('rss_expire_days','7','Number of days till we blank the data from the database (the signatures still stick around though)');
ALTER TABLE submissions DROP subid;
ALTER TABLE submissions ADD subid mediumint UNSIGNED NOT NULL PRIMARY KEY auto_increment;
ALTER TABLE sessions DROP last_subid;
ALTER TABLE sessions ADD last_subid mediumint UNSIGNED;
DROP TABLE IF EXISTS submission_param;
CREATE TABLE submission_param (
param_id mediumint UNSIGNED NOT NULL auto_increment,
subid mediumint UNSIGNED NOT NULL,
name varchar(32) DEFAULT '' NOT NULL,
value text NOT NULL,
UNIQUE submission_key (subid,name),
PRIMARY KEY (param_id)
) TYPE = myisam;
DROP TABLE IF EXISTS rss_raw;
CREATE TABLE rss_raw (
id mediumint UNSIGNED NOT NULL auto_increment,
link_signature char(32) DEFAULT '' NOT NULL,
title_signature char(32) DEFAULT '' NOT NULL,
description_signature char(32) DEFAULT '' NOT NULL,
link varchar(255) NOT NULL,
title varchar(255) NOT NULL,
description varchar(255) NOT NULL,
subid mediumint UNSIGNED,
bid varchar(30),
created datetime,
processed enum("no","yes") DEFAULT 'no' NOT NULL,
UNIQUE uber_signature (link_signature, title_signature, description_signature),
FOREIGN KEY (subid) REFERENCES submissions(subid),
FOREIGN KEY (bid) REFERENCES blocks(bid),
PRIMARY KEY (id)
) TYPE = myisam;
# A nice useful var.
INSERT INTO vars (name, value, description) VALUES ('admin_formkeys', '0', 'Do admins have to bother with formkeys?');
# End of T_2_3_0_21, Start of T_2_3_0_22
# Install GD.pm and associated libraries for plugins/HumanConf.
# GD/Text and GD/Text/Align.pm are needed too.
# These Debian packages are believed necessary:
# libfreetype6-dev libfreetype6 freetype2 libjpeg62-dev libjpeg62
# when building from source, I used freetype-2.1.0, libpng-1.2.2,
# jpeg-6b, and gd-1.8.4, and the GD module from the CPAN. -- pudge
# last night Cliff and I got it to work on Debian stable using
# libjpeg62(-dev) and xpm4g(-dev) debs, plus source compiles of
# freetype-2.1.0 and gd-1.8.4; GD had 1 error (#8) and GD::Text
# had several errors, but after force installing, they work OK
# for HumanConf purposes.
# Add signature column to submissions. Be aware that this column's final
# state does not have a default.
ALTER TABLE submissions ADD COLUMN signature varchar(32) DEFAULT '' NOT NULL;
ALTER TABLE submissions ADD UNIQUE story_signature(signature);
UPDATE submissions SET signature=MD5(story);
ALTER TABLE submissions MODIFY COLUMN signature varchar(32) NOT NULL;
# This expands blocks to get data from sites that require logins via a cookie
ALTER TABLE blocks ADD COLUMN rss_cookie varchar(255);
#We ran into URLs that were longer then 50 characters
ALTER TABLE submissions MODIFY COLUMN email varchar(255) DEFAULT '' NOT NULL;
UPDATE vars SET value=100 WHERE name="authors_unlimited";
#Needed for search, not used in submissions "yet"
INSERT INTO string_param (type, code, name) VALUES ('submission-notes','','Unclassified');
INSERT INTO string_param (type, code, name) VALUES ('submission-notes','Hold','Hold');
INSERT INTO string_param (type, code, name) VALUES ('submission-notes','Quick','Quick');
INSERT INTO string_param (type, code, name) VALUES ('submission-notes','Back','Back');
#
# Table structure for table 'subsections'
#
DROP TABLE IF EXISTS subsections;
CREATE TABLE subsections (
id smallint UNSIGNED NOT NULL auto_increment,
title varchar(30) NOT NULL,
section varchar(30) NOT NULL,
artcount mediumint DEFAULT '30' NOT NULL,
UNIQUE code_key (title,section),
FOREIGN KEY (section) REFERENCES sections(section),
PRIMARY KEY (id)
) TYPE = myisam;
# End of T_2_3_0_22, Start of T_2_3_0_23
# If using HumanConf...
ALTER TABLE humanconf_pool ADD COLUMN inuse TINYINT DEFAULT '0' NOT NULL AFTER lastused;
ALTER TABLE stories ADD subsection SMALLINT UNSIGNED DEFAULT 0 NOT NULL;
ALTER TABLE sections DROP feature_story;
ALTER TABLE accesslog ADD bytes mediumint UNSIGNED DEFAULT 0 NOT NULL;
INSERT INTO message_codes (code, type, seclev, modes) VALUES (10, 'Daily Site Stats', 100, 0);
ALTER TABLE discussions ADD last_update timestamp;
ALTER TABLE stories ADD last_update timestamp;
# End of R_2_3_0_23, Start of T_2_3_0_25
# (we skipped _24 due to an earlier glitch)
INSERT INTO vars (name, value, description) VALUES ('recent_topic_img_count','5','Number of recent topics to store in the template "recentTopics"');
INSERT INTO vars (name, value, description) VALUES ('recent_topic_txt_count','5','Number of recent topics to store in the block "recenttopics"');
INSERT INTO code_param (type, code, name) VALUES ('displaycodes_sectional', -1,'Don\'t Display');
INSERT INTO code_param (type, code, name) VALUES ('displaycodes_sectional', 1,'Display');
INSERT INTO vars (name, value, description) VALUES ('discussion_sort_order', '3', 'sort code to feed to findDiscussions');
# For plugins/Admin (ignore if not using that plugin)
INSERT INTO vars (name, value, description) VALUES ('similarstorydays', '30', 'Number of days to look back for uncommon words');
INSERT INTO vars (name, value, description) VALUES ('similarstorymaxwords', '30', 'Maximum number of top-weighted scores to search for in previous stories');
INSERT INTO vars (name, value, description) VALUES ('similarstoryminweight', '4', 'Minimum weight necessary for a story to be displayed as similar');
INSERT INTO vars (name, value, description) VALUES ('similarstorynumshow', '5', 'Maximum number of similar stories to show in admin preview');
INSERT INTO vars (name, value, description) VALUES ('uncommonstorywords', '', 'Uncommon words found in recent stories');
INSERT INTO vars (name, value, description) VALUES ('uncommonstorywords_maxlen', '65000', 'Maximum length of the uncommon words list');
INSERT INTO vars (name, value, description) VALUES ('uncommonstoryword_minlen', '3', 'Minimum length of the words in the uncommon words list');
INSERT INTO vars (name, value, description) VALUES ('uncommonstoryword_thresh', '2', 'Words occurring more often than once every this-many days are considered common');
# and this is not a DB command but needs to be done for
# each installed site that uses plugins/Admin:
# ln -s /usr/local/slash/plugins/Admin/refresh_uncommon.pl /usr/local/slash/site/sitename/tasks/
# Added for Pat for discussions -Brian
ALTER TABLE discussions ADD approved tinyint UNSIGNED DEFAULT 0 NOT NULL;
INSERT INTO vars (name, value, description) VALUES ('discussion_approval', '0', 'If this is set to 1, set all user created discussions when created to 0 so that they must be approved');
# For pudge -brian
ALTER TABLE templates ADD last_update timestamp;
# Added for some Calendar stuff I am working on -Brian
INSERT INTO code_param (type, code, name) VALUES ('months',1,'January');
INSERT INTO code_param (type, code, name) VALUES ('months',2,'Febuary');
INSERT INTO code_param (type, code, name) VALUES ('months',3,'March');
INSERT INTO code_param (type, code, name) VALUES ('months',4,'April');
INSERT INTO code_param (type, code, name) VALUES ('months',5,'May');
INSERT INTO code_param (type, code, name) VALUES ('months',6,'June');
INSERT INTO code_param (type, code, name) VALUES ('months',7,'July');
INSERT INTO code_param (type, code, name) VALUES ('months',8,'August');
INSERT INTO code_param (type, code, name) VALUES ('months',9,'September');
INSERT INTO code_param (type, code, name) VALUES ('months',10,'October');
INSERT INTO code_param (type, code, name) VALUES ('months',11,'November');
INSERT INTO code_param (type, code, name) VALUES ('months',12,'December');
# End of R_2_3_0_25, start of T_2_3_0_26
DELETE FROM sections WHERE title='All Sections' OR section='';
ALTER TABLE string_param CHANGE COLUMN name name VARCHAR(64) NOT NULL;
# This is to fix commentcounts -Brian
select concat("UPDATE discussions SET commentcount=", count(cid), " WHERE id=", sid, ";") INTO OUTFILE "/tmp/dis" from comments GROUP BY sid;
source /tmp/dis;
select concat("UPDATE stories SET commentcount=", discussions.commentcount, " WHERE discussion=", id, ";") INTO OUTFILE "/tmp/dis2" from discussions;
source /tmp/dis2;
ALTER TABLE pollanswers CHANGE COLUMN qid qid MEDIUMINT UNSIGNED NOT NULL;
ALTER TABLE formkeys CHANGE COLUMN formname formname varchar(32) DEFAULT '' NOT NULL;
# End of R_2_3_0_27, Start of T_2_3_0_28
ALTER TABLE vars CHANGE COLUMN name name varchar(48) DEFAULT '' NOT NULL;
INSERT INTO vars (name, value, description) VALUES ('lonetags','P|LI|BR|IMG','Tags that don\'t need to be closed');
INSERT INTO vars (name, value, description) VALUES ('top10comm_num','10','Number of comments wanted for the Top 10 Comments slashbox (if not 10, you ought to rename it maybe)');
INSERT INTO vars (name, value, description) VALUES ('anon_name_alt','An anonymous coward','Name of anonymous user to be displayed in stories');
# End of T_2_3_0_28, Start of T_2_3_0_29
INSERT INTO vars (name, value, description) VALUES ('karma_adj','-10=Terrible|-1=Bad|0=Neutral|12=Positive|25=Good|99999=Excellent','Adjectives that describe karma, used if karma_obfuscate is set (best to keep aligned with badkarma, m2_maxbonus, and goodkarma)');
INSERT INTO vars (name, value, description) VALUES ('karma_obfuscate','0','Should users see, not their numeric karma score, but instead an adjective describing their approximate karma?');
#Section stuff -Brian
ALTER TABLE sections ADD type ENUM("contained", "collected") DEFAULT 'contained' NOT NULL;
UPDATE sections SET type="contained";
INSERT INTO vars (name, value, description) VALUES ('section','index','This is the current setting for section.');
INSERT INTO sections (section, artcount, title, qid, isolate, issue, extras, type) VALUES ('index',15,'Index','',0,0,0,'collected');
ALTER TABLE blocks ADD all_sections tinyint NOT NULL DEFAULT '0';
UPDATE blocks SET all_sections=1 WHERE section="all_sections";
UPDATE blocks SET section="index" WHERE section="all_sections";
INSERT INTO vars (name, value, description) VALUES ('draconian_charrefs','0','Enable strictest-possible rules for disallowing HTML entities/character references?');
# Let's not forget to put the sections_contained table in the upgrades file
# once it becomes appropriate to do so.
# Forgot this one a little while ago I think.
INSERT INTO vars (name, value, description) VALUES ('approved_url_schemes','ftp|http|gopher|mailto|news|nntp|telnet|wais|https','Schemes that can be used in comment links without being stripped of bogus chars');
# End of T_2_3_0_29, Start of T_2_3_0_30
# Forgot this one a little while ago too.
# For plugins/Stats (ignore if you're not using that plugin):
INSERT INTO vars (name, value, description) VALUES ('mod_stats','1','Include stats on moderation in the daily admin mail?');
# End of R_2_3_0_30, Start of T_2_3_0_31
DROP TABLE IF EXISTS sections_contained;
CREATE TABLE sections_contained (
id SMALLINT UNSIGNED NOT NULL auto_increment,
container varchar(30) NOT NULL,
section varchar(30) NOT NULL,
UNIQUE (container,section),
FOREIGN KEY (container) REFERENCES sections(section),
FOREIGN KEY (section) REFERENCES sections(section),
PRIMARY KEY (id)
) TYPE = myisam;
ALTER TABLE sections ADD rewrite mediumint UNSIGNED DEFAULT '3600' NOT NULL;
ALTER TABLE sections ADD last_update timestamp;
# For plugins/Email ONLY (LC, Slashcode, etc -- NOT SLASHDOT!)
INSERT INTO message_codes (code, type, seclev, modes) VALUES (11, 'Email Story', 1, 0);
# End of R_2_3_0_31, Start of T_2_3_0_32
INSERT INTO vars (name, value, description) VALUES ('comments_perday_bykarma','-1=2|25=25|99999=50','Number of comments allowed to be posted per day, by karma score.');
INSERT INTO vars (name, value, description) VALUES ('comments_perday_anon','10','Number of comments allowed to be posted per day, by any one IPID, anonymously.');
# End of R_2_3_0_32, Start of T_2_3_0_33
INSERT INTO vars (name, value, description) VALUES ('users_bio_length','1024','Length allowed for user bio');
INSERT INTO vars (name, value, description) VALUES ('submit_forgetip_hours','720','Hours after which a submissions\'s ipid/subnetid are forgotten; set very large to disable');
INSERT INTO vars (name, value, description) VALUES ('submit_forgetip_maxrows','100000','Max number of rows to forget IPs of at once');
INSERT INTO vars (name, value, description) VALUES ('submit_forgetip_minsubid','0','Minimum subid to start forgetting IP at');
# End of T_2_3_0_34, Start of T_2_3_0_35
ALTER TABLE sections DROP isolate;
# For plugins/Stats (ignore if you're not using that plugin):
INSERT INTO vars (name, value, description) VALUES ('db_slave_lag_ignore',10000000,'Bytes of lag between master and slave DB to ignore');
# End of T_2_3_0_35, Start of T_2_3_0_36
# For Sections
INSERT INTO string_param (type, code, name) VALUES ('section_types','contained','Contained Section');
INSERT INTO string_param (type, code, name) VALUES ('section_types','collected','Collection of Sections');
SELECT concat("UPDATE sections SET qid=", value," WHERE section='index';") INTO OUTFILE "/tmp/qidproblem" from vars WHERE name="currentqid";
source /tmp/qidproblem;
# For plugins/Admin (ignore if you're not using that plugin):
INSERT INTO menus (menu, label, value, seclev, menuorder) VALUES ('admin','Recent','[% gSkin.rootdir %]/admin.pl?op=recent',500,18);
INSERT INTO code_param (type, code, name) VALUES ('displaycodes_sectional', -1,'Don\'t Display');
INSERT INTO code_param (type, code, name) VALUES ('displaycodes_sectional', 1,'Display');
INSERT INTO vars (name, value, description) VALUES ('discussion_sort_order', '3', 'sort code to feed to findDiscussions');
# For plugins/Stats (ignore if you're not using that plugin):
INSERT INTO vars (name, value, description) VALUES ('tailslash_stats','1','true/false log tailslash in adminmail');
# column truncated descriptions fields
ALTER TABLE rss_raw modify column description text;
# For plugins/Stats (ignore if you're not using that plugin):
ALTER TABLE stats_daily DROP INDEX day_key_pair;
ALTER TABLE stats_daily ADD COLUMN section varchar(30) DEFAULT 'index' NOT NULL;
ALTER TABLE stats_daily ADD UNIQUE day_key_pair (day,name,section);
ALTER TABLE stats_daily ADD FOREIGN KEY (section) REFERENCES sections(section);
# For plugins/Stats (ignore if you're not using that plugin):
INSERT INTO vars (name, value, description) VALUES ('op_exclude_from_countdaily','rss','Ops to omit from daily counts in adminmail');
INSERT INTO vars (name, value, description) VALUES ('mod_stats_min_repeat','2','Minimum number repeat mods to appear in mod stats');
INSERT INTO vars (name, value, description) VALUES ('cookiesecure','1','Set the secure flag in cookies if SSL is on?');
# Need a CPAN install of Date::Calc and XML::Simple!
# End of T_2_3_0_36, Start of T_2_3_0_37
# from foundries integrations
ALTER TABLE string_param MODIFY COLUMN code varchar(128) NOT NULL;
ALTER TABLE menus MODIFY COLUMN label varchar(255) DEFAULT '' NOT NULL;
ALTER TABLE rss_raw MODIFY COLUMN description text;
ALTER TABLE section_extras MODIFY COLUMN type enum("text","list","topics") DEFAULT 'text' NOT NULL;
# For submissions notes -Brian
INSERT INTO code_param (type, code, name) VALUES ('submission-state',0,'Pending');
INSERT INTO code_param (type, code, name) VALUES ('submission-state',1,'Rejected');
INSERT INTO code_param (type, code, name) VALUES ('submission-state',2,'Accepted');
# For plugins/Repository (ignore if you're not using that plugin):
DELETE FROM templates WHERE name='listRepository' AND page='repository' AND section='default';
# (this template was renamed; the new "listRepos" will be added back
# in with a "template-tool -U")
# End of T_2_3_0_37, Start of T_2_3_0_38
ALTER TABLE string_param MODIFY COLUMN code VARCHAR(128) NOT NULL;
ALTER TABLE subsections ADD COLUMN alttext VARCHAR(40) NOT NULL;
# End of T_2_3_0_38, Start of T_2_3_0_39
ALTER TABLE metamodlog ADD INDEX mmid (mmid);
# End of T_2_3_0_39, Start of T_2_3_0_40
# End of T_2_3_0_40, Start of T_2_3_0_41
# This should have been this all along -Brian
ALTER TABLE sections DROP INDEX section;
ALTER TABLE sections ADD UNIQUE section (section);
# Ok, you will have a few new things you need to do at this point.
#
# 1) If you use zoo images make sure the eof/fof gifs are installed.
#
# 2) You will also need to make sure the new task for zoo is in place if
# you want FOF/EOF
#
# 3) If number two is true then you need to run the rebuild script for
# users: "plugins/Zoo/rebuildPeople"
#
# WARNING number three may take an hour or so depending on the size of
# your database (like Slashdot will probably be an hour or so). This
# won't hurt anything but during the process users will not have their
# friends till the script gets to their account. FOF/EOF will show up
# slowly as the task works its way through them. Never run multiple
# copies of the task at once. It does 2000 entries at a time so it
# may take some time to catch up if you have a large DB. This means
# it will only process as shipped 2000*24 entries per-day. This is far
# more then what even Slashdot does in a given day. -Brian
DROP TABLE IF EXISTS people_log;
CREATE TABLE people_log (
id MEDIUMINT UNSIGNED NOT NULL auto_increment,
uid MEDIUMINT UNSIGNED NOT NULL,
person MEDIUMINT UNSIGNED NOT NULL,
type enum("friend","foe"),
action enum("add","delete"),
PRIMARY KEY (id)
);
INSERT INTO vars (name,value,description) VALUES ('zoo_process_limit','2000','Number of FOF/FOE to process during job run');
DELETE FROM vars WHERE name IN ('badreasons', 'm2_bonus', 'm2_consensus_trigger', 'm2_dissension_penalty', 'm2_maxunfair', 'm2_mincheck', 'm2_minority_trigger', 'm2_modlog_cycles', 'm2_modlog_pos', 'm2_penalty', 'm2_reward_pool', 'm2_toomanyunfair', 'reasons', 'token_retention');
INSERT INTO vars (name, value, description) VALUES ('m2_consensus_waitmult', '1', 'How long should old M2-needing mods wait for the fresh blood?');
INSERT INTO vars (name, value, description) VALUES ('m2_consequences','0.00=0,+2,-100,-1|0.15=-5,+1,-40,-1|0.30=-1,+0.5,-20,0|0.35=0,0,-10,0|0.49=0,0,-4,0|0.60=0,0,+1,0|0.70=0,0,+2,0|0.80=+0.01,-2,+3,0|0.90=+0.02,-5,+4,0|1.00=+0.05,0,+5,+0.5','Rewards and penalties for M2ers and moderator, up to the given amount of fairness (0.0-1.0): numbers are 1, tokens to fair-voters, 2, tokens to unfair-voters, 3, tokens to moderator, and 4, karma to moderator');
INSERT INTO vars (name, value, description) VALUES ('m2_consequences_token_max','25','Maximum number of tokens a user can have, for being on the consensus side of an M2 or being judged Fair, to merit gaining tokens');
INSERT INTO vars (name, value, description) VALUES ('m2_consequences_token_min','-999999','Minimum number of tokens a user must have, for being on the consensus side of an M2 to merit gaining tokens');
UPDATE vars SET name='m2_maxbonus_karma' WHERE name='m2_maxbonus';
UPDATE vars SET description='Number of comments for meta-moderation - if more than about 15, doublecheck that users_info.mods_saved is large enough' WHERE name='m2_comments';
UPDATE vars SET description='Number of M2 votes per M1 before it is reconciled by consensus - if not odd, will be forced to next highest odd number' WHERE name='m2_consensus';
UPDATE vars SET value='2000' WHERE name='m2_batchsize';
ALTER TABLE moderatorlog ADD COLUMN m2status TINYINT DEFAULT '0' NOT NULL;
ALTER TABLE metamodlog DROP COLUMN flag;
ALTER TABLE metamodlog ADD COLUMN active TINYINT DEFAULT '1' NOT NULL;
ALTER TABLE users_info DROP COLUMN lastmmid;
ALTER TABLE users_info ADD COLUMN m2info VARCHAR(64) DEFAULT '' NOT NULL AFTER lastgranted;
ALTER TABLE users_info ADD COLUMN mods_saved VARCHAR(120) DEFAULT '' NOT NULL AFTER lastmm;
DROP TABLE IF EXISTS modreasons;
CREATE TABLE modreasons (
id tinyint UNSIGNED NOT NULL,
name char(32) DEFAULT '' NOT NULL,
m2able tinyint DEFAULT '1' NOT NULL,
listable tinyint DEFAULT '1' NOT NULL,
val tinyint DEFAULT '0' NOT NULL,
fairfrac float DEFAULT '0.5' NOT NULL,
PRIMARY KEY (id)
) TYPE=myisam;
# Insert your site's reasons, of course, if they differ.
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 0, 'Normal', 0, 0, 0, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 1, 'Offtopic', 1, 1, -1, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 2, 'Flamebait', 1, 1, -1, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 3, 'Troll', 1, 1, -1, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 4, 'Redundant', 1, 1, -1, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 5, 'Insightful', 1, 1, 1, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 6, 'Interesting', 1, 1, 1, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 7, 'Informative', 1, 1, 1, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 8, 'Funny', 1, 1, 1, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 9, 'Overrated', 0, 0, -1, 0.5);
INSERT INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES (10, 'Underrated', 0, 0, 1, 0.5);
# this is not a DB command but needs to be done for
# each installed site that uses plugins/Zoo:
# ln -s /usr/local/slash/plugins/Zoo/zoo_run_people_log.pl /usr/local/slash/site/sitename/tasks/
# End of T_2_3_0_41, Start of T_2_3_0_42
# In case you happened to create modreasons between 2002/08/28 and
# 2002/08/29, you may need to run this. If it gives errors, that
# means you're OK. If your site inserted different reasons with
# id's of 0 and 1, check them now. If you ran the above SQL updates
# as they appear now, running these won't hurt (but won't help
# either).
ALTER TABLE modreasons CHANGE id id TINYINT UNSIGNED NOT NULL PRIMARY KEY;
INSERT IGNORE INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 0, 'Normal', 0, 0, 0, 0.5);
INSERT IGNORE INTO modreasons (id, name, m2able, listable, val, fairfrac) VALUES ( 1, 'Offtopic', 1, 1, -1, 0.5);
# End of T_2_3_0_42, Start of T_2_3_0_43
# Set to email address(es) appropriate for your site, of course.
INSERT INTO vars (name, value, description) VALUES ('adminmail_mod','admin@example.com','All admin mail about moderation goes here');
# For plugins/Zoo (ignore if you're not using that plugin):
INSERT INTO vars (name, value, description) VALUES ('people_max_subscriber','400','Maximum number of friends/foes you can have');
INSERT INTO vars (name, value, description) VALUES ('m2_multicount', '5', 'Additional multiplier for M2s performed on duplicate mods (leave 0 to disable)');
# End of T_2_3_0_43, Start of T_2_3_0_44
# For plugins/Stats (ignore if you're not using that plugin):
INSERT INTO vars (name, value, description) VALUES ('mod_stats_reports','admin@example.com','Who to send daily moderation stats reports to');
# End of T_2_3_0_44, Start of T_2_3_0_45
INSERT INTO vars (name, value, description) VALUES ('m1_pointgrant_factor_fairratio', '1.3', 'Factor of fairness ratio in deciding who is eligible for moderation (1=irrelevant, 2=top user twice as likely)');
INSERT INTO vars (name, value, description) VALUES ('m1_pointgrant_factor_fairtotal', '1.3', 'Factor of fairness total in deciding who is eligible for moderation (1=irrelevant, 2=top user twice as likely)');
UPDATE section_topics SET type = 'topic_1' where type = 1;
UPDATE section_topics SET type = 'topic_2' where type = 2;
UPDATE section_topics SET type = 'topic_3' where type = 3;
UPDATE section_topics SET type = 'topic_4' where type = 4;
INSERT INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Foes','[% gSkin.rootdir %]/my/foes',1,1);
INSERT INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Freaks','[% gSkin.rootdir %]/my/freaks',1,1);
INSERT INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Friends of Friends','[% gSkin.rootdir %]/my/friends/friends',1,1);
INSERT INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Foes of Friends','[% gSkin.rootdir %]/my/friends/foes',1,1);
DELETE FROM vars WHERE name='m2_consensus_waitmult';
INSERT INTO vars (name, value, description) VALUES ('m2_consensus_waitpow', '0.8', 'Positive real number, 0.2 to 5 is sensible. Between 0 and 1, older mods are chosen for M2 preferentially. Greater than 1, newer');
# End of T_2_3_0_45, Start of T_2_3_0_46
# One more time!
REPLACE INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Friends','[% gSkin.rootdir %]/my/friends',1,1);
REPLACE INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Fans','[% gSkin.rootdir %]/my/fans',1,2);
REPLACE INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Foes','[% gSkin.rootdir %]/my/foes',1,3);
REPLACE INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Freaks','[% gSkin.rootdir %]/my/freaks',1,4);
REPLACE INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Friends of Friends','[% gSkin.rootdir %]/my/friends/friends',1,5);
REPLACE INTO menus (menu, label, value, seclev, menuorder) VALUES ('zoo','Foes of Friends','[% gSkin.rootdir %]/my/friends/foes',1,6);
# For plugins/Zoo (ignore if you're not using that plugin)
# Run the script "plugins/Zoo/rebuildPeople"
# working with all of you - good luck!
# Best wishes!
# End of T_2_3_0_46, Start of T_2_3_0_47
INSERT INTO vars (name, value, description) VALUES ('offer_insecure_login_link','0','Offer the user the \'totally insecure but very convenient\' index.pl login link');
# End of T_2_3_0_47, Start of T_2_3_0_48
ALTER TABLE accesslog DROP INDEX op_part;
ALTER TABLE accesslog ADD INDEX op_part (op(12), section);
INSERT INTO vars (name, value, description) VALUES ('mod_unm2able_token_cost','1','What is the token cost of performing an un-M2able mod?');
REPLACE INTO menus (menu, label, value, seclev, menuorder) VALUES ('journal','Friend\'s Journals','[% gSkin.rootdir %]/journal.pl?op=friends',0,5);
DELETE FROM menus WHERE menu="journal" AND label="Friends";
DELETE FROM menus WHERE menu="zoo";
ALTER TABLE users_info ADD COLUMN stirred mediumint UNSIGNED DEFAULT '0' NOT NULL AFTER downmods, CHANGE COLUMN lastgranted lastgranted datetime DEFAULT '0000-00-00 00:00' NOT NULL, CHANGE COLUMN lastmm lastmm datetime DEFAULT '0000-00-00 00:00' NOT NULL;
INSERT INTO vars (name, value, description) VALUES ('m2_freq','86400','In seconds, the maximum frequency which users can metamoderate');
INSERT INTO vars (name, value, description) VALUES ('mod_stir_token_cost','2','What is the token cost of having each mod point stirred?');
INSERT INTO vars (name, value, description) VALUES ('mod_token_decay_days','14','How many days of inactivity before tokens start to decay?');
INSERT INTO vars (name, value, description) VALUES ('mod_token_decay_perday','1','If inactivity, how many tokens lost per day?');
UPDATE menus SET menu='adv-admin', menuorder=1 WHERE label='Topics' AND menu='admin';
UPDATE menus SET menu='adv-admin', menuorder=2 WHERE label='Blocks' AND menu='admin';
UPDATE menus SET menu='adv-admin', menuorder=3 WHERE label='Colors' AND menu='admin';
UPDATE menus SET menu='adv-admin', menuorder=4 WHERE label='Filters' AND menu='admin';
UPDATE menus SET menu='adv-admin', menuorder=5 WHERE label='Sections' AND menu='admin';
UPDATE menus SET menu='adv-admin', menuorder=6 WHERE label='Users' AND menu='admin';
UPDATE menus SET menu='adv-admin', menuorder=7 WHERE label='Templates' AND menu='admin';
UPDATE menus SET menu='adv-admin', menuorder=8 WHERE label='Vars' AND menu='admin';
UPDATE menus SET menu='adv-admin', menuorder=9 WHERE label='Site' AND menu='admin';
UPDATE menus SET menuorder=9 WHERE label='Slashd' AND menu='admin';
UPDATE menus SET menuorder=10 WHERE label='Recent' AND menu='admin';
REPLACE INTO menus (menu, label, value, seclev, menuorder) values ('admin', 'Advanced', '[% gSkin.rootdir %]/topics.pl', 500, 11);
# none of these existed for me previously, so no rows were updated -- pudge
# That's fine. Only sites that updated in a brief window would have these -- jamie
# Change for plugins/Stats (ignore if not using that plugin)
UPDATE stats_daily SET name='m2_points_lost_spent' WHERE name='m2_points_spent';
UPDATE stats_daily SET name='mod_points_lost_spent' WHERE name='mod_points_spent';
UPDATE stats_daily SET name='mod_points_lost_spent_plus_1' WHERE name='mod_points_spent_plus_1';
UPDATE stats_daily SET name='mod_points_lost_spent_minus_1' WHERE name='mod_points_spent_minus_1';
ALTER TABLE users_info CHANGE people people MEDIUMBLOB;
# Do not run this on Slashdot, I have already done it for the DB that matters -Brian
ALTER TABLE accesslog DROP INDEX op_part;
ALTER TABLE accesslog ADD INDEX op_part (op, section);
# End of T_2_3_0_48, Start of T_2_3_0_49
UPDATE stats_daily SET name='mod_tokens_lost_stirred' WHERE name='mod_tokens_stirred';
# Do this next command with the value of the var "maxpoints" in place of "5"...
# UPDATE stats_daily SET value=value * 5 WHERE name='mod_tokens_lost_converted';
# End of T_2_3_0_49, Start of T_2_3_0_50
# (This change was actually made about a week ago, but the old var is
# supported in the code so this is not a vital var update.)
# For best results, replace "96" with 24 times the value of the var "stir":
INSERT INTO vars (name, value, description) VALUES ('mod_stir_hours','96','Number of hours before unused moderator points expire');
# and assuming a clean vars table is important to you:
DELETE FROM vars WHERE name='stir';
# split the 2 admin menus into 3
# adv-admin is now config
UPDATE menus SET label='Config', value='[% gSkin.rootdir %]/admin.pl?op=topics' WHERE label='Advanced';
UPDATE menus SET menu='info' WHERE label='Site' AND menu='adv-admin';
UPDATE menus SET menu='config' WHERE menu='adv-admin';
UPDATE menus SET menu='info' WHERE label='Recent';
UPDATE menus SET menu='info' WHERE label='Slashd';
REPLACE INTO menus (menu, label, value, seclev, menuorder) values ('admin', 'Info', '[% gSkin.rootdir %]/admin.pl?op=recent', 500, 12);
REPLACE INTO menus (menu, label, value, seclev, menuorder) values ('config', 'Normal', '[% gSkin.rootdir %]/admin.pl', 500, 9);
REPLACE INTO menus (menu, label, value, seclev, menuorder) values ('config', 'Info', '[% gSkin.rootdir %]/admin.pl?op=recent', 500, 10);
REPLACE INTO menus (menu, label, value, seclev, menuorder) values ('info', 'Normal', '[% gSkin.rootdir %]/admin.pl', 500, 12);
REPLACE INTO menus (menu, label, value, seclev, menuorder) values ('info', 'Config', '[% gSkin.rootdir %]/admin.pl?op=topics', 500, 13);
INSERT INTO vars (name, value, description) VALUES ('content_type_webpage','text/html','The Content-Type field for webpages');
# This needs to be set for all OSTG sites, and we should make sure that sites are using the right DB. -Brian
INSERT INTO vars (name, value, description) VALUES ('log_db_user','','The virtual user of the database that the code should write accesslog to. If you don\'t know what this is for, you should leave it blank.');
INSERT INTO vars (name, value, description) VALUES ('search_text_length','80','This will tell search how many characters should be returned for text bodies in searches (think introtext for stories and article for journals).');
INSERT INTO vars (name, value, description) VALUES ('search_method', '', 'Method to use to weight scores for search returns (and to narrow down possible matches)');
# End of T_2_3_0_50, Start of T_2_3_0_51
# If you installed your theme and plugins as symlinks, uncomment the first
# line. If not, uncomment the second. If a mix, pick one, and then go
# manually edit the text file generated to make it speak the truth about
# your site. In any case, then run the SOURCE line.
#SELECT CONCAT('INSERT INTO site_info (name, value, description) VALUES ("', name, '_', value, '_symlink", 1, "', value, ' ', name, ' files installed symlink?");') INTO OUTFILE '/tmp/site_symlinks' FROM site_info WHERE name IN ('theme', 'plugin') ORDER BY name;
#SELECT CONCAT('INSERT INTO site_info (name, value, description) VALUES ("', name, '_', value, '_symlink", 0, "', value, ' ', name, ' files installed symlink?");') INTO OUTFILE '/tmp/site_symlinks' FROM site_info WHERE name IN ('theme', 'plugin') ORDER BY name;
#SOURCE /tmp/site_symlinks;
# End of T_2_3_0_51, Start of T_2_3_0_52
ALTER TABLE menus ADD COLUMN sel_label VARCHAR(32) NOT NULL DEFAULT '' AFTER label, ADD COLUMN showanon TINYINT DEFAULT '0' NOT NULL AFTER seclev;
UPDATE menus SET showanon=1 WHERE seclev=0;
UPDATE menus SET sel_label=label;
DELETE FROM menus WHERE menu='users';
INSERT INTO menus (id, menu, label, sel_label, value, seclev, showanon, menuorder) VALUES (NULL, 'users', 'Logout', 'logout', '/my/logout', 1, 0, 10);
INSERT INTO menus (id, menu, label, sel_label, value, seclev, showanon, menuorder) VALUES (NULL, 'users', 'Preferences', 'preferences', '/users.pl?op=edituser', 1, 0, 20);
INSERT INTO menus (id, menu, label, sel_label, value, seclev, showanon, menuorder) VALUES (NULL, 'users', 'Password', 'password', '/login.pl?op=changeprefs', 1, 0, 40);
INSERT INTO menus (id, menu, label, sel_label, value, seclev, showanon, menuorder) VALUES (NULL, 'users', '[% user.nickname | strip_literal %]', 'me', '/~[% user.nickname | fixparam %]', 1, 0, 50);
# Change for plugins/Subscribe (ignore if not using that plugin)
INSERT INTO menus (id, menu, label, sel_label, value, seclev, showanon, menuorder) VALUES (NULL, 'users', 'Subscription', 'subscription', '/subscribe.pl', 1, 0, 30);
DELETE FROM vars WHERE name='commentsPerPoint';
# Due to a bug, the old "hide anonymous comments at -1" feature was
# never fully removed and replaced with people_bonus_anonymous.
# Any users who still have that set, move them to an appropriate
# value on the new system.
UPDATE users_param SET name='people_bonus_anonymous', value='-3' WHERE name='anon_comments' AND value='1';
DELETE FROM users_param WHERE name='anon_comments';
# BEFORE running this, if you have any existing tzcodes not in the defaults,
# you may wish to take note of them so you can re-add them appropriately.
DROP TABLE IF EXISTS dst;
CREATE TABLE dst (
region VARCHAR(32) NOT NULL,
selectable TINYINT DEFAULT 0 NOT NULL,
start_hour TINYINT NOT NULL,
start_wnum TINYINT NOT NULL,
start_wday TINYINT NOT NULL,
start_month TINYINT NOT NULL,
end_hour TINYINT NOT NULL,
end_wnum TINYINT NOT NULL,
end_wday TINYINT NOT NULL,
end_month TINYINT NOT NULL,
PRIMARY KEY (region)
) TYPE = myisam;
INSERT INTO dst (region, selectable, start_hour, start_wnum, start_wday, start_month, end_hour, end_wnum, end_wday, end_month) VALUES ('America', 1, 2, 1, 0, 3, 2, -1, 0, 9);
INSERT INTO dst (region, selectable, start_hour, start_wnum, start_wday, start_month, end_hour, end_wnum, end_wday, end_month) VALUES ('Europe', 1, 1, -1, 0, 2, 1, -1, 0, 9);
INSERT INTO dst (region, selectable, start_hour, start_wnum, start_wday, start_month, end_hour, end_wnum, end_wday, end_month) VALUES ('Australia', 1, 2, -1, 0, 9, 2, -1, 0, 2);
INSERT INTO dst (region, selectable, start_hour, start_wnum, start_wday, start_month, end_hour, end_wnum, end_wday, end_month) VALUES ('New Zealand', 0, 2, 1, 0, 9, 2, 3, 0, 2);
DROP TABLE IF EXISTS tzcodes;
CREATE TABLE tzcodes (
tz CHAR(4) NOT NULL,
off_set MEDIUMINT NOT NULL,
description VARCHAR(64),
dst_region VARCHAR(32),
dst_tz CHAR(4),
dst_off_set MEDIUMINT,
PRIMARY KEY (tz)
) TYPE = myisam;
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('UTC', 0, 'Universal Coordinated', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('IDLW', -43200, 'International Date Line West', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('IDLE', 43200, 'International Date Line East', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('GMT', 0, 'Greenwich Mean', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('WEST', 0, 'Western European', 'Europe', 'WEST', 3600);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('CEST', 3600, 'Central European', 'Europe', 'CEST', 7200);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('EEST', 7200, 'Eastern European', 'Europe', 'EEST', 10800);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('BT', 10800, 'Baghdad, USSR Zone 2', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('IT', 12600, 'Iran', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('ZP4', 14400, 'USSR Zone 3', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('ZP5', 18000, 'USSR Zone 4', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('IST', 19800, 'Indian', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('ZP6', 21600, 'USSR Zone 5', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('ZP7', 25200, 'USSR Zone 6', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('JT', 27000, 'Java', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('CCT', 28800, 'China Coast, USSR Zone 7', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('JST', 32400, 'Japan, USSR Zone 8', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('KST', 32400, 'Korean', NULL, 'KDT', 36000);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('AWST', 28800, 'Western Australian', 'Australia', 'AWDT', 32400);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('ACST', 34200, 'Central Australian', 'Australia', 'ACDT', 37800);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('AEST', 36000, 'Eastern Australian', 'Australia', 'AEDT', 39600);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('NZST', 43200, 'New Zealand', 'New Zealand', 'NZDT', 46800);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('WAT', -3600, 'West Africa', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('AT', -7200, 'Azores', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('GST', -10800, 'Greenland', NULL, NULL, NULL);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('NST', -12600, 'Newfoundland', 'America', 'NDT', -9000);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('AST', -14400, 'Atlantic', 'America', 'ADT', -10800);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('EST', -18000, 'Eastern', 'America', 'EDT', -14400);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('CST', -21600, 'Central', 'America', 'CDT', -18000);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('MST', -25200, 'Mountain', 'America', 'MDT', -21600);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('PST', -28800, 'Pacific', 'America', 'PDT', -25200);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('AKST', -32400, 'Alaska', 'America', 'AKDT', -28800);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('HAST', -36000, 'Hawaii-Aleutian', 'America', 'HADT', -32400);
INSERT INTO tzcodes (tz, off_set, description, dst_region, dst_tz, dst_off_set) VALUES ('NT', -39600, 'Nome', NULL, NULL, NULL);
# VERY IMPORTANT: run `utils/dst-update.plx VIRTUAL_USER` after running upgrades
# here, to convert the user timezones to the new timezones, plus to the new
# DST stuff.
# ALSO IMPORTANT: run `utils/colors-update.plx VIRTUAL_USER` too, to insert the
# new colors used for tabbed menus. If you've hacked the code to handle more
# fg/bg colors, you'll want to edit your templates to bump up by one everything
# from your numbers 5 on up. (But if you've hacked the code, you probably
# already saw a CVS conflict on Anchor.pm getSectionColors() and figured
# something was up. :)
UPDATE menus SET label=CONCAT('~', label, ' ([% user.uid %])') WHERE menu='users' AND sel_label='me';
# End of T_2_3_0_52, Start of T_2_3_0_53
ALTER TABLE moderatorlog ADD COLUMN spent tinyint DEFAULT '1' NOT NULL AFTER active;
INSERT INTO vars (name, value, description) VALUES ('charrefs_bad_entity','zwnj|zwj|lrm|rlm','Entities that approveCharref should always delete');
INSERT INTO vars (name, value, description) VALUES ('charrefs_bad_numeric','8204|8205|8206|8207|8236|8237|8238','Numeric references that approveCharref should always delete');
INSERT INTO vars (name, value, description) VALUES ('comment_compress_slice','500','Chars to slice comment into for compressOk');
INSERT INTO vars (name, value, description) VALUES ('comment_homepage_disp','50','Chars of poster URL to show in comment header');
INSERT INTO vars (name, value, description) VALUES ('mod_elig_hoursback','48','Hours back in accesslog to look for mod elig');
INSERT INTO vars (name, value, description) VALUES ('mod_elig_minkarma','0','The min M1 karma');
INSERT INTO vars (name, value, description) VALUES ('mod_up_points_needed','','Need more than 1 point to mod up? Hash');
INSERT INTO vars (name, value, description) VALUES ('m2_min_daysbackcushion','2','The minimum days-back cushion');
INSERT INTO vars (name, value, description) VALUES ('m2_mintokens','0','The min M2 tokens');
INSERT INTO vars (name, value, description) VALUES ('m2_range_offset','0.9','Offset for M2 assignment ranges');
# Change for plugins/Admin (ignore if not using that plugin)
INSERT INTO vars (name, value, description) VALUES ('uncommon_weight_bodytext','0.5','The min M1 karma');
INSERT INTO vars (name, value, description) VALUES ('uncommon_weight_introtext','1','The min M1 karma');
INSERT INTO vars (name, value, description) VALUES ('uncommon_weight_title','8','The min M1 karma');
# End of T_2_3_0_53, Start of T_2_3_0_54
# End of T_2_3_0_54, Start of T_2_3_0_55
# End of T_2_3_0_55, Start of T_2_3_0_56
# oops: make sure you restart httpds after this
UPDATE tzcodes SET tz = 'WET' WHERE tz = 'WEST';
UPDATE tzcodes SET tz = 'CET' WHERE tz = 'CEST';
UPDATE tzcodes SET tz = 'EET' WHERE tz = 'EEST';
UPDATE users_prefs SET tzcode = 'WET' WHERE tzcode = 'WEST';
UPDATE users_prefs SET tzcode = 'CET' WHERE tzcode = 'CEST';
UPDATE users_prefs SET tzcode = 'EET' WHERE tzcode = 'EEST';
# End of T_2_3_0_56, Start of T_2_3_0_57
ALTER TABLE people ADD index(person);
INSERT INTO vars (name, value, description) VALUES ('archive_delay_mod', '60', 'Days before moderator logs are expired');
INSERT INTO vars (name, value, description) VALUES ('mod_stir_recycle_fraction', '1.0', 'What fraction of unused mod points get recycled back into the system?');
INSERT INTO vars (name, value, description) VALUES ('m1_pointgrant_factor_stirratio', '1.1', 'Factor of stirred-points ratio in deciding who is eligible for moderation (1=irrelevant, 2=top user twice as likely)');
# End of T_2_3_0_57, Start of T_2_3_0_58
# Subsection stuff -Brian
DROP TABLE IF EXISTS section_subsections;