Changeset 109

Show
Ignore:
Timestamp:
2007-12-21 20:36:45 (4 years ago)
Author:
hannes
Message:

working on ticket #62:

  • database table collation explicitely set
  • internally, set to use Unicode everywhere the question popped up
  • conversion to desired output encoding in the very end
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/classes/misc/Post.php

    r108 r109  
    102102        } 
    103103        // add this post 
    104         $table->addRow(Array('<td valign="top" width="' . ($SETTINGS['maxavatarsize'] + 10) . '">' . $_member->getPostside() . '</td>', '<td valign="top">' . str_replace('&amp;', '&amp;amp;', $_post) . '</td>'), FALSE, TRUE); 
     104        $table->addRow(Array('<td valign="top" width="' . ($SETTINGS['maxavatarsize'] + 10) . '">' . $_member->getPostside() . '</td>', '<td valign="top">' . str_replace('&', '&amp;', $_post) . '</td>'), FALSE, TRUE); 
    105105        // post footer 
    106106        $table->addRow(Array(''), Array('colspan'=>'2', 'class'=>'postfooter')); 
  • trunk/classes/pages/Forum.php

    r106 r109  
    135135                } 
    136136                // add all the previously compiled topic information to table 
    137                 $table->addRow(Array($_mark, '<td><h3>' . $_prefix . '<a href="' . $F->link('topic') . 'id=' . $row2['topicid'] . '">' . htmlentities($row2['topictitle'], ENT_QUOTES, $SETTINGS['encoding']) . '</a></h3>' . str_replace('&amp;', '&amp;amp;', $_multipages) . '</td>', '<td align="center">' . $row2['posts'] . '</td>', '<td align="center">' . $row2['views'] . '</td>', '<td><div>' . $LANG['by'] . ' ' . $_poster1->getProfileLink() . '</div><div>' . $LANG['at'] . ' ' . $F->datetime($row3->posttime, FALSE, TRUE) . '</div><div>' . $LANG['on'] . ' ' . $F->datetime($row3->posttime, TRUE, FALSE) . '</div></td>', '<td><div>' . $LANG['by'] . ' ' . $_poster2->getProfileLink() . '</div><div>' . $LANG['at'] . ' ' . $F->datetime($row4->posttime, FALSE, TRUE) . '</div><div>' . $LANG['on'] . ' ' . $F->datetime($row4->posttime, TRUE, FALSE) . '</div></td>'), FALSE, TRUE); 
     137                $table->addRow(Array($_mark, '<td><h3>' . $_prefix . '<a href="' . $F->link('topic') . 'id=' . $row2['topicid'] . '">' . htmlentities($row2['topictitle'], ENT_QUOTES, 'UTF-8') . '</a></h3>' . str_replace('&', '&amp;', $_multipages) . '</td>', '<td align="center">' . $row2['posts'] . '</td>', '<td align="center">' . $row2['views'] . '</td>', '<td><div>' . $LANG['by'] . ' ' . $_poster1->getProfileLink() . '</div><div>' . $LANG['at'] . ' ' . $F->datetime($row3->posttime, FALSE, TRUE) . '</div><div>' . $LANG['on'] . ' ' . $F->datetime($row3->posttime, TRUE, FALSE) . '</div></td>', '<td><div>' . $LANG['by'] . ' ' . $_poster2->getProfileLink() . '</div><div>' . $LANG['at'] . ' ' . $F->datetime($row4->posttime, FALSE, TRUE) . '</div><div>' . $LANG['on'] . ' ' . $F->datetime($row4->posttime, TRUE, FALSE) . '</div></td>'), FALSE, TRUE); 
    138138            } 
    139139            // add finished table to parent HTML element 
  • trunk/db/mysql.sql

    r33 r109  
    1 ALTER TABLE %prefix%categories MODIFY category_id INTEGER AUTO_INCREMENT; 
    2 ALTER TABLE %prefix%forums MODIFY forumid INTEGER AUTO_INCREMENT; 
    3 ALTER TABLE %prefix%messages MODIFY messageid INTEGER AUTO_INCREMENT; 
    4 ALTER TABLE %prefix%polls MODIFY pollid INTEGER AUTO_INCREMENT; 
    5 ALTER TABLE %prefix%posts MODIFY postid INTEGER AUTO_INCREMENT; 
    6 ALTER TABLE %prefix%topics MODIFY topicid INTEGER AUTO_INCREMENT; 
    7 ALTER TABLE %prefix%categories MODIFY category_id INTEGER AUTO_INCREMENT; 
    8 ALTER TABLE %prefix%usergroups MODIFY id INTEGER AUTO_INCREMENT; 
    9 ALTER TABLE %prefix%members MODIFY memberid INTEGER AUTO_INCREMENT; 
    10 ALTER TABLE %prefix%mails MODIFY id INTEGER AUTO_INCREMENT; 
     1CREATE TABLE %prefix%categories ( 
     2  category_id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     3  category_name VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     4  category_order INTEGER NOT NULL 
     5) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     6 
     7CREATE TABLE %prefix%forums ( 
     8  forumid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     9  forumtitle VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     10  forumdescription VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     11  forum_category INTEGER  NOT NULL, 
     12  forum_order INTEGER  NOT NULL 
     13) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     14 
     15CREATE TABLE %prefix%messages ( 
     16  messageid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     17  messagesender INTEGER NOT NULL, 
     18  messagereceipient INTEGER NOT NULL, 
     19  messagetitle VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     20  message TEXT NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     21  messagesenderflag INTEGER NOT NULL, 
     22  messagereceipientflag INTEGER NOT NULL, 
     23  messagetime DATETIME NOT NULL 
     24) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     25 
     26CREATE TABLE %prefix%online ( 
     27  onlinememberid INTEGER NOT NULL, 
     28  onlinetime INTEGER NOT NULL, 
     29  onlinesession VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_bin, 
     30  onlineposted INTEGER NOT NULL DEFAULT 0 
     31) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     32 
     33CREATE TABLE %prefix%polls ( 
     34  pollid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     35  pollchoices TEXT NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     36  pollvotes TEXT NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     37  pollvoters TEXT NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci 
     38) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     39 
     40CREATE TABLE %prefix%posts ( 
     41  postid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     42  topic INTEGER NOT NULL, 
     43  posteremail VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     44  poster VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     45  post TEXT NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     46  ip VARCHAR(16) NOT NULL CHARACTER SET utf8 COLLATE utf8_bin, 
     47  attachment VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_bin, 
     48  postedbymember INTEGER NOT NULL, 
     49  edited DATETIME DEFAULT NULL, 
     50  editedby VARCHAR(255) DEFAULT NULL CHARACTER SET utf8 COLLATE utf8_bin, 
     51  posttime DATETIME NOT NULL 
     52) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     53 
     54CREATE TABLE %prefix%topics ( 
     55  topicid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     56  forum INTEGER NOT NULL, 
     57  topictitle VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     58  closed INTEGER NOT NULL DEFAULT 0, 
     59  pinned INTEGER NOT NULL DEFAULT 0, 
     60  poll INTEGER NOT NULL DEFAULT 0, 
     61  topic_views INTEGER NOT NULL DEFAULT 0 
     62) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     63 
     64CREATE TABLE %prefix%groupmemberships ( 
     65    member INTEGER, 
     66    usergroup INTEGER 
     67) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     68 
     69CREATE TABLE %prefix%usergroups ( 
     70  id INTEGER PRIMARY KEY AUTO_INCREMENT, 
     71  name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci, 
     72  public INTEGER 
     73) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     74 
     75CREATE TABLE %prefix%members ( 
     76  memberid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     77  membername VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     78  memberemail VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     79  memberemailhidden INTEGER NOT NULL DEFAULT 0, 
     80  memberhomepage VARCHAR(255) NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     81  memberavatar VARCHAR(255) NOT NULL DEFAULT 'images/spacer.gif' CHARACTER SET utf8 COLLATE utf8_general_ci, 
     82  memberpassword VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_bin, 
     83  memberstatus VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_bin, 
     84  memberposts INTEGER NOT NULL DEFAULT 0, 
     85  location VARCHAR(255) NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     86  icq VARCHAR(255) NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     87  aim VARCHAR(255) NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     88  yahoo VARCHAR(255) NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     89  msn VARCHAR(255) NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     90  signature VARCHAR(255) NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     91  lastvisit DATETIME NULL, 
     92  boardstyle VARCHAR(32) NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     93  addressbook TEXT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     94  birthday DATE DEFAULT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     95  messagenotification_email INTEGER NOT NULL DEFAULT 0, 
     96  messagenotification_popup INTEGER NOT NULL DEFAULT 1, 
     97  registered DATETIME NOT NULL, 
     98  salt VARCHAR(16) NULL CHARACTER SET utf8 COLLATE utf8_bin, 
     99  lang VARCHAR(16) NULL CHARACTER SET utf8 COLLATE utf8_bin, 
     100  offset INTEGER NULL 
     101) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     102 
     103CREATE TABLE %prefix%mails ( 
     104  id INTEGER NOT NULL PRIMARY KEY, 
     105  receipient VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     106  subject VARCHAR(255) NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci, 
     107  body TEXT NOT NULL CHARACTER SET utf8 COLLATE utf8_general_ci 
     108) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     109 
     110CREATE TABLE %prefix%moderators ( 
     111    forum INTEGER NOT NULL, 
     112    member INTEGER NOT NULL 
     113) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     114 
     115CREATE TABLE %prefix%subscriptions ( 
     116    topic INTEGER NOT NULL, 
     117    member INTEGER NOT NULL 
     118) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     119 
     120CREATE TABLE %prefix%rights ( 
     121    page VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin, 
     122    usergroup INTEGER, 
     123    r INTEGER, 
     124    w INTEGER, 
     125    PRIMARY KEY (page,usergroup) 
     126) CHARACTER SET utf8 COLLATE utf8_general_ci; 
     127 
     128CREATE TABLE %prefix%rights_default ( 
     129    page VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin, 
     130    usergroup INTEGER, 
     131    r INTEGER, 
     132    w INTEGER, 
     133    PRIMARY KEY (page,usergroup) 
     134) CHARACTER SET utf8 COLLATE utf8_general_ci; 
    11135 
    12136CREATE INDEX idx_forums ON %prefix%forums (forum_category ASC); 
  • trunk/db/sqlite.sql

    r33 r109  
     1CREATE TABLE %prefix%categories ( 
     2  category_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
     3  category_name VARCHAR(255) NOT NULL COLLATE NOCASE, 
     4  category_order INTEGER NOT NULL 
     5); 
     6 
     7CREATE TABLE %prefix%forums ( 
     8  forumid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
     9  forumtitle VARCHAR(255) NOT NULL COLLATE NOCASE, 
     10  forumdescription VARCHAR(255) NOT NULL COLLATE NOCASE, 
     11  forum_category INTEGER  NOT NULL, 
     12  forum_order INTEGER  NOT NULL 
     13); 
     14 
     15CREATE TABLE %prefix%messages ( 
     16  messageid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
     17  messagesender INTEGER NOT NULL, 
     18  messagereceipient INTEGER NOT NULL, 
     19  messagetitle VARCHAR(255) NOT NULL COLLATE NOCASE, 
     20  message TEXT NOT NULL COLLATE NOCASE, 
     21  messagesenderflag INTEGER NOT NULL, 
     22  messagereceipientflag INTEGER NOT NULL, 
     23  messagetime DATETIME NOT NULL 
     24); 
     25 
     26CREATE TABLE %prefix%online ( 
     27  onlinememberid INTEGER NOT NULL, 
     28  onlinetime INTEGER NOT NULL, 
     29  onlinesession VARCHAR(255) NOT NULL COLLATE BINARY, 
     30  onlineposted INTEGER NOT NULL DEFAULT 0 
     31); 
     32 
     33CREATE TABLE %prefix%polls ( 
     34  pollid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
     35  pollchoices TEXT NOT NULL COLLATE NOCASE, 
     36  pollvotes TEXT NOT NULL COLLATE NOCASE, 
     37  pollvoters TEXT NOT NULL COLLATE NOCASE 
     38); 
     39 
     40CREATE TABLE %prefix%posts ( 
     41  postid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
     42  topic INTEGER NOT NULL, 
     43  posteremail VARCHAR(255) NOT NULL COLLATE NOCASE, 
     44  poster VARCHAR(255) NOT NULL COLLATE NOCASE, 
     45  post TEXT NOT NULL COLLATE NOCASE, 
     46  ip VARCHAR(16) NOT NULL COLLATE BINARY, 
     47  attachment VARCHAR(255) NOT NULL COLLATE BINARY, 
     48  postedbymember INTEGER NOT NULL, 
     49  edited DATETIME DEFAULT NULL, 
     50  editedby VARCHAR(255) DEFAULT NULL COLLATE NOCASE, 
     51  posttime DATETIME NOT NULL 
     52); 
     53 
     54CREATE TABLE %prefix%topics ( 
     55  topicid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
     56  forum INTEGER NOT NULL, 
     57  topictitle VARCHAR(255) NOT NULL COLLATE NOCASE, 
     58  closed INTEGER NOT NULL DEFAULT 0, 
     59  pinned INTEGER NOT NULL DEFAULT 0, 
     60  poll INTEGER NOT NULL DEFAULT 0, 
     61  topic_views INTEGER NOT NULL DEFAULT 0 
     62); 
     63 
     64CREATE TABLE %prefix%groupmemberships ( 
     65    member INTEGER, 
     66    usergroup INTEGER 
     67); 
     68 
     69CREATE TABLE %prefix%usergroups ( 
     70  id INTEGER PRIMARY KEY AUTOINCREMENT, 
     71  name VARCHAR(255) COLLATE NOCASE, 
     72  public INTEGER 
     73); 
     74 
     75CREATE TABLE %prefix%members ( 
     76  memberid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
     77  membername VARCHAR(255) NOT NULL COLLATE NOCASE, 
     78  memberemail VARCHAR(255) NOT NULL COLLATE NOCASE, 
     79  memberemailhidden INTEGER NOT NULL DEFAULT 0, 
     80  memberhomepage VARCHAR(255) NULL COLLATE NOCASE, 
     81  memberavatar VARCHAR(255) NOT NULL DEFAULT 'images/spacer.gif', 
     82  memberpassword VARCHAR(255) NOT NULL COLLATE BINARY, 
     83  memberstatus VARCHAR(255) NOT NULL COLLATE NOCASE, 
     84  memberposts INTEGER NOT NULL DEFAULT 0, 
     85  location VARCHAR(255) NULL COLLATE NOCASE, 
     86  icq VARCHAR(255) NULL COLLATE NOCASE, 
     87  aim VARCHAR(255) NULL COLLATE NOCASE, 
     88  yahoo VARCHAR(255) NULL COLLATE NOCASE, 
     89  msn VARCHAR(255) NULL COLLATE NOCASE, 
     90  signature VARCHAR(255) NULL COLLATE NOCASE, 
     91  lastvisit DATETIME NULL, 
     92  boardstyle VARCHAR(32) NULL COLLATE BINARY, 
     93  addressbook TEXT NULL COLLATE NOCASE, 
     94  birthday DATE DEFAULT NULL, 
     95  messagenotification_email INTEGER NOT NULL DEFAULT 0, 
     96  messagenotification_popup INTEGER NOT NULL DEFAULT 1, 
     97  registered DATETIME NOT NULL, 
     98  salt VARCHAR(16) NULL COLLATE BINARY, 
     99  lang VARCHAR(16) NULL COLLATE BINARY, 
     100  offset INTEGER NULL 
     101); 
     102 
     103CREATE TABLE %prefix%mails ( 
     104  id INTEGER NOT NULL PRIMARY KEY, 
     105  receipient VARCHAR(255) NOT NULL COLLATE NOCASE, 
     106  subject VARCHAR(255) NOT NULL COLLATE NOCASE, 
     107  body TEXT NOT NULL COLLATE NOCASE 
     108); 
     109 
     110CREATE TABLE %prefix%moderators ( 
     111    forum INTEGER NOT NULL, 
     112    member INTEGER NOT NULL 
     113); 
     114 
     115CREATE TABLE %prefix%subscriptions ( 
     116    topic INTEGER NOT NULL, 
     117    member INTEGER NOT NULL 
     118); 
     119 
     120CREATE TABLE %prefix%rights ( 
     121    page VARCHAR(255) COLLATE BINARY, 
     122    usergroup INTEGER, 
     123    r INTEGER, 
     124    w INTEGER, 
     125    PRIMARY KEY (page,usergroup) 
     126); 
     127 
     128CREATE TABLE %prefix%rights_default ( 
     129    page VARCHAR(255) COLLATE BINARY, 
     130    usergroup INTEGER, 
     131    r INTEGER, 
     132    w INTEGER, 
     133    PRIMARY KEY (page,usergroup) 
     134); 
     135 
    1136CREATE INDEX idx_forums ON %prefix%forums (forum_category ASC); 
    2137CREATE INDEX idx_topics ON %prefix%topics (forum ASC); 
  • trunk/includes/config/settings.tmpl

    r68 r109  
    4242$SETTINGS['expire'] = 30; // cookie expiration in days 
    4343$SETTINGS['debug'] = 2; // debug mode (0: off, 1: on, 2: admins only 
    44 $SETTINGS['hash'] = 'ripemd160'; // hash algorithm used for the passwords 
     44$SETTINGS['hash'] = 'sha512'; // hash algorithm used for the passwords 
    4545?> 
  • trunk/includes/page_out.php

    r8 r109  
    5454header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 
    5555// send document to client 
    56 print(str_replace(Array('&amp;omicron;', '&amp;raquo;', '&amp;alpha;', '&amp;copy;', '&amp;nbsp;'), Array('&omicron;', '&raquo;', '&alpha;', '&copy;', '&nbsp;'), $html->asXML())); 
     56print(iconv('UTF-8', $SETTINGS['encoding'], str_replace(Array('&amp;omicron;', '&amp;raquo;', '&amp;alpha;', '&amp;copy;', '&amp;nbsp;'), Array('&omicron;', '&raquo;', '&alpha;', '&copy;', '&nbsp;'), $html->asXML()))); 
    5757 
    5858?> 
  • trunk/install.php

    r68 r109  
    221221                    if ($C = new Connection()) { 
    222222                        // get table structure 
    223                         if ($db = @file_get_contents('db/spamboard.sql')) { 
     223                        if ($db = @file_get_contents('db/' . $SETTINGS['sqltype'] . '.sql')) { 
    224224                            // one SQL query at a time 
    225225                            $db = explode(';', $db); 
    226226                            foreach ($db as $query) { 
    227227                                $C->query(str_replace('%prefix%', $SETTINGS['dbtableprefix'], $query)); 
    228                             } 
    229                             // specialities dependent on database type 
    230                             if (is_file('db/' . $SETTINGS['sqltype'] . '.sql')) { 
    231                                 if ($db = @file_get_contents('db/' . $SETTINGS['sqltype'] . '.sql')) { 
    232                                     // one SQL query at a time 
    233                                     $db = explode(';', $db); 
    234                                     foreach ($db as $query) { 
    235                                         $C->query(str_replace('%prefix%', $SETTINGS['dbtableprefix'], $query)); 
    236                                     } 
    237                                 } else { $ok = 0; } 
    238228                            } 
    239229                            // finally, fill in default data