1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-09-12 09:10:44 +02:00

Compare commits

...

244 Commits

Author SHA1 Message Date
Henry Sudhof
c73ff606d4 oops; bantu noted that this won't work properly
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8982 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-10-08 14:00:28 +00:00
Henry Sudhof
f9cd8acb4a I don't think we need those
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8842 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-09-11 13:52:22 +00:00
Meik Sievertsen
663a961014 let updates work for those running .22. ;)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8542 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-05-04 14:43:48 +00:00
Meik Sievertsen
dbb942a03f #2591
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8538 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-05-04 10:51:13 +00:00
Nils Adermann
78c4257195 Hiding everywhere little buggers, eh?
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8479 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-03-29 00:22:48 +00:00
Henry Sudhof
c4b98a443d While we are at it
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8458 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-03-22 15:43:14 +00:00
Henry Sudhof
991f68a85b Okay, let's be a little more paranoid.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8457 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-03-22 13:44:20 +00:00
Meik Sievertsen
b9f2896bae only long notation
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8378 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-02-10 17:18:29 +00:00
Meik Sievertsen
c43d5f9f6e seems like there were some critical bugs open...
Fix bug #2265



git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8377 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-02-10 12:52:05 +00:00
Meik Sievertsen
ffc3d57e46 changelog addition
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8371 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-02-02 18:50:44 +00:00
David M
72fbf492ca Two fixes for the group permissions ACP...
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8370 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-02-02 18:24:07 +00:00
Meik Sievertsen
31ce16ad2e version bump from 2.0.22 to 2.0.23
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8367 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-02-02 15:05:23 +00:00
Meik Sievertsen
cf02e7c01e disallow yet another character (there are more, of course - but we do not add every character)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8361 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-02-01 12:49:38 +00:00
Meik Sievertsen
e27bed357b #12271
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8358 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-02-01 12:26:14 +00:00
Henry Sudhof
7461851711 More form tokens
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8357 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-02-01 11:59:05 +00:00
Henry Sudhof
6d76589d0f Oh yah. 2.0. Meh
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8342 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-01-29 11:05:17 +00:00
Henry Sudhof
cee785cb60 More checks
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@8339 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-01-28 15:18:56 +00:00
Meik Sievertsen
5d7276af5a some 2.0.x fixes for some annoying bugs and some not so annoying ones.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@6981 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-02-10 12:14:24 +00:00
Meik Sievertsen
0896dc5eca the changelog
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@6798 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-12-23 18:58:46 +00:00
Meik Sievertsen
f7c96667a3 #6316
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@6775 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-12-17 10:51:27 +00:00
Meik Sievertsen
688d57f99c some changes for the new version
- it would be nice if anyone able would be testing these changes on their installations and report bugs as soon as possible (also do not hestitate to PM the developers. ;)).
- the changelog is ommitted for now - it will get checked in later.


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@6772 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-12-16 13:11:28 +00:00
Nils Adermann
e105aa68bb - new members of moderator groups should always become moderators [Bug #382]
- proper message when replying to non-existant topics [Bug #459]
- changed column type of search_array to store more ids [Bug #4058]
- fixed annoyance with font-size selector [Bug #4612]


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@6749 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-12-11 23:30:12 +00:00
Graham Eames
0edf794be5 Small change correcting invalid escaping. This is potentially an issue on new mysql versions
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@6138 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-07-02 20:46:41 +00:00
Graham Eames
3ca51916a0 Changes related to multiple language support (see announcement + bug #2137)
Thanks to Anthrax101 for the suggested code


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@6025 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-06-08 21:11:04 +00:00
Meik Sievertsen
5a8697920c .21 and added config var
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5991 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-30 21:17:40 +00:00
Graham Eames
163b39fe42 Change the handling of the VC when zlib is not available using David's emulation code
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5990 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-30 19:29:44 +00:00
Graham Eames
a230337cd2 Revert an accidental change. It makes no functional difference to anything but will avoid a code change
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5970 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-26 17:46:59 +00:00
Meik Sievertsen
10f49e6f7f removing request tracker link from FAQ - currently disabled
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5969 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-26 16:15:23 +00:00
Graham Eames
44d3ba4582 Attempt to deal with security issues which are arising in MODs which are not correctly setting phpbb_root_path and/or testing IN_PHPBB in their code
No functional changes to the behaviour of phpBB itself


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5963 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-23 21:11:56 +00:00
Graham Eames
0821474a5c Small change to bring this check in line with the other image checks (remote avatars and img tags)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5962 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-23 21:09:27 +00:00
Graham Eames
1cee6fcf41 Some changes to the way we filter short search terms since it seemed to not completely work on some configurations
I've moved the minimum number of characters to a config variable as well to save hard-coding it several times and allow configuration for those who want it
There will not be an option to change this via the ACP, you can always do so via the database if you want to


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5942 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-20 14:01:48 +00:00
Graham Eames
a44002aefe Fix removal of old session keys under particular circumstances
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5930 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-18 19:23:07 +00:00
Graham Eames
4623973784 Extend the improved error handling to language files as well as styles
Now with added paranoia!


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5917 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-16 19:14:36 +00:00
Graham Eames
f493eb7c1c A one line change just to make sure it's working
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5897 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-12 19:01:45 +00:00
Graham Eames
0cc084856b Loosen up on the safety checking we do if HTML is on, it appears that we were making things too safe with the new code :/
Ah well, HTML is gone in 3.0.x anyway so we'll avoid this problem there...


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5886 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-05-06 13:38:55 +00:00
Graham Eames
7ada8a0558 We need to make this global to retrieve the cookie name correctly
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5840 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-23 18:45:43 +00:00
Graham Eames
46adf29d8b Fix missing error message for inactive users [#1598]
(This is only actually a one line change, but the resulting indent change makes for a large block in the code changes unfortunately)


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5835 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-22 20:28:42 +00:00
Graham Eames
d98e3d00d2 Fix for poll deletion mistakenly altering forum stats [#1602]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5833 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-22 19:54:44 +00:00
Graham Eames
aac27e9213 Backport of David's more efficient code for highlighting
Report any issues where this changes the behaviour of the highlight to the bug tracker


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5812 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-21 19:07:47 +00:00
Graham Eames
72e95bd7be Some initial prep and listing what's changed so far.
There's still more to come before we actually make it into a release though ;-)


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5810 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-20 17:54:00 +00:00
Graham Eames
9fdca54c7f It should use the other template file [#1580]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5808 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-20 13:34:15 +00:00
Graham Eames
ada768ba2e Cancel redirects you back to the beginning
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5782 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-13 09:56:48 +00:00
Graham Eames
139e217656 +ment....
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5781 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-10 21:08:15 +00:00
Graham Eames
eec5432a5e Address an issue with quoting messages for those with HTML enabled.
Note again that we recommend that you do not enable HTML


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5778 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-09 20:07:01 +00:00
Graham Eames
541b344ba1 Some changes to deal with a potential problem the new random number generator code has with mysql5
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5777 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-09 16:17:28 +00:00
Graham Eames
1e06023aad A couple of items that seem to be missing from CVS
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5761 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-04-05 12:42:23 +00:00
Graham Eames
7c9b819b90 Display an error if the user wasn't update rather than success [#1320]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5729 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-26 14:43:24 +00:00
Graham Eames
c01f77be2a Make some changes to how the visual confirmation is handled if zlib is unavailable
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5713 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-25 14:22:45 +00:00
Graham Eames
a24592f9f4 Bertie ran of with my quotes ;-)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5706 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-23 19:32:44 +00:00
Graham Eames
a8a5c91cbe Backporting a change to the forward ported......oh forget it :P
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5664 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-18 23:08:59 +00:00
Graham Eames
8c8a981a2a Fingers crossed, this is the last change I need to make :)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5651 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-18 12:33:06 +00:00
Graham Eames
aa3a6a694e Missed on earlier commit
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5645 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-17 18:39:00 +00:00
Graham Eames
cf39c53b46 2 minor changes arising from testing
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5632 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-14 20:40:32 +00:00
Meik Sievertsen
8832e38b57 - changed the ms access schema to be up to date.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5621 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-12 16:14:41 +00:00
Graham Eames
db6e63ca52 - Enabled VC by default on new installs
- Changed default forum permisions
Meik : Can you port to Access again please
Support Team: Note the need to update the relevant KB article post release


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5616 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-09 21:55:09 +00:00
Graham Eames
40dedf8ed3 Efficiency change
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5615 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-09 19:57:47 +00:00
Graham Eames
5dafdada0f Copy and paste....
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5614 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-09 19:42:41 +00:00
Graham Eames
20fc30595b There is no point looking up the group moderator name when none exists
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5613 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-09 19:28:15 +00:00
Graham Eames
3176c03583 And now it's my turn :)
Bug fix for a bugfix.....


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5604 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-06 17:28:51 +00:00
Meik Sievertsen
63d64bbc84 schema changes for ms access
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5600 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-03-04 13:23:33 +00:00
Graham Eames
0b5777ddc9 update_to_latest, does exactly what it says on the tin :D
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5592 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-26 21:16:52 +00:00
Graham Eames
bc46c92187 Add it to the changelog. I always forget to commit this file.....
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5591 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-26 19:37:50 +00:00
Graham Eames
7e5a4434ad Slight change to make it clear what's going on - forgot 2 brackets....
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5590 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-26 17:44:36 +00:00
Graham Eames
c3c7a5f332 Time to roll the dice and see what number comes up :)
[Replace calls to rand/mt_rand in certain places with an alternative method]


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5589 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-26 17:35:17 +00:00
Graham Eames
e5f594466d Some alterations to the new HTML code to eliminate the need for us to increase the minimum version requirements.
Min. requirement remains at 4.0.3


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5582 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-24 21:14:54 +00:00
Graham Eames
0cc02fd1b0 A slight alteration from David to address performance issues with particular versions of PHP and IIS
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5573 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-22 20:53:55 +00:00
Graham Eames
e0eada6950 Fix a minor HTML error [Bug #931]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5561 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-18 21:00:09 +00:00
Graham Eames
a6df557865 *** empty log message ***
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5560 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-18 19:13:44 +00:00
Graham Eames
566b342b67 Clearing up a query which is causing problems on large installs [Bug #723]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5559 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-18 15:28:45 +00:00
Graham Eames
21440a4f1a Change user_timezone to 5,2 to match the mysql schema (and also the 3.0 pgsql schema)
[Bug #979]


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5549 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-12 16:14:58 +00:00
Graham Eames
b8846c9f63 Let's see if we can make the support team's job a little easier.....
Automagically remove http:// from the server name if someone tries to put it in there
This should reduce the number of people who end up visiting microsoft.com on login :)


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5542 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-10 22:19:01 +00:00
Graham Eames
b54eadac39 Correct some speeling mistakes :P [Bug #460]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5541 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-10 21:33:53 +00:00
Graham Eames
54b4ad8282 Fix error handling [Bug #410]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5540 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-10 20:43:10 +00:00
Graham Eames
f2980c0310 Fix a minor typo in postgres database handling [Bug #393]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5539 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-10 20:35:40 +00:00
Graham Eames
66e5ae69f0 We don't want to output %s (bug found during styles validation)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5535 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-07 20:42:51 +00:00
Graham Eames
7fcba7f4a7 Database changes for search flood control
AcydBurn - Can you please replicate this into the MS Access primer for me


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5532 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-06 21:32:42 +00:00
Graham Eames
c7517b2413 Update these references whilst I remember
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5530 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-05 16:29:13 +00:00
Graham Eames
e76b6dac9b Changes to the search code
- Add a configurable flood control limit to searching
- Change the way old search results are removed to deal with an issue with mysql 5 crashing on large queries
Note to translators: This adds new language variables
Note to designers: This changes a template file
There are also database changes assosciated with this change, these will follow later


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5528 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-05 15:59:48 +00:00
Graham Eames
91a14a3d9a Word censor on quoting a PM in reply [Bug #405]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5520 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-04 21:44:24 +00:00
Graham Eames
7ce72693df Replace usage of strip_tags with htmlspecialchars for consistancy with posting
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5519 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-02-04 19:49:41 +00:00
David M
a600bb0af0 This is GrahamJE is disguise.. ;-)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5512 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-30 01:23:46 +00:00
Graham Eames
c242c53b4e Change to make style code consistant with usercp_register.php [#304]
Also remove an unneeded option


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5510 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-29 21:50:36 +00:00
Graham Eames
64ce4ce861 Duplicate the no-cache headers from page_header.php to work around an issue affected some webserver/proxies
[Bug #149]


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5509 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-29 21:19:02 +00:00
Graham Eames
138f82ef8e Some slight changes to the pruning code
This should improve performance for pruning on large forums
Topics with no last_post_id are now dealt with separately


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5508 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-29 17:31:16 +00:00
Graham Eames
9fc979dcd1 That was not the code you were looking for....
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5507 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-28 16:47:29 +00:00
Graham Eames
3c54fa68e5 Explicitly intval the poll option id's
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5506 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-28 14:56:51 +00:00
Graham Eames
27f2ed076c Correct an error message in the changed code
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5505 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-28 13:09:13 +00:00
Graham Eames
5486a0c716 Add all the changes made to date
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5504 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-28 12:49:06 +00:00
Graham Eames
278e64fdb4 Changes to smilies in the admin panel
- Deletions now require confirmation
- Additions/edits can no longer be via GET
Note to translators: This adds a new language variable


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5503 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-28 12:46:53 +00:00
Meik Sievertsen
c2de464100 - finally (re-)implement the fixes for bug #90 and #91. They were noted as fixed but got out of CVS due to another fix and has not been re-applied.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5502 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-28 11:13:39 +00:00
Graham Eames
5384eedd68 Truncate the URI to the size of the database field before we check it to ensure that what is stored in the database is the same as that we checked
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5501 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-27 21:23:22 +00:00
Graham Eames
1ace2eca07 Changing the way we handle the case where a user's style does not exist in the database
We now try to fallback to the board default if possible and update the database if this succeeds


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5500 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-27 20:23:33 +00:00
Graham Eames
722fbae7c0 Escape the group name to prevent a few common support issues
NB: We still allow HTML in group names because some administrators use it (this is designed behaviour)


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5495 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-26 20:36:54 +00:00
Graham Eames
70722f5c45 Changes to word censors in the admin panel
- Deletions now require confirmation
- A few miscellaneous bug fixes
Note to translators: This adds a new language variable


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5493 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-23 21:24:41 +00:00
Graham Eames
8ba6a53e3a Minor change to restrict the value of $mode
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5492 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-23 19:47:19 +00:00
Graham Eames
cd887d4414 Changes to rank handling and the admin panel
- Removal of unneeded code
- Deletions now require confirmation
- A few miscellaneous bug fixes
Note to translators: This adds a new language variable
Note to designers: This adds a new template file


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5489 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-22 20:44:04 +00:00
Graham Eames
c85e442a63 Remove some old unused code which dates from pre-2.0.8
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5487 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-22 17:11:09 +00:00
Graham Eames
f4891dfeeb A rewrite of the HTML parsing code
NOTE: Minimum requirement for this code is now PHP 4.0.5


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5481 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-21 18:48:44 +00:00
Graham Eames
64b4b93524 Improved handling of forums to which the user does not have any explicit permissions
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5480 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-20 21:37:52 +00:00
Graham Eames
a128e51fc4 Remove unneeded calls to unset()
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5479 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-20 19:51:08 +00:00
Graham Eames
b406cb7239 Two changes:
- Improved error handling on topic/post ids
- Escape rdns results in case someone has a hostname containing special characters


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5478 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-20 19:50:27 +00:00
Graham Eames
43edfa0c4f One character errors are so annoying
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5474 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-18 21:55:52 +00:00
Graham Eames
3aee1ad40b Some further changes to HTML
Previous comments still stand


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5473 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-18 21:25:38 +00:00
Graham Eames
ac4c0991fe A list of the changes to date
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5462 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-14 23:09:57 +00:00
Graham Eames
132033447b Some changes to HTML handling if enabled.
Note: We still recommend that HTML is not enabled


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5461 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-14 23:06:10 +00:00
Graham Eames
8ea409d1cc Fix the use of an invalid config option (Bug #861)
Ordinarily this would have been quite low priority, but it had the potential to cause an error within the error handler, so I'm dealing with it now


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5454 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-14 15:53:07 +00:00
Graham Eames
6087293182 This is a workaround for an issue involving PHP >= 4.3.4 and MSSQL under certain conditions which caused a space to be returned instead of an empty string.
See bug #830 for details
If using MSSQL, please test this change and report any errors on that bug report


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5453 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-14 15:20:54 +00:00
Graham Eames
b5490a243f Changes to the way the limits are enforced on username length when searching
This should now allow you to search for a specific user with a name < 3 chars long, whilst still preventing wildcard searchs with less than 3 chars


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5447 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-13 20:25:39 +00:00
Graham Eames
e16e060fff Begone ye typos, ye are not wanted here ;-)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5446 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-13 20:10:02 +00:00
Graham Eames
e80684acca Some changes to the checks on login attempts:
- handling reauthentication to the ACP
- handling inactive users


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5445 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-13 19:29:50 +00:00
Graham Eames
6dbe925952 Changes related to deleting auto login keys on password change
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5442 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-01-11 21:09:47 +00:00
Meik Sievertsen
8976799a6a - of course the html one is working with other browsers too, it is simple html, why should it not work. :/
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5411 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-31 15:07:19 +00:00
Meik Sievertsen
e74141a4fc - tiny "last minute" change
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5401 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-30 09:51:02 +00:00
Meik Sievertsen
5ddf1f6c59 - fix for quote tag for a bug in 2.0.19
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5393 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-29 15:12:20 +00:00
Meik Sievertsen
aa3bcbaccf implemented maximum login attempts feature to prevent dictionary attacks
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5392 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-29 11:51:13 +00:00
Meik Sievertsen
d63c1ddf2b in pm's too of course.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5371 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-22 12:54:56 +00:00
Meik Sievertsen
a7fcec0701 - let quote tags work again. ;)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5370 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-22 12:15:40 +00:00
Meik Sievertsen
90a093fc5f fix the html issue...
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5369 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-22 11:34:02 +00:00
Meik Sievertsen
8c5431cc68 before we forget. ;)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5364 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-21 13:59:14 +00:00
Meik Sievertsen
08deb2e328 removing cxib, because it has only been forwarded by him. ;)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5363 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-21 13:23:46 +00:00
Graham Eames
6603e4aa5f Fix for bbcode issue under IE
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5362 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-21 13:06:04 +00:00
Graham Eames
0473115ea4 An improved version of the username patch I committed the other day
+ remove sessions and auto-login keys when deleting a user

Developers - please test this for any unusual code paths to make sure I
have not missed any


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5359 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-20 20:42:28 +00:00
Meik Sievertsen
1a94e75c38 - fix sql escaping for non-mysql db's (we forgot this one, or removed it accidently)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5356 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-19 18:01:36 +00:00
Graham Eames
79e57f8a0c Recording changes to date before I forget them :-)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5353 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-18 14:30:24 +00:00
Graham Eames
ea8943d8b4 Removing a few pieces of redundant code for efficiency
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5352 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-18 13:57:51 +00:00
Graham Eames
160ae210c3 Truncate the username we add to the database to 25 characters.
This resolves a minor issue with MySQL 5.x under certain conditions


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5334 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-14 21:48:39 +00:00
Graham Eames
b78566a954 Correct path to avatars [#667]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5326 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-11 15:40:15 +00:00
Graham Eames
9ac354aab3 Remove the assumption that . will be in the include path - it is
becoming more common on recent distributions that it is not by default


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5318 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-12-04 12:55:28 +00:00
Graham Eames
a0e567754e Minor change to support mysql 5.0 in the database size code
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5309 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-11-19 21:22:58 +00:00
Graham Eames
e284940213 Bring the schema into line with the postgres one - this should deal with
the errors caused by people who've decided to install mysql 5 and change
it from the default settings to ultra-strict mode


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5292 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-11-06 19:51:53 +00:00
Graham Eames
b22bd87d96 Add session keys to the backup - the data in this table will be of
limited use if you have to restore, but the structure is needed if
migrating to a different server


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5290 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-11-05 21:18:12 +00:00
Graham Eames
7dd5bace60 Fix a minor typo affecting MS-SQL users
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5289 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-11-05 18:46:35 +00:00
Meik Sievertsen
15b9228417 another one lately noticed (i do not know why such things are not seen within the testing phase - we have to evaluate it completely)
- we will replace the 2.0.18 packages (a reply to the announcement is needed after repackage)


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5286 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-31 07:31:06 +00:00
Graham Eames
98e7516d34 Looks like the changes to this file had not been commited
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5285 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-31 06:40:27 +00:00
Meik Sievertsen
6581d16269 and the changelog
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5284 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-30 17:59:25 +00:00
Meik Sievertsen
9b9618f2dd 2.0.18 changes
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5283 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-30 15:17:14 +00:00
Graham Eames
37f67fdea9 Ooops
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5275 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-22 16:16:25 +00:00
Graham Eames
9c6a966045 [#314]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5270 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-10 20:54:40 +00:00
Graham Eames
7f6027d082 Clear up a few more minor template issues that have been reported
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5269 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-10 20:25:48 +00:00
Graham Eames
eac5e69be1 Just bring subSilver into line with the code whilst I've been making
some subSilver changes


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5266 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-08 19:41:31 +00:00
Graham Eames
6a45dfe3de Move this so it doesn't affect the installer
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5265 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-08 19:34:01 +00:00
Graham Eames
916bf8efd5 Removing some duplicated entries [various reports]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5262 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-05 19:00:45 +00:00
Graham Eames
ebf7035201 Stop using a couple of the php3 compatability wrappers since the
functions they replace are present in the current minimum required php
version.
There should be no noticable change from this apart from a slight
performance increase, but again please report any issues with this
change to me


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5261 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-05 17:42:04 +00:00
Graham Eames
646c9b5428 Various minor template bugs
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5260 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-05 14:36:39 +00:00
Graham Eames
aaf1e722cc Remove some hard-coded text [Bug #195]
Translators: Please note the new language string for 2.0.18 (others may
also follow)


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5256 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-10-04 21:45:02 +00:00
Graham Eames
64e9f7a604 Minor HTML fixes [Bug #284]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5235 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-29 20:35:51 +00:00
Graham Eames
2028314d7b Fix broken anchors [Bug #95]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5234 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-29 19:52:35 +00:00
Graham Eames
2fa5427d36 Ooops
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5233 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-28 20:54:55 +00:00
Graham Eames
7b16b7bd6e Die slightly more gracefully under an error condition
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5232 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-28 20:50:19 +00:00
Graham Eames
07e6d084c0 Bug #325
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5231 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-27 20:39:00 +00:00
Graham Eames
42041b2c14 Minor tweak
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5230 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-27 20:24:35 +00:00
Graham Eames
202a96cb90 Change handling of re-activation emails
If account activation is set to admin, these are now sent to the
administrator and not the user. This is a slight change in behaviour but
brings the code into line with the messages displayed to the user and
the email which is sent and is required because only an administrator is
able to re-activate an account with that account activation setting.
[Bug #145]


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5225 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-23 18:46:18 +00:00
Graham Eames
4f97339ffa I'm backporting this change from the Olympus code as we have no need of
this information after this point.
This should not affect anything, but if you are following CVS please
implement this change and let me know if there are any problems.


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5224 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-23 16:03:24 +00:00
Graham Eames
5542e3d4d5 102 again...
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5221 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-21 20:23:21 +00:00
Graham Eames
3c488dab68 Apply translation info fix to the admin panel as well
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5214 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-19 20:49:06 +00:00
Graham Eames
2467f2cb9a Prevent an admin deleting themselves in order to reduce support issues
of users accidentally deleting themself


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5213 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-19 20:44:22 +00:00
Graham Eames
d5c7687627 A few more minor bug fixes
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5212 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-18 20:07:24 +00:00
Meik Sievertsen
ba629b808d - more bugfixes
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5211 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-18 16:17:21 +00:00
Graham Eames
1b00e321b9 Another change that is part of the fix to bug 102 in an earlier checkin
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5210 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-17 18:36:48 +00:00
Graham Eames
14b9bbbf93 Correct test for whether a style was selected [Bug #129]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5209 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-17 18:01:54 +00:00
Graham Eames
78bde98c18 Hide "Mark All Forums Read" link when not logged in (as this option is
not valid for a guest) [Bug #121]


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5208 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-17 17:27:25 +00:00
Graham Eames
03e90697a3 Add page title to initial "summary" page of groupcp.php [Bug #125]
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5207 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-17 17:15:47 +00:00
Graham Eames
ab85a67029 Update FAQ to reference correct URI on Sourceforge and change references
to 2.2 to 3.0 [Bug #306]


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5206 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-17 16:36:53 +00:00
Meik Sievertsen
b12cfe0b9a small correction
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5205 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-14 19:16:21 +00:00
Meik Sievertsen
b4d5539758 ok, bugfixing phase #1 finished. There will be more bugfixes coming and those knowing CVS/php/mysql are encouraged to implement the fixes. ;)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5204 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-09-14 18:14:30 +00:00
Meik Sievertsen
08b719e8d5 hmm, i could swear i submitted them...
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5190 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-08-08 14:55:26 +00:00
Meik Sievertsen
8ac5f738e2 - some 2.0.x updates
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5187 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-07-19 20:01:24 +00:00
Meik Sievertsen
6ba1c635cd - security related checkin
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5166 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-06-28 06:51:10 +00:00
Meik Sievertsen
5a173c8a33 fix well known bug
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5165 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-06-26 14:39:30 +00:00
Meik Sievertsen
05bb529e80 *** empty log message ***
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5164 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-06-26 12:03:46 +00:00
Meik Sievertsen
4434757882 - fix for problem with demoted admins on rare occassions
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5149 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-05-13 20:59:06 +00:00
Meik Sievertsen
9abeaa1177 checkin latest changes
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5145 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-05-07 22:18:10 +00:00
Meik Sievertsen
31727e70e7 *** empty log message ***
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5143 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-05-07 14:17:36 +00:00
Meik Sievertsen
bdec7f1e2c *** empty log message ***
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5142 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-05-06 20:50:13 +00:00
Meik Sievertsen
aa895baa17 fix for guests not able to view html if html is turned on globally (recovering the old behaviour)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5123 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-04-18 19:33:22 +00:00
Meik Sievertsen
5f2a1476d4 hehe
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5121 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-04-15 20:53:10 +00:00
Meik Sievertsen
4cc92e89b3 fix postgresql case-sensitivity issue
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5120 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-04-15 20:50:02 +00:00
Meik Sievertsen
8950f298ff some updates
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5119 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-04-15 20:15:48 +00:00
Meik Sievertsen
86ca2aae83 fix useragent string
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5111 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-03-26 14:15:59 +00:00
Meik Sievertsen
baa5de9988 only relevant for new installations, fix missing class.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5107 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-03-19 16:18:44 +00:00
Meik Sievertsen
661e17f656 remove oracle db file (we do not support oracle in 2.0.x)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5106 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-03-18 14:43:19 +00:00
Meik Sievertsen
4c36f39aef basename the filename
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5103 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-03-17 17:33:30 +00:00
Meik Sievertsen
dfd0fd39fd - try some matching against server intensive searches...
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5102 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-03-15 18:34:34 +00:00
Meik Sievertsen
5931f77a3b - make install.php php5 compatible (hopefully) :D
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5101 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-03-15 18:33:16 +00:00
Meik Sievertsen
e82f1ba8c5 - session update
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5100 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-03-15 18:24:37 +00:00
Meik Sievertsen
5bcbf8f939 - modcp bugfix (empty topic/forum id)
- fix user signature problems (html globally turned off/on)


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5099 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-03-15 18:09:23 +00:00
Meik Sievertsen
c91ddb6029 2.0.13
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5097 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-02-27 23:26:08 +00:00
Meik Sievertsen
2280b3f7c7 removed update_to_ files before tagging
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5096 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-02-27 18:47:13 +00:00
Meik Sievertsen
6e9c5383df *** empty log message ***
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5094 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-02-21 19:29:30 +00:00
Meik Sievertsen
31cf453ed2 thanks pit
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5093 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-02-21 19:09:33 +00:00
Meik Sievertsen
585dff72c6 some changes
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5092 89ea8834-ac86-4346-8a33-228a782c2dd0
2005-02-21 18:38:40 +00:00
Paul S. Owen
24338c287f Remove version information from display
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5036 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-12-22 02:06:42 +00:00
Meik Sievertsen
c835b7e909 2.0.11
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5028 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-11-18 17:49:48 +00:00
Meik Sievertsen
9ba371aa0e *** empty log message ***
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4934 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-07-17 13:52:52 +00:00
Meik Sievertsen
2d7e662fca *** empty log message ***
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4933 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-07-17 13:48:33 +00:00
Meik Sievertsen
0bf74adc30 Fixed bug in admin_board.php for board settings having single quotes in it
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4932 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-07-15 18:02:44 +00:00
Meik Sievertsen
b564d1f89e - Fixed wrong unsetting of variables introduced in phpBB 2.0.9, making the board non-functional for users with specific php.ini settings
- Added code to let phpBB work with PHP5 for those having register_long_arrays set to off (default settings).


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4931 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-07-15 18:00:34 +00:00
Meik Sievertsen
80dd1d108e Fixed deleting of styles in admin_styles.php
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4930 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-07-15 17:57:50 +00:00
Meik Sievertsen
b027ef385d - Fixed problem with SID not delivered to next page in groupcp.php if cookies were disabled... (obviously a problem since 2.0.6)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4928 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-07-11 22:18:27 +00:00
Meik Sievertsen
68ac67277b *** empty log message ***
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4927 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-07-11 16:49:19 +00:00
Meik Sievertsen
572ee7994a prepare new release - see changelog for changes
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4926 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-07-11 16:46:20 +00:00
Paul S. Owen
e8e0ef46ed Various changes to further combat the idiots and dickheads out there using daddy's computer
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4882 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-04-21 12:18:02 +00:00
Paul S. Owen
4f034fdff2 Set $faq var, I am doing some stuff in common.php ... will try and finish this later tonight/tomorrow
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4881 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-04-08 13:53:54 +00:00
Meik Sievertsen
64fe7e3167 fix sql injection vulnerability
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4878 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-28 16:38:51 +00:00
Meik Sievertsen
234b1f13de several security fixes in admin pages
changed bbcode to only allow jpg, jpeg, gif and png


git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4876 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-25 15:57:20 +00:00
Paul S. Owen
79c15bd7c1 *** empty log message ***
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4874 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-24 15:28:53 +00:00
Paul S. Owen
dc6ffd411b Redirect to (admin) index if sid not present in URL ... check this, at least it shouldn't allow any nasty misuse while indicating to the admin a possible problem exists. However need to ensure all ACP scripts are behaving correctly and appending sid to all relevant links/actions
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4873 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-24 14:43:31 +00:00
Paul S. Owen
f4b530e065 Restrict [img] back to three standard img formats ... this'll annoy dynamic img users but tough, damn nuisance anyway
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4872 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-24 14:39:50 +00:00
Meik Sievertsen
fc977003fa changelog
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4869 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-18 18:41:44 +00:00
Meik Sievertsen
0ec75e5c4d security fix
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4868 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-18 18:16:45 +00:00
Meik Sievertsen
c1606f686a missing variable
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4867 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-18 18:16:21 +00:00
Meik Sievertsen
b580dca7fc redirect problem fix
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4866 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-18 18:15:51 +00:00
Meik Sievertsen
a32a837b03 this is what you get if you upgrade tortoiseCVS. :/ Wrong line endings.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4864 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-13 15:09:39 +00:00
Meik Sievertsen
989cfb9d8c 2.0.7
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4863 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-13 15:03:58 +00:00
Paul S. Owen
9624bb953f Issue noticed by Pit ... please check before release
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4854 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-01 16:59:06 +00:00
Paul S. Owen
9cb42980ca Issue noticed by Pit ... please check before release
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4853 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-01 16:53:21 +00:00
Paul S. Owen
4ca1e7ec26 oopsie
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4852 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-01 16:49:03 +00:00
Paul S. Owen
bf57720165 Update changelog
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4851 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-01 16:02:48 +00:00
Paul S. Owen
18c9aa79ad Vulnerability + potential Zend fixes
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4850 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-03-01 15:56:52 +00:00
Paul S. Owen
e010274192 Incorrect icons
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4761 89ea8834-ac86-4346-8a33-228a782c2dd0
2004-01-16 13:20:20 +00:00
Paul S. Owen
ad06356c5f Updates for potential XSS vuln ... someone please verify and get back to me
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4706 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-12-30 14:17:49 +00:00
Ludovic Arnaud
f51bf61478 Fixed: better input validation, thanks to Niels Teusink for pointing this one out
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4680 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-11-22 22:36:13 +00:00
Paul S. Owen
05827b8195 These are not being updated and their presence is typically a nuisance ... appologies in advance to those this may affect (grab the relevant language packs from www.phpbb.com/downloads.php)
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4513 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-09-26 23:30:13 +00:00
Paul S. Owen
3f003845d3 Fix bbcode url xss issue
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4494 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-09-10 17:50:14 +00:00
Paul S. Owen
5be808dc97 whoopsie ... IGNORE only valid for MySQL
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4423 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-08-23 01:16:13 +00:00
Paul S. Owen
35948b18b7 Document tags
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4411 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-08-17 12:00:44 +00:00
Meik Sievertsen
b795beb5e1 Changed whois lookup address within admin index
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4339 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-08-03 11:50:52 +00:00
Meik Sievertsen
838a883631 fixed several vulnerabilities in modcp
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4331 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-07-26 11:41:35 +00:00
Paul S. Owen
e8fdeae5a3 achhhoo
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4293 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-07-20 15:39:47 +00:00
Meik Sievertsen
c33f3ef171 2.0.6 updates...
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4284 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-07-20 13:14:28 +00:00
Meik Sievertsen
6e29a5addb as told... the latest changes.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4280 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-07-18 16:34:01 +00:00
Paul S. Owen
1e9c5321c7 Legacy var ... potential XSS
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4221 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-07-11 17:04:31 +00:00
Meik Sievertsen
08da796e8e lessons are made for those gaining experience from them...
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4186 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-30 17:18:38 +00:00
Meik Sievertsen
305eb6c34a To enclose the email address in <> is required for the RCPT TO Field, according to RFC 821. Since we do not use these <>'s within the TO Field while using the mail function (some servers are having problems with this) we need to re-add them within the smtpmail function.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4183 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-28 11:32:48 +00:00
Meik Sievertsen
5a3f9d3bac one more tweak
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4182 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-27 15:01:35 +00:00
Meik Sievertsen
77e8d09aab Set $to_header before we fill it.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4181 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-26 21:13:21 +00:00
Meik Sievertsen
7af3199e0c script to convert 2.0.x usernames to 2.0.5. Existing 2.0.5 usernames will be not affected by this.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4177 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-26 09:59:06 +00:00
Paul S. Owen
5a13b0710d Existing fix won't work correctly ... this should
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4176 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-26 00:08:17 +00:00
Paul S. Owen
9b70911e63 Possible naughty on old versions of PHP
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4174 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-25 16:22:22 +00:00
Meik Sievertsen
c383145485 fix for mass email bug.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4171 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-24 17:23:49 +00:00
Paul S. Owen
0fef715e2b post/topic_id were already set by default ... no need for "else" statements
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4159 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-20 16:34:58 +00:00
Paul S. Owen
94b40f5e1e Fix possible SQL injection option ... oh and big thanks to the person that notified us and gave us a whole,ooohh,hour to act on it, cheers ... sigh
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4158 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-20 13:16:55 +00:00
Meik Sievertsen
692030f51f some bugfixes... cvs does not work very well at the moment. hope the change within the mssql schema do the job, i will test this tonight (i have to be at work in a few minutes).
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4157 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-20 07:40:27 +00:00
Bart van Bragt
5177807da1 Removed extraneous 2 joins to posts table on next/prev topic links
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@4153 89ea8834-ac86-4346-8a33-228a782c2dd0
2003-06-19 19:21:10 +00:00
1866 changed files with 4054 additions and 109452 deletions

View File

@@ -16,7 +16,7 @@ define('IN_PHPBB', 1);
if( !empty($setmodules) )
{
$file = basename(__FILE__);
$module['General']['Configuration'] = "$file";
$module['General']['Configuration'] = $file;
return;
}
@@ -43,13 +43,30 @@ else
{
$config_name = $row['config_name'];
$config_value = $row['config_value'];
$default_config[$config_name] = $config_value;
$default_config[$config_name] = isset($HTTP_POST_VARS['submit']) ? str_replace("'", "\'", $config_value) : $config_value;
$new[$config_name] = ( isset($HTTP_POST_VARS[$config_name]) ) ? $HTTP_POST_VARS[$config_name] : $default_config[$config_name];
if ($config_name == 'cookie_name')
{
$cookie_name = str_replace('.', '_', $new['cookie_name']);
$new['cookie_name'] = str_replace('.', '_', $new['cookie_name']);
}
// Attempt to prevent a common mistake with this value,
// http:// is the protocol and not part of the server name
if ($config_name == 'server_name')
{
$new['server_name'] = str_replace('http://', '', $new['server_name']);
}
// Attempt to prevent a mistake with this value.
if ($config_name == 'avatar_path')
{
$new['avatar_path'] = trim($new['avatar_path']);
if (strstr($new['avatar_path'], "\0") || !is_dir($phpbb_root_path . $new['avatar_path']) || !is_writable($phpbb_root_path . $new['avatar_path']))
{
$new['avatar_path'] = $default_config['avatar_path'];
}
}
if( isset($HTTP_POST_VARS['submit']) )
@@ -97,6 +114,12 @@ $activation_none = ( $new['require_activation'] == USER_ACTIVATION_NONE ) ? "che
$activation_user = ( $new['require_activation'] == USER_ACTIVATION_SELF ) ? "checked=\"checked\"" : "";
$activation_admin = ( $new['require_activation'] == USER_ACTIVATION_ADMIN ) ? "checked=\"checked\"" : "";
$confirm_yes = ($new['enable_confirm']) ? 'checked="checked"' : '';
$confirm_no = (!$new['enable_confirm']) ? 'checked="checked"' : '';
$allow_autologin_yes = ($new['allow_autologin']) ? 'checked="checked"' : '';
$allow_autologin_no = (!$new['allow_autologin']) ? 'checked="checked"' : '';
$board_email_form_yes = ( $new['board_email_form'] ) ? "checked=\"checked\"" : "";
$board_email_form_no = ( !$new['board_email_form'] ) ? "checked=\"checked\"" : "";
@@ -160,6 +183,12 @@ $template->assign_vars(array(
"L_NONE" => $lang['Acc_None'],
"L_USER" => $lang['Acc_User'],
"L_ADMIN" => $lang['Acc_Admin'],
"L_VISUAL_CONFIRM" => $lang['Visual_confirm'],
"L_VISUAL_CONFIRM_EXPLAIN" => $lang['Visual_confirm_explain'],
"L_ALLOW_AUTOLOGIN" => $lang['Allow_autologin'],
"L_ALLOW_AUTOLOGIN_EXPLAIN" => $lang['Allow_autologin_explain'],
"L_AUTOLOGIN_TIME" => $lang['Autologin_time'],
"L_AUTOLOGIN_TIME_EXPLAIN" => $lang['Autologin_time_explain'],
"L_COOKIE_SETTINGS" => $lang['Cookie_settings'],
"L_COOKIE_SETTINGS_EXPLAIN" => $lang['Cookie_settings_explain'],
"L_COOKIE_DOMAIN" => $lang['Cookie_domain'],
@@ -179,6 +208,16 @@ $template->assign_vars(array(
"L_MAX_POLL_OPTIONS" => $lang['Max_poll_options'],
"L_FLOOD_INTERVAL" => $lang['Flood_Interval'],
"L_FLOOD_INTERVAL_EXPLAIN" => $lang['Flood_Interval_explain'],
"L_SEARCH_FLOOD_INTERVAL" => $lang['Search_Flood_Interval'],
"L_SEARCH_FLOOD_INTERVAL_EXPLAIN" => $lang['Search_Flood_Interval_explain'],
'L_MAX_LOGIN_ATTEMPTS' => $lang['Max_login_attempts'],
'L_MAX_LOGIN_ATTEMPTS_EXPLAIN' => $lang['Max_login_attempts_explain'],
'L_LOGIN_RESET_TIME' => $lang['Login_reset_time'],
'L_LOGIN_RESET_TIME_EXPLAIN' => $lang['Login_reset_time_explain'],
'MAX_LOGIN_ATTEMPTS' => $new['max_login_attempts'],
'LOGIN_RESET_TIME' => $new['login_reset_time'],
"L_BOARD_EMAIL_FORM" => $lang['Board_email_form'],
"L_BOARD_EMAIL_FORM_EXPLAIN" => $lang['Board_email_form_explain'],
"L_TOPICS_PER_PAGE" => $lang['Topics_per_page'],
@@ -249,11 +288,14 @@ $template->assign_vars(array(
"ACTIVATION_ADMIN_CHECKED" => $activation_admin,
"CONFIRM_ENABLE" => $confirm_yes,
"CONFIRM_DISABLE" => $confirm_no,
"ACTIVATION_NONE_CHECKED" => $activation_none,
'ALLOW_AUTOLOGIN_YES' => $allow_autologin_yes,
'ALLOW_AUTOLOGIN_NO' => $allow_autologin_no,
'AUTOLOGIN_TIME' => (int) $new['max_autologin_time'],
"BOARD_EMAIL_FORM_ENABLE" => $board_email_form_yes,
"BOARD_EMAIL_FORM_DISABLE" => $board_email_form_no,
"MAX_POLL_OPTIONS" => $new['max_poll_options'],
"FLOOD_INTERVAL" => $new['flood_interval'],
"SEARCH_FLOOD_INTERVAL" => $new['search_flood_interval'],
"TOPICS_PER_PAGE" => $new['topics_per_page'],
"POSTS_PER_PAGE" => $new['posts_per_page'],
"HOT_TOPIC" => $new['hot_threshold'],

View File

@@ -499,9 +499,9 @@ function get_table_content_postgresql($table, $handler)
while($row = $db->sql_fetchrow($result))
{
unset($schema_vals);
unset($schema_fields);
unset($schema_insert);
$schema_vals = '';
$schema_fields = '';
$schema_insert = '';
//
// Build the SQL statement to recreate the data.
//
@@ -516,7 +516,7 @@ function get_table_content_postgresql($table, $handler)
}
elseif (eregi("date|timestamp", $aryType[$i]))
{
if ($empty($strVal))
if (empty($strVal))
{
$strQuote = "";
}
@@ -693,7 +693,7 @@ if( isset($HTTP_GET_VARS['perform']) || isset($HTTP_POST_VARS['perform']) )
include('./page_footer_admin.'.$phpEx);
}
$tables = array('auth_access', 'banlist', 'categories', 'config', 'disallow', 'forums', 'forum_prune', 'groups', 'posts', 'posts_text', 'privmsgs', 'privmsgs_text', 'ranks', 'search_results', 'search_wordlist', 'search_wordmatch', 'sessions', 'smilies', 'themes', 'themes_name', 'topics', 'topics_watch', 'user_group', 'users', 'vote_desc', 'vote_results', 'vote_voters', 'words');
$tables = array('auth_access', 'banlist', 'categories', 'config', 'disallow', 'forums', 'forum_prune', 'groups', 'posts', 'posts_text', 'privmsgs', 'privmsgs_text', 'ranks', 'search_results', 'search_wordlist', 'search_wordmatch', 'sessions', 'smilies', 'themes', 'themes_name', 'topics', 'topics_watch', 'user_group', 'users', 'vote_desc', 'vote_results', 'vote_voters', 'words', 'confirm', 'sessions_keys');
$additional_tables = (isset($HTTP_POST_VARS['additional_tables'])) ? $HTTP_POST_VARS['additional_tables'] : ( (isset($HTTP_GET_VARS['additional_tables'])) ? $HTTP_GET_VARS['additional_tables'] : "" );

View File

@@ -25,7 +25,7 @@ define('IN_PHPBB', 1);
if( !empty($setmodules) )
{
$filename = basename(__FILE__);
$module['Users']['Disallow'] = append_sid($filename);
$module['Users']['Disallow'] = $filename;
return;
}
@@ -45,7 +45,7 @@ if( isset($HTTP_POST_VARS['add_name']) )
if ($disallowed_user == '')
{
message_die(MESSAGE, $lang['Fields_empty']);
message_die(GENERAL_MESSAGE, $lang['Fields_empty']);
}
if( !validate_username($disallowed_user) )
{

View File

@@ -102,20 +102,23 @@ if( isset($HTTP_POST_VARS['submit']) )
{
if(isset($HTTP_POST_VARS['simpleauth']))
{
$simple_ary = $simple_auth_ary[$HTTP_POST_VARS['simpleauth']];
$simple_ary = $simple_auth_ary[intval($HTTP_POST_VARS['simpleauth'])];
for($i = 0; $i < count($simple_ary); $i++)
{
$sql .= ( ( $sql != '' ) ? ', ' : '' ) . $forum_auth_fields[$i] . ' = ' . $simple_ary[$i];
}
$sql = "UPDATE " . FORUMS_TABLE . " SET $sql WHERE forum_id = $forum_id";
if (is_array($simple_ary))
{
$sql = "UPDATE " . FORUMS_TABLE . " SET $sql WHERE forum_id = $forum_id";
}
}
else
{
for($i = 0; $i < count($forum_auth_fields); $i++)
{
$value = $HTTP_POST_VARS[$forum_auth_fields[$i]];
$value = intval($HTTP_POST_VARS[$forum_auth_fields[$i]]);
if ( $forum_auth_fields[$i] == 'auth_vote' )
{

View File

@@ -39,8 +39,8 @@ include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
$forum_auth_ary = array(
"auth_view" => AUTH_ALL,
"auth_read" => AUTH_ALL,
"auth_post" => AUTH_ALL,
"auth_reply" => AUTH_ALL,
"auth_post" => AUTH_REG,
"auth_reply" => AUTH_REG,
"auth_edit" => AUTH_REG,
"auth_delete" => AUTH_REG,
"auth_sticky" => AUTH_MOD,
@@ -55,6 +55,7 @@ $forum_auth_ary = array(
if( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
{
$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
$mode = htmlspecialchars($mode);
}
else
{
@@ -232,6 +233,7 @@ if( isset($HTTP_POST_VARS['addforum']) || isset($HTTP_POST_VARS['addcategory'])
if( $mode == "addforum" )
{
list($cat_id) = each($HTTP_POST_VARS['addforum']);
$cat_id = intval($cat_id);
//
// stripslashes needs to be run on this because slashes are added when the forum name is posted
//
@@ -624,7 +626,7 @@ if( !empty($mode) )
$vote_ids = '';
do
{
$vote_ids = (($vote_ids != '') ? ', ' : '') . $row['vote_id'];
$vote_ids .= (($vote_ids != '') ? ', ' : '') . $row['vote_id'];
}
while ($row = $db->sql_fetchrow($result));
@@ -1023,4 +1025,4 @@ $template->pparse("body");
include('./page_footer_admin.'.$phpEx);
?>
?>

View File

@@ -49,6 +49,7 @@ else
if ( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
{
$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
$mode = htmlspecialchars($mode);
}
else
{
@@ -103,21 +104,26 @@ if ( isset($HTTP_POST_VARS['edit']) || isset($HTTP_POST_VARS['new']) )
//
// Ok, now we know everything about them, let's show the page.
//
$sql = "SELECT user_id, username
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "
ORDER BY username";
if ( !($result = $db->sql_query($sql)) )
if ($group_info['group_moderator'] != '')
{
message_die(GENERAL_ERROR, 'Could not obtain user info for moderator list', '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
if ( $row['user_id'] == $group_info['group_moderator'] )
$sql = "SELECT user_id, username
FROM " . USERS_TABLE . "
WHERE user_id = " . $group_info['group_moderator'];
if ( !($result = $db->sql_query($sql)) )
{
$group_moderator = $row['username'];
message_die(GENERAL_ERROR, 'Could not obtain user info for moderator list', '', __LINE__, __FILE__, $sql);
}
if ( !($row = $db->sql_fetchrow($result)) )
{
message_die(GENERAL_ERROR, 'Could not obtain user info for moderator list', '', __LINE__, __FILE__, $sql);
}
$group_moderator = $row['username'];
}
else
{
$group_moderator = '';
}
$group_open = ( $group_info['group_type'] == GROUP_OPEN ) ? ' checked="checked"' : '';
@@ -249,7 +255,7 @@ else if ( isset($HTTP_POST_VARS['group_update']) )
else
{
$group_type = isset($HTTP_POST_VARS['group_type']) ? intval($HTTP_POST_VARS['group_type']) : GROUP_OPEN;
$group_name = isset($HTTP_POST_VARS['group_name']) ? trim($HTTP_POST_VARS['group_name']) : '';
$group_name = isset($HTTP_POST_VARS['group_name']) ? htmlspecialchars(trim($HTTP_POST_VARS['group_name'])) : '';
$group_description = isset($HTTP_POST_VARS['group_description']) ? trim($HTTP_POST_VARS['group_description']) : '';
$group_moderator = isset($HTTP_POST_VARS['username']) ? $HTTP_POST_VARS['username'] : '';
$delete_old_moderator = isset($HTTP_POST_VARS['delete_old_moderator']) ? true : false;

View File

@@ -19,25 +19,35 @@
*
***************************************************************************/
define('IN_PHPBB', 1);
if( !empty($setmodules) )
{
$file = basename(__FILE__);
$module['Users']['Ranks'] = "$file";
$module['Users']['Ranks'] = $file;
return;
}
define('IN_PHPBB', 1);
//
// Let's set the root dir for phpBB
//
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
$cancel = ( isset($HTTP_POST_VARS['cancel']) || isset($_POST['cancel']) ) ? true : false;
$no_page_header = $cancel;
require('./pagestart.' . $phpEx);
if ($cancel)
{
redirect('admin/' . append_sid("admin_ranks.$phpEx", true));
}
if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
$mode = ($HTTP_GET_VARS['mode']) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
$mode = (isset($HTTP_GET_VARS['mode'])) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
$mode = htmlspecialchars($mode);
}
else
{
@@ -58,6 +68,8 @@ else
}
}
// Restrict mode input to valid options
$mode = ( in_array($mode, array('add', 'edit', 'save', 'delete')) ) ? $mode : '';
if( $mode != "" )
{
@@ -212,8 +224,10 @@ if( $mode != "" )
{
$rank_id = 0;
}
$confirm = isset($HTTP_POST_VARS['confirm']);
if( $rank_id )
if( $rank_id && $confirm )
{
$sql = "DELETE FROM " . RANKS_TABLE . "
WHERE rank_id = $rank_id";
@@ -237,135 +251,95 @@ if( $mode != "" )
message_die(GENERAL_MESSAGE, $message);
}
elseif( $rank_id && !$confirm)
{
// Present the confirmation screen to the user
$template->set_filenames(array(
'body' => 'admin/confirm_body.tpl')
);
$hidden_fields = '<input type="hidden" name="mode" value="delete" /><input type="hidden" name="id" value="' . $rank_id . '" />';
$template->assign_vars(array(
'MESSAGE_TITLE' => $lang['Confirm'],
'MESSAGE_TEXT' => $lang['Confirm_delete_rank'],
'L_YES' => $lang['Yes'],
'L_NO' => $lang['No'],
'S_CONFIRM_ACTION' => append_sid("admin_ranks.$phpEx"),
'S_HIDDEN_FIELDS' => $hidden_fields)
);
}
else
{
message_die(GENERAL_MESSAGE, $lang['Must_select_rank']);
}
}
else
{
//
// They didn't feel like giving us any information. Oh, too bad, we'll just display the
// list then...
//
$template->set_filenames(array(
"body" => "admin/ranks_list_body.tpl")
);
$sql = "SELECT * FROM " . RANKS_TABLE . "
ORDER BY rank_min, rank_title";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql);
}
$rank_rows = $db->sql_fetchrowset($result);
$rank_count = count($rank_rows);
$template->assign_vars(array(
"L_RANKS_TITLE" => $lang['Ranks_title'],
"L_RANKS_TEXT" => $lang['Ranks_explain'],
"L_RANK" => $lang['Rank_title'],
"L_RANK_MINIMUM" => $lang['Rank_minimum'],
"L_SPECIAL_RANK" => $lang['Special_rank'],
"L_EDIT" => $lang['Edit'],
"L_DELETE" => $lang['Delete'],
"L_ADD_RANK" => $lang['Add_new_rank'],
"L_ACTION" => $lang['Action'],
"S_RANKS_ACTION" => append_sid("admin_ranks.$phpEx"))
);
for( $i = 0; $i < $rank_count; $i++)
{
$rank = $rank_rows[$i]['rank_title'];
$special_rank = $rank_rows[$i]['rank_special'];
$rank_id = $rank_rows[$i]['rank_id'];
$rank_min = $rank_rows[$i]['rank_min'];
if($special_rank)
{
$rank_min = $rank_max = "-";
}
$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
$template->assign_block_vars("ranks", array(
"ROW_COLOR" => "#" . $row_color,
"ROW_CLASS" => $row_class,
"RANK" => $rank,
"RANK_MIN" => $rank_min,
$template->pparse("body");
"SPECIAL_RANK" => ( $special_rank == 1 ) ? $lang['Yes'] : $lang['No'],
"U_RANK_EDIT" => append_sid("admin_ranks.$phpEx?mode=edit&amp;id=$rank_id"),
"U_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete&amp;id=$rank_id"))
);
}
}
include('./page_footer_admin.'.$phpEx);
}
else
//
// Show the default page
//
$template->set_filenames(array(
"body" => "admin/ranks_list_body.tpl")
);
$sql = "SELECT * FROM " . RANKS_TABLE . "
ORDER BY rank_min ASC, rank_special ASC";
if( !$result = $db->sql_query($sql) )
{
//
// Show the default page
//
$template->set_filenames(array(
"body" => "admin/ranks_list_body.tpl")
);
message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql);
}
$rank_count = $db->sql_numrows($result);
$rank_rows = $db->sql_fetchrowset($result);
$template->assign_vars(array(
"L_RANKS_TITLE" => $lang['Ranks_title'],
"L_RANKS_TEXT" => $lang['Ranks_explain'],
"L_RANK" => $lang['Rank_title'],
"L_RANK_MINIMUM" => $lang['Rank_minimum'],
"L_SPECIAL_RANK" => $lang['Rank_special'],
"L_EDIT" => $lang['Edit'],
"L_DELETE" => $lang['Delete'],
"L_ADD_RANK" => $lang['Add_new_rank'],
"L_ACTION" => $lang['Action'],
$sql = "SELECT * FROM " . RANKS_TABLE . "
ORDER BY rank_min ASC, rank_special ASC";
if( !$result = $db->sql_query($sql) )
"S_RANKS_ACTION" => append_sid("admin_ranks.$phpEx"))
);
for($i = 0; $i < $rank_count; $i++)
{
$rank = $rank_rows[$i]['rank_title'];
$special_rank = $rank_rows[$i]['rank_special'];
$rank_id = $rank_rows[$i]['rank_id'];
$rank_min = $rank_rows[$i]['rank_min'];
if( $special_rank == 1 )
{
message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql);
$rank_min = $rank_max = "-";
}
$rank_count = $db->sql_numrows($result);
$rank_rows = $db->sql_fetchrowset($result);
$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
$rank_is_special = ( $special_rank ) ? $lang['Yes'] : $lang['No'];
$template->assign_vars(array(
"L_RANKS_TITLE" => $lang['Ranks_title'],
"L_RANKS_TEXT" => $lang['Ranks_explain'],
"L_RANK" => $lang['Rank_title'],
"L_RANK_MINIMUM" => $lang['Rank_minimum'],
"L_SPECIAL_RANK" => $lang['Rank_special'],
"L_EDIT" => $lang['Edit'],
"L_DELETE" => $lang['Delete'],
"L_ADD_RANK" => $lang['Add_new_rank'],
"L_ACTION" => $lang['Action'],
"S_RANKS_ACTION" => append_sid("admin_ranks.$phpEx"))
$template->assign_block_vars("ranks", array(
"ROW_COLOR" => "#" . $row_color,
"ROW_CLASS" => $row_class,
"RANK" => $rank,
"SPECIAL_RANK" => $rank_is_special,
"RANK_MIN" => $rank_min,
"U_RANK_EDIT" => append_sid("admin_ranks.$phpEx?mode=edit&amp;id=$rank_id"),
"U_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete&amp;id=$rank_id"))
);
for($i = 0; $i < $rank_count; $i++)
{
$rank = $rank_rows[$i]['rank_title'];
$special_rank = $rank_rows[$i]['rank_special'];
$rank_id = $rank_rows[$i]['rank_id'];
$rank_min = $rank_rows[$i]['rank_min'];
if( $special_rank == 1 )
{
$rank_min = $rank_max = "-";
}
$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
$rank_is_special = ( $special_rank ) ? $lang['Yes'] : $lang['No'];
$template->assign_block_vars("ranks", array(
"ROW_COLOR" => "#" . $row_color,
"ROW_CLASS" => $row_class,
"RANK" => $rank,
"SPECIAL_RANK" => $rank_is_special,
"RANK_MIN" => $rank_min,
"U_RANK_EDIT" => append_sid("admin_ranks.$phpEx?mode=edit&amp;id=$rank_id"),
"U_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete&amp;id=$rank_id"))
);
}
}
$template->pparse("body");

View File

@@ -36,27 +36,34 @@ if( !empty($setmodules) )
return;
}
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
$cancel = ( isset($HTTP_POST_VARS['cancel']) || isset($_POST['cancel']) ) ? true : false;
$no_page_header = $cancel;
//
// Load default header
//
if( isset($HTTP_GET_VARS['export_pack']) )
if ((!empty($HTTP_GET_VARS['export_pack']) && $HTTP_GET_VARS['export_pack'] == 'send') || (!empty($_GET['export_pack']) && $_GET['export_pack'] == 'send'))
{
if ( $HTTP_GET_VARS['export_pack'] == "send" )
{
$no_page_header = true;
}
$no_page_header = true;
}
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);
if ($cancel)
{
redirect('admin/' . append_sid("admin_smilies.$phpEx", true));
}
//
// Check to see what mode we should operate in.
//
if( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
{
$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
$mode = htmlspecialchars($mode);
}
else
{
@@ -313,18 +320,45 @@ else if ( $mode != "" )
//
$smiley_id = ( !empty($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id'];
$smiley_id = intval($smiley_id);
$sql = "DELETE FROM " . SMILIES_TABLE . "
WHERE smilies_id = " . $smiley_id;
$result = $db->sql_query($sql);
if( !$result )
$confirm = isset($HTTP_POST_VARS['confirm']);
if( $confirm )
{
message_die(GENERAL_ERROR, "Couldn't delete smiley", "", __LINE__, __FILE__, $sql);
$sql = "DELETE FROM " . SMILIES_TABLE . "
WHERE smilies_id = " . $smiley_id;
$result = $db->sql_query($sql);
if( !$result )
{
message_die(GENERAL_ERROR, "Couldn't delete smiley", "", __LINE__, __FILE__, $sql);
}
$message = $lang['smiley_del_success'] . "<br /><br />" . sprintf($lang['Click_return_smileadmin'], "<a href=\"" . append_sid("admin_smilies.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
message_die(GENERAL_MESSAGE, $message);
}
else
{
// Present the confirmation screen to the user
$template->set_filenames(array(
'body' => 'admin/confirm_body.tpl')
);
$message = $lang['smiley_del_success'] . "<br /><br />" . sprintf($lang['Click_return_smileadmin'], "<a href=\"" . append_sid("admin_smilies.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
$hidden_fields = '<input type="hidden" name="mode" value="delete" /><input type="hidden" name="id" value="' . $smiley_id . '" />';
message_die(GENERAL_MESSAGE, $message);
$template->assign_vars(array(
'MESSAGE_TITLE' => $lang['Confirm'],
'MESSAGE_TEXT' => $lang['Confirm_delete_smiley'],
'L_YES' => $lang['Yes'],
'L_NO' => $lang['No'],
'S_CONFIRM_ACTION' => append_sid("admin_smilies.$phpEx"),
'S_HIDDEN_FIELDS' => $hidden_fields)
);
$template->pparse('body');
}
break;
case 'edit':
@@ -333,6 +367,7 @@ else if ( $mode != "" )
//
$smiley_id = ( !empty($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id'];
$smiley_id = intval($smiley_id);
$sql = "SELECT *
FROM " . SMILIES_TABLE . "
@@ -399,15 +434,18 @@ else if ( $mode != "" )
// Get the submitted data, being careful to ensure that we only
// accept the data we are looking for.
//
$smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? trim($HTTP_POST_VARS['smile_code']) : trim($HTTP_GET_VARS['smile_code']);
$smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? trim($HTTP_POST_VARS['smile_url']) : trim($HTTP_GET_VARS['smile_url']);
$smile_emotion = ( isset($HTTP_POST_VARS['smile_emotion']) ) ? trim($HTTP_POST_VARS['smile_emotion']) : trim($HTTP_GET_VARS['smile_emotion']);
$smile_id = ( isset($HTTP_POST_VARS['smile_id']) ) ? intval($HTTP_POST_VARS['smile_id']) : intval($HTTP_GET_VARS['smile_id']);
$smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? trim($HTTP_POST_VARS['smile_code']) : '';
$smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? trim($HTTP_POST_VARS['smile_url']) : '';
$smile_url = phpbb_ltrim(basename($smile_url), "'");
$smile_emotion = ( isset($HTTP_POST_VARS['smile_emotion']) ) ? htmlspecialchars(trim($HTTP_POST_VARS['smile_emotion'])) : '';
$smile_id = ( isset($HTTP_POST_VARS['smile_id']) ) ? intval($HTTP_POST_VARS['smile_id']) : 0;
$smile_code = trim($smile_code);
$smile_url = trim($smile_url);
// If no code was entered complain ...
if ($smile_code == '' || $smile_url == '')
{
message_die(MESSAGE, $lang['Fields_empty']);
message_die(GENERAL_MESSAGE, $lang['Fields_empty']);
}
//
@@ -441,14 +479,17 @@ else if ( $mode != "" )
// Get the submitted data being careful to ensure the the data
// we recieve and process is only the data we are looking for.
//
$smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? $HTTP_POST_VARS['smile_code'] : $HTTP_GET_VARS['smile_code'];
$smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? $HTTP_POST_VARS['smile_url'] : $HTTP_GET_VARS['smile_url'];
$smile_emotion = ( isset($HTTP_POST_VARS['smile_emotion']) ) ? $HTTP_POST_VARS['smile_emotion'] : $HTTP_GET_VARS['smile_emotion'];
$smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? $HTTP_POST_VARS['smile_code'] : '';
$smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? $HTTP_POST_VARS['smile_url'] : '';
$smile_url = phpbb_ltrim(basename($smile_url), "'");
$smile_emotion = ( isset($HTTP_POST_VARS['smile_emotion']) ) ? htmlspecialchars(trim($HTTP_POST_VARS['smile_emotion'])) : '';
$smile_code = trim($smile_code);
$smile_url = trim($smile_url);
// If no code was entered complain ...
if ($smile_code == '' || $smile_url == '')
{
message_die(MESSAGE, $lang['Fields_empty']);
message_die(GENERAL_MESSAGE, $lang['Fields_empty']);
}
//
@@ -550,4 +591,4 @@ else
//
include('./page_footer_admin.'.$phpEx);
?>
?>

View File

@@ -27,7 +27,7 @@ if( !empty($setmodules) )
$file = basename(__FILE__);
$module['Styles']['Add_new'] = "$file?mode=addnew";
$module['Styles']['Create_new'] = "$file?mode=create";
$module['Styles']['Manage'] = "$file";
$module['Styles']['Manage'] = $file;
$module['Styles']['Export'] = "$file?mode=export";
return;
}
@@ -39,17 +39,18 @@ if( !empty($setmodules) )
// Check if the user has cancled a confirmation message.
//
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
$confirm = (isset($HTTP_POST_VARS['confirm']) || isset($_POST['confirm'])) ? TRUE : FALSE;
$cancel = (isset($HTTP_POST_VARS['cancel']) || isset($_POST['cancel'])) ? TRUE : FALSE;
$no_page_header = (!empty($HTTP_POST_VARS['send_file']) || !empty($_POST['send_file']) || $cancel) ? TRUE : FALSE;
require('./pagestart.' . $phpEx);
$confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : FALSE;
$cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : FALSE;
if (empty($HTTP_POST_VARS['send_file']))
{
$no_page_header = ( $cancel ) ? TRUE : FALSE;
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);
}
if ($cancel)
{
redirect('admin/' . append_sid("admin_styles.$phpEx", true));
@@ -58,6 +59,7 @@ if ($cancel)
if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
$mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
$mode = htmlspecialchars($mode);
}
else
{
@@ -73,7 +75,7 @@ switch( $mode )
if( isset($install_to) )
{
include($phpbb_root_path. "templates/" . $install_to . "/theme_info.cfg");
include($phpbb_root_path. "templates/" . basename($install_to) . "/theme_info.cfg");
$template_name = $$install_to;
$found = FALSE;
@@ -490,7 +492,7 @@ switch( $mode )
$themes_title = $lang['Edit_theme'];
$themes_explain = $lang['Edit_theme_explain'];
$style_id = $HTTP_GET_VARS['style_id'];
$style_id = intval($HTTP_GET_VARS['style_id']);
$selected_names = array();
$selected_values = array();
@@ -580,6 +582,7 @@ switch( $mode )
"L_SIMPLE_NAME" => $lang['Simple_name'],
"L_VALUE" => $lang['Value'],
"L_STYLESHEET" => $lang['Stylesheet'],
"L_STYLESHEET_EXPLAIN" => $lang['Stylesheet_explain'],
"L_BACKGROUND_IMAGE" => $lang['Background_image'],
"L_BACKGROUND_COLOR" => $lang['Background_color'],
"L_BODY_TEXT_COLOR" => $lang['Text_color'],
@@ -705,7 +708,7 @@ switch( $mode )
$sql = "SELECT *
FROM " . THEMES_TABLE . "
WHERE template_name = '$template_name'";
WHERE template_name = '" . str_replace("\'", "''", $template_name) . "'";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Could not get theme data for selected template", "", __LINE__, __FILE__, $sql);
@@ -737,7 +740,7 @@ switch( $mode )
@umask(0111);
$fp = @fopen($phpbb_root_path . 'templates/' . $template_name . '/theme_info.cfg', 'w');
$fp = @fopen($phpbb_root_path . 'templates/' . basename($template_name) . '/theme_info.cfg', 'w');
if( !$fp )
{
@@ -833,7 +836,7 @@ switch( $mode )
// Set template files
//
$template->set_filenames(array(
"confirm" => "confirm_body.tpl")
"confirm" => "admin/confirm_body.tpl")
);
$template->assign_vars(array(

View File

@@ -56,6 +56,8 @@ while( list($var, $param) = @each($params) )
$user_id = intval($user_id);
$group_id = intval($group_id);
$adv = intval($adv);
$mode = htmlspecialchars($mode);
//
// Start program - define vars
@@ -229,11 +231,46 @@ if ( isset($HTTP_POST_VARS['submit']) && ( ( $mode == 'user' && $user_id ) || (
else
{
$change_mod_list = ( isset($HTTP_POST_VARS['moderator']) ) ? $HTTP_POST_VARS['moderator'] : false;
$change_mod_list = ( isset($HTTP_POST_VARS['moderator']) ) ? $HTTP_POST_VARS['moderator'] : array();
if ( empty($adv) )
{
$change_acl_list = ( isset($HTTP_POST_VARS['private']) ) ? $HTTP_POST_VARS['private'] : false;
$sql = "SELECT f.*
FROM " . FORUMS_TABLE . " f, " . CATEGORIES_TABLE . " c
WHERE f.cat_id = c.cat_id
ORDER BY c.cat_order, f.forum_order ASC";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't obtain forum information", "", __LINE__, __FILE__, $sql);
}
$forum_access = $forum_auth_level_fields = array();
while( $row = $db->sql_fetchrow($result) )
{
$forum_access[] = $row;
}
$db->sql_freeresult($result);
for($i = 0; $i < count($forum_access); $i++)
{
$forum_id = $forum_access[$i]['forum_id'];
for($j = 0; $j < count($forum_auth_fields); $j++)
{
$forum_auth_level_fields[$forum_id][$forum_auth_fields[$j]] = $forum_access[$i][$forum_auth_fields[$j]] == AUTH_ACL;
}
}
while( list($forum_id, $value) = @each($HTTP_POST_VARS['private']) )
{
while( list($auth_field, $exists) = @each($forum_auth_level_fields[$forum_id]) )
{
if ($exists)
{
$change_acl_list[$forum_id][$auth_field] = $value;
}
}
}
}
else
{
@@ -249,9 +286,10 @@ if ( isset($HTTP_POST_VARS['submit']) && ( ( $mode == 'user' && $user_id ) || (
}
}
$sql = "SELECT *
FROM " . FORUMS_TABLE . " f
ORDER BY forum_order";
$sql = 'SELECT f.*
FROM ' . FORUMS_TABLE . ' f, ' . CATEGORIES_TABLE . ' c
WHERE f.cat_id = c.cat_id
ORDER BY c.cat_order, f.forum_order';
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't obtain forum information", "", __LINE__, __FILE__, $sql);
@@ -286,11 +324,11 @@ if ( isset($HTTP_POST_VARS['submit']) && ( ( $mode == 'user' && $user_id ) || (
$forum_id = $forum_access[$i]['forum_id'];
if (
( isset($auth_access[$forum_id]['auth_mod']) && $change_mod_list[$forum_id]['auth_mod'] != $auth_access[$forum_id]['auth_mod'] ) ||
( !isset($auth_access[$forum_id]['auth_mod']) && !empty($change_mod_list[$forum_id]['auth_mod']) )
( isset($auth_access[$forum_id]['auth_mod']) && $change_mod_list[$forum_id] != $auth_access[$forum_id]['auth_mod'] ) ||
( !isset($auth_access[$forum_id]['auth_mod']) && !empty($change_mod_list[$forum_id]) )
)
{
$update_mod_status[$forum_id] = $change_mod_list[$forum_id]['auth_mod'];
$update_mod_status[$forum_id] = $change_mod_list[$forum_id];
if ( !$update_mod_status[$forum_id] )
{
@@ -412,6 +450,7 @@ if ( isset($HTTP_POST_VARS['submit']) && ( ( $mode == 'user' && $user_id ) || (
FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u
WHERE ug.group_id = aa.group_id
AND u.user_id = ug.user_id
AND ug.user_pending = 0
AND u.user_level NOT IN (" . MOD . ", " . ADMIN . ")
GROUP BY u.user_id
HAVING SUM(aa.auth_mod) > 0";
@@ -506,6 +545,48 @@ if ( isset($HTTP_POST_VARS['submit']) && ( ( $mode == 'user' && $user_id ) || (
}
}
$sql = 'SELECT user_id FROM ' . USER_GROUP_TABLE . "
WHERE group_id = $group_id";
$result = $db->sql_query($sql);
$group_user = array();
while ($row = $db->sql_fetchrow($result))
{
$group_user[$row['user_id']] = $row['user_id'];
}
$db->sql_freeresult($result);
$sql = "SELECT ug.user_id, COUNT(auth_mod) AS is_auth_mod
FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug
WHERE ug.user_id IN (" . implode(', ', $group_user) . ")
AND aa.group_id = ug.group_id
AND aa.auth_mod = 1
GROUP BY ug.user_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain moderator status', '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
if ($row['is_auth_mod'])
{
unset($group_user[$row['user_id']]);
}
}
$db->sql_freeresult($result);
if (sizeof($group_user))
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_level = " . USER . "
WHERE user_id IN (" . implode(', ', $group_user) . ") AND user_level = " . MOD;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
}
}
message_die(GENERAL_MESSAGE, $message);
}
}
@@ -524,9 +605,10 @@ else if ( ( $mode == 'user' && ( isset($HTTP_POST_VARS['username']) || $user_id
//
// Front end
//
$sql = "SELECT *
FROM " . FORUMS_TABLE . " f
ORDER BY forum_order";
$sql = "SELECT f.*
FROM " . FORUMS_TABLE . " f, " . CATEGORIES_TABLE . " c
WHERE f.cat_id = c.cat_id
ORDER BY c.cat_order, f.forum_order ASC";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't obtain forum information", "", __LINE__, __FILE__, $sql);
@@ -559,7 +641,7 @@ else if ( ( $mode == 'user' && ( isset($HTTP_POST_VARS['username']) || $user_id
}
}
$sql = "SELECT u.user_id, u.username, u.user_level, g.group_id, g.group_name, g.group_single_user FROM " . USERS_TABLE . " u, " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ";
$sql = "SELECT u.user_id, u.username, u.user_level, g.group_id, g.group_name, g.group_single_user, ug.user_pending FROM " . USERS_TABLE . " u, " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ";
$sql .= ( $mode == 'user' ) ? "u.user_id = $user_id AND ug.user_id = u.user_id AND g.group_id = ug.group_id" : "g.group_id = $group_id AND ug.group_id = g.group_id AND u.user_id = ug.user_id";
if ( !($result = $db->sql_query($sql)) )
{
@@ -762,7 +844,7 @@ else if ( ( $mode == 'user' && ( isset($HTTP_POST_VARS['username']) || $user_id
$i++;
}
@reset($auth_user);
// @reset($auth_user);
if ( $mode == 'user' )
{
@@ -785,20 +867,26 @@ else if ( ( $mode == 'user' && ( isset($HTTP_POST_VARS['username']) || $user_id
}
}
$t_usergroup_list = $t_pending_list = '';
if( count($name) )
{
$t_usergroup_list = '';
for($i = 0; $i < count($ug_info); $i++)
{
$ug = ( $mode == 'user' ) ? 'group&amp;' . POST_GROUPS_URL : 'user&amp;' . POST_USERS_URL;
$t_usergroup_list .= ( ( $t_usergroup_list != '' ) ? ', ' : '' ) . '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$ug=" . $id[$i]) . '">' . $name[$i] . '</a>';
if (!$ug_info[$i]['user_pending'])
{
$t_usergroup_list .= ( ( $t_usergroup_list != '' ) ? ', ' : '' ) . '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$ug=" . $id[$i]) . '">' . $name[$i] . '</a>';
}
else
{
$t_pending_list .= ( ( $t_pending_list != '' ) ? ', ' : '' ) . '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$ug=" . $id[$i]) . '">' . $name[$i] . '</a>';
}
}
}
else
{
$t_usergroup_list = $lang['None'];
}
$t_usergroup_list = ($t_usergroup_list == '') ? $lang['None'] : $t_usergroup_list;
$t_pending_list = ($t_pending_list == '') ? $lang['None'] : $t_pending_list;
$s_column_span = 2; // Two columns always present
if( !$adv )
@@ -855,7 +943,7 @@ else if ( ( $mode == 'user' && ( isset($HTTP_POST_VARS['username']) || $user_id
$template->assign_vars(array(
'USERNAME' => $t_groupname,
'GROUP_MEMBERSHIP' => $lang['Usergroup_members'] . ' : ' . $t_usergroup_list)
'GROUP_MEMBERSHIP' => $lang['Usergroup_members'] . ' : ' . $t_usergroup_list . '<br />' . $lang['Pending_members'] . ' : ' . $t_pending_list)
);
}

View File

@@ -155,7 +155,7 @@ if ( isset($HTTP_POST_VARS['submit']) )
// contained in the annotated php manual at php.com (ereg
// section)
//
if (preg_match('#^(([a-z0-9&.-_+])|(\*))+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+$#is', trim($email_list_temp[$i])))
if (preg_match('/^(([a-z0-9&\'\.\-_\+])|(\*))+@(([a-z0-9\-])|(\*))+\.([a-z0-9\-]+\.)*?[a-z]+$/is', trim($email_list_temp[$i])))
{
$email_list[] = trim($email_list_temp[$i]);
}
@@ -277,7 +277,7 @@ if ( isset($HTTP_POST_VARS['submit']) )
{
if ( $user_list[$i] != -1 )
{
$where_sql .= ( ( $where_sql != '' ) ? ', ' : '' ) . $user_list[$i];
$where_sql .= ( ( $where_sql != '' ) ? ', ' : '' ) . intval($user_list[$i]);
}
}
}
@@ -290,7 +290,7 @@ if ( isset($HTTP_POST_VARS['submit']) )
{
if ( $ip_list[$i] != -1 )
{
$where_sql .= ( ( $where_sql != '' ) ? ', ' : '' ) . $ip_list[$i];
$where_sql .= ( ( $where_sql != '' ) ? ', ' : '' ) . str_replace("\'", "''", $ip_list[$i]);
}
}
}
@@ -303,7 +303,7 @@ if ( isset($HTTP_POST_VARS['submit']) )
{
if ( $email_list[$i] != -1 )
{
$where_sql .= ( ( $where_sql != '' ) ? ', ' : '' ) . $email_list[$i];
$where_sql .= ( ( $where_sql != '' ) ? ', ' : '' ) . str_replace("\'", "''", $email_list[$i]);
}
}
}

View File

@@ -47,6 +47,7 @@ $html_entities_replace = array('&lt;', '&gt;');
if( isset( $HTTP_POST_VARS['mode'] ) || isset( $HTTP_GET_VARS['mode'] ) )
{
$mode = ( isset( $HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
$mode = htmlspecialchars($mode);
}
else
{
@@ -70,7 +71,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
message_die(GENERAL_MESSAGE, $lang['No_user_id_specified'] );
}
if( $HTTP_POST_VARS['deleteuser'] )
if( $HTTP_POST_VARS['deleteuser'] && ( $userdata['user_id'] != $user_id ) )
{
$sql = "SELECT g.group_id
FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
@@ -85,7 +86,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
$row = $db->sql_fetchrow($result);
$sql = "UPDATE " . POSTS_TABLE . "
SET poster_id = " . DELETED . ", post_username = '$username'
SET poster_id = " . DELETED . ", post_username = '" . str_replace("\\'", "''", addslashes($this_userdata['username'])) . "'
WHERE poster_id = $user_id";
if( !$db->sql_query($sql) )
{
@@ -108,30 +109,12 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
message_die(GENERAL_ERROR, 'Could not update votes for this user', '', __LINE__, __FILE__, $sql);
}
$sql = "SELECT group_id
FROM " . GROUPS_TABLE . "
$sql = "UPDATE " . GROUPS_TABLE . "
SET group_moderator = " . $userdata['user_id'] . "
WHERE group_moderator = $user_id";
if( !($result = $db->sql_query($sql)) )
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not select groups where user was moderator', '', __LINE__, __FILE__, $sql);
}
while ( $row_group = $db->sql_fetchrow($result) )
{
$group_moderator[] = $row_group['group_id'];
}
if ( count($group_moderator) )
{
$update_moderator_id = implode(', ', $group_moderator);
$sql = "UPDATE " . GROUPS_TABLE . "
SET group_moderator = " . $userdata['user_id'] . "
WHERE group_moderator IN ($update_moderator_id)";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql);
}
message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . USERS_TABLE . "
@@ -176,6 +159,20 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
message_die(GENERAL_ERROR, 'Could not delete user from banlist table', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . SESSIONS_TABLE . "
WHERE session_user_id = $user_id";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete sessions for this user', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . SESSIONS_KEYS_TABLE . "
WHERE user_id = $user_id";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete auto-login keys for this user', '', __LINE__, __FILE__, $sql);
}
$sql = "SELECT privmsgs_id
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_from_userid = $user_id
@@ -216,7 +213,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
message_die(GENERAL_MESSAGE, $message);
}
$username = ( !empty($HTTP_POST_VARS['username']) ) ? trim(strip_tags(htmlspecialchars($HTTP_POST_VARS['username']))) : '';
$username = ( !empty($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
$email = ( !empty($HTTP_POST_VARS['email']) ) ? trim(strip_tags(htmlspecialchars( $HTTP_POST_VARS['email'] ) )) : '';
$password = ( !empty($HTTP_POST_VARS['password']) ) ? trim(strip_tags(htmlspecialchars( $HTTP_POST_VARS['password'] ) )) : '';
@@ -246,13 +243,13 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
$allowbbcode = ( isset( $HTTP_POST_VARS['allowbbcode']) ) ? intval( $HTTP_POST_VARS['allowbbcode'] ) : $board_config['allow_bbcode'];
$allowsmilies = ( isset( $HTTP_POST_VARS['allowsmilies']) ) ? intval( $HTTP_POST_VARS['allowsmilies'] ) : $board_config['allow_smilies'];
$user_style = ( $HTTP_POST_VARS['style'] ) ? intval( $HTTP_POST_VARS['style'] ) : $board_config['default_style'];
$user_style = ( isset( $HTTP_POST_VARS['style'] ) ) ? intval( $HTTP_POST_VARS['style'] ) : $board_config['default_style'];
$user_lang = ( $HTTP_POST_VARS['language'] ) ? $HTTP_POST_VARS['language'] : $board_config['default_lang'];
$user_timezone = ( isset( $HTTP_POST_VARS['timezone']) ) ? doubleval( $HTTP_POST_VARS['timezone'] ) : $board_config['board_timezone'];
$user_template = ( $HTTP_POST_VARS['template'] ) ? $HTTP_POST_VARS['template'] : $board_config['board_template'];
$user_dateformat = ( $HTTP_POST_VARS['dateformat'] ) ? trim( $HTTP_POST_VARS['dateformat'] ) : $board_config['default_dateformat'];
$user_avatar_local = ( isset( $HTTP_POST_VARS['avatarselect'] ) && !empty($HTTP_POST_VARS['submitavatar'] ) && $board_config['allow_avatar_local'] ) ? $HTTP_POST_VARS['avatarselect'] : ( ( isset( $HTTP_POST_VARS['avatarlocal'] ) ) ? $HTTP_POST_VARS['avatarlocal'] : '' );
$user_avatar_category = ( isset($HTTP_POST_VARS['avatarcatname']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarcatname']) : '' ;
$user_avatar_remoteurl = ( !empty($HTTP_POST_VARS['avatarremoteurl']) ) ? trim( $HTTP_POST_VARS['avatarremoteurl'] ) : '';
$user_avatar_url = ( !empty($HTTP_POST_VARS['avatarurl']) ) ? trim( $HTTP_POST_VARS['avatarurl'] ) : '';
@@ -292,7 +289,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
if ( !isset($HTTP_POST_VARS['cancelavatar']))
{
$user_avatar = $user_avatar_local;
$user_avatar = $user_avatar_category . '/' . $user_avatar_local;
$user_avatar_type = USER_AVATAR_GALLERY;
}
}
@@ -316,7 +313,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
}
else if ( strtolower(str_replace("\'", "''", $username)) == strtolower($userdata['username']) )
else if ( strtolower(str_replace("\\'", "''", $username)) == strtolower($userdata['username']) )
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Username_taken'];
@@ -325,7 +322,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
if (!$error)
{
$username_sql = "username = '" . str_replace("\'", "''", $username) . "', ";
$username_sql = "username = '" . str_replace("\\'", "''", $username) . "', ";
$rename_user = $username; // Used for renaming usergroup
}
}
@@ -388,9 +385,9 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
{
if( $this_userdata['user_avatar_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_avatar'] != "" )
{
if( @file_exists(@phpbb_realpath("./" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar'])) )
if( @file_exists(@phpbb_realpath('./../' . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar'])) )
{
@unlink("./" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar']);
@unlink('./../' . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar']);
}
}
$avatar_sql = ", user_avatar = '', user_avatar_type = " . USER_AVATAR_NONE;
@@ -644,7 +641,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
}
else if( $user_avatar_local != "" && $avatar_sql == "" && !$error )
{
$avatar_sql = ", user_avatar = '" . str_replace("\'", "''", $user_avatar_local) . "', user_avatar_type = " . USER_AVATAR_GALLERY;
$avatar_sql = ", user_avatar = '" . str_replace("\'", "''", phpbb_ltrim(basename($user_avatar_category), "'") . '/' . phpbb_ltrim(basename($user_avatar_local), "'")) . "', user_avatar_type = " . USER_AVATAR_GALLERY;
}
//
@@ -680,13 +677,19 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
message_die(GENERAL_ERROR, 'Error removing user session', '', __LINE__, __FILE__, $sql);
}
}
// We remove all stored login keys since the password has been updated
// and change the current one (if applicable)
if ( !empty($passwd_sql) )
{
session_reset_keys($user_id, $user_ip);
}
$message .= $lang['Admin_user_updated'];
}
else
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Admin_user_fail'];
message_die(GENERAL_ERROR, 'Admin_user_fail', '', __LINE__, __FILE__, $sql);
}
$message .= '<br /><br />' . sprintf($lang['Click_return_useradmin'], '<a href="' . append_sid("admin_users.$phpEx") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
@@ -821,7 +824,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
{
if( preg_match("/(\.gif$|\.png$|\.jpg)$/is", $sub_file) )
{
$avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file . "/" . $sub_file;
$avatar_images[$file][$avatar_row_count][$avatar_col_count] = $sub_file;
$avatar_col_count++;
if( $avatar_col_count == 5 )
@@ -838,7 +841,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
if( isset($HTTP_POST_VARS['avatarcategory']) )
{
$category = $HTTP_POST_VARS['avatarcategory'];
$category = htmlspecialchars($HTTP_POST_VARS['avatarcategory']);
}
else
{
@@ -866,7 +869,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
for($j = 0; $j < count($avatar_images[$category][$i]); $j++)
{
$template->assign_block_vars("avatar_row.avatar_column", array(
"AVATAR_IMAGE" => "../" . $board_config['avatar_gallery_path'] . "/" . $avatar_images[$category][$i][$j])
"AVATAR_IMAGE" => "../" . $board_config['avatar_gallery_path'] . '/' . $category . '/' . $avatar_images[$category][$i][$j])
);
$template->assign_block_vars("avatar_row.avatar_option_column", array(
@@ -877,7 +880,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
$coppa = ( ( !$HTTP_POST_VARS['coppa'] && !$HTTP_GET_VARS['coppa'] ) || $mode == "register") ? 0 : TRUE;
$s_hidden_fields = '<input type="hidden" name="mode" value="edit" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' . $coppa . '" />';
$s_hidden_fields = '<input type="hidden" name="mode" value="edit" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' . $coppa . '" /><input type="hidden" name="avatarcatname" value="' . $category . '" />';
$s_hidden_fields .= '<input type="hidden" name="id" value="' . $user_id . '" />';
$s_hidden_fields .= '<input type="hidden" name="username" value="' . str_replace("\"", "&quot;", $username) . '" />';
@@ -933,7 +936,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
if( !empty($user_avatar_local) )
{
$s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' . $user_avatar_local . '" />';
$s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' . $user_avatar_local . '" /><input type="hidden" name="avatarcatname" value="' . $user_avatar_category . '" />';
}
if( $user_avatar_type )
@@ -944,7 +947,7 @@ if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username'])
$avatar = '<img src="../' . $board_config['avatar_path'] . '/' . $user_avatar . '" alt="" />';
break;
case USER_AVATAR_REMOTE:
$avatar = '<img src="' . $user_avatar . '" alt="" />';
$avatar = (isset($HTTP_GET_VARS['p_sid'])) ? $lang['Priv_Img'] . " $user_avatar" : '<img src="' . $user_avatar . '" alt="" />';
break;
case USER_AVATAR_GALLERY:
$avatar = '<img src="../' . $board_config['avatar_gallery_path'] . '/' . $user_avatar . '" alt="" />';
@@ -1140,8 +1143,9 @@ else
'U_SEARCH_USER' => append_sid("./../search.$phpEx?mode=searchuser"),
'S_USER_ACTION' => append_sid("admin_users.$phpEx"),
'S_USER_SELECT' => $select_list)
'S_USER_ACTION' => "admin_users.$phpEx?sid=" . $userdata['session_id'],
'S_USER_SELECT' => $select_list,
'S_HIDDEN_FIELDS' => '<input type="hidden" name="p_sid" value="' . $userdata['priv_session_id'] . '"/>')
);
$template->pparse('body');

View File

@@ -20,25 +20,35 @@
*
***************************************************************************/
define('IN_PHPBB', 1);
if( !empty($setmodules) )
{
$file = basename(__FILE__);
$module['General']['Word_Censor'] = "$file";
$module['General']['Word_Censor'] = $file;
return;
}
define('IN_PHPBB', 1);
//
// Load default header
//
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
$cancel = (isset($HTTP_POST_VARS['cancel']) || isset($_POST['cancel'])) ? true : false;
$no_page_header = $cancel;
require('./pagestart.' . $phpEx);
if ($cancel)
{
redirect('admin/' . append_sid("admin_words.$phpEx", true));
}
if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
$mode = ($HTTP_GET_VARS['mode']) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
$mode = (isset($HTTP_GET_VARS['mode'])) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
$mode = htmlspecialchars($mode);
}
else
{
@@ -59,16 +69,20 @@ else
}
}
// Restrict mode input to valid options
$mode = ( in_array($mode, array('add', 'edit', 'save', 'delete')) ) ? $mode : '';
if( $mode != "" )
{
if( $mode == "edit" || $mode == "add" )
{
$word_id = ( isset($HTTP_GET_VARS['id']) ) ? $HTTP_GET_VARS['id'] : 0;
$word_id = ( isset($HTTP_GET_VARS['id']) ) ? intval($HTTP_GET_VARS['id']) : 0;
$template->set_filenames(array(
"body" => "admin/words_edit_body.tpl")
);
$word_info = array('word' => '', 'replacement' => '');
$s_hidden_fields = '';
if( $mode == "edit" )
@@ -93,8 +107,8 @@ if( $mode != "" )
}
$template->assign_vars(array(
"WORD" => $word_info['word'],
"REPLACEMENT" => $word_info['replacement'],
"WORD" => htmlspecialchars($word_info['word']),
"REPLACEMENT" => htmlspecialchars($word_info['replacement']),
"L_WORDS_TITLE" => $lang['Words_title'],
"L_WORDS_TEXT" => $lang['Words_explain'],
@@ -113,7 +127,7 @@ if( $mode != "" )
}
else if( $mode == "save" )
{
$word_id = ( isset($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : 0;
$word_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : 0;
$word = ( isset($HTTP_POST_VARS['word']) ) ? trim($HTTP_POST_VARS['word']) : "";
$replacement = ( isset($HTTP_POST_VARS['replacement']) ) ? trim($HTTP_POST_VARS['replacement']) : "";
@@ -150,13 +164,16 @@ if( $mode != "" )
if( isset($HTTP_POST_VARS['id']) || isset($HTTP_GET_VARS['id']) )
{
$word_id = ( isset($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id'];
$word_id = intval($word_id);
}
else
{
$word_id = 0;
}
if( $word_id )
$confirm = isset($HTTP_POST_VARS['confirm']);
if( $word_id && $confirm )
{
$sql = "DELETE FROM " . WORDS_TABLE . "
WHERE word_id = $word_id";
@@ -170,6 +187,26 @@ if( $mode != "" )
message_die(GENERAL_MESSAGE, $message);
}
elseif( $word_id && !$confirm)
{
// Present the confirmation screen to the user
$template->set_filenames(array(
'body' => 'admin/confirm_body.tpl')
);
$hidden_fields = '<input type="hidden" name="mode" value="delete" /><input type="hidden" name="id" value="' . $word_id . '" />';
$template->assign_vars(array(
'MESSAGE_TITLE' => $lang['Confirm'],
'MESSAGE_TEXT' => $lang['Confirm_delete_word'],
'L_YES' => $lang['Yes'],
'L_NO' => $lang['No'],
'S_CONFIRM_ACTION' => append_sid("admin_words.$phpEx"),
'S_HIDDEN_FIELDS' => $hidden_fields)
);
}
else
{
message_die(GENERAL_MESSAGE, $lang['No_word_selected']);
@@ -191,6 +228,7 @@ else
}
$word_rows = $db->sql_fetchrowset($result);
$db->sql_freeresult($result);
$word_count = count($word_rows);
$template->assign_vars(array(
@@ -219,8 +257,8 @@ else
$template->assign_block_vars("words", array(
"ROW_COLOR" => "#" . $row_color,
"ROW_CLASS" => $row_class,
"WORD" => $word,
"REPLACEMENT" => $replacement,
"WORD" => htmlspecialchars($word),
"REPLACEMENT" => htmlspecialchars($replacement),
"U_WORD_EDIT" => append_sid("admin_words.$phpEx?mode=edit&amp;id=$word_id"),
"U_WORD_DELETE" => append_sid("admin_words.$phpEx?mode=delete&amp;id=$word_id"))

View File

@@ -60,7 +60,7 @@ if( isset($HTTP_GET_VARS['pane']) && $HTTP_GET_VARS['pane'] == 'left' )
{
if( preg_match("/^admin_.*?\." . $phpEx . "$/", $file) )
{
include($file);
include('./' . $file);
}
}
@@ -234,9 +234,9 @@ elseif( isset($HTTP_GET_VARS['pane']) && $HTTP_GET_VARS['pane'] == 'right' )
$row = $db->sql_fetchrow($result);
$version = $row['mysql_version'];
if( preg_match("/^(3\.23|4\.)/", $version) )
if( preg_match("/^(3\.23|4\.|5\.)/", $version) )
{
$db_name = ( preg_match("/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)/", $version) ) ? "`$dbname`" : $dbname;
$db_name = ( preg_match("/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)|(5\.)/", $version) ) ? "`$dbname`" : $dbname;
$sql = "SHOW TABLE STATUS
FROM " . $db_name;
@@ -332,7 +332,7 @@ elseif( isset($HTTP_GET_VARS['pane']) && $HTTP_GET_VARS['pane'] == 'right' )
WHERE s.session_logged_in = " . TRUE . "
AND u.user_id = s.session_user_id
AND u.user_id <> " . ANONYMOUS . "
AND u.user_session_time >= " . ( time() - 300 ) . "
AND s.session_time >= " . ( time() - 300 ) . "
ORDER BY u.user_session_time DESC";
if(!$result = $db->sql_query($sql))
{
@@ -455,7 +455,7 @@ elseif( isset($HTTP_GET_VARS['pane']) && $HTTP_GET_VARS['pane'] == 'right' )
"FORUM_LOCATION" => $location,
"IP_ADDRESS" => $reg_ip,
"U_WHOIS_IP" => "http://www.geektools.com/cgi-bin/proxy.cgi?query=$reg_ip&targetnic=auto",
"U_WHOIS_IP" => "http://network-tools.com/default.asp?host=$reg_ip",
"U_USER_PROFILE" => append_sid("admin_users.$phpEx?mode=edit&amp;" . POST_USERS_URL . "=" . $onlinerow_reg[$i]['user_id']),
"U_FORUM_LOCATION" => append_sid($location_url))
);
@@ -547,7 +547,7 @@ elseif( isset($HTTP_GET_VARS['pane']) && $HTTP_GET_VARS['pane'] == 'right' )
"FORUM_LOCATION" => $location,
"IP_ADDRESS" => $guest_ip,
"U_WHOIS_IP" => "http://www.geektools.com/cgi-bin/proxy.cgi?query=$guest_ip&targetnic=auto",
"U_WHOIS_IP" => "http://network-tools.com/default.asp?host=$guest_ip",
"U_FORUM_LOCATION" => append_sid($location_url))
);
}
@@ -560,6 +560,71 @@ elseif( isset($HTTP_GET_VARS['pane']) && $HTTP_GET_VARS['pane'] == 'right' )
);
}
// Check for new version
$current_version = explode('.', '2' . $board_config['version']);
$minor_revision = (int) $current_version[2];
$errno = 0;
$errstr = $version_info = '';
if ($fsock = @fsockopen('www.phpbb.com', 80, $errno, $errstr, 10))
{
@fputs($fsock, "GET /updatecheck/20x.txt HTTP/1.1\r\n");
@fputs($fsock, "HOST: www.phpbb.com\r\n");
@fputs($fsock, "Connection: close\r\n\r\n");
$get_info = false;
while (!@feof($fsock))
{
if ($get_info)
{
$version_info .= @fread($fsock, 1024);
}
else
{
if (@fgets($fsock, 1024) == "\r\n")
{
$get_info = true;
}
}
}
@fclose($fsock);
$version_info = explode("\n", $version_info);
$latest_head_revision = (int) $version_info[0];
$latest_minor_revision = (int) $version_info[2];
$latest_version = (int) $version_info[0] . '.' . (int) $version_info[1] . '.' . (int) $version_info[2];
if ($latest_head_revision == 2 && $minor_revision == $latest_minor_revision)
{
$version_info = '<p style="color:green">' . $lang['Version_up_to_date'] . '</p>';
}
else
{
$version_info = '<p style="color:red">' . $lang['Version_not_up_to_date'];
$version_info .= '<br />' . sprintf($lang['Latest_version_info'], $latest_version) . ' ' . sprintf($lang['Current_version_info'], '2' . $board_config['version']) . '</p>';
}
}
else
{
if ($errstr)
{
$version_info = '<p style="color:red">' . sprintf($lang['Connect_socket_error'], $errstr) . '</p>';
}
else
{
$version_info = '<p>' . $lang['Socket_functions_disabled'] . '</p>';
}
}
$version_info .= '<p>' . $lang['Mailing_list_subscribe_reminder'] . '</p>';
$template->assign_vars(array(
'VERSION_INFO' => $version_info,
'L_VERSION_INFORMATION' => $lang['Version_information'])
);
$template->pparse("body");
include('./page_footer_admin.'.$phpEx);

View File

@@ -25,6 +25,8 @@ if ( !defined('IN_PHPBB') )
die("Hacking attempt");
}
global $do_gzip_compress;
//
// Show the overall footer.
//
@@ -33,8 +35,8 @@ $template->set_filenames(array(
);
$template->assign_vars(array(
'PHPBB_VERSION' => '2' . $board_config['version'],
'TRANSLATION_INFO' => $lang['TRANSLATION_INFO'])
'PHPBB_VERSION' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? '2' . $board_config['version'] : '',
'TRANSLATION_INFO' => (isset($lang['TRANSLATION_INFO'])) ? $lang['TRANSLATION_INFO'] : ((isset($lang['TRANSLATION'])) ? $lang['TRANSLATION'] : ''))
);
$template->pparse('page_footer');

View File

@@ -35,7 +35,7 @@ if ( $board_config['gzip_compress'] )
{
$phpver = phpversion();
$useragent = (isset($_SERVER["HTTP_USER_AGENT"]) ) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT;
$useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');
if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
{
@@ -132,6 +132,18 @@ $template->assign_vars(array(
'T_SPAN_CLASS3' => $theme['span_class3'])
);
// Work around for "current" Apache 2 + PHP module which seems to not
// cope with private cache control setting
if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'Apache/2'))
{
header ('Cache-Control: no-cache, pre-check=0, post-check=0');
}
else
{
header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
}
header ('Expires: 0');
header ('Pragma: no-cache');
$template->pparse('header');

View File

@@ -40,7 +40,7 @@ init_userprefs($userdata);
if (!$userdata['session_logged_in'])
{
redirect(append_sid("login.$phpEx?redirect=admin/", true));
redirect(append_sid("login.$phpEx?redirect=admin/index.$phpEx", true));
}
else if ($userdata['user_level'] != ADMIN)
{
@@ -49,14 +49,19 @@ else if ($userdata['user_level'] != ADMIN)
if ($HTTP_GET_VARS['sid'] != $userdata['session_id'])
{
$url = str_replace(preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name'])), '', $HTTP_SERVER_VARS['REQUEST_URI']);
$url = str_replace(preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path'])), '', $url);
$url = str_replace('//', '/', $url);
$url = preg_replace('/sid=([^&]*)(&?)/i', '', $url);
$url = preg_replace('/\?$/', '', $url);
$url .= ((strpos($url, '?')) ? '&' : '?') . 'sid=' . $userdata['session_id'];
redirect("index.$phpEx?sid=" . $userdata['session_id']);
}
redirect($url);
$p_sid = (isset($HTTP_GET_VARS['p_sid'])) ? $HTTP_GET_VARS['p_sid'] : ((isset($HTTP_POST_VARS['p_sid'])) ? $HTTP_POST_VARS['p_sid'] : '');
if ($p_sid !== $userdata['priv_session_id'])
{
redirect("index.$phpEx?sid=" . $userdata['session_id']);
}
if (!$userdata['session_admin'])
{
redirect(append_sid("login.$phpEx?redirect=admin/index.$phpEx&admin=1", true));
}
if (empty($no_page_header))

View File

@@ -8,7 +8,6 @@
*
* $Id$
*
*
***************************************************************************/
/***************************************************************************
@@ -25,9 +24,74 @@ if ( !defined('IN_PHPBB') )
die("Hacking attempt");
}
//
error_reporting (E_ERROR | E_WARNING | E_PARSE); // This will NOT report uninitialized variables
set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
// The following code (unsetting globals)
// Thanks to Matt Kavanagh and Stefan Esser for providing feedback as well as patch files
// PHP5 with register_long_arrays off?
if (@phpversion() >= '5.0.0' && (!@ini_get('register_long_arrays') || @ini_get('register_long_arrays') == '0' || strtolower(@ini_get('register_long_arrays')) == 'off'))
{
$HTTP_POST_VARS = $_POST;
$HTTP_GET_VARS = $_GET;
$HTTP_SERVER_VARS = $_SERVER;
$HTTP_COOKIE_VARS = $_COOKIE;
$HTTP_ENV_VARS = $_ENV;
$HTTP_POST_FILES = $_FILES;
// _SESSION is the only superglobal which is conditionally set
if (isset($_SESSION))
{
$HTTP_SESSION_VARS = $_SESSION;
}
}
// Protect against GLOBALS tricks
if (isset($HTTP_POST_VARS['GLOBALS']) || isset($HTTP_POST_FILES['GLOBALS']) || isset($HTTP_GET_VARS['GLOBALS']) || isset($HTTP_COOKIE_VARS['GLOBALS']))
{
die("Hacking attempt");
}
// Protect against HTTP_SESSION_VARS tricks
if (isset($HTTP_SESSION_VARS) && !is_array($HTTP_SESSION_VARS))
{
die("Hacking attempt");
}
if (@ini_get('register_globals') == '1' || strtolower(@ini_get('register_globals')) == 'on')
{
// PHP4+ path
$not_unset = array('HTTP_GET_VARS', 'HTTP_POST_VARS', 'HTTP_COOKIE_VARS', 'HTTP_SERVER_VARS', 'HTTP_SESSION_VARS', 'HTTP_ENV_VARS', 'HTTP_POST_FILES', 'phpEx', 'phpbb_root_path');
// Not only will array_merge give a warning if a parameter
// is not an array, it will actually fail. So we check if
// HTTP_SESSION_VARS has been initialised.
if (!isset($HTTP_SESSION_VARS) || !is_array($HTTP_SESSION_VARS))
{
$HTTP_SESSION_VARS = array();
}
// Merge all into one extremely huge array; unset
// this later
$input = array_merge($HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_SESSION_VARS, $HTTP_ENV_VARS, $HTTP_POST_FILES);
unset($input['input']);
unset($input['not_unset']);
while (list($var,) = @each($input))
{
if (in_array($var, $not_unset))
{
die('Hacking attempt!');
}
unset($$var);
}
unset($input);
}
//
// addslashes to vars if magic_quotes_gpc is off
// this is a security precaution to prevent someone
@@ -106,13 +170,15 @@ $userdata = array();
$theme = array();
$images = array();
$lang = array();
$nav_links = array();
$dss_seeded = false;
$gen_simple_header = FALSE;
include($phpbb_root_path . 'config.'.$phpEx);
if( !defined("PHPBB_INSTALLED") )
{
header("Location: install/install.$phpEx");
header('Location: ' . $phpbb_root_path . 'install/install.' . $phpEx);
exit;
}
@@ -123,35 +189,18 @@ include($phpbb_root_path . 'includes/auth.'.$phpEx);
include($phpbb_root_path . 'includes/functions.'.$phpEx);
include($phpbb_root_path . 'includes/db.'.$phpEx);
// We do not need this any longer, unset for safety purposes
unset($dbpasswd);
//
// Obtain and encode users IP
//
if( getenv('HTTP_X_FORWARDED_FOR') != '' )
{
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR );
$entries = explode(',', getenv('HTTP_X_FORWARDED_FOR'));
reset($entries);
while (list(, $entry) = each($entries))
{
$entry = trim($entry);
if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
{
$private_ip = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/', '/^10\..*/', '/^224\..*/', '/^240\..*/');
$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
if ($client_ip != $found_ip)
{
$client_ip = $found_ip;
break;
}
}
}
}
else
{
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR );
}
// I'm removing HTTP_X_FORWARDED_FOR ... this may well cause other problems such as
// private range IP's appearing instead of the guilty routable IP, tough, don't
// even bother complaining ... go scream and shout at the idiots out there who feel
// "clever" is doing harm rather than good ... karma is a great thing ... :)
//
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );
$user_ip = encode_ip($client_ip);
//
@@ -173,7 +222,7 @@ while ( $row = $db->sql_fetchrow($result) )
if (file_exists('install') || file_exists('contrib'))
{
message_die(GENERAL_MESSAGE, 'Please ensure both the install/ and contrib/ directories are deleted');
message_die(GENERAL_MESSAGE, 'Please_remove_install_contrib');
}
//

View File

@@ -289,7 +289,7 @@ class sql_db
while( list($key, $value) = @each($row) )
{
$row[$key] = stripslashes($value);
$row[$key] = ($value === ' ') ? '' : stripslashes($value);
}
@reset($row);
@@ -317,7 +317,7 @@ class sql_db
{
while( list($key, $value) = @each($row) )
{
$rowset[$i][$key] = stripslashes($value);
$rowset[$i][$key] = ($value === ' ') ? '' : stripslashes($value);
}
$i++;
}
@@ -356,7 +356,7 @@ class sql_db
if( empty($this->row[$query_id]) )
{
$this->row[$query_id] = @mssql_fetch_array($query_id);
$result = stripslashes($this->row[$query_id][$field]);
$result = ($this->row[$query_id][$field] === ' ') ? '' : stripslashes($this->row[$query_id][$field]);
}
}

View File

@@ -259,7 +259,7 @@ class sql_db
{
if($this->rowset[$query_id])
{
$result = $this->rowset[$query_id][$field];
$result = $this->rowset[$query_id][0][$field];
}
else if($this->row[$query_id])
{

View File

@@ -271,7 +271,7 @@ class sql_db
{
if( $this->rowset[$query_id] )
{
$result = $this->rowset[$query_id][$field];
$result = $this->rowset[$query_id][0][$field];
}
else if( $this->row[$query_id] )
{

View File

@@ -1,472 +0,0 @@
<?php
/***************************************************************************
* oracle.php
* -------------------
* begin : Thrusday Feb 15, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id$
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
if(!defined("SQL_LAYER"))
{
define("SQL_LAYER","oracle");
class sql_db
{
var $db_connect_id;
var $query_result;
var $in_transaction = 0;
var $row = array();
var $rowset = array();
var $num_queries = 0;
var $last_query_text = "";
//
// Constructor
//
function sql_db($sqlserver, $sqluser, $sqlpassword, $database="", $persistency = true)
{
$this->persistency = $persistency;
$this->user = $sqluser;
$this->password = $sqlpassword;
$this->server = $sqlserver;
$this->dbname = $database;
if($this->persistency)
{
$this->db_connect_id = @OCIPLogon($this->user, $this->password, $this->server);
}
else
{
$this->db_connect_id = @OCINLogon($this->user, $this->password, $this->server);
}
if($this->db_connect_id)
{
return $this->db_connect_id;
}
else
{
return false;
}
}
//
// Other base methods
//
function sql_close()
{
if($this->db_connect_id)
{
// Commit outstanding transactions
if($this->in_transaction)
{
OCICommit($this->db_connect_id);
}
if($this->query_result)
{
@OCIFreeStatement($this->query_result);
}
$result = @OCILogoff($this->db_connect_id);
return $result;
}
else
{
return false;
}
}
//
// Base query method
//
function sql_query($query = "", $transaction = FALSE)
{
// Remove any pre-existing queries
unset($this->query_result);
// Put us in transaction mode because with Oracle as soon as you make a query you're in a transaction
$this->in_transaction = TRUE;
if($query != "")
{
$this->last_query = $query;
$this->num_queries++;
if(eregi("LIMIT", $query))
{
preg_match("/^(.*)LIMIT ([0-9]+)[, ]*([0-9]+)*/s", $query, $limits);
$query = $limits[1];
if($limits[3])
{
$row_offset = $limits[2];
$num_rows = $limits[3];
}
else
{
$row_offset = 0;
$num_rows = $limits[2];
}
}
if(eregi("^(INSERT|UPDATE) ", $query))
{
$query = preg_replace("/\\\'/s", "''", $query);
}
$this->query_result = @OCIParse($this->db_connect_id, $query);
$success = @OCIExecute($this->query_result, OCI_DEFAULT);
}
if($success)
{
if($transaction == END_TRANSACTION)
{
OCICommit($this->db_connect_id);
$this->in_transaction = FALSE;
}
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);
$this->last_query_text[$this->query_result] = $query;
return $this->query_result;
}
else
{
if($this->in_transaction)
{
OCIRollback($this->db_connect_id);
}
return false;
}
}
//
// Other query methods
//
function sql_numrows($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @OCIFetchStatement($query_id, $this->rowset);
// OCIFetchStatment kills our query result so we have to execute the statment again
// if we ever want to use the query_id again.
@OCIExecute($query_id, OCI_DEFAULT);
return $result;
}
else
{
return false;
}
}
function sql_affectedrows($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @OCIRowCount($query_id);
return $result;
}
else
{
return false;
}
}
function sql_numfields($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @OCINumCols($query_id);
return $result;
}
else
{
return false;
}
}
function sql_fieldname($offset, $query_id = 0)
{
// OCIColumnName uses a 1 based array so we have to up the offset by 1 in here to maintain
// full abstraction compatibitly
$offset += 1;
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = strtolower(@OCIColumnName($query_id, $offset));
return $result;
}
else
{
return false;
}
}
function sql_fieldtype($offset, $query_id = 0)
{
// This situation is the same as fieldname
$offset += 1;
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @OCIColumnType($query_id, $offset);
return $result;
}
else
{
return false;
}
}
function sql_fetchrow($query_id = 0, $debug = FALSE)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result_row = "";
$result = @OCIFetchInto($query_id, $result_row, OCI_ASSOC+OCI_RETURN_NULLS);
if($debug)
{
echo "Query was: ".$this->last_query . "<br>";
echo "Result: $result<br>";
echo "Query ID: $query_id<br>";
echo "<pre>";
var_dump($result_row);
echo "</pre>";
}
if($result_row == "")
{
return false;
}
for($i = 0; $i < count($result_row); $i++)
{
list($key, $val) = each($result_row);
$return_arr[strtolower($key)] = $val;
}
$this->row[$query_id] = $return_arr;
return $this->row[$query_id];
}
else
{
return false;
}
}
// This function probably isn't as efficant is it could be but any other way I do it
// I end up losing 1 row...
function sql_fetchrowset($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$rows = @OCIFetchStatement($query_id, $results);
@OCIExecute($query_id, OCI_DEFAULT);
for($i = 0; $i < $rows; $i++)
{
@OCIFetchInto($query_id, $tmp_result, OCI_ASSOC+OCI_RETURN_NULLS);
for($j = 0; $j < count($tmp_result); $j++)
{
list($key, $val) = each($tmp_result);
$return_arr[strtolower($key)] = $val;
}
$result[] = $return_arr;
}
return $result;
}
else
{
return false;
}
}
function sql_fetchfield($field, $rownum = -1, $query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
if($rownum > -1)
{
// Reset the internal rownum pointer.
@OCIExecute($query_id, OCI_DEFAULT);
for($i = 0; $i < $rownum; $i++)
{
// Move the interal pointer to the row we want
@OCIFetch($query_id);
}
// Get the field data.
$result = @OCIResult($query_id, strtoupper($field));
}
else
{
// The internal pointer should be where we want it
// so we just grab the field out of the current row.
$result = @OCIResult($query_id, strtoupper($field));
}
return $result;
}
else
{
return false;
}
}
function sql_rowseek($rownum, $query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
@OCIExecute($query_id, OCI_DEFAULT);
for($i = 0; $i < $rownum; $i++)
{
@OCIFetch($query_id);
}
$result = @OCIFetch($query_id);
return $result;
}
else
{
return false;
}
}
function sql_nextid($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id && $this->last_query_text[$query_id] != "")
{
if( eregi("^(INSERT{1}|^INSERT INTO{1})[[:space:]][\"]?([a-zA-Z0-9\_\-]+)[\"]?", $this->last_query_text[$query_id], $tablename))
{
$query = "SELECT ".$tablename[2]."_id_seq.currval FROM DUAL";
$stmt = @OCIParse($this->db_connect_id, $query);
@OCIExecute($stmt,OCI_DEFAULT );
$temp_result = @OCIFetchInto($stmt, $temp_result, OCI_ASSOC+OCI_RETURN_NULLS);
if($temp_result)
{
return $temp_result['CURRVAL'];
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{
return false;
}
}
function sql_nextid($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id && $this->last_query_text[$query_id] != "")
{
if( eregi("^(INSERT{1}|^INSERT INTO{1})[[:space:]][\"]?([a-zA-Z0-9\_\-]+)[\"]?", $this->last_query_text[$query_id], $tablename))
{
$query = "SELECT ".$tablename[2]."_id_seq.CURRVAL FROM DUAL";
$temp_q_id = @OCIParse($this->db_connect_id, $query);
@OCIExecute($temp_q_id, OCI_DEFAULT);
@OCIFetchInto($temp_q_id, $temp_result, OCI_ASSOC+OCI_RETURN_NULLS);
if($temp_result)
{
return $temp_result['CURRVAL'];
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{
return false;
}
}
function sql_freeresult($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @OCIFreeStatement($query_id);
return $result;
}
else
{
return false;
}
}
function sql_error($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
$result = @OCIError($query_id);
return $result;
}
} // class sql_db
} // if ... define
?>

View File

@@ -0,0 +1,67 @@
<html>
<body>
<?php
//
// Security message:
//
// This script is potentially dangerous.
// Remove or comment the next line (die(".... ) to enable this script.
// Do NOT FORGET to either remove this script or disable it after you have used it.
//
die("Please read the first lines of this script for instructions on how to enable it");
//
// Do not change anything below this line.
//
//
// Convert 2.0.x Usernames to the new 2.0.5 Username format.
//
chdir("../");
define('IN_PHPBB', true);
include('extension.inc');
include('config.'.$phpEx);
include('includes/constants.'.$phpEx);
include('includes/db.'.$phpEx);
$sql = "SELECT user_id, username
FROM " . USERS_TABLE;
$result = $db->sql_query($sql);
if(!$result)
{
die("Unable to get users");
}
while ($row = $db->sql_fetchrow($result))
{
if (!preg_match('#(&gt;)|(&lt;)|(&quot)|(&amp;)#', $row['username']))
{
if ($row['username'] != htmlspecialchars($row['username']))
{
flush();
$sql = "UPDATE " . USERS_TABLE . "
SET username = '" . str_replace("'", "''", htmlspecialchars($row['username'])) . "'
WHERE user_id = " . $row['user_id'];
if (!$db->sql_query($sql))
{
echo "ERROR: Unable to rename user " . htmlspecialchars($row['username']) . " with ID " . $row['user_id'] . "<br>";
echo "<pre>" . print_r($db->sql_error()) . "</pre><br />$sql";
}
else
{
echo "Renamed User " . htmlspecialchars($row['username']) . " with ID " . $row['user_id'] . "<br>";
}
}
}
}
echo "<br>That's All Folks!";
?>
</body>
</html>

View File

@@ -1 +1,6 @@
Please see: http://www.phpbb.com/credits.php for a list of all the people involved in phpBB.
Please see: http://www.phpbb.com/about.php for a list of all the people involved in phpBB.
Please see: http://www.phpbb.com/about.php for a list of people involved within the security audit of phpBB (since phpBB 2.0.17).
[September 2005]
Our special thanks goes to our former developer and manager psoTFX (Paul S. Owen) for being a wonderful teammate and talented programer.
He was a driving force in the project for over 3 years and helped a lot in making phpBB what it is now.

View File

@@ -3,7 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>phpBB 2.0.5 :: Changelog</title>
<title>phpBB 2.0.x :: Changelog</title>
<link rel="stylesheet" href="../templates/subSilver/subSilver.css" type="text/css" />
<style type="text/css">
<!--
@@ -24,7 +24,7 @@ p,ul,td {font-size:10pt;}
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="../templates/subSilver/images/logo_phpBB.gif" border="0" alt="phpBB 2 : Creating Communities" vspace="1" /></a></td>
<td align="center" width="100%" valign="middle"><span class="maintitle">phpBB 2.0.5 CHANGELOG</span></td>
<td align="center" width="100%" valign="middle"><span class="maintitle">phpBB 2.0.x CHANGELOG</span></td>
</tr>
</table>
@@ -32,6 +32,25 @@ p,ul,td {font-size:10pt;}
<ol>
<li><a href="#changelog">Changelog</a></li>
<ol type="i">
<li><a href="#2023">Changes since 2.0.23</a></li>
<li><a href="#2022">Changes since 2.0.22</a></li>
<li><a href="#2021">Changes since 2.0.21</a></li>
<li><a href="#2020">Changes since 2.0.20</a></li>
<li><a href="#2019">Changes since 2.0.19</a></li>
<li><a href="#2018">Changes since 2.0.18</a></li>
<li><a href="#2017">Changes since 2.0.17</a></li>
<li><a href="#2016">Changes since 2.0.16</a></li>
<li><a href="#2015">Changes since 2.0.15</a></li>
<li><a href="#2014">Changes since 2.0.14</a></li>
<li><a href="#2013">Changes since 2.0.13</a></li>
<li><a href="#2012">Changes since 2.0.12</a></li>
<li><a href="#2011">Changes since 2.0.11</a></li>
<li><a href="#2010">Changes since 2.0.10</a></li>
<li><a href="#209">Changes since 2.0.9</a></li>
<li><a href="#208">Changes since 2.0.8</a></li>
<li><a href="#207">Changes since 2.0.7</a></li>
<li><a href="#206">Changes since 2.0.6</a></li>
<li><a href="#205">Changes since 2.0.5</a></li>
<li><a href="#204">Changes since 2.0.4</a></li>
<li><a href="#203">Changes since 2.0.3</a></li>
<li><a href="#202">Changes since 2.0.2</a></li>
@@ -50,7 +69,340 @@ p,ul,td {font-size:10pt;}
<p>This is a non-exhaustive (but still near complete) changelog for phpBB 2.0.x including beta and release candidate versions. Our thanks to all those people who've contributed bug reports and code fixes.</p>
<a name="204"></a><h3 class="h3">1.i. Changes since 2.0.4</h3>
<a name="2023"></a><h3 class="h3">l.i. Changes since 2.0.23</h3>
<ul>
<li>[Fix] Only insert words into search match table not being tagged as common (Bug #2591) - patch provided by tigertech</li>
</ul>
<a name="2022"></a><h3 class="h3">l.ii. Changes since 2.0.22</h3>
<ul>
<li>[Fix] Correctly re-assign group moderator on user deletion (Bug #280)</li>
<li>[Fix] Deleting a forum with multiple polls included (Bug #6740)</li>
<li>[Fix] Fixed postgresql query for obtaining group moderator in groupcp.php (Bug #6550)</li>
<li>[Fix] Selected field on first entry by default for font size within posting_body.tpl (Bug #7124)</li>
<li>[Fix] Adjusted maxlength parameters in admin/styles_edit_body.tpl (Bug #81)</li>
<li>[Fix] Fixed html output in make_forum_select if no forums present (Bug #436)</li>
<li>[Fix] Fixed spelling error(s) in lang_admin.php (Bug #7172, #6978)</li>
<li>[Fix] Correctly display censored words in admin panel (Bug #12271)</li>
<li>[Fix] Do not allow soft hyphen \xAD in usernames (reported by Bander00)</li>
<li>[Fix] Fixed the group permission system's use of array access</li>
<li>[Fix] Simple group permissions now work properly</li>
<li>[Sec] Fix possible XSRF Vulnerability in private messaging and groups handling</li>
<li>[Fix] Fix inability to export smilies (Bug #2265)</li>
<li>[Fix] Fixing some problems with PHP5 and register_long_arrays off</li>
</ul>
<a name="2021"></a><h3 class="h3">l.iii. Changes since 2.0.21</h3>
<ul>
<li>[Fix] Check for user's existence prior to showing email form</li>
<li>[Fix] New members of moderator groups should always become moderators (Bug #382)</li>
<li>[Fix] Proper message when replying to non-existant topics (Bug #459)</li>
<li>[Fix] Changed column type of search_array to store more ids (Bug #4058)</li>
<li>[Fix] Fixed annoyance with font-size selector (Bug #4612)</li>
<li>[Fix] Fix optimize line in database updater (Bug #6186)</li>
<li>[Sec] Check for the avatar upload directory reinforced</li>
<li>[Sec] Changes to the criteria for "bad" redirection targets - kellanved</li>
<li>[Sec] Fixed a non-persistent XSS issue in private messaging</li>
<li>[Sec] Fixing possible negative start parameter - SpiderZ.</li>
<li>[Sec] Added session checks to various forms - kellanved</li>
</ul>
<a name="2020"></a><h3 class="h3">l.iv. Changes since 2.0.20</h3>
<ul>
<li>[Fix] Changes to random number generator code to explicitly truncate the length of the string</li>
<li>[Fix] Quoting on boards with HTML enabled</li>
<li>[Fix] Special characters on boards with HTML enabled</li>
<li>[Fix] Redirect to list if cancelling deletion of ranks, smilies or word censors</li>
<li>[Fix] Missing error message if an inactive user tried to login (Bug #1598)</li>
<li>[Fix] Do not alter post counts when just removing a poll (Bug #1602)</li>
<li>[Fix] Correct error in removal of old session keys</li>
<li>[Fix] Changed filtering of short search terms</li>
<li>[Sec] Improved filtering on language selection (also addresses a number of bug reports related to missing languages)</li>
<li>[Change] Backported more efficient highlighting code from Olympus</li>
<li>[Change] Backported zlib emulation code so that there is only a single confirmation image even if zlib is not available</li>
</ul>
<a name="2019"></a><h3 class="h3">l.v. Changes since 2.0.19</h3>
<ul>
<li>[Fix] Prevent login attempts from incrementing for inactive users</li>
<li>[Fix] Do not check maximum login attempts on re-authentication to the admin panel - tomknight</li>
<li>[Fix] Regenerate session keys on password change</li>
<li>[Fix] retrieving category rows in index.php (Bug #90)</li>
<li>[Fix] improved index performance by determining the permissions before iterating through all forums (Bug #91)</li>
<li>[Fix] Better handling of short usernames within the search (bug #105)</li>
<li>[Fix] Send a no-cache header on admin pages as well as normal board pages (Bug #149)</li>
<li>[Fix] Apply word censors to the message when quoting it (Bug #405)</li>
<li>[Fix] Improved performance of query in admin_groups (Bug #753)</li>
<li>[Fix] Workaround for an issue in either PHP or MSSQL resulting in a space being returned instead of an empty string (bug #830)</li>
<li>[Fix] Correct use of default_style config value (Bug #861)</li>
<li>[Fix] Replace unneeded unset calls in admin_db_utilities.php - vanderaj</li>
<li>[Fix] Improved error handling in modcp.php</li>
<li>[Fix] Improved handling of forums to which the user does not have any explicit permissions - vanderaj</li>
<li>[Fix] Assorted fixes and cleanup of admin_ranks.php, now requires confirmation of deletions</li>
<li>[Fix] Assorted fixes and cleanup of admin_words.php, now requires confirmation of deletions</li>
<li>[Fix] Addition and editing of smilies can no longer be performed via GET, now requires confirmation of deletions</li>
<li>[Fix] Escape group names in admin_groups.php</li>
<li>[Sec] Replace strip_tags with htmlspecialchars in private message subject</li>
<li>[Sec] Some changes to HTML handling if enabled</li>
<li>[Sec] Escape any special characters in reverse dns - Anthrax101</li>
<li>[Sec] Typecast poll id values - Anthrax101</li>
<li>[Sec] Added configurable search flood control to reduce the effect of DoS style attacks</li>
<li>[Sec] Changed the way we create "random" values for use as keys - chinchilla/Anthrax101</li>
<li>[Change] Changed handling of the case where a selected style doesn't exist in the database</li>
<li>[Change] Changed handling of topic pruning to improve performance</li>
<li>[Change] Changed default forum permissions to only allow registered users to post in new forums</li>
</ul>
<a name="2018"></a><h3 class="h3">l.vi. Changes since 2.0.18</h3>
<ul>
<li>[Fix] corrected index on session keys table under MS SQL</li>
<li>[Fix] added session keys table to backup</li>
<li>[Fix] delete session keys entries when deleting user</li>
<li>[Fix] changes to support MySQL 5.0</li>
<li>[Fix] changes to some of the admin files to improve efficiency and remove a potential error condition when building the menu</li>
<li>[Fix] change truncation of username length in usercp_register.php - BFUK</li>
<li>[Fix] incorrect path to avatars in admin_users.php (Bug #667)</li>
<li>[Fix] fixed get_userdata to support correct sql escaping (non-mysql dbs) - jarnaez</li>
<li>[Fix] fixed captcha for those not having the zlib extension enabled</li>
<li>[Change] Placed version information above who is online in admin panel for better visual presence</li>
<li>[Sec] fixed XSS issue (only valid for Internet Explorer) within the url bbcode</li>
<li>[Sec] fixed XSS issue if html tags are allowed and enabled</li>
<li>[Sec] added configurable maximum login attempts to prevent dictionary attacks</li>
</ul>
<a name="2017"></a><h3 class="h3">l.vii. Changes since 2.0.17</h3>
<ul>
<li>[Fix] incorrect handling of password resets if admin activation is enabled (Bug #88)</li>
<li>[Fix] wrong topic redirection after login redirect (Bug #94)</li>
<li>[Fix] improved handling of username lists in admin_ug_auth.php (Bug #98)</li>
<li>[Fix] incorrect removal of bbcode_uid values if bbcode has been turned off (Bug #100)</li>
<li>[Fix] correctly preview signature if editing other users posts (Bug #101)</li>
<li>[Fix] incorrect alt tag on generated search images in groupcp.php, viewtopic.php and usercp_viewprofile.php (Bug #102)</li>
<li>[Fix] consistent forum ordering in all dropdown boxes (Bug #106)</li>
<li>[Fix] correctly get compression status in page_tail.php and page_footer_admin.php (Bug #117)</li>
<li>[Fix] set page title on summary page of groupcp.php (bug #125)</li>
<li>[Fix] correctly test style and avatar in usercp_register.php (bug #129 and #317)</li>
<li>[Fix] handling of reactivation notifications if admin activation is enabled (Bug #145)</li>
<li>[Fix] handling of both forms of translation information used in language packs (Bug #159)</li>
<li>[Fix] key length for activation keys fixed in usercp_sendpassword.php (Bug #171)</li>
<li>[Fix] use GENERAL_MESSAGE constant in message_die instead of MESSAGE (Bug #176)</li>
<li>[Fix] incorrect handling of move stubs (Bug #179)</li>
<li>[Fix] wrong mode_type in memberlist (Bug #187)</li>
<li>[Fix] SQL errors when setting maximum PMs to 0 (Bug #188)</li>
<li>[Fix] removed unused variable from topic_notify email template (Bug #210)</li>
<li>[Fix] removed unset variable from smilies popup window title (Bug #224)</li>
<li>[Fix] removed duplicate template assignment from admin_board.php (Bug #226)</li>
<li>[Fix] incorrect search link for guest posts in modcp.php (Bug #254)</li>
<li>[Fix] all users removed from topics watch table on special occassions (Bug #271)</li>
<li>[Fix] correctly check returned value from strpos in append_sid function (Bug #275)</li>
<li>[Fix] correctly display username in private message notification (Bug #278)</li>
<li>[Fix] fixed "var-by-ref" errors (Bug #322)</li>
<li>[Fix] changed redirection to installation (Bug #325)</li>
<li>[Fix] added timout of 10 seconds to version check (Bug #348)</li>
<li>[Fix] fixed user_level default in postgresql schema file (Bug #444)</li>
<li>[Fix] multiple minor HTML issues with subSilver</li>
<li>[Change] deprecated the use of some PHP 3 compatability functions in favour of the native equivalents</li>
<li>[Change] added 60 days limit for grabbing unread topics in index.php</li>
<li>[Sec] backport of session keys system from olympus</li>
<li>[Sec] fixed email bans to use the same pattern as email validation and allow wildcard domain bans</li>
<li>[Sec] fixed validation of topic type when posting</li>
<li>[Sec] unset database password once it is no longer needed</li>
<li>[Sec] fixed potential to select images outside the specified path as avatars or smilies</li>
<li>[Sec] fix globals de-registration code for PHP5 - (Stefan Esser/Matt Kavanagh)</li>
<li>[Sec] changed avatar gallery code sections to prevent possible injection points (AnthraX101)</li>
<li>[Sec] signature field is not properly sanitised for user input when an error occurs while accessing the avatar gallery (AnthraX101)</li>
<li>[Sec] check to_username and ownership when editing a PM (AnthraX101)</li>
<li>[Sec] fixed ability to edit PM's you did not send (depablo84)</li>
<li>[Sec] compare imagetype on avatar uploading to match the file extension from uploaded file</li>
</ul>
<a name="2016"></a><h3 class="h3">l.viii. Changes since 2.0.16</h3>
<ul>
<li>Added extra checks to the deletion code in privmsg.php - reported by party_fan</li>
<li>Fixed XSS issue in IE using the url BBCode</li>
<li>Fixed admin activation so that you must have administrator rights to activate accounts in this mode - reported by ieure</li>
<li>Fixed get_username returning wrong row for usernames beginning with numerics - reported by Ptirhiik</li>
<li>Pass username through phpbb_clean_username within validate_username function - AnthraX101</li>
<li>Fixed PHP error in message_die function</li>
<li>Fixed incorrect generation of {postrow.SEARCH_IMG} tag in viewtopic.php - reported by Double_J</li>
<li>Also fixed above issue in usercp_viewprofile.php</li>
<li>Fixed incorrect setting of user_level on pending members if a group is granted moderator rights - reported by halochat</li>
<li>Fixed ordering of forums on admin_ug_auth.php to be consistant with other pages</li>
<li>Correctly set username on posts when deleting a user from the admin panel</li>
</ul>
<a name="2015"></a><h3 class="h3">l.ix. Changes since 2.0.15</h3>
<ul>
<li>Fixed critical issue with highlighting - <b>Discovered and fix provided by Ron van Daal</b></li>
<li>Url descriptions able to be wrapped over more than one line again</li>
<li>Fixed bug with eAccelerator in admin_ug_auth.php</li>
<li>Check new_forum_id for existence in modcp.php - <b>alessnet</b></li>
<li>Prevent uploading avatars with no dimensions - <b>Xpert</b></li>
<li>Fixed bug in usercp_register.php, forcing avatar file removal without updating avatar informations within the database - <b>HenkPoley</b></li>
<li>Fixed bug in admin re-authentication redirect for servers not having index.php as one of their default files set</li>
</ul>
<a name="2014"></a><h3 class="h3">l.x. Changes since 2.0.14</h3>
<ul>
<li>Fixed moderator status removal in groupcp.php</li>
<li>Removed newlines after ?&gt; on some files - <b>Thoul</b></li>
<li>Added admin re-authentication (admin needs to login seperatly to access the ACP) - backported from Olympus</li>
<li>Fixed vulnerability in url/bbcode handling functions - <b>PapaDos and Paul/Zhen-Xjell from CastleCops</b></li>
<li>Fixed issue in admin/admin_forums.php</li>
<li>Suppressed warning message for fsockopen in /includes/smtp.php - <b>Thoul</b></li>
<li>Fixed bug in admin/admin_smilies.php (admin is able to add empty smilies) - <b>Exy</b></li>
<li>Adjusted documents to reflect the urgent need to update the files too (not only running the database update script)</li>
<li>Updated the readme file</li>
<li>Added one new language variable</li>
<li>Added general error if accessing profile for a non-existent user</li>
<li>Changed session id generation to be more unique - <b>Henno Joosep</b></li>
<li>Fixed bug in highlight code to escape characters correctly</li>
<li>Reversed the 2.0.14 fix for postgresql because it produced more problems than it solves.</li>
<li>Added reference to article written by R45 about case-sensitivity in postgreSQL to the readme file</li>
<li>Fixed bypassing of validate_username on registration - Yen</li>
<li>Empty url/img bbcodes no longer get parsed</li>
</ul>
<a name="2013"></a><h3 class="h3">l.xi. Changes since 2.0.13</h3>
<ul>
<li>Hardened author and keyword search a bit to not allow very server intensive searches</li>
<li>Fixed full path disclosure in bad word parsing</li>
<li>Resetting complete userdata array in session code if authentication fails</li>
<li>Fixed bug in moderator control panel where certain parameters could lead to an "error creating new session" sql error</li>
<li>Fixed bug in session code where empty page ids could lead to an "error creating new session" sql error</li>
<li>Fixed html handling in signatures if html is turned off globally</li>
<li>Fixed install.php problem with PHP5 register_long_arrays option turned off</li>
<li>Fixed potential issues with styling system</li>
<li>Added correct class to login_body template file</li>
<li>Removed file db/oracle.php from package</li>
<li>Removed version number from message body page in /admin (if user is not an admin) - <b>mikelbeck</b></li>
<li>Fixed case-sensitivity issues in postgres7.php - <b>R45</b></li>
</ul>
<a name="2012"></a><h3 class="h3">l.xii. Changes since 2.0.12</h3>
<ul>
<li>Ommitted preg_replace warning in viewtopic due to improper working of preg_quote in PHP - originally reported by matrix_killer, fix submitted by another party</li>
<li>Fixed high severity issue in session handling allowing everyone gaining administrator rights. Please update as soon as possible.</li>
<li>Minimum requirements raised to PHP 4.0.3 or above due to fixing vulnerability issues breaking PHP3 compatibility.</li>
</ul>
<a name="2011"></a><h3 class="h3">l.xiii. Changes since 2.0.11</h3>
<ul>
<li>Added confirm table to admin_db_utilities.php</li>
<li>Prevented full path display on critical messages</li>
<li>Fixed full path disclosure in username handling caused by a PHP 4.3.10 bug - <b>AnthraX101</b></li>
<li>Added exclude list to unsetting globals (if register_globals is on) - <b>SpoofedExistence</b></li>
<li>Fixed arbitrary file disclosure vulnerability in avatar handling functions - <b>AnthraX101</b></li>
<li>Fixed arbitrary file unlink vulnerability in avatar handling functions - <b>AnthraX101</b></li>
<li>Removed version number from powered by line</li>
<li>Merged database update files to update_to_latest.php file</li>
<li>Fixed path disclosure bug in search.php caused by a PHP 4.3.10 bug (related to AnthraX101's discovery)</li>
<li>Fixed path disclosure bug in viewtopic.php caused by a PHP 4.3.10 bug - <b>matrix_killer</b></li>
</ul>
<a name="2010"></a><h3 class="h3">l.xiv. Changes since 2.0.10</h3>
<ul>
<li>Fixed vulnerability in highlighting code (<b>very high severity, please update your installation as soon as possible</b>)</li>
<li>Fixed unsetting global vars - <b>Matt Kavanagh</b></li>
<li>Fixed XSS vulnerability in username handling - <b>AnthraX101</b></li>
<li>Fixed not confirmed sql injection in username handling - <b>warmth</b></li>
<li>Added check for empty topic id in topic_review function</li>
<li>Added visual confirmation mod to code base</li>
</ul>
<a name="209"></a><h3 class="h3">l.xv. Changes since 2.0.9</h3>
<ul>
<li>Fixed deleting of styles in admin_styles.php</li>
<li>Fixed wrong unsetting of variables introduced in phpBB 2.0.9, making the board non-functional for users with specific php.ini settings</li>
<li>Added code to let phpBB work with PHP5 for those having register_long_arrays set to off (default settings) - running phpBB 2.0.x with PHP5 is not supported at http://www.phpbb.com.</li>
<li>Fixed bug in admin_board.php for board settings having single quotes in it</li>
<li>Fixed "search by author" in search.php. Now it is possible to search for users with special chars in their name too</li>
<li>Fixed forum jumpbox propagating session id in moderator control pages</li>
<li>Added check for newlines at redirecting pages, to prevent http response splitting attacks - <b>Ory Segal and Amit Klein</b></li>
<li>Fixed visual confirmation code. The image was not created due to a wrong regular expression.</li>
</ul>
<a name="208"></a><h3 class="h3">l.xvi. Changes since 2.0.8</h3>
<ul>
<li>Fixed one vulnerability in admin_board.php - <b>Xore</b></li>
<li>Added checking for proper session id characters to sessions and viewtopic to prevent injections - <b>Bartlomiej Korupczynski</b></li>
<li>Fixed injection vulnerabilities possible with linked avatars</li>
<li>Implemented unsetting globalised variables</li>
<li>Limited confirm switch to POST variable in posting</li>
<li>Changed IP code in common.php to prevent IP spoofing, which might introduce some problems with private IP Ranges showing up. - <b>Wang Products</b></li>
<li>Updated visual confirmation mod [pre-edited files]</li>
<li>Moved obtaining word censors in modcp out of topic generation loop [increased performance/lower query count] - spotted by <b>R45</b></li>
<li>Added the ability to link to https/ftps sites using the img bbcode tag</li>
<li>Fixed user online information in admin/index.php</li>
<li>Fixed getting group moderator in groupcp.php if running oracle backend - spotted by <b>pakman</b></li>
<li>Fixed use of non-existing result variable in modcp (poster_id instead of user_id)</li>
<li>Fixed several vulnerabilities (XSS, SQL Injection and path disclosure) only possible with register_globals enabled - <b>Matthew C. Kavanagh, Janek Vind</b></li>
<li>Fixed problem with SID not delivered to next page in groupcp.php</li>
</ul>
<a name="207"></a><h3 class="h3">l.xvii. Changes since 2.0.7</h3>
<ul>
<li>Fixed several vulnerabilities in admin pages</li>
<li>Fixed sid checking code in admin/pagestart.php</li>
<li>Fixed injection vulnerabilities possible with the img bbcode tag</li>
<li>Limited allowed images in img bbcode tag to jpg, jpeg, gif and png</li>
<li>Fixed redirect problems - 2.0.7a</li>
<li>Fixed sql injection vulnerability in search - 2.0.7a</li>
<li>Fixed sql injection vulnerability in privmsg - 2.0.8a</li>
</ul>
<a name="206"></a><h3 class="h3">1.xviii. Changes since 2.0.6</h3>
<ul>
<li>Fixed several vulnerabilities in modcp - <b>Robert Lavierck</b></li>
<li>Changed whois lookup address within admin index</li>
<li>Fixed potential vulnerability in viewtopic postorder - 2.0.6d</li>
<li>Updates to cope with Zend Optimizer 2.5 problems - 2.0.6d - <b>jetset</b></li>
<li>Force specialcharing of redirect variable in login - <b>Pit</b></li>
<li>Fixed potential vulnerability in viewtopic postdays - <b>GulfTech Security Research</b></li>
<li>Fixed potential vulnerability in viewforum topicdays - <b>GulfTech Security Research</b></li>
<li>Fixed potential vulnerability in modcp</li>
<li>Fixed potential vulnerability in avatar gallery</li>
</ul>
<a name="205"></a><h3 class="h3">1.xix. Changes since 2.0.5</h3>
<ul>
<li>Fixed various email issues</li>
<li>Fixed registration email bug with Administrator Confirmation used</li>
<li>Fixed mass emailer</li>
<li>Fixed long post time issue</li>
<li>Fixed bug with usernames containing single quotes</li>
<li>Fixed word list bug - Word boundaries were not considered</li>
<li>Fixed vulnerability in style admin</li>
<li>Fixed sql injection vulnerability in viewtopic</li>
<li>Fixed vulnerability allowing server side variable access in search - <b>tendor</b></li>
<li>Fixed potential vulnerability in 2.0.5 login username entry - <b>throw away/eomer</b></li>
<li>Fixed sql injection with reset date format field in profile - <b>tendor</b></li>
</ul>
<a name="204"></a><h3 class="h3">1.xx. Changes since 2.0.4</h3>
<ul>
<li>Removed user facing session_id checks</li>
@@ -122,7 +474,7 @@ p,ul,td {font-size:10pt;}
<li>Default English support for visual confirmation - translators are encouraged to support this</li>
</ul>
<a name="203"></a><h3 class="h3">1.ii. Changes since 2.0.3</h3>
<a name="203"></a><h3 class="h3">1.xxi. Changes since 2.0.3</h3>
<ul>
<li>Fixed cross-browser scripting issue with highlight param</li>
@@ -249,7 +601,7 @@ p,ul,td {font-size:10pt;}
<li>Fixed potential SQL vulnerability with marking of private messages - <b>Ulf Harnhammar</b></li>
</ul>
<a name="202"></a><h3 class="h3">1.iii. Changes since 2.0.2</h3>
<a name="202"></a><h3 class="h3">1.xxii. Changes since 2.0.2</h3>
<ul>
<li>Fixed potential cross-site scripting vulnerability with avatars - <b>Showscout</b></li>
@@ -258,7 +610,7 @@ p,ul,td {font-size:10pt;}
<li>Fixed (hopefully) issue with MS Access and multiple pages</li>
</ul>
<a name="201"></a><h3 class="h3">1.iv. Changes since 2.0.1</h3>
<a name="201"></a><h3 class="h3">1.xxiii. Changes since 2.0.1</h3>
<ul>
<li>Fixed missing "username" lang variable in user admin template</li>
@@ -293,7 +645,7 @@ p,ul,td {font-size:10pt;}
<li>Fix emailer to allow sending emails with language-specific character sets</li>
</ul>
<a name="200"></a><h3 class="h3">1.v. Changes since 2.0.0</h3>
<a name="200"></a><h3 class="h3">1.xxiv. Changes since 2.0.0</h3>
<ul>
<li>Fixed delete image bug for normal users</li>
@@ -350,7 +702,7 @@ p,ul,td {font-size:10pt;}
<li>Added database closure to admin frameset page</li>
</ul>
<a name="final"></a><h3 class="h3">1.vi. Changes since RC-4</h3>
<a name="final"></a><h3 class="h3">1.xxv. Changes since RC-4</h3>
<ul>
<li>Fixed improper report of general error when posting messages containing errors</li>
@@ -380,7 +732,7 @@ p,ul,td {font-size:10pt;}
<li>Fixed various remaining usergroup display issues</li>
</ul>
<a name="rc4"></a><h3 class="h3">1.vii. Changes since RC-3</h3>
<a name="rc4"></a><h3 class="h3">1.xxvi. Changes since RC-3</h3>
<ul>
<li>Addressed serious security issue with included files</li>
@@ -411,7 +763,7 @@ p,ul,td {font-size:10pt;}
<li>Fix (hopefully) remaining ICQ overlay issue with view profile in subSilver</li>
</ul>
<a name="rc3"></a><h3 class="h3">1.viii. Changes since RC-2</h3>
<a name="rc3"></a><h3 class="h3">1.xxvii. Changes since RC-2</h3>
<ul>
<li>Fixed infamous install parse error</li>
@@ -444,7 +796,7 @@ p,ul,td {font-size:10pt;}
<li>Hidden usergroups are now completely hidden from view</li>
</ul>
<a name="rc2"></a><h3 class="h3">1.ix. Changes since RC-1</h3>
<a name="rc2"></a><h3 class="h3">1.xxviii. Changes since RC-1</h3>
<ul>
<li>Fixed numerous PostgreSQL related issues</li>
@@ -464,7 +816,7 @@ p,ul,td {font-size:10pt;}
<li>Various other fixes and updates</li>
</ul>
<a name="rc1"></a><h3 class="h3">1.x. Changes since RC-1 (pre)</h3>
<a name="rc1"></a><h3 class="h3">1.xxix. Changes since RC-1 (pre)</h3>
<ul>
<li>Upgrade script completed for initial fully functional release</li>

View File

@@ -28,6 +28,7 @@ h3 {font-size:12pt;}
</tr>
</table>
<!-- BEGIN DOCUMENT -->
<p>This is a very basic Frequently Asked Questions (FAQ) page which attempts to answer some of the more commonly asked questions. It is by no means exhaustive and should be used in combination with the 'built-in' User FAQ within phpBB2, the community forums (particularly the Tutorials forum) and our IRC channel (see <a href="README.html">README</a> for details).</p>
<ol>
@@ -161,21 +162,23 @@ h3 {font-size:12pt;}
<p>If you want to allow your users to make use of HTML in posts you need to do two things. Firstly enable HTML in Admin -> General -> Configuration. Secondly to need to make sure that the tags your users will post are in the Allowed HTML Tags field (again Admin -> General -> Configuration). If users post using tags not on this list they won't be displayed as HTML! eg. to enable someone to post Flash you could add the embed tag to this field. Be careful which tags you allow, it is very easy to break the boards own output if the wrong tags are used in posts. </p></p></li>
<li><b>Can I suggest a feature for phpBB 2.2?</b>
<li><b>Can I suggest a feature for phpBB 3.0?</b>
<p>Yes you most certainly can, phpBB 2.0.0 is now feature frozen and only bug fix releases will be made from this line. However, work has already started on the next release of phpBB, phpBB 2.2. We already have a number of features in mind and these are listed on our task manager:</p>
<p>No, the feature list for phpBB 3.0 is now frozen and no new features will be added to that list. At the moment we do not accept new feature requests.</p>
<!--
You may however add requests for the next release after that, 3.2, in our feature tracker:</p>
<p><a href="http://sourceforge.net/pm/task.php?group_project_id=13524&group_id=7885&func=browse" target="_tasks">http://sourceforge.net/pm/task.php?group_project_id=13524&group_id=7885&func=browse</a>.</p>
<p><a href="http://sourceforge.net/tracker/?atid=580201&group_id=7885&func=browse" target="_new">http://sourceforge.net/tracker/?atid=580201&group_id=7885&func=browse</a></p>
<p>Some of these features will also be discussed on forums at <a href="http://www.phpbb.com/phpBB/">http://www.phpbb.com/phpBB/</a>.</p>
<p>To suggest a feature first consult the task list mentioned above, if your idea is already listed then the chances are good that it will appear in 2.2. If your suggestion is not listed please submit it to our feature request tracker:</p>
<p><a href="http://sourceforge.net/tracker/index.php?group_id=7885&atid=357885" target="_features">http://sourceforge.net/tracker/index.php?group_id=7885&atid=357885</a>.</p>
<p>Before submitting please read through the already present suggestions, if one matches or is similar to yours please add to it rather than creating a new entry.</p>
<p>Before submitting your idea please <b>ensure</b> you have read through the entries in that list. If your idea is similar to an existing one please feel free to add a comment to it. Please <b>do not</b> submit duplicate suggestions!</p>
<p>We make no promises to the inclusion of features but we will endeavour to introduce the most requested or most interesting ones.</p></li>
//-->
<p>If you wish to follow the progress of phpBB 3.0 you may like to visit our development forum to see how things are progressing:</p>
<p><a href="http://area51.phpbb.com/phpBB/" target="_new">http://area51.phpbb.com/phpBB/</a></p>
<p>Please note that this forum should <b>NOT</b> be used to obtain support for or ask questions about phpBB 2.0.x, the main community forums are the place for this. Any such posts will be locked and go unanswered.</p>
<li><b>Why is phpBB 1.x faster than phpBB 2.0?</b>
@@ -193,6 +196,7 @@ Feel free to search our community forum for the information you require. <b>PLEA
<h2><u>Copyright and disclaimer</u></h2>
<p>This application is opensource software released under the <a href="http://www.gnu.org/licenses/gpl.html" target="_new">GPL</a>. Please see source code and the Docs directory for more details. This package and its contents are Copyright <20> 2002 <a href="http://www.phpbb.com/" target="_new">phpBB Group</a>, All Rights Reserved.</p>
<!-- END DOCUMENT -->
</td>
</tr>

View File

@@ -3,7 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>phpBB 2.0.5 :: Install</title>
<title>phpBB 2.0.x :: Install</title>
<link rel="stylesheet" href="../templates/subSilver/subSilver.css" type="text/css">
<style type="text/css">
<!--
@@ -24,7 +24,7 @@ p,ul,td {font-size:10pt;}
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="../templates/subSilver/images/logo_phpBB.gif" border="0" alt="phpBB 2 : Creating Communities" vspace="1" /></a></td>
<td align="center" width="100%" valign="middle"><span class="maintitle">phpBB 2.0.5 INSTALL</span></td>
<td align="center" width="100%" valign="middle"><span class="maintitle">phpBB 2.0.x INSTALL</span></td>
</tr>
</table>
@@ -33,7 +33,7 @@ p,ul,td {font-size:10pt;}
<p>Please note these instructions are not fully comprehensive, a more thorough userguide will be available on the phpBB website in the near future. However, this document will walk you through the basics on installing the forum software.</p>
<p>A basic overview of running phpBB 2.0.5 can be found in the accompanying <a href="README.html">README</a> documentation. Please ensure you read that document in addition to this! For more detailed information on using phpBB 2 you should read <a href="http://www.phpbb.com/guide/phpBB_Users_Guide.html" target="_new">Userguide</a> now available online.</p>
<p>A basic overview of running phpBB 2.0.x can be found in the accompanying <a href="README.html">README</a> documentation. Please ensure you read that document in addition to this! For more detailed information on using phpBB 2 you should read <a href="http://www.phpbb.com/support/guide/" target="_new">Userguide</a> now available online.</p>
<ol>
<li><a href="#quickinstall">Quick Install</a></li>
@@ -88,7 +88,7 @@ p,ul,td {font-size:10pt;}
<a name="require"></a><h2 class="h2"><u>2. Requirements</u></h2>
<p>Installation of phpBB 2.0.5 requires the following:</p>
<p>Installation of phpBB2 requires the following:</p>
<ul>
<li>A webserver or web hosting account running on any major Operating System</li>
<li>A SQL database system, <b>one of</b>:
@@ -99,7 +99,7 @@ p,ul,td {font-size:10pt;}
<li>MS Access (2000 or XP) via ODBC</li>
</ul>
</li>
<li>PHP (3.0.9 and above or preferably a recent 4.x) with support for the database you intend to use above</li>
<li>PHP (4.0.3 and above) with support for the database you intend to use above</li>
</ul>
<p>If your server or hosting account does not meet the requirements above I am afraid phpBB 2.0 is not for you.</p>
@@ -170,11 +170,11 @@ p,ul,td {font-size:10pt;}
<p>Upgrading from these versions is generally quite easy. First you should make a copy of your existing <u>config.php</u>, keep it in a safe place! Next delete all the existing phpBB 2 files, do not leave any in place otherwise you may encounter errors later. You can leave alternative templates in-place but you should note they may not function correctly with the final release. It is therefore recommended you switch back to subSilver if you are currently using a different style. With this complete you can upload the new phpBB 2.0.0 files (see <a href="#install">New Installations</a> for details if necessary). Once complete copy back your saved <u>config.php</u>, replacing the new one.</p>
<p>You should now run <b>install/update_to_205.php</b> which, depending on your previous version, will make a number of database changes. You may receive <u>FAILURES</u> during this procedure, they should not be a cause for concern unless you see an actual <u>ERROR</u>, in which case the script will stop (in this case you should seek help via our forums or bug tracker).</p>
<p>You should now run <b>install/update_to_latest.php</b> which, depending on your previous version, will make a number of database changes. You may receive <u>FAILURES</u> during this procedure, they should not be a cause for concern unless you see an actual <u>ERROR</u>, in which case the script will stop (in this case you should seek help via our forums or bug tracker).</p>
<p><b>RC-2 and below MSSQL users</b>, please note that during the update procedure your existing forums table will be dropped and re-created. All data in standard fields will be retained. However if you have modified the forums table and added additional fields or altered existing ones these changes <b>WILL</b> be lost. If this is a significant issue for you we advise you comment out the "DROP FORUM TABLE" section in update_to_205.php and instead, manually alter the forum_id column to remove the IDENTITY setting (if it exists).</p>
<p><b>RC-2 and below MSSQL users</b>, please note that during the update procedure your existing forums table will be dropped and re-created. All data in standard fields will be retained. However if you have modified the forums table and added additional fields or altered existing ones these changes <b>WILL</b> be lost. If this is a significant issue for you we advise you comment out the "DROP FORUM TABLE" section in update_to_latest.php and instead, manually alter the forum_id column to remove the IDENTITY setting (if it exists).</p>
<p>Once the update_to_205 has completed you <b>MUST</b> proceed to the Administration General Configuration panel and check all the values in General Configuration. This is essential if you were running any version before RC-3 since extra information needs to be entered to enable correct URLs to be output in emails.</p>
<p>Once the update_to_latest.php has completed you <b>MUST</b> proceed to the Administration General Configuration panel and check all the values in General Configuration. This is essential if you were running any version before RC-3 since extra information needs to be entered to enable correct URLs to be output in emails.</p>
<a name="langtempchanges"></a><h3 class="h3">6.i. Changes in language pack format and templates</h3>
@@ -186,35 +186,37 @@ p,ul,td {font-size:10pt;}
<p><b>MySQL Users Please Note</b>: Changes introduced in 2.0.4 may increase the size of your database, more specifically the search_wordmatch table. There are other changes in that release which are designed to reduce the database size. However these additional changes may not apply to all types of forum (particularly non-English boards). While any increases will be relatively small compared to the overall database size it may be an issue for some users. In particular users on hosting plans which limit database size and where the database is near that limit.</p>
<a name="#upgradeSTABLE_full"></a><h3 class="h3">7.i. Full package</h3>
<p><b>Please make sure you update your phpBB2 source files too, even if you run the update_to_latest.php file.</b></p>
<a name="upgradeSTABLE_full"></a><h3 class="h3">7.i. Full package</h3>
<p>If you have downloaded the full package you should follow the same general upgrade path as for "<a href="#upgradeRC">Upgrade from previous Release Candidate versions of phpBB 2</a>". The exception to this being the need to switch or update styles. In addition there is generally little need to visit the admin panel (though it is adviseable).</p>
<a name="#upgradeSTABLE_files"></a><h3 class="h3">7.ii. Changed files only</h3>
<a name="upgradeSTABLE_files"></a><h3 class="h3">7.ii. Changed files only</h3>
<p>This package contains a number of archives, each contains the files changed from a given release to 2.0.5. You should select the appropriate archive for your current version, e.g. if you currently have 2.0.4 you should select the phpBB-2.0.4_to_2.0.5.zip/tar.gz file.</p>
<p>This package contains a number of archives, each contains the files changed from a given release to the latest version. You should select the appropriate archive for your current version, e.g. if you currently have 2.0.22 you should select the phpBB-2.0.22_to_2.0.23.zip/tar.gz file.</p>
<p>The directory structure has been preserved enabling you (if you wish) to simply upload the contents of the archive to the appropriate location on your server, i.e. simply overwrite the existing files with the new versions. Do not forget that if you have installed any Mods these files will overwrite the originals possibly destroying them in the process. You will need to re-add Mods to any affected file before uploading.</p>
<p>As for the other upgrade procedures you should run <b>install/update_to_205.php</b> after you have finished updating the files. This will update your database schema and data (if appropriate) and increment the version number.</p>
<p>As for the other upgrade procedures you should run <b>install/update_to_latest.php</b> after you have finished updating the files. This will update your database schema and increment the version number.</p>
<a name="#upgradeSTABLE_patch"></a><h3 class="h3">7.iii. Patch file</h3>
<a name="upgradeSTABLE_patch"></a><h3 class="h3">7.iii. Patch file</h3>
<p>The patch file is probably the best solution for those with many Mods or other changes who do not want to re-add them back to all the changed files. To use this you will need command line access to a standard UNIX type <b>patch</b> application.</p>
<p>A number of patch files are provided to allow you to upgrade from previous stable releases. Select the correct patch, e.g. if your current version is 2.0.2 you need the phpBB-2.0.2_to_2.0.5.patch. Place the correct patch in the parent directory containing the phpBB 2 core files (i.e. index.php, viewforum.php, etc.). With this done you should run the following command: <b>patch -cl -d [PHPBB DIRECTORY] -p1 &lt; [PATCH NAME]</b> (where PHPBB DIRECTORY is the directory name your phpBB Installation resides in, for example phpBB2, and where PATCH NAME is the relevant filename of the selected patch file). This should complete quickly, hopefully without any HUNK FAILED comments.</p>
<p>A number of patch files are provided to allow you to upgrade from previous stable releases. Select the correct patch, e.g. if your current version is 2.0.22 you need the phpBB-2.0.22_to_2.0.23.patch. Place the correct patch in the parent directory containing the phpBB 2 core files (i.e. index.php, viewforum.php, etc.). With this done you should run the following command: <b>patch -cl -d [PHPBB DIRECTORY] -p1 &lt; [PATCH NAME]</b> (where PHPBB DIRECTORY is the directory name your phpBB Installation resides in, for example phpBB2, and where PATCH NAME is the relevant filename of the selected patch file). This should complete quickly, hopefully without any HUNK FAILED comments.</p>
<p>If you do get failures you should look at using the <a href="#upgradeSTABLE_files">Changed files only</a> package to replace the files which failed to patch, please note that you will need to manually re-add any Mods to these particular files. Alternatively if you know how you can examine the .rej files to determine what failed where and make manual adjustments to the relevant source.</p>
<p>You should of course delete the patch file (or files) after use. As for the other upgrade procedures you should run <b>install/update_to_205.php</b> after you have finished updating the files. This will update your database schema and data (if appropriate) and increment the version number.</p>
<p>You should of course delete the patch file (or files) after use. As for the other upgrade procedures you should run <b>install/update_to_latest.php</b> after you have finished updating the files. This will update your database schema and data (if appropriate) and increment the version number.</p>
<a name="#upgradeSTABLE_all"></a><h3 class="h3">7.iv. All package types</h3>
<a name="upgradeSTABLE_all"></a><h3 class="h3">7.iv. All package types</h3>
<p>If you have non-English language packs installed you may want to see if a new version has been made available. A number of missing strings have been added which, though not essential, may be beneficial to users. Please note that at this time not all language packs have been updated so you should be prepared to periodically check for updates.</p>
<a name="postinstall"></a><h2 class="h2"><u>8. Important (security related) post-Install tasks for all installation methods</u></h2>
<p>Once you have succssfully installed phpBB 2.0.5 you <b>MUST</b> ensure you remove the entire install/ and contrib/ directories. Leaving these in place is a <u>very serious potential security issue</u> which may lead to deletion or alteration of files, etc. Please note that until these directories are remove phpBB2 will not operate and a warning message will be displayed. Beyond these <b>essential</b> deletions you may also wish to delete the docs/ directories if you wish.</p>
<p>Once you have succssfully installed phpBB 2.0.x you <b>MUST</b> ensure you remove the entire install/ and contrib/ directories. Leaving these in place is a <u>very serious potential security issue</u> which may lead to deletion or alteration of files, etc. Please note that until these directories are remove phpBB2 will not operate and a warning message will be displayed. Beyond these <b>essential</b> deletions you may also wish to delete the docs/ directories if you wish.</p>
<p>With these directories deleted you should proceed to the administration panel. Depending on how the installation completed you may have been directed there automatically. If not, login as the administrator you specified during install/upgrade and click the "<b>Administration Panel</b>" link at the bottom of any page. Ensure that details specified in General -> Configuration are correct!</p>
@@ -232,7 +234,7 @@ p,ul,td {font-size:10pt;}
<a name="safemode"></a><h3 class="h3">8.ii. Safe Mode</h3>
<p>phpBB 2.0.5 includes support for using uploadable avatars on systems running PHP in safe mode. If this applies to your hosting service you will need to create a sub-directory called <u>tmp</u> in the directory you specified for storage of uploaded avatars (by default this is images/avatars as explained above). Give it the same access rights as for uploadable avatars above.</p>
<p>phpBB 2.0.x includes support for using uploadable avatars on systems running PHP in safe mode. If this applies to your hosting service you will need to create a sub-directory called <u>tmp</u> in the directory you specified for storage of uploaded avatars (by default this is images/avatars as explained above). Give it the same access rights as for uploadable avatars above.</p>
<p>This safe mode support includes compatibility with various directory restrictions your host may impose (assuming they are not too restrictive and that the PHP installed is version 4.0.3 or later). There is generally no need for any manual setup for safe mode support it is typically handled transparantly.</p>

View File

@@ -3,7 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>phpBB 2.0.5 :: Readme</title>
<title>phpBB 2.0.x :: Readme</title>
<link rel="stylesheet" href="../templates/subSilver/subSilver.css" type="text/css" />
<style type="text/css">
<!--
@@ -24,7 +24,7 @@ p,ul,td {font-size:10pt;}
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="../templates/subSilver/images/logo_phpBB.gif" border="0" alt="phpBB 2 : Creating Communities" vspace="1" /></a></td>
<td align="center" width="100%" valign="middle"><span class="maintitle">phpBB 2.0.5 README</span></td>
<td align="center" width="100%" valign="middle"><span class="maintitle">phpBB 2.0.x README</span></td>
</tr>
</table>
@@ -62,7 +62,7 @@ p,ul,td {font-size:10pt;}
<p>Installation and upgrade instructions can be found in the <a href="INSTALL.html">INSTALL</a> document contained in this distribution. If you are intending to upgrade from a previous phpBB 1.4.x installation we highly recommend you backup any existing data before proceeding!</p>
<p><b>Please note</b> that users of Release Candidate (RC) versions of phpBB 2 should run the update_to_205.php script <b>BEFORE</b> attempting to access your board. Failing to do so may result in errors and unexpected behaviour! While these won't do any damage they will prevent you using your board.</p>
<p><b>Please note</b> that users of Release Candidate (RC) versions of phpBB 2 should run the update_to_latest.php script <b>BEFORE</b> attempting to access your board. Failing to do so may result in errors and unexpected behaviour! While these won't do any damage they will prevent you using your board.</p>
<p>If you are using RC-1 (pre) you may find some other DB changes have occured and should examine the schemas to see if your installation requires any modifications (note that most of these have already been discussed on the phpBB 2 forums and are handled by the update script). If you are uncomfortable doing any of this we recommend you re-install (you may backup your existing data if you wish, re-install phpBB 2 and then insert your backup).</p>
@@ -84,7 +84,7 @@ p,ul,td {font-size:10pt;}
<p>If your language is not available please visit our forums where you will find a topic listing translations currently available or in preparation. This topic also gives you information should you wish to volunteer to translate a language not currently listed</p>
<p><b>Please note</b> that users who have upgraded to 2.0.5 from versions prior to RC-3 should will <b>need</b> to download new versions of the language/subSilver image packs. Any package downloaded prior to the availability of RC-3 will <b>not</b> function correctly with this version of phpBB 2.</p>
<p><b>Please note</b> that users who have upgraded to the latest version from versions prior to RC-3 should will <b>need</b> to download new versions of the language/subSilver image packs. Any package downloaded prior to the availability of RC-3 will <b>not</b> function correctly with this version of phpBB 2.</p>
<p>If you have upgraded from 2.0.0 and make use of non-English language packs you will benefit from downloading updated versions which will become available shortly. These introduce a number of strings which went missing from the first version plus a few updates and additions.</p>
@@ -116,7 +116,7 @@ p,ul,td {font-size:10pt;}
<p>A comprehensive userguide is now available online and can be accessed from the following location:</p>
<p><a href="http://www.phpbb.com/guide/phpBB_Users_Guide.html" target="_new">http://www.phpbb.com/guide/phpBB_Users_Guide.html</a></p>
<p><a href="http://www.phpbb.com/support/guide/" target="_new">http://www.phpbb.com/support/guide/</a></p>
<p>This covers everything from installation through setting permissions and managing users.</p>
@@ -130,23 +130,19 @@ p,ul,td {font-size:10pt;}
<a name="irc"></a><h3 class="h3">3.iii Internet Relay Chat</h3>
<p>Another place you may find help is our IRC channel. This operates on the Openprojects IRC network, <b>irc.openprojects.net</b> and the channel is <b>#phpbb</b> and can be accessed by any good IRC client such as mIRC, XChat, etc. Again, please do not abuse this service and be respectful of other users.</p>
<p>Another place you may find help is our IRC channel. This operates on the Freenode IRC network, <b>irc.freenode.net</b> and the channel is <b>#phpbb</b> and can be accessed by any good IRC client such as mIRC, XChat, etc. Again, please do not abuse this service and be respectful of other users.</p>
<a name="status"></a><h2 class="h2"><u>4. Status of this version</u></h2>
<p>This is the second stable release of phpBB 2. The 2.0.x line is essentially feature frozen, point releases will see only bugs and such like fixed. Our next major release will be phpBB 2.2 and work is progressing on this (the unstable development version is 2.1). Please do not post questions asking when 2.2 will be available, no release date has been set. Feel free to suggest new features for phpBB 2.2, we already have a number of improvements in mind and these can be viewed using our task tracker:</p>
<p>This is the second stable release of phpBB 2. The 2.0.x line is essentially feature frozen, point releases will see only bugs and such like fixed. Our next major release will be phpBB 3.0 and work is progressing on this (the unstable development version is 2.1). Please do not post questions asking when 3.0 will be available, no release date has been set. phpBB 3.0 is now feature frozen, please feel free to suggest new features for phpBB 3.2 using our feature request tracker. We do not guarantee that all these will appear in 3.2 but we will do our best!:</p>
<p><a href="http://sourceforge.net/pm/task.php?group_project_id=13524&group_id=7885&func=browse" target="_new">http://sourceforge.net/pm/task.php?group_project_id=13524&group_id=7885</a></p>
<p>We do not guarantee that all these will appear in 2.2 but we will do our best! If your idea does not appear on this list please visit our feature request list:</p>
<p><a href="http://sourceforge.net/tracker/?atid=357885&group_id=7885&func=browse" target="_new">http://sourceforge.net/tracker/?atid=357885&group_id=7885</a></p>
<p><a href="http://sourceforge.net/tracker/?atid=580201&group_id=7885&func=browse" target="_new">http://sourceforge.net/tracker/?atid=580201&group_id=7885&func=browse</a></p>
<p>Before submitting your idea please <b>ensure</b> you have read through the entries in that list. If your idea is similar to an existing one please feel free to add a comment to it. Please <b>do not</b> submit duplicate suggestions!</p>
<p>For some suggestions we may ask for your feedback via our forums. For those interested in the development of phpBB 2.2 you should keep an eye on the community forums (particularly the Feature Discussion forum) where you may be able to influence the direction we take with certain new features. Finally you may like to visit our development forum to see how things are progressing:</p>
<p>For some suggestions we may ask for your feedback via our forums. For those interested in the development of phpBB 3.0 you should keep an eye on the community forums (particularly the Feature Discussion forum) where you may be able to influence the direction we take with certain new features. Finally you may like to visit our development forum to see how things are progressing:</p>
<p><a href="http://area51.phpbb.com/phpBB 2/" target="_new">http://area51.phpbb.com/phpBB 2/</a></p>
<p><a href="http://area51.phpbb.com/phpBB/" target="_new">http://area51.phpbb.com/phpBB/</a></p>
<p>Please note that this forum should <b>NOT</b> be used to obtain support for or ask questions about phpBB 2.0.x, the main community forums are the place for this. Any such posts will be locked and go unanswered.</p>
@@ -177,9 +173,9 @@ p,ul,td {font-size:10pt;}
<a name="securitybugs"></a><h3 class="h3">5.i. Security related bugs</h3>
<p>If you find a potential security related vulnerability in phpBB 2 please <b>DO NOT</b> post it to the bug tracker, public forums, mailing lists, etc.! Doing so may allow unscrupulous users to take advantage of it before we have time to put a fix in place. All security related bugs should be sent directly to one or more of the developers.</p>
<p>If you find a potential security related vulnerability in phpBB 2 please <b>DO NOT</b> post it to the bug tracker, public forums, mailing lists, etc.! Doing so may allow unscrupulous users to take advantage of it before we have time to put a fix in place. All security related bugs should be sent to our security tracker:</p>
<p>This can be done in one of three ways; email <a href="mailto:security&#64;phpbb.com">security&#64;phpbb.com</a> this is forwarded to all developers, PM one of the developers (see Developer usergroup list for usernames of all developers) or email them directly (either use their listed email address if available or username&#64;phpbb.com where username is their board username). If emailing or PM'ing developers individually please send the message to several and not just one. If you obtain no response in a reasonable timeframe (a day or two) try the other listed developers.</p>
<p><a href="http://www.phpbb.com/security/" target="_new">http://www.phpbb.com/security/</a></p>
<a name="curbugs"></a><h2 class="h2"><u>6. Overview of current bug list</u></h2>
@@ -191,14 +187,19 @@ p,ul,td {font-size:10pt;}
<li>By default cannot post very large messages with MSSQL (this can be configured within MSSQL)</li>
<li>Use of non-latin charsets with MSSQL may result in post data being cropped unexpectedly</li>
<li>Upgrade may fail to complete on large boards under some hosts</li>
<li>PHP 3 compatibility issues remain and we recommend you upgrade to PHP4 as soon as possible ( phpBB 2.0.x will be the last version to support PHP 3 )
<li>Case-sensitivity on usernames and emails with PostgreSQL 7.x. A fix is provided by a user <a href="http://www.phpbb.com/kb/article.php?article_id=201" target="_new">within our knowledge base</a></li>
</ul>
<a name="php"></a><h2 class="h2"><u>7. PHP compatibility issues</u></h2>
<p>phpBB is no longer supported on PHP3 due to several compatibility issues and we recommend that you upgrade to the latest stable release of PHP4 to run phpBB.</p>
<p>Please remember that running any application on a developmental version of PHP can lead to strange/unexpected results which may appear to be bugs in the application (which may not be true). Therefore we recommend you upgrade to the newest stable version of PHP before running phpBB 2. If you are running a developmental version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
<p>This board has been developed and tested under Linux and Windows (amongst others) running IIS and Apache using MySQL 3.23 and 4.0.0, MSSQL Server 2000, MS Access 2000 and XP and PostgreSQL 7.x. Versions of PHP used range from 4.0.6 to 4.2.3 without problem. There may be unconfirmed issues with PHP 4.0.1 including patch level releases. If you experience problems with phpBB and have this PHP version installed it is recommended you upgrade it before posting bug reports.</p>
<p>This board has been developed and tested under Linux and Windows (amongst others) running IIS and Apache using MySQL 3.23 and 4.0.0, MSSQL Server 2000, MS Access 2000 and XP and PostgreSQL 7.x. Versions of PHP used range from 4.0.6 to 4.3.8 without problem. There may be unconfirmed issues with PHP 4.0.1 including patch level releases. If you experience problems with phpBB and have this PHP version installed it is recommended you upgrade it before posting bug reports.</p>
<p>With the recent release of the official version of PHP 5, people and hosts may be switching to the latest PHP version. At this moment, the phpBB Team does not officially support running phpBB on PHP 5, as phpBB2.0.x was not written with PHP 5 in mind. However, many users have reported using it sucessfully on PHP 5 having made a configuration change in PHP to enable support for the deprecated HTTP_*_VARS arrays which is turned off by default in new PHP 5 installations. The relevant configuration option is register_long_arrays and it is decribed in the PHP Manual. phpBB 2.0.x makes use of these arrays in order to maintain backwards compatibility with early versions of PHP 4.x which is part of the original specification.<br />
For this reason we do not support PHP 5 as platform for phpBB. It has been reported working, so you can try it. It's a risk you will be taking though.</p>
<a name="phpsec"></a><h3 class="h3">7.i. Notice on PHP security issues</h3>

View File

@@ -34,6 +34,9 @@ init_userprefs($userdata);
// End session management
//
// Set vars to prevent naughtiness
$faq = array();
//
// Load the appropriate faq file
//
@@ -97,7 +100,7 @@ include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
'body' => 'faq_body.tpl')
);
make_jumpbox('viewforum.'.$phpEx, $forum_id);
make_jumpbox('viewforum.'.$phpEx);
$template->assign_vars(array(
'L_FAQ_TITLE' => $l_title,

View File

@@ -99,9 +99,9 @@ function generate_user_info(&$row, $date_format, $group_mod, &$from, &$posts, &$
$yim_img = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&amp;.src=pg"><img src="' . $images['icon_yim'] . '" alt="' . $lang['YIM'] . '" title="' . $lang['YIM'] . '" border="0" /></a>' : '';
$yim = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&amp;.src=pg">' . $lang['YIM'] . '</a>' : '';
$temp_url = append_sid("search.$phpEx?search_author=" . urlencode($username) . "&amp;showresults=posts");
$search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . $lang['Search_user_posts'] . '" border="0" /></a>';
$search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';
$temp_url = append_sid("search.$phpEx?search_author=" . urlencode($row['username']) . "&amp;showresults=posts");
$search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . sprintf($lang['Search_user_posts'], $row['username']) . '" title="' . sprintf($lang['Search_user_posts'], $row['username']) . '" border="0" /></a>';
$search = '<a href="' . $temp_url . '">' . sprintf($lang['Search_user_posts'], $row['username']) . '</a>';
return;
}
@@ -137,6 +137,7 @@ else
if ( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
{
$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
$mode = htmlspecialchars($mode);
}
else
{
@@ -145,8 +146,9 @@ else
$confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : 0;
$cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : 0;
$sid = ( isset($HTTP_POST_VARS['sid']) ) ? $HTTP_POST_VARS['sid'] : '';
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
$start = ($start < 0) ? 0 : $start;
//
// Default var values
@@ -208,6 +210,10 @@ else if ( isset($HTTP_POST_VARS['joingroup']) && $group_id )
{
redirect(append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true));
}
else if ( $sid !== $userdata['session_id'] )
{
message_die(GENERAL_ERROR, $lang['Session_invalid']);
}
$sql = "SELECT ug.user_id, g.group_type
FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
@@ -219,7 +225,7 @@ else if ( isset($HTTP_POST_VARS['joingroup']) && $group_id )
message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql);
}
if ( $row = $db->sql_fetchrow($result) )
if ( $row = $db->sql_fetchrow($result))
{
if ( $row['group_type'] == GROUP_OPEN )
{
@@ -309,10 +315,15 @@ else if ( isset($HTTP_POST_VARS['unsub']) || isset($HTTP_POST_VARS['unsubpending
{
redirect(append_sid("groupcp.$phpEx", true));
}
elseif ( !$userdata['session_logged_in'] )
else if ( !$userdata['session_logged_in'] )
{
redirect(append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true));
}
else if ( $sid !== $userdata['session_id'] )
{
message_die(GENERAL_ERROR, $lang['Session_invalid']);
}
if ( $confirm )
{
@@ -336,7 +347,7 @@ else if ( isset($HTTP_POST_VARS['unsub']) || isset($HTTP_POST_VARS['unsubpending
message_die(GENERAL_ERROR, 'Could not obtain moderator status', '', __LINE__, __FILE__, $sql);
}
if ( !($row = $db->sql_fetchrow($result)) )
if ( !($row = $db->sql_fetchrow($result)) || $row['is_auth_mod'] == 0 )
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_level = " . USER . "
@@ -361,6 +372,7 @@ else if ( isset($HTTP_POST_VARS['unsub']) || isset($HTTP_POST_VARS['unsubpending
$unsub_msg = ( isset($HTTP_POST_VARS['unsub']) ) ? $lang['Confirm_unsub'] : $lang['Confirm_unsub_pending'];
$s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" /><input type="hidden" name="unsub" value="1" />';
$s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
$page_title = $lang['Group_Control_Panel'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
@@ -417,21 +429,24 @@ else if ( $group_id )
FROM " . AUTH_ACCESS_TABLE . " aa
WHERE aa.group_id = g.group_id
)
)";
)
ORDER BY auth_mod DESC";
break;
case 'oracle':
$sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod
FROM " . GROUPS_TABLE . " g, " . AUTH_ACCESS_TABLE . " aa
WHERE g.group_id = $group_id
AND aa.group_id = g.group_id(+)";
AND aa.group_id (+) = g.group_id
ORDER BY aa.auth_mod DESC";
break;
default:
$sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod
FROM ( " . GROUPS_TABLE . " g
LEFT JOIN " . AUTH_ACCESS_TABLE . " aa ON aa.group_id = g.group_id )
WHERE g.group_id = $group_id";
WHERE g.group_id = $group_id
ORDER BY aa.auth_mod DESC";
break;
}
if ( !($result = $db->sql_query($sql)) )
@@ -456,6 +471,10 @@ else if ( $group_id )
if ( !$userdata['session_logged_in'] )
{
redirect(append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true));
}
else if ( $sid !== $userdata['session_id'] )
{
message_die(GENERAL_ERROR, $lang['Session_invalid']);
}
if ( !$is_moderator )
@@ -471,7 +490,7 @@ else if ( $group_id )
if ( isset($HTTP_POST_VARS['add']) )
{
$username = ( isset($HTTP_POST_VARS['username']) ) ? htmlspecialchars($HTTP_POST_VARS['username']) : '';
$username = ( isset($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
$sql = "SELECT user_id, user_email, user_lang, user_level
FROM " . USERS_TABLE . "
@@ -590,7 +609,7 @@ else if ( $group_id )
$sql_in = '';
for($i = 0; $i < count($members); $i++)
{
$sql_in .= ( ( $sql_in != '' ) ? ', ' : '' ) . $members[$i];
$sql_in .= ( ( $sql_in != '' ) ? ', ' : '' ) . intval($members[$i]);
}
if ( isset($HTTP_POST_VARS['approve']) )
@@ -896,7 +915,7 @@ else if ( $group_id )
generate_user_info($group_moderator, $board_config['default_dateformat'], $is_moderator, $from, $posts, $joined, $poster_avatar, $profile_img, $profile, $search_img, $search, $pm_img, $pm, $email_img, $email, $www_img, $www, $icq_status_img, $icq_img, $icq, $aim_img, $aim, $msn_img, $msn, $yim_img, $yim);
$s_hidden_fields .= '';
$s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
$template->assign_vars(array(
'L_GROUP_INFORMATION' => $lang['Group_Information'],
@@ -1148,6 +1167,8 @@ else
// Select all group that the user is a member of or where the user has
// a pending membership.
//
$in_group = array();
if ( $userdata['session_logged_in'] )
{
$sql = "SELECT g.group_id, g.group_name, g.group_type, ug.user_pending
@@ -1215,6 +1236,7 @@ else
//
// Load and process templates
//
$page_title = $lang['Group_Control_Panel'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
@@ -1242,7 +1264,7 @@ else
$template->assign_block_vars('switch_groups_remaining', array() );
}
$s_hidden_fields = '';
$s_hidden_fields = '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
$template->assign_vars(array(
'L_GROUP_MEMBERSHIP_DETAILS' => $lang['Group_member_details'],

View File

@@ -132,7 +132,6 @@ function auth($type, $forum_id, $userdata, $f_access = '')
$db->sql_freeresult($result);
return array();
}
$db->sql_freeresult($result);
}
@@ -172,6 +171,7 @@ function auth($type, $forum_id, $userdata, $f_access = '')
}
while( $row = $db->sql_fetchrow($result) );
}
$db->sql_freeresult($result);
}
$is_admin = ( $userdata['user_level'] == ADMIN && $userdata['session_logged_in'] ) ? TRUE : 0;
@@ -234,6 +234,7 @@ function auth($type, $forum_id, $userdata, $f_access = '')
{
$value = $f_access[$k][$key];
$f_forum_id = $f_access[$k]['forum_id'];
$u_access[$f_forum_id] = isset($u_access[$f_forum_id]) ? $u_access[$f_forum_id] : array();
switch( $value )
{
@@ -282,6 +283,7 @@ function auth($type, $forum_id, $userdata, $f_access = '')
for($k = 0; $k < count($f_access); $k++)
{
$f_forum_id = $f_access[$k]['forum_id'];
$u_access[$f_forum_id] = isset($u_access[$f_forum_id]) ? $u_access[$f_forum_id] : array();
$auth_user[$f_forum_id]['auth_mod'] = ( $userdata['session_logged_in'] ) ? auth_check_user(AUTH_MOD, 'auth_mod', $u_access[$f_forum_id], $is_admin) : 0;
}

View File

@@ -92,7 +92,7 @@ function prepare_bbcode_template($bbcode_tpl)
$bbcode_tpl['code_open'] = str_replace('{L_CODE}', $lang['Code'], $bbcode_tpl['code_open']);
$bbcode_tpl['img'] = str_replace('{URL}', '\\1', $bbcode_tpl['img']);
$bbcode_tpl['img'] = str_replace('{URL}', '\\1', get_image_tag_replacement($bbcode_tpl));
// We do URLs in several different ways..
$bbcode_tpl['url1'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']);
@@ -105,7 +105,7 @@ function prepare_bbcode_template($bbcode_tpl)
$bbcode_tpl['url3'] = str_replace('{DESCRIPTION}', '\\2', $bbcode_tpl['url3']);
$bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']);
$bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\5', $bbcode_tpl['url4']);
$bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\3', $bbcode_tpl['url4']);
$bbcode_tpl['email'] = str_replace('{EMAIL}', '\\1', $bbcode_tpl['email']);
@@ -115,6 +115,31 @@ function prepare_bbcode_template($bbcode_tpl)
}
/**
* Disables the img tag for privileged pages. It also implements a compability hack for old templates.
*/
function get_image_tag_replacement($bbcode_tpl)
{
global $lang, $HTTP_POST_VARS, $HTTP_GET_VARS;
$bb_tmpl = '';
if (isset($HTTP_POST_VARS['p_sid']))
{
if (isset($bbcode_tpl['p_img']))
{
$bb_tmpl = str_replace('{L_PRIV_IMG}', $lang['Priv_Img'], $bbcode_tpl['p_img']);
}
else
{
$bb_tmpl = $lang['Priv_Img'] . ': {URL}';
}
}
else
{
$bb_tmpl = $bbcode_tpl['img'];
}
return $bb_tmpl;
}
/**
* Does second-pass bbencoding. This should be used before displaying the message in
* a thread. Assumes the message is already first-pass encoded, and we are given the
@@ -124,6 +149,8 @@ function bbencode_second_pass($text, $uid)
{
global $lang, $bbcode_tpl;
$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1&#058;", $text);
// pad it with a space so we can distinguish between FALSE and matching the 1st char (index 0).
// This is important; bbencode_quote(), bbencode_list(), and bbencode_code() all depend on it.
$text = " " . $text;
@@ -194,23 +221,23 @@ function bbencode_second_pass($text, $uid)
// [img]image_url_here[/img] code..
// This one gets first-passed..
$patterns[] = "#\[img:$uid\](.*?)\[/img:$uid\]#si";
$patterns[] = "#\[img:$uid\]([^?](?:[^\[]+|\[(?!url))*?)\[/img:$uid\]#i";
$replacements[] = $bbcode_tpl['img'];
// matches a [url]xxxx://www.phpbb.com[/url] code..
$patterns[] = "#\[url\]([\w]+?://.*?[^ \"\n\r\t<]*?)\[/url\]#is";
$patterns[] = "#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url1'];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url\]((www|ftp)\.([\w\-]+\.)*?[\w\-]+\.[a-z]{2,4}(:?[0-9]*?/[^ \"\n\r\t<]*)?)\[/url\]#is";
$patterns[] = "#\[url\]((www|ftp)\.([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url2'];
// [url=xxxx://www.phpbb.com]phpBB[/url] code..
$patterns[] = "#\[url=([\w]+?://.*?[^ \"\n\r\t<]*?)\](.*?)\[/url\]#is";
$patterns[] = "#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url3'];
// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url=((www|ftp)\.([\w\-]+\.)*?[\w\-]+\.[a-z]{2,4}(:?[0-9]*?/[^ \"\n\r\t<]*)?)\](.*?)\[/url\]#is";
$patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url4'];
// [email]user@domain.tld[/email] code..
@@ -226,14 +253,11 @@ function bbencode_second_pass($text, $uid)
} // bbencode_second_pass()
// Need to initialize the random numbers only ONCE
mt_srand( (double) microtime() * 1000000);
function make_bbcode_uid()
{
// Unique ID for this message..
$uid = md5(mt_rand());
$uid = dss_rand();
$uid = substr($uid, 0, BBCODE_UID_LEN);
return $uid;
@@ -250,7 +274,7 @@ function bbencode_first_pass($text, $uid)
// [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff.
$text = bbencode_first_pass_pda($text, $uid, '[quote]', '[/quote]', '', false, '');
$text = bbencode_first_pass_pda($text, $uid, '/\[quote=(\\\".*?\\\")\]/is', '[/quote]', '', false, '', "[quote:$uid=\\1]");
$text = bbencode_first_pass_pda($text, $uid, '/\[quote=\\\\&quot;(.*?)\\\\&quot;\]/is', '[/quote]', '', false, '', "[quote:$uid=\\\"\\1\\\"]");
// [list] and [list=x] for (un)ordered lists.
$open_tag = array();
@@ -281,7 +305,7 @@ function bbencode_first_pass($text, $uid)
$text = preg_replace("#\[i\](.*?)\[/i\]#si", "[i:$uid]\\1[/i:$uid]", $text);
// [img]image_url_here[/img] code..
$text = preg_replace("#\[img\]((ht|f)tp://)([^\r\n\t<\"]*?)\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
// Remove our padding from the string..
return substr($text, 1);;
@@ -387,15 +411,15 @@ function bbencode_first_pass_pda($text, $uid, $open_tag, $close_tag, $close_tag_
//
// We're going to try and catch usernames with "[' characters.
//
if( preg_match('#\[quote=\\\"#si', $possible_start, $match) && !preg_match('#\[quote=\\\"(.*?)\\\"\]#si', $possible_start) )
if( preg_match('#\[quote=\\\&quot;#si', $possible_start, $match) && !preg_match('#\[quote=\\\&quot;(.*?)\\\&quot;\]#si', $possible_start) )
{
// OK we are in a quote tag that probably contains a ] bracket.
// Grab a bit more of the string to hopefully get all of it..
if ($close_pos = strpos($text, '"]', $curr_pos + 9))
if ($close_pos = strpos($text, '&quot;]', $curr_pos + 14))
{
if (strpos(substr($text, $curr_pos + 9, $close_pos - ($curr_pos + 9)), '[quote') === false)
if (strpos(substr($text, $curr_pos + 14, $close_pos - ($curr_pos + 14)), '[quote') === false)
{
$possible_start = substr($text, $curr_pos, $close_pos - $curr_pos + 2);
$possible_start = substr($text, $curr_pos, $close_pos - $curr_pos + 7);
}
}
}
@@ -430,7 +454,7 @@ function bbencode_first_pass_pda($text, $uid, $open_tag, $close_tag, $close_tag_
// We have an opening tag.
// Push its position, the text we matched, and its index in the open_tag array on to the stack, and then keep going to the right.
$match = array("pos" => $curr_pos, "tag" => $which_start_tag, "index" => $start_tag_index);
bbcode_array_push($stack, $match);
array_push($stack, $match);
//
// Rather than just increment $curr_pos
// Set it to the ending of the tag we just found
@@ -452,7 +476,7 @@ function bbencode_first_pass_pda($text, $uid, $open_tag, $close_tag, $close_tag_
// There exists a starting tag.
$curr_nesting_depth = sizeof($stack);
// We need to do 2 replacements now.
$match = bbcode_array_pop($stack);
$match = array_pop($stack);
$start_index = $match['pos'];
$start_tag = $match['tag'];
$start_length = strlen($start_tag);
@@ -518,7 +542,7 @@ function bbencode_first_pass_pda($text, $uid, $open_tag, $close_tag, $close_tag_
// otherwise, we go back to the start.
if (sizeof($stack) > 0)
{
$match = bbcode_array_pop($stack);
$match = array_pop($stack);
$curr_pos = $match['pos'];
// bbcode_array_push($stack, $match);
// ++$curr_pos;
@@ -614,6 +638,7 @@ function bbencode_second_pass_code($text, $uid, $bbcode_tpl)
*/
function make_clickable($text)
{
$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1&#058;", $text);
// pad it with a space so we can match things at the start of the 1st line.
$ret = ' ' . $text;
@@ -621,13 +646,13 @@ function make_clickable($text)
// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
// xxxx can only be alpha characters.
// yyyy is anything up to the first space, newline, comma, double quote or <
$ret = preg_replace("#(^|[\n ])([\w]+?://.*?[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// zzzz is optional.. will contain everything up to the first space, newline,
// comma, double quote or <.
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\-]+\.[\w\-.\~]+(?:/[^ \"\t\n\r<]*)?)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);
// matches an email@domain type address at the start of a line, or after a space.
// Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
@@ -697,6 +722,7 @@ function escape_slashes($input)
* This function does exactly what the PHP4 function array_push() does
* however, to keep phpBB compatable with PHP 3 we had to come up with our own
* method of doing it.
* This function was deprecated in phpBB 2.0.18
*/
function bbcode_array_push(&$stack, $value)
{
@@ -708,6 +734,7 @@ function bbcode_array_push(&$stack, $value)
* This function does exactly what the PHP4 function array_pop() does
* however, to keep phpBB compatable with PHP 3 we had to come up with our own
* method of doing it.
* This function was deprecated in phpBB 2.0.18
*/
function bbcode_array_pop(&$stack)
{
@@ -758,7 +785,7 @@ function smilies_pass($message)
for ($i = 0; $i < count($smilies); $i++)
{
$orig[] = "/(?<=.\W|\W.|^\W)" . phpbb_preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/";
$orig[] = "/(?<=.\W|\W.|^\W)" . preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/";
$repl[] = '<img src="'. $board_config['smilies_path'] . '/' . $smilies[$i]['smile_url'] . '" alt="' . $smilies[$i]['emoticon'] . '" border="0" />';
}
}

View File

@@ -148,6 +148,7 @@ define('AUTH_ATTACH', 11);
// Table names
define('CONFIRM_TABLE', $table_prefix.'confirm');
define('AUTH_ACCESS_TABLE', $table_prefix.'auth_access');
define('BANLIST_TABLE', $table_prefix.'banlist');
define('CATEGORIES_TABLE', $table_prefix.'categories');
@@ -166,6 +167,7 @@ define('SEARCH_TABLE', $table_prefix.'search_results');
define('SEARCH_WORD_TABLE', $table_prefix.'search_wordlist');
define('SEARCH_MATCH_TABLE', $table_prefix.'search_wordmatch');
define('SESSIONS_TABLE', $table_prefix.'sessions');
define('SESSIONS_KEYS_TABLE', $table_prefix.'sessions_keys');
define('SMILIES_TABLE', $table_prefix.'smilies');
define('THEMES_TABLE', $table_prefix.'themes');
define('THEMES_NAME_TABLE', $table_prefix.'themes_name');

View File

@@ -60,7 +60,7 @@ switch($dbms)
$db = new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);
if(!$db->db_connect_id)
{
message_die(CRITICAL_ERROR, "Could not connect to the database");
message_die(CRITICAL_ERROR, "Could not connect to the database");
}
?>

View File

@@ -36,40 +36,35 @@ class emailer
{
$this->reset();
$this->use_smtp = $use_smtp;
$this->reply_to = $this->from = '';
}
// Resets all the data (address, template file, etc etc to default
function reset()
{
$this->addresses = array();
$this->vars = $this->msg = $this->extra_headers = $this->replyto = $this->from = '';
$this->vars = $this->msg = $this->extra_headers = '';
}
// Sets an email address to send to
function email_address($address, $realname = '')
function email_address($address)
{
$pos = sizeof($this->addresses['to']);
$this->addresses['to'][$pos]['email'] = trim($address);
$this->addresses['to'][$pos]['name'] = trim($realname);
$this->addresses['to'] = trim($address);
}
function cc($address, $realname = '')
function cc($address)
{
$pos = sizeof($this->addresses['cc']);
$this->addresses['cc'][$pos]['email'] = trim($address);
$this->addresses['cc'][$pos]['name'] = trim($realname);
$this->addresses['cc'][] = trim($address);
}
function bcc($address, $realname = '')
function bcc($address)
{
$pos = sizeof($this->addresses['bcc']);
$this->addresses['bcc'][$pos]['email'] = trim($address);
$this->addresses['bcc'][$pos]['name'] = trim($realname);
$this->addresses['bcc'][] = trim($address);
}
function replyto($address)
{
$this->replyto = trim($address);
$this->reply_to = trim($address);
}
function from($address)
@@ -80,7 +75,7 @@ class emailer
// set up subject for mail
function set_subject($subject = '')
{
$this->subject = trim($subject);
$this->subject = trim(preg_replace('#[\n\r]+#s', '', $subject));
}
// set up extra mail headers
@@ -169,7 +164,7 @@ class emailer
if (preg_match('#^(Subject:(.*?))$#m', $this->msg, $match))
{
$this->subject = (trim($match[2]) != '') ? trim($match[2]) : (($this->subject != '') ? $this->subject : 'No Subject');
$drop_header .= '[\r\n]*?' . phpbb_preg_quote($match[1], '#');
$drop_header .= '[\r\n]*?' . preg_quote($match[1], '#');
}
else
{
@@ -179,7 +174,7 @@ class emailer
if (preg_match('#^(Charset:(.*?))$#m', $this->msg, $match))
{
$this->encoding = (trim($match[2]) != '') ? trim($match[2]) : trim($lang['ENCODING']);
$drop_header .= '[\r\n]*?' . phpbb_preg_quote($match[1], '#');
$drop_header .= '[\r\n]*?' . preg_quote($match[1], '#');
}
else
{
@@ -191,23 +186,13 @@ class emailer
$this->msg = trim(preg_replace('#' . $drop_header . '#s', '', $this->msg));
}
$to = $cc = $bcc = '';
// Build to, cc and bcc strings
@reset($this->addresses);
while (list($type, $address_ary) = each($this->addresses))
{
@reset($address_ary);
while (list(, $which_ary) = each($address_ary))
{
$$type .= (($$type != '') ? ',' : '') . (($which_ary['name'] != '') ? '"' . $this->encode($which_ary['name']) . '" <' . $which_ary['email'] . '>' : '<' . $which_ary['email'] . '>');
}
}
$to = $this->addresses['to'];
$cc = (count($this->addresses['cc'])) ? implode(', ', $this->addresses['cc']) : '';
$bcc = (count($this->addresses['bcc'])) ? implode(', ', $this->addresses['bcc']) : '';
// Build header
$this->extra_headers = (($this->replyto != '') ? "Reply-to: <$this->replyto>\n" : '') . (($this->from != '') ? "From: <$this->from>\n" : "From: <" . $board_config['board_email'] . ">\n") . "Return-Path: <" . $board_config['board_email'] . ">\nMessage-ID: <" . md5(uniqid(time())) . "@" . $board_config['server_name'] . ">\nMIME-Version: 1.0\nContent-type: text/plain; charset=" . $this->encoding . "\nContent-transfer-encoding: 8bit\nDate: " . gmdate('D, d M Y H:i:s Z', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By phpBB2\n" . trim($this->extra_headers) . (($cc != '') ? "Cc:$cc\n" : '') . (($bcc != '') ? "Bcc:$bcc\n" : '');
$empty_to_header = ($to == '') ? TRUE : FALSE;
$to = ($to == '') ? (($board_config['sendmail_fix'] && !$this->use_smtp) ? ' ' : 'Undisclosed-recipients:;') : $to;
$this->extra_headers = (($this->reply_to != '') ? "Reply-to: $this->reply_to\n" : '') . (($this->from != '') ? "From: $this->from\n" : "From: " . $board_config['board_email'] . "\n") . "Return-Path: " . $board_config['board_email'] . "\nMessage-ID: <" . md5(uniqid(time())) . "@" . $board_config['server_name'] . ">\nMIME-Version: 1.0\nContent-type: text/plain; charset=" . $this->encoding . "\nContent-transfer-encoding: 8bit\nDate: " . date('r', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By phpBB2\n" . $this->extra_headers . (($cc != '') ? "Cc: $cc\n" : '') . (($bcc != '') ? "Bcc: $bcc\n" : '');
// Send message ... removed $this->encode() from subject for time being
if ( $this->use_smtp )
@@ -221,6 +206,9 @@ class emailer
}
else
{
$empty_to_header = ($to == '') ? TRUE : FALSE;
$to = ($to == '') ? (($board_config['sendmail_fix']) ? ' ' : 'Undisclosed-recipients:;') : $to;
$result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
if (!$result && !$board_config['sendmail_fix'] && $empty_to_header)
@@ -273,7 +261,7 @@ class emailer
$str = chunk_split(base64_encode($str), $length, $spacer);
// remove trailing spacer and add start and end delimiters
$str = preg_replace('#' . phpbb_preg_quote($spacer) . '$#', '', $str);
$str = preg_replace('#' . preg_quote($spacer, '#') . '$#', '', $str);
return $start . $str . $end;
}

View File

@@ -74,6 +74,102 @@ function get_db_stat($mode)
return false;
}
// added at phpBB 2.0.11 to properly format the username
function phpbb_clean_username($username)
{
$username = substr(htmlspecialchars(str_replace("\'", "'", trim($username))), 0, 25);
$username = phpbb_rtrim($username, "\\");
$username = str_replace("'", "\'", $username);
return $username;
}
/**
* This function is a wrapper for ltrim, as charlist is only supported in php >= 4.1.0
* Added in phpBB 2.0.18
*/
function phpbb_ltrim($str, $charlist = false)
{
if ($charlist === false)
{
return ltrim($str);
}
$php_version = explode('.', PHP_VERSION);
// php version < 4.1.0
if ((int) $php_version[0] < 4 || ((int) $php_version[0] == 4 && (int) $php_version[1] < 1))
{
while ($str{0} == $charlist)
{
$str = substr($str, 1);
}
}
else
{
$str = ltrim($str, $charlist);
}
return $str;
}
// added at phpBB 2.0.12 to fix a bug in PHP 4.3.10 (only supporting charlist in php >= 4.1.0)
function phpbb_rtrim($str, $charlist = false)
{
if ($charlist === false)
{
return rtrim($str);
}
$php_version = explode('.', PHP_VERSION);
// php version < 4.1.0
if ((int) $php_version[0] < 4 || ((int) $php_version[0] == 4 && (int) $php_version[1] < 1))
{
while ($str{strlen($str)-1} == $charlist)
{
$str = substr($str, 0, strlen($str)-1);
}
}
else
{
$str = rtrim($str, $charlist);
}
return $str;
}
/**
* Our own generator of random values
* This uses a constantly changing value as the base for generating the values
* The board wide setting is updated once per page if this code is called
* With thanks to Anthrax101 for the inspiration on this one
* Added in phpBB 2.0.20
*/
function dss_rand()
{
global $db, $board_config, $dss_seeded;
$val = $board_config['rand_seed'] . microtime();
$val = md5($val);
$board_config['rand_seed'] = md5($board_config['rand_seed'] . $val . 'a');
if($dss_seeded !== true)
{
$sql = "UPDATE " . CONFIG_TABLE . " SET
config_value = '" . $board_config['rand_seed'] . "'
WHERE config_name = 'rand_seed'";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Unable to reseed PRNG", "", __LINE__, __FILE__, $sql);
}
$dss_seeded = true;
}
return substr($val, 4, 16);
}
//
// Get Userdata, $user can be username or user_id. If force_str is true, the username will be forced.
//
@@ -81,10 +177,9 @@ function get_userdata($user, $force_str = false)
{
global $db;
if (intval($user) == 0 || $force_str)
if (!is_numeric($user) || $force_str)
{
$user = trim(htmlspecialchars($user));
$user = substr(str_replace("\'", "'", $user), 0, 25);
$user = phpbb_clean_username($user);
}
else
{
@@ -94,7 +189,7 @@ function get_userdata($user, $force_str = false)
$sql = "SELECT *
FROM " . USERS_TABLE . "
WHERE ";
$sql .= ( ( is_integer($user) ) ? "user_id = $user" : "username = '" . $user . "'" ) . " AND user_id <> " . ANONYMOUS;
$sql .= ( ( is_integer($user) ) ? "user_id = $user" : "username = '" . str_replace("\'", "''", $user) . "'" ) . " AND user_id <> " . ANONYMOUS;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql);
@@ -187,10 +282,11 @@ function make_jumpbox($action, $match_forum_id = 0)
$boxstring .= '<select name="' . POST_FORUM_URL . '" onchange="if(this.options[this.selectedIndex].value != -1){ forms[\'jumpbox\'].submit() }"></select>';
}
if ( !empty($SID) )
{
// Let the jumpbox work again in sites having additional session id checks.
// if ( !empty($SID) )
// {
$boxstring .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
}
// }
$template->set_filenames(array(
'jumpbox' => 'jumpbox.tpl')
@@ -213,14 +309,14 @@ function make_jumpbox($action, $match_forum_id = 0)
function init_userprefs($userdata)
{
global $board_config, $theme, $images;
global $template, $lang, $phpEx, $phpbb_root_path;
global $template, $lang, $phpEx, $phpbb_root_path, $db;
global $nav_links;
if ( $userdata['user_id'] != ANONYMOUS )
{
if ( !empty($userdata['user_lang']))
{
$board_config['default_lang'] = $userdata['user_lang'];
$default_lang = phpbb_ltrim(basename(phpbb_rtrim($userdata['user_lang'])), "'");
}
if ( !empty($userdata['user_dateformat']) )
@@ -233,12 +329,61 @@ function init_userprefs($userdata)
$board_config['board_timezone'] = $userdata['user_timezone'];
}
}
if ( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx)) )
else
{
$board_config['default_lang'] = 'english';
$default_lang = phpbb_ltrim(basename(phpbb_rtrim($board_config['default_lang'])), "'");
}
if ( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $default_lang . '/lang_main.'.$phpEx)) )
{
if ( $userdata['user_id'] != ANONYMOUS )
{
// For logged in users, try the board default language next
$default_lang = phpbb_ltrim(basename(phpbb_rtrim($board_config['default_lang'])), "'");
}
else
{
// For guests it means the default language is not present, try english
// This is a long shot since it means serious errors in the setup to reach here,
// but english is part of a new install so it's worth us trying
$default_lang = 'english';
}
if ( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $default_lang . '/lang_main.'.$phpEx)) )
{
message_die(CRITICAL_ERROR, 'Could not locate valid language pack');
}
}
// If we've had to change the value in any way then let's write it back to the database
// before we go any further since it means there is something wrong with it
if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_lang'] !== $default_lang )
{
$sql = 'UPDATE ' . USERS_TABLE . "
SET user_lang = '" . $default_lang . "'
WHERE user_lang = '" . $userdata['user_lang'] . "'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not update user language info');
}
$userdata['user_lang'] = $default_lang;
}
elseif ( $userdata['user_id'] == ANONYMOUS && $board_config['default_lang'] !== $default_lang )
{
$sql = 'UPDATE ' . CONFIG_TABLE . "
SET config_value = '" . $default_lang . "'
WHERE config_name = 'default_lang'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not update user language info');
}
}
$board_config['default_lang'] = $default_lang;
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx);
if ( defined('IN_ADMIN') )
@@ -297,9 +442,9 @@ function setup_style($style)
{
global $db, $board_config, $template, $images, $phpbb_root_path;
$sql = "SELECT *
FROM " . THEMES_TABLE . "
WHERE themes_id = $style";
$sql = 'SELECT *
FROM ' . THEMES_TABLE . '
WHERE themes_id = ' . (int) $style;
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not query database for theme info');
@@ -307,7 +452,40 @@ function setup_style($style)
if ( !($row = $db->sql_fetchrow($result)) )
{
message_die(CRITICAL_ERROR, "Could not get theme data for themes_id [$style]");
// We are trying to setup a style which does not exist in the database
// Try to fallback to the board default (if the user had a custom style)
// and then any users using this style to the default if it succeeds
if ( $style != $board_config['default_style'])
{
$sql = 'SELECT *
FROM ' . THEMES_TABLE . '
WHERE themes_id = ' . (int) $board_config['default_style'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not query database for theme info');
}
if ( $row = $db->sql_fetchrow($result) )
{
$db->sql_freeresult($result);
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_style = ' . (int) $board_config['default_style'] . "
WHERE user_style = $style";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not update user theme info');
}
}
else
{
message_die(CRITICAL_ERROR, "Could not get theme data for themes_id [$style]");
}
}
else
{
message_die(CRITICAL_ERROR, "Could not get theme data for themes_id [$style]");
}
}
$template_path = 'templates/' ;
@@ -503,7 +681,7 @@ function obtain_word_list(&$orig_word, &$replacement_word)
{
do
{
$orig_word[] = '#(' . str_replace('\*', '\w*?', phpbb_preg_quote($row['word'], '#')) . ')#i';
$orig_word[] = '#\b(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')\b#i';
$replacement_word[] = $row['replacement'];
}
while ( $row = $db->sql_fetchrow($result) );
@@ -542,7 +720,7 @@ function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '',
die("message_die() was called multiple times. This isn't supposed to happen. Was message_die() used in page_tail.php?");
}
define(HAS_DIED, 1);
define('HAS_DIED', 1);
$sql_store = $sql;
@@ -569,7 +747,7 @@ function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '',
if ( $err_line != '' && $err_file != '' )
{
$debug_text .= '</br /><br />Line : ' . $err_line . '<br />File : ' . $err_file;
$debug_text .= '<br /><br />Line : ' . $err_line . '<br />File : ' . basename($err_file);
}
}
@@ -596,11 +774,7 @@ function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '',
}
}
if ( empty($template) )
{
$template = new Template($phpbb_root_path . 'templates/' . $board_config['board_template']);
}
if ( empty($theme) )
if ( empty($template) || empty($theme) )
{
$theme = setup_style($board_config['default_style']);
}
@@ -743,6 +917,11 @@ function redirect($url)
$db->sql_close();
}
if (strstr(urldecode($url), "\n") || strstr(urldecode($url), "\r") || strstr(urldecode($url), ';url'))
{
message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
}
$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
$server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name']));
$server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) : '';

View File

@@ -26,13 +26,14 @@
//
function make_forum_select($box_name, $ignore_forum = false, $select_forum = '')
{
global $db, $userdata;
global $db, $userdata, $lang;
$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata);
$sql = "SELECT forum_id, forum_name
FROM " . FORUMS_TABLE . "
ORDER BY cat_id, forum_order";
$sql = 'SELECT f.forum_id, f.forum_name
FROM ' . CATEGORIES_TABLE . ' c, ' . FORUMS_TABLE . ' f
WHERE f.cat_id = c.cat_id
ORDER BY c.cat_order, f.forum_order';
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Couldn not obtain forums information', '', __LINE__, __FILE__, $sql);
@@ -48,7 +49,7 @@ function make_forum_select($box_name, $ignore_forum = false, $select_forum = '')
}
}
$forum_list = ( $forum_list == '' ) ? '<option value="-1">-- ! No Forums ! --</option>' : '<select name="' . $box_name . '">' . $forum_list . '</select>';
$forum_list = ( $forum_list == '' ) ? $lang['No_forums'] : '<select name="' . $box_name . '">' . $forum_list . '</select>';
return $forum_list;
}
@@ -140,10 +141,45 @@ function sync($type, $id = false)
if ( $row = $db->sql_fetchrow($result) )
{
$sql = ( $row['total_posts'] ) ? "UPDATE " . TOPICS_TABLE . " SET topic_replies = " . ( $row['total_posts'] - 1 ) . ", topic_first_post_id = " . $row['first_post'] . ", topic_last_post_id = " . $row['last_post'] . " WHERE topic_id = $id" : "DELETE FROM " . TOPICS_TABLE . " WHERE topic_id = $id";
if ( !$db->sql_query($sql) )
if ($row['total_posts'])
{
message_die(GENERAL_ERROR, 'Could not update topic', '', __LINE__, __FILE__, $sql);
// Correct the details of this topic
$sql = 'UPDATE ' . TOPICS_TABLE . '
SET topic_replies = ' . ($row['total_posts'] - 1) . ', topic_first_post_id = ' . $row['first_post'] . ', topic_last_post_id = ' . $row['last_post'] . "
WHERE topic_id = $id";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not update topic', '', __LINE__, __FILE__, $sql);
}
}
else
{
// There are no replies to this topic
// Check if it is a move stub
$sql = 'SELECT topic_moved_id
FROM ' . TOPICS_TABLE . "
WHERE topic_id = $id";
if (!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not get topic ID', '', __LINE__, __FILE__, $sql);
}
if ($row = $db->sql_fetchrow($result))
{
if (!$row['topic_moved_id'])
{
$sql = 'DELETE FROM ' . TOPICS_TABLE . " WHERE topic_id = $id";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not remove topic', '', __LINE__, __FILE__, $sql);
}
}
}
$db->sql_freeresult($result);
}
}
break;

View File

@@ -25,8 +25,8 @@ if (!defined('IN_PHPBB'))
die('Hacking attempt');
}
$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#');
$html_entities_replace = array('&amp;', '&lt;', '&gt;');
$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#');
$html_entities_replace = array('&amp;', '&lt;', '&gt;', '&quot;');
$unhtml_specialchars_match = array('#&gt;#', '#&lt;#', '#&quot;#', '#&amp;#');
$unhtml_specialchars_replace = array('>', '<', '"', '&');
@@ -46,57 +46,26 @@ function prepare_message($message, $html_on, $bbcode_on, $smile_on, $bbcode_uid
if ($html_on)
{
$allowed_html_tags = split(',', $board_config['allow_html_tags']);
// If HTML is on, we try to make it safe
// This approach is quite agressive and anything that does not look like a valid tag
// is going to get converted to HTML entities
$message = stripslashes($message);
$html_match = '#<[^\w<]*(\w+)((?:"[^"]*"|\'[^\']*\'|[^<>\'"])+)?>#';
$matches = array();
$end_html = 0;
$start_html = 1;
$tmp_message = '';
$message = ' ' . $message . ' ';
$message_split = preg_split($html_match, $message);
preg_match_all($html_match, $message, $matches);
while ($start_html = strpos($message, '<', $start_html))
$message = '';
foreach ($message_split as $part)
{
$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $end_html + 1, ($start_html - $end_html - 1)));
if ($end_html = strpos($message, '>', $start_html))
{
$length = $end_html - $start_html + 1;
$hold_string = substr($message, $start_html, $length);
if (($unclosed_open = strrpos(' ' . $hold_string, '<')) != 1)
{
$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($hold_string, 0, $unclosed_open - 1));
$hold_string = substr($hold_string, $unclosed_open - 1);
}
$tagallowed = false;
for ($i = 0; $i < sizeof($allowed_html_tags); $i++)
{
$match_tag = trim($allowed_html_tags[$i]);
if (preg_match('#^<\/?' . $match_tag . '[> ]#i', $hold_string))
{
$tagallowed = (preg_match('#^<\/?' . $match_tag . ' .*?(style[\t ]*?=|on[\w]+[\t ]*?=)#i', $hold_string)) ? false : true;
}
}
$tmp_message .= ($length && !$tagallowed) ? preg_replace($html_entities_match, $html_entities_replace, $hold_string) : $hold_string;
$start_html += $length;
}
else
{
$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $start_html, strlen($message)));
$start_html = strlen($message);
$end_html = $start_html;
}
$tag = array(array_shift($matches[0]), array_shift($matches[1]), array_shift($matches[2]));
$message .= preg_replace($html_entities_match, $html_entities_replace, $part) . clean_html($tag);
}
if (!$end_html || ($end_html != strlen($message) && $tmp_message != ''))
{
$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $end_html + 1));
}
$message = ($tmp_message != '') ? trim($tmp_message) : trim($message);
$message = addslashes($message);
$message = str_replace('&quot;', '\&quot;', $message);
}
else
{
@@ -128,7 +97,7 @@ function prepare_post(&$mode, &$post_data, &$bbcode_on, &$html_on, &$smilies_on,
// Check username
if (!empty($username))
{
$username = trim(strip_tags($username));
$username = phpbb_clean_username($username);
if (!$userdata['session_logged_in'] || ($userdata['session_logged_in'] && $username != $userdata['username']))
{
@@ -187,7 +156,7 @@ function prepare_post(&$mode, &$post_data, &$bbcode_on, &$html_on, &$smilies_on,
$option_text = trim($option_text);
if (!empty($option_text))
{
$temp_option_text[$option_id] = htmlspecialchars($option_text);
$temp_option_text[intval($option_id)] = htmlspecialchars($option_text);
}
}
$option_text = $temp_option_text;
@@ -213,7 +182,7 @@ function prepare_post(&$mode, &$post_data, &$bbcode_on, &$html_on, &$smilies_on,
//
// Post a new topic/reply/poll or edit existing post/poll
//
function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, &$post_username, &$post_subject, &$post_message, &$poll_title, &$poll_options, &$poll_length)
function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, $post_username, $post_subject, $post_message, $poll_title, &$poll_options, &$poll_length)
{
global $board_config, $lang, $db, $phpbb_root_path, $phpEx;
global $userdata, $user_ip;
@@ -444,12 +413,15 @@ function update_post_stats(&$mode, &$post_data, &$forum_id, &$topic_id, &$post_i
$topic_update_sql .= 'topic_vote = 0';
}
$sql = "UPDATE " . FORUMS_TABLE . " SET
$forum_update_sql
WHERE forum_id = $forum_id";
if (!$db->sql_query($sql))
if ($mode != 'poll_delete')
{
message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
$sql = "UPDATE " . FORUMS_TABLE . " SET
$forum_update_sql
WHERE forum_id = $forum_id";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
}
}
if ($topic_update_sql != '')
@@ -578,16 +550,7 @@ function user_notification($mode, &$post_data, &$topic_title, &$forum_id, &$topi
$current_time = time();
if ($mode == 'delete')
{
$delete_sql = (!$post_data['first_post'] && !$post_data['last_post']) ? " AND user_id = " . $userdata['user_id'] : '';
$sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " WHERE topic_id = $topic_id" . $delete_sql;
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not change topic notify data', '', __LINE__, __FILE__, $sql);
}
}
else
if ($mode != 'delete')
{
if ($mode == 'reply')
{
@@ -769,7 +732,7 @@ function generate_smilies($mode, $page_id)
$gen_simple_header = TRUE;
$page_title = $lang['Review_topic'] . " - $topic_title";
$page_title = $lang['Emoticons'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
@@ -859,4 +822,66 @@ function generate_smilies($mode, $page_id)
}
}
/**
* Called from within prepare_message to clean included HTML tags if HTML is
* turned on for that post
* @param array $tag Matching text from the message to parse
*/
function clean_html($tag)
{
global $board_config;
if (empty($tag[0]))
{
return '';
}
$allowed_html_tags = preg_split('/, */', strtolower($board_config['allow_html_tags']));
$disallowed_attributes = '/^(?:style|on)/i';
// Check if this is an end tag
preg_match('/<[^\w\/]*\/[\W]*(\w+)/', $tag[0], $matches);
if (sizeof($matches))
{
if (in_array(strtolower($matches[1]), $allowed_html_tags))
{
return '</' . $matches[1] . '>';
}
else
{
return htmlspecialchars('</' . $matches[1] . '>');
}
}
// Check if this is an allowed tag
if (in_array(strtolower($tag[1]), $allowed_html_tags))
{
$attributes = '';
if (!empty($tag[2]))
{
preg_match_all('/[\W]*?(\w+)[\W]*?=[\W]*?(["\'])((?:(?!\2).)*)\2/', $tag[2], $test);
for ($i = 0; $i < sizeof($test[0]); $i++)
{
if (preg_match($disallowed_attributes, $test[1][$i]))
{
continue;
}
$attributes .= ' ' . $test[1][$i] . '=' . $test[2][$i] . str_replace(array('[', ']'), array('&#91;', '&#93;'), htmlspecialchars($test[3][$i])) . $test[2][$i];
}
}
if (in_array(strtolower($tag[1]), $allowed_html_tags))
{
return '<' . $tag[1] . $attributes . '>';
}
else
{
return htmlspecialchars('<' . $tag[1] . $attributes . '>');
}
}
// Finally, this is not an allowed tag so strip all the attibutes and escape it
else
{
return htmlspecialchars('<' . $tag[1] . '>');
}
}
?>

View File

@@ -58,16 +58,7 @@ function clean_words($mode, &$entry, &$stopword_list, &$synonym_list)
$entry = str_replace('*', ' ', $entry);
// 'words' that consist of <3 or >20 characters are removed.
$entry = explode(' ', $entry);
for ($i = 0; $i < sizeof($entry); $i++)
{
$entry[$i] = trim($entry[$i]);
if ((strlen($entry[$i]) < 3) || (strlen($entry[$i]) > 20))
{
$entry[$i] = '';
}
}
$entry = implode(' ', $entry);
$entry = preg_replace('/[ ]([\S]{1,2}|[\S]{21,})[ ]/',' ', $entry);
}
if ( !empty($stopword_list) )
@@ -98,7 +89,7 @@ function clean_words($mode, &$entry, &$stopword_list, &$synonym_list)
return $entry;
}
function split_words(&$entry, $mode = 'post')
function split_words($entry, $mode = 'post')
{
// If you experience problems with the new method, uncomment this block.
/*
@@ -107,17 +98,8 @@ function split_words(&$entry, $mode = 'post')
return $split_entries[1];
*/
$split_entries = array();
$split = explode(' ', $entry);
for ($i = 0; $i < count($split); $i++)
{
if (trim($split[$i]) != '')
{
$split_entries[] = trim($split[$i]);
}
}
return $split_entries;
// Trim 1+ spaces to one space and split this trimmed string into words.
return explode(' ', trim(preg_replace('#\s+#', ' ', $entry)));
}
function add_search_words($mode, $post_id, $post_text, $post_title = '')
@@ -131,6 +113,8 @@ function add_search_words($mode, $post_id, $post_text, $post_title = '')
$search_raw_words['text'] = split_words(clean_words('post', $post_text, $stopword_array, $synonym_array));
$search_raw_words['title'] = split_words(clean_words('post', $post_title, $stopword_array, $synonym_array));
@set_time_limit(0);
$word = array();
$word_insert_sql = array();
while ( list($word_in, $search_matches) = @each($search_raw_words) )
@@ -214,6 +198,7 @@ function add_search_words($mode, $post_id, $post_text, $post_title = '')
$value_sql .= ( ( $value_sql != '' ) ? ', ' : '' ) . '(\'' . $word[$i] . '\', 0)';
break;
case 'mssql':
case 'mssql-odbc':
$value_sql .= ( ( $value_sql != '' ) ? ' UNION ALL ' : '' ) . "SELECT '" . $word[$i] . "', 0";
break;
default:
@@ -238,6 +223,7 @@ function add_search_words($mode, $post_id, $post_text, $post_title = '')
VALUES $value_sql";
break;
case 'mssql':
case 'mssql-odbc':
$sql = "INSERT INTO " . SEARCH_WORD_TABLE . " (word_text, word_common)
$value_sql";
break;
@@ -259,7 +245,8 @@ function add_search_words($mode, $post_id, $post_text, $post_title = '')
$sql = "INSERT INTO " . SEARCH_MATCH_TABLE . " (post_id, word_id, title_match)
SELECT $post_id, word_id, $title_match
FROM " . SEARCH_WORD_TABLE . "
WHERE word_text IN ($match_sql)";
WHERE word_text IN ($match_sql)
AND word_common <> 1";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not insert new word matches', '', __LINE__, __FILE__, $sql);
@@ -449,7 +436,7 @@ function username_search($search_match)
$username_list = '';
if ( !empty($search_match) )
{
$username_search = preg_replace('/\*/', '%', trim(strip_tags($search_match)));
$username_search = preg_replace('/\*/', '%', phpbb_clean_username($search_match));
$sql = "SELECT username
FROM " . USERS_TABLE . "
@@ -483,7 +470,7 @@ function username_search($search_match)
);
$template->assign_vars(array(
'USERNAME' => ( !empty($search_match) ) ? strip_tags($search_match) : '',
'USERNAME' => (!empty($search_match)) ? phpbb_clean_username($search_match) : '',
'L_CLOSE_WINDOW' => $lang['Close_window'],
'L_SEARCH_USERNAME' => $lang['Find_username'],

View File

@@ -108,4 +108,4 @@ function tz_select($default, $select_name = 'timezone')
return $tz_select;
}
?>
?>

View File

@@ -30,17 +30,15 @@ function validate_username($username)
global $db, $lang, $userdata;
// Remove doubled up spaces
$username = preg_replace('#\s+#', ' ', $username);
// Limit username length
$username = substr(str_replace("\'", "'", $username), 0, 25);
$username = str_replace("'", "''", $username);
$username = preg_replace('#\s+#', ' ', trim($username));
$username = phpbb_clean_username($username);
$sql = "SELECT username
FROM " . USERS_TABLE . "
FROM " . USERS_TABLE . "
WHERE LOWER(username) = '" . strtolower($username) . "'";
if ($result = $db->sql_query($sql))
{
if ($row = $db->sql_fetchrow($result))
while ($row = $db->sql_fetchrow($result))
{
if (($userdata['session_logged_in'] && $row['username'] != $userdata['username']) || !$userdata['session_logged_in'])
{
@@ -72,7 +70,7 @@ function validate_username($username)
{
do
{
if (preg_match("#\b(" . str_replace("\*", ".*?", phpbb_preg_quote($row['disallow_username'], '#')) . ")\b#i", $username))
if (preg_match("#\b(" . str_replace("\*", ".*?", preg_quote($row['disallow_username'], '#')) . ")\b#i", $username))
{
$db->sql_freeresult($result);
return array('error' => true, 'error_msg' => $lang['Username_disallowed']);
@@ -91,7 +89,7 @@ function validate_username($username)
{
do
{
if (preg_match("#\b(" . str_replace("\*", ".*?", phpbb_preg_quote($row['word'], '#')) . ")\b#i", $username))
if (preg_match("#\b(" . str_replace("\*", ".*?", preg_quote($row['word'], '#')) . ")\b#i", $username))
{
$db->sql_freeresult($result);
return array('error' => true, 'error_msg' => $lang['Username_disallowed']);
@@ -103,7 +101,7 @@ function validate_username($username)
$db->sql_freeresult($result);
// Don't allow " and ALT-255 in username.
if (strstr($username, '"') || strstr($username, '&quot;') || strstr($username, chr(160)))
if (strstr($username, '"') || strstr($username, '&quot;') || strstr($username, chr(160)) || strstr($username, chr(173)))
{
return array('error' => true, 'error_msg' => $lang['Username_invalid']);
}

View File

@@ -35,7 +35,7 @@ if ( $board_config['gzip_compress'] )
{
$phpver = phpversion();
$useragent = (isset($_SERVER["HTTP_USER_AGENT"]) ) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT;
$useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');
if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
{
@@ -91,6 +91,7 @@ $logged_visible_online = 0;
$logged_hidden_online = 0;
$guests_online = 0;
$online_userlist = '';
$l_online_users = '';
if (defined('SHOW_ONLINE'))
{
@@ -111,7 +112,7 @@ if (defined('SHOW_ONLINE'))
$userlist_visible = array();
$prev_user_id = 0;
$prev_user_ip = '';
$prev_user_ip = $prev_session_ip = '';
while( $row = $db->sql_fetchrow($result) )
{
@@ -449,6 +450,14 @@ $template->assign_vars(array(
if ( !$userdata['session_logged_in'] )
{
$template->assign_block_vars('switch_user_logged_out', array());
//
// Allow autologin?
//
if (!isset($board_config['allow_autologin']) || $board_config['allow_autologin'] )
{
$template->assign_block_vars('switch_allow_autologin', array());
$template->assign_block_vars('switch_user_logged_out.switch_allow_autologin', array());
}
}
else
{
@@ -465,7 +474,7 @@ else
// Work around for "current" Apache 2 + PHP module which seems to not
// cope with private cache control setting
if (!empty($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache/2'))
if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'Apache/2'))
{
header ('Cache-Control: no-cache, pre-check=0, post-check=0');
}

View File

@@ -25,18 +25,19 @@ if ( !defined('IN_PHPBB') )
die('Hacking attempt');
}
global $do_gzip_compress;
//
// Show the overall footer.
//
$admin_link = ( $userdata['user_level'] == ADMIN ) ? '<a href="admin/index.' . $phpEx . '?sid=' . $userdata['session_id'] . '">' . $lang['Admin_panel'] . '</a><br /><br />' : '';
$admin_link = ( $userdata['user_level'] == ADMIN ) ? '<a href="admin/index.' . $phpEx . '?sid=' . $userdata['session_id'] . '&amp;p_sid=' . $userdata['priv_session_id'] . '">' . $lang['Admin_panel'] . '</a><br /><br />' : '';
$template->set_filenames(array(
'overall_footer' => ( empty($gen_simple_header) ) ? 'overall_footer.tpl' : 'simple_footer.tpl')
);
$template->assign_vars(array(
'PHPBB_VERSION' => '2' . $board_config['version'],
'TRANSLATION_INFO' => ( isset($lang['TRANSLATION_INFO']) ) ? $lang['TRANSLATION_INFO'] : '',
'TRANSLATION_INFO' => (isset($lang['TRANSLATION_INFO'])) ? $lang['TRANSLATION_INFO'] : ((isset($lang['TRANSLATION'])) ? $lang['TRANSLATION'] : ''),
'ADMIN_LINK' => $admin_link)
);

View File

@@ -31,6 +31,21 @@ function prune($forum_id, $prune_date, $prune_all = false)
{
global $db, $lang;
// Before pruning, lets try to clean up the invalid topic entries
$sql = 'SELECT topic_id FROM ' . TOPICS_TABLE . '
WHERE topic_last_post_id = 0';
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain lists of topics to sync', '', __LINE__, __FILE__, $sql);
}
while( $row = $db->sql_fetchrow($result) )
{
sync('topic', $row['topic_id']);
}
$db->sql_freeresult($result);
$prune_all = ($prune_all) ? '' : 'AND t.topic_vote = 0 AND t.topic_type <> ' . POST_ANNOUNCE;
//
// Those without polls and announcements ... unless told otherwise!
@@ -39,8 +54,7 @@ function prune($forum_id, $prune_date, $prune_all = false)
FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t
WHERE t.forum_id = $forum_id
$prune_all
AND ( p.post_id = t.topic_last_post_id
OR t.topic_last_post_id = 0 )";
AND p.post_id = t.topic_last_post_id";
if ( $prune_date != '' )
{
$sql .= " AND p.post_time < $prune_date";

View File

@@ -24,7 +24,7 @@
// Adds/updates a new session to the database for the given userid.
// Returns the new session ID on success.
//
function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_autologin = 0)
function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_autologin = 0, $admin = 0)
{
global $db, $board_config;
global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
@@ -47,65 +47,100 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a
$sessionmethod = SESSION_METHOD_GET;
}
$last_visit = 0;
$current_time = time();
$expiry_time = $current_time - $board_config['session_length'];
//
// Try and pull the last time stored in a cookie, if it exists
//
$sql = "SELECT *
FROM " . USERS_TABLE . "
WHERE user_id = $user_id";
if ( !($result = $db->sql_query($sql)) )
if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
{
message_die(CRITICAL_ERROR, 'Could not obtain lastvisit data from user table', '', __LINE__, __FILE__, $sql);
$session_id = '';
}
$userdata = $db->sql_fetchrow($result);
$page_id = (int) $page_id;
if ( $user_id != ANONYMOUS )
$last_visit = 0;
$current_time = time();
//
// Are auto-logins allowed?
// If allow_autologin is not set or is true then they are
// (same behaviour as old 2.0.x session code)
//
if (isset($board_config['allow_autologin']) && !$board_config['allow_autologin'])
{
$auto_login_key = $userdata['user_password'];
$enable_autologin = $sessiondata['autologinid'] = false;
}
if ( $auto_create )
//
// First off attempt to join with the autologin value if we have one
// If not, just use the user_id value
//
$userdata = array();
if ($user_id != ANONYMOUS)
{
if (isset($sessiondata['autologinid']) && (string) $sessiondata['autologinid'] != '' && $user_id)
{
if ( isset($sessiondata['autologinid']) && $userdata['user_active'] )
$sql = 'SELECT u.*
FROM ' . USERS_TABLE . ' u, ' . SESSIONS_KEYS_TABLE . ' k
WHERE u.user_id = ' . (int) $user_id . "
AND u.user_active = 1
AND k.user_id = u.user_id
AND k.key_id = '" . md5($sessiondata['autologinid']) . "'";
if (!($result = $db->sql_query($sql)))
{
// We have to login automagically
if( $sessiondata['autologinid'] == $auto_login_key )
{
// autologinid matches password
$login = 1;
$enable_autologin = 1;
}
else
{
// No match; don't login, set as anonymous user
$login = 0;
$enable_autologin = 0;
$user_id = $userdata['user_id'] = ANONYMOUS;
}
}
else
{
// Autologin is not set. Don't login, set as anonymous user
$login = 0;
$enable_autologin = 0;
$user_id = $userdata['user_id'] = ANONYMOUS;
message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql);
}
$userdata = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$enable_autologin = $login = 1;
}
else
else if (!$auto_create)
{
$sessiondata['autologinid'] = '';
$sessiondata['userid'] = $user_id;
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE user_id = ' . (int) $user_id . '
AND user_active = 1';
if (!($result = $db->sql_query($sql)))
{
message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql);
}
$userdata = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$login = 1;
}
}
else
//
// At this point either $userdata should be populated or
// one of the below is true
// * Key didn't match one in the DB
// * User does not exist
// * User is inactive
//
if (!sizeof($userdata) || !is_array($userdata) || !$userdata)
{
$login = 0;
$enable_autologin = 0;
$sessiondata['autologinid'] = '';
$sessiondata['userid'] = $user_id = ANONYMOUS;
$enable_autologin = $login = 0;
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE user_id = ' . (int) $user_id;
if (!($result = $db->sql_query($sql)))
{
message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql);
}
$userdata = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
//
// Initial ban check against user id, IP and email address
//
@@ -137,16 +172,17 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a
// Create or update the session
//
$sql = "UPDATE " . SESSIONS_TABLE . "
SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login
SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login, session_admin = $admin
WHERE session_id = '" . $session_id . "'
AND session_ip = '$user_ip'";
if ( !$db->sql_query($sql) || !$db->sql_affectedrows() )
{
$session_id = md5(uniqid($user_ip));
$session_id = md5(dss_rand());
$priv_session_id = md5(dss_rand());
$sql = "INSERT INTO " . SESSIONS_TABLE . "
(session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in)
VALUES ('$session_id', $user_id, $current_time, $current_time, '$user_ip', $page_id, $login)";
(session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in, session_admin, priv_session_id)
VALUES ('$session_id', $user_id, $current_time, $current_time, '$user_ip', $page_id, $login, $admin, '$priv_session_id')";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error creating new session', '', __LINE__, __FILE__, $sql);
@@ -154,30 +190,68 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a
}
if ( $user_id != ANONYMOUS )
{// ( $userdata['user_session_time'] > $expiry_time && $auto_create ) ? $userdata['user_lastvisit'] : (
{
$last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time;
$sql = "UPDATE " . USERS_TABLE . "
SET user_session_time = $current_time, user_session_page = $page_id, user_lastvisit = $last_visit
WHERE user_id = $user_id";
if ( !$db->sql_query($sql) )
if (!$admin)
{
message_die(CRITICAL_ERROR, 'Error updating last visit time', '', __LINE__, __FILE__, $sql);
$sql = "UPDATE " . USERS_TABLE . "
SET user_session_time = $current_time, user_session_page = $page_id, user_lastvisit = $last_visit
WHERE user_id = $user_id";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error updating last visit time', '', __LINE__, __FILE__, $sql);
}
}
$userdata['user_lastvisit'] = $last_visit;
$sessiondata['autologinid'] = ( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '';
//
// Regenerate the auto-login key
//
if ($enable_autologin)
{
$auto_login_key = dss_rand() . dss_rand();
if (isset($sessiondata['autologinid']) && (string) $sessiondata['autologinid'] != '')
{
$sql = 'UPDATE ' . SESSIONS_KEYS_TABLE . "
SET last_ip = '$user_ip', key_id = '" . md5($auto_login_key) . "', last_login = $current_time
WHERE key_id = '" . md5($sessiondata['autologinid']) . "'";
}
else
{
$sql = 'INSERT INTO ' . SESSIONS_KEYS_TABLE . "(key_id, user_id, last_ip, last_login)
VALUES ('" . md5($auto_login_key) . "', $user_id, '$user_ip', $current_time)";
}
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error updating session key', '', __LINE__, __FILE__, $sql);
}
$sessiondata['autologinid'] = $auto_login_key;
unset($auto_login_key);
}
else
{
$sessiondata['autologinid'] = '';
}
// $sessiondata['autologinid'] = (!$admin) ? (( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '') : $sessiondata['autologinid'];
$sessiondata['userid'] = $user_id;
}
$userdata['session_id'] = $session_id;
$userdata['priv_session_id'] = $priv_session_id;
$userdata['session_ip'] = $user_ip;
$userdata['session_user_id'] = $user_id;
$userdata['session_logged_in'] = $login;
$userdata['session_page'] = $page_id;
$userdata['session_start'] = $current_time;
$userdata['session_time'] = $current_time;
$userdata['session_admin'] = $admin;
$userdata['session_key'] = $sessiondata['autologinid'];
setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);
@@ -194,7 +268,7 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a
function session_pagestart($user_ip, $thispage_id)
{
global $db, $lang, $board_config;
global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID, $P_SID;
$cookiename = $board_config['cookie_name'];
$cookiepath = $board_config['cookie_path'];
@@ -217,6 +291,14 @@ function session_pagestart($user_ip, $thispage_id)
$sessionmethod = SESSION_METHOD_GET;
}
//
if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
{
$session_id = '';
}
$thispage_id = (int) $thispage_id;
//
// Does a session exist?
//
@@ -253,14 +335,17 @@ function session_pagestart($user_ip, $thispage_id)
if ($ip_check_s == $ip_check_u)
{
$SID = ($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '';
$P_SID = (defined('IN_ADMIN')) ? 'p_sid=' . $userdata['priv_session_id'] : '';
//
// Only update session DB a minute or so after last update
//
if ( $current_time - $userdata['session_time'] > 60 )
{
// A little trick to reset session_admin on session re-usage
$update_admin = (!defined('IN_ADMIN') && $current_time - $userdata['session_time'] > ($board_config['session_length']+60)) ? ', session_admin = 0' : '';
$sql = "UPDATE " . SESSIONS_TABLE . "
SET session_time = $current_time, session_page = $thispage_id
SET session_time = $current_time, session_page = $thispage_id$update_admin
WHERE session_id = '" . $userdata['session_id'] . "'";
if ( !$db->sql_query($sql) )
{
@@ -270,7 +355,7 @@ function session_pagestart($user_ip, $thispage_id)
if ( $userdata['user_id'] != ANONYMOUS )
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_session_time = $current_time, user_session_page = $thispage_id
SET user_session_time = $current_time, user_session_page = $thispage_id
WHERE user_id = " . $userdata['user_id'];
if ( !$db->sql_query($sql) )
{
@@ -278,22 +363,18 @@ function session_pagestart($user_ip, $thispage_id)
}
}
//
// Delete expired sessions
//
$expiry_time = $current_time - $board_config['session_length'];
$sql = "DELETE FROM " . SESSIONS_TABLE . "
WHERE session_time < $expiry_time
AND session_id <> '$session_id'";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error clearing sessions table', '', __LINE__, __FILE__, $sql);
}
session_clean($userdata['session_id']);
setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);
}
// Add the session_key to the userdata array if it is set
if ( isset($sessiondata['autologinid']) && $sessiondata['autologinid'] != '' )
{
$userdata['session_key'] = $sessiondata['autologinid'];
}
return $userdata;
}
}
@@ -314,14 +395,14 @@ function session_pagestart($user_ip, $thispage_id)
}
//
// session_end closes out a session
// deleting the corresponding entry
// in the sessions table
//
/**
* Terminates the specified session
* It will delete the entry in the sessions table for this session,
* remove the corresponding auto-login key and reset the cookies
*/
function session_end($session_id, $user_id)
{
global $db, $lang, $board_config;
global $db, $lang, $board_config, $userdata;
global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
$cookiename = $board_config['cookie_name'];
@@ -331,24 +412,15 @@ function session_end($session_id, $user_id)
$current_time = time();
//
// Pull cookiedata or grab the URI propagated sid
//
if ( isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) )
if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
{
$session_id = isset( $HTTP_COOKIE_VARS[$cookiename . '_sid'] ) ? $HTTP_COOKIE_VARS[$cookiename . '_sid'] : '';
$sessionmethod = SESSION_METHOD_COOKIE;
return;
}
else
{
$session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
$sessionmethod = SESSION_METHOD_GET;
}
//
// Delete existing session
//
$sql = "DELETE FROM " . SESSIONS_TABLE . "
$sql = 'DELETE FROM ' . SESSIONS_TABLE . "
WHERE session_id = '$session_id'
AND session_user_id = $user_id";
if ( !$db->sql_query($sql) )
@@ -356,12 +428,137 @@ function session_end($session_id, $user_id)
message_die(CRITICAL_ERROR, 'Error removing user session', '', __LINE__, __FILE__, $sql);
}
//
// Remove this auto-login entry (if applicable)
//
if ( isset($userdata['session_key']) && $userdata['session_key'] != '' )
{
$autologin_key = md5($userdata['session_key']);
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE user_id = ' . (int) $user_id . "
AND key_id = '$autologin_key'";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error removing auto-login key', '', __LINE__, __FILE__, $sql);
}
}
//
// We expect that message_die will be called after this function,
// but just in case it isn't, reset $userdata to the details for a guest
//
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE user_id = ' . ANONYMOUS;
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Error obtaining user details', '', __LINE__, __FILE__, $sql);
}
if ( !($userdata = $db->sql_fetchrow($result)) )
{
message_die(CRITICAL_ERROR, 'Error obtaining user details', '', __LINE__, __FILE__, $sql);
}
$db->sql_freeresult($result);
setcookie($cookiename . '_data', '', $current_time - 31536000, $cookiepath, $cookiedomain, $cookiesecure);
setcookie($cookiename . '_sid', '', $current_time - 31536000, $cookiepath, $cookiedomain, $cookiesecure);
return true;
}
/**
* Removes expired sessions and auto-login keys from the database
*/
function session_clean($session_id)
{
global $board_config, $db;
//
// Delete expired sessions
//
$sql = 'DELETE FROM ' . SESSIONS_TABLE . '
WHERE session_time < ' . (time() - (int) $board_config['session_length']) . "
AND session_id <> '$session_id'";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error clearing sessions table', '', __LINE__, __FILE__, $sql);
}
//
// Delete expired auto-login keys
// If max_autologin_time is not set then keys will never be deleted
// (same behaviour as old 2.0.x session code)
//
if (!empty($board_config['max_autologin_time']) && $board_config['max_autologin_time'] > 0)
{
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE last_login < ' . (time() - (86400 * (int) $board_config['max_autologin_time']));
$db->sql_query($sql);
}
return true;
}
/**
* Reset all login keys for the specified user
* Called on password changes
*/
function session_reset_keys($user_id, $user_ip)
{
global $db, $userdata, $board_config;
$key_sql = ($user_id == $userdata['user_id'] && !empty($userdata['session_key'])) ? "AND key_id != '" . md5($userdata['session_key']) . "'" : '';
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE user_id = ' . (int) $user_id . "
$key_sql";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error removing auto-login keys', '', __LINE__, __FILE__, $sql);
}
$where_sql = 'session_user_id = ' . (int) $user_id;
$where_sql .= ($user_id == $userdata['user_id']) ? " AND session_id <> '" . $userdata['session_id'] . "'" : '';
$sql = 'DELETE FROM ' . SESSIONS_TABLE . "
WHERE $where_sql";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error removing user session(s)', '', __LINE__, __FILE__, $sql);
}
if ( !empty($key_sql) )
{
$auto_login_key = dss_rand() . dss_rand();
$current_time = time();
$sql = 'UPDATE ' . SESSIONS_KEYS_TABLE . "
SET last_ip = '$user_ip', key_id = '" . md5($auto_login_key) . "', last_login = $current_time
WHERE key_id = '" . md5($userdata['session_key']) . "'";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error updating session key', '', __LINE__, __FILE__, $sql);
}
// And now rebuild the cookie
$sessiondata['userid'] = $user_id;
$sessiondata['autologinid'] = $auto_login_key;
$cookiename = $board_config['cookie_name'];
$cookiepath = $board_config['cookie_path'];
$cookiedomain = $board_config['cookie_domain'];
$cookiesecure = $board_config['cookie_secure'];
setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
$userdata['session_key'] = $auto_login_key;
unset($sessiondata);
unset($auto_login_key);
}
}
//
// Append $SID to a url. Borrowed from phplib and modified. This is an
// extra routine utilised by the session code above and acts as a wrapper
@@ -370,11 +567,15 @@ function session_end($session_id, $user_id)
//
function append_sid($url, $non_html_amp = false)
{
global $SID;
global $SID, $P_SID;
if ( !empty($SID) && !preg_match('#sid=#', $url) )
{
$url .= ( ( strpos($url, '?') != false ) ? ( ( $non_html_amp ) ? '&' : '&amp;' ) : '?' ) . $SID;
$url .= ( ( strpos($url, '?') !== false ) ? ( ( $non_html_amp ) ? '&' : '&amp;' ) : '?' ) . $SID;
}
if ( !empty($P_SID) && !preg_match('#p_sid=#', $url) )
{
$url .= ( ( strpos($url, '?') !== false ) ? ( ( $non_html_amp ) ? '&' : '&amp;' ) : '?' ) . $P_SID;
}
return $url;

View File

@@ -27,7 +27,8 @@ define('SMTP_INCLUDED', 1);
// using SMTP Extensions
//
function server_parse($socket, $response, $line = __LINE__)
{
{
$server_response = '';
while (substr($server_response, 3, 1) != ' ')
{
if (!($server_response = fgets($socket, 256)))
@@ -90,8 +91,8 @@ function smtpmail($mail_to, $subject, $message, $headers = '')
}
$headers = chop($headers);
$cc = explode(',', $cc);
$bcc = explode(',', $bcc);
$cc = explode(', ', $cc);
$bcc = explode(', ', $bcc);
}
if (trim($subject) == '')
@@ -104,11 +105,9 @@ function smtpmail($mail_to, $subject, $message, $headers = '')
message_die(GENERAL_ERROR, "Email message was blank", "", __LINE__, __FILE__);
}
$mail_to_array = explode(',', $mail_to);
// Ok we have error checked as much as we can to this point let's get on
// it already.
if( !$socket = fsockopen($board_config['smtp_host'], 25, $errno, $errstr, 20) )
if( !$socket = @fsockopen($board_config['smtp_host'], 25, $errno, $errstr, 20) )
{
message_die(GENERAL_ERROR, "Could not connect to smtp host : $errno : $errstr", "", __LINE__, __FILE__);
}
@@ -144,17 +143,14 @@ function smtpmail($mail_to, $subject, $message, $headers = '')
server_parse($socket, "250", __LINE__);
// Specify each user to send to and build to header.
@reset($mail_to_array);
while(list(, $mail_to_address) = each($mail_to_array))
$to_header = '';
// Add an additional bit of error checking to the To field.
$mail_to = (trim($mail_to) == '') ? 'Undisclosed-recipients:;' : trim($mail_to);
if (preg_match('#[^ ]+\@[^ ]+#', $mail_to))
{
// Add an additional bit of error checking to the To field.
$mail_to_address = trim($mail_to_address);
if (preg_match('#[^ ]+\@[^ ]+#', $mail_to_address))
{
fputs($socket, "RCPT TO: $mail_to_address\r\n");
server_parse($socket, "250", __LINE__);
}
$to_header .= (($to_header !='') ? ', ' : '') . "$mail_to_address";
fputs($socket, "RCPT TO: <$mail_to>\r\n");
server_parse($socket, "250", __LINE__);
}
// Ok now do the CC and BCC fields...
@@ -165,7 +161,7 @@ function smtpmail($mail_to, $subject, $message, $headers = '')
$bcc_address = trim($bcc_address);
if (preg_match('#[^ ]+\@[^ ]+#', $bcc_address))
{
fputs($socket, "RCPT TO: $bcc_address\r\n");
fputs($socket, "RCPT TO: <$bcc_address>\r\n");
server_parse($socket, "250", __LINE__);
}
}
@@ -177,7 +173,7 @@ function smtpmail($mail_to, $subject, $message, $headers = '')
$cc_address = trim($cc_address);
if (preg_match('#[^ ]+\@[^ ]+#', $cc_address))
{
fputs($socket, "RCPT TO: $cc_address\r\n");
fputs($socket, "RCPT TO: <$cc_address>\r\n");
server_parse($socket, "250", __LINE__);
}
}
@@ -192,7 +188,7 @@ function smtpmail($mail_to, $subject, $message, $headers = '')
fputs($socket, "Subject: $subject\r\n");
// Now the To Header.
fputs($socket, "To: $to_header\r\n");
fputs($socket, "To: $mail_to\r\n");
// Now any custom headers....
fputs($socket, "$headers\r\n\r\n");

View File

@@ -230,7 +230,7 @@ class Template {
// Check if it's an absolute or relative path.
if (substr($filename, 0, 1) != '/')
{
$filename = phpbb_realpath($this->root . '/' . $filename);
$filename = ($rp_filename = phpbb_realpath($this->root . '/' . $filename)) ? $rp_filename : $filename;
}
if (!file_exists($filename))
@@ -475,4 +475,4 @@ class Template {
}
?>
?>

View File

@@ -30,9 +30,9 @@ function topic_review($topic_id, $is_inline_review)
if ( !$is_inline_review )
{
if ( !isset($topic_id) )
if ( !isset($topic_id) || !$topic_id)
{
message_die(GENERAL_MESSAGE, 'Topic_not_exist');
message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
}
//
@@ -51,6 +51,7 @@ function topic_review($topic_id, $is_inline_review)
{
message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
}
$db->sql_freeresult($result);
$forum_id = $forum_row['forum_id'];
$topic_title = $forum_row['topic_title'];
@@ -207,6 +208,7 @@ function topic_review($topic_id, $is_inline_review)
{
message_die(GENERAL_MESSAGE, 'Topic_post_not_exist', '', __LINE__, __FILE__, $sql);
}
$db->sql_freeresult($result);
$template->assign_vars(array(
'L_AUTHOR' => $lang['Author'],
@@ -223,4 +225,4 @@ function topic_review($topic_id, $is_inline_review)
}
}
?>
?>

View File

@@ -47,6 +47,18 @@ if ( $row = $db->sql_fetchrow($result) )
}
else if ((trim($row['user_actkey']) == trim($HTTP_GET_VARS['act_key'])) && (trim($row['user_actkey']) != ''))
{
if (intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $row['user_newpasswd'] == '')
{
if (!$userdata['session_logged_in'])
{
redirect(append_sid('login.' . $phpEx . '?redirect=profile.' . $phpEx . '&mode=activate&' . POST_USERS_URL . '=' . $row['user_id'] . '&act_key=' . trim($HTTP_GET_VARS['act_key'])));
}
else if ($userdata['user_level'] != ADMIN)
{
message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
}
}
$sql_update_pass = ( $row['user_newpasswd'] != '' ) ? ", user_password = '" . str_replace("\'", "''", $row['user_newpasswd']) . "', user_newpasswd = ''" : '';
$sql = "UPDATE " . USERS_TABLE . "

View File

@@ -51,6 +51,7 @@ function user_avatar_delete($avatar_type, $avatar_file)
{
global $board_config, $userdata;
$avatar_file = basename($avatar_file);
if ( $avatar_type == USER_AVATAR_UPLOAD && $avatar_file != '' )
{
if ( @file_exists(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $avatar_file)) )
@@ -62,12 +63,26 @@ function user_avatar_delete($avatar_type, $avatar_file)
return ", user_avatar = '', user_avatar_type = " . USER_AVATAR_NONE;
}
function user_avatar_gallery($mode, &$error, &$error_msg, $avatar_filename)
function user_avatar_gallery($mode, &$error, &$error_msg, $avatar_filename, $avatar_category)
{
global $board_config;
if ( file_exists(@phpbb_realpath($board_config['avatar_gallery_path'] . '/' . $avatar_filename)) && ($mode == 'editprofile') )
$avatar_filename = phpbb_ltrim(basename($avatar_filename), "'");
$avatar_category = phpbb_ltrim(basename($avatar_category), "'");
if(!preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $avatar_filename))
{
$return = ", user_avatar = '" . str_replace("\'", "''", $avatar_filename) . "', user_avatar_type = " . USER_AVATAR_GALLERY;
return '';
}
if ($avatar_filename == "" || $avatar_category == "")
{
return '';
}
if ( file_exists(@phpbb_realpath($board_config['avatar_gallery_path'] . '/' . $avatar_category . '/' . $avatar_filename)) && ($mode == 'editprofile') )
{
$return = ", user_avatar = '" . str_replace("\'", "''", $avatar_category . '/' . $avatar_filename) . "', user_avatar_type = " . USER_AVATAR_GALLERY;
}
else
{
@@ -78,12 +93,16 @@ function user_avatar_gallery($mode, &$error, &$error_msg, $avatar_filename)
function user_avatar_url($mode, &$error, &$error_msg, $avatar_filename)
{
global $lang;
if ( !preg_match('#^(http)|(ftp):\/\/#i', $avatar_filename) )
{
$avatar_filename = 'http://' . $avatar_filename;
}
if ( !preg_match('#^((http)|(ftp):\/\/[\w\-]+?\.([\w\-]+\.)+[\w]+(:[0-9]+)*\/.*?\.(gif|jpg|jpeg|png)$)#is', $avatar_filename) )
$avatar_filename = substr($avatar_filename, 0, 100);
if ( !preg_match("#^((ht|f)tp://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png))$)#is", $avatar_filename) )
{
$error = true;
$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Wrong_remote_avatar_format'] : $lang['Wrong_remote_avatar_format'];
@@ -100,7 +119,10 @@ function user_avatar_upload($mode, $avatar_mode, &$current_avatar, &$current_typ
$ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';
if ( $avatar_mode == 'remote' && preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/', $avatar_filename, $url_ary) )
$width = $height = 0;
$type = '';
if ( $avatar_mode == 'remote' && preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))$/', $avatar_filename, $url_ary) )
{
if ( empty($url_ary[4]) )
{
@@ -157,7 +179,7 @@ function user_avatar_upload($mode, $avatar_mode, &$current_avatar, &$current_typ
message_die(GENERAL_ERROR, 'Could not write avatar file to local storage. Please contact the board administrator with this message', '', __LINE__, __FILE__);
}
list($width, $height) = @getimagesize($tmp_filename);
list($width, $height, $type) = @getimagesize($tmp_filename);
}
else
{
@@ -183,7 +205,7 @@ function user_avatar_upload($mode, $avatar_mode, &$current_avatar, &$current_typ
return;
}
list($width, $height) = @getimagesize($avatar_filename);
list($width, $height, $type) = @getimagesize($avatar_filename);
}
if ( !($imgtype = check_image_type($avatar_filetype, $error, $error_msg)) )
@@ -191,16 +213,51 @@ function user_avatar_upload($mode, $avatar_mode, &$current_avatar, &$current_typ
return;
}
if ( $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] )
switch ($type)
{
// GIF
case 1:
if ($imgtype != '.gif')
{
@unlink($tmp_filename);
message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
}
break;
// JPG, JPC, JP2, JPX, JB2
case 2:
case 9:
case 10:
case 11:
case 12:
if ($imgtype != '.jpg' && $imgtype != '.jpeg')
{
@unlink($tmp_filename);
message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
}
break;
// PNG
case 3:
if ($imgtype != '.png')
{
@unlink($tmp_filename);
message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
}
break;
default:
@unlink($tmp_filename);
message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
}
if ( $width > 0 && $height > 0 && $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] )
{
$new_filename = uniqid(rand()) . $imgtype;
if ( $mode == 'editprofile' && $current_type == USER_AVATAR_UPLOAD && $current_avatar != '' )
{
if ( file_exists(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $current_avatar)) )
{
@unlink('./' . $board_config['avatar_path'] . '/' . $current_avatar);
}
user_avatar_delete($current_type, $current_avatar);
}
if( $avatar_mode == 'remote' )
@@ -224,6 +281,10 @@ function user_avatar_upload($mode, $avatar_mode, &$current_avatar, &$current_typ
$move_file = 'copy';
}
if (!is_uploaded_file($avatar_filename))
{
message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
}
$move_file($avatar_filename, './' . $board_config['avatar_path'] . "/$new_filename");
}
@@ -262,7 +323,7 @@ function display_avatar_gallery($mode, &$category, &$user_id, &$email, &$current
{
if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $sub_file) )
{
$avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file . '/' . $sub_file;
$avatar_images[$file][$avatar_row_count][$avatar_col_count] = $sub_file;
$avatar_name[$file][$avatar_row_count][$avatar_col_count] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_file)));
$avatar_col_count++;
@@ -308,7 +369,7 @@ function display_avatar_gallery($mode, &$category, &$user_id, &$email, &$current
for($j = 0; $j < count($avatar_images[$category][$i]); $j++)
{
$template->assign_block_vars('avatar_row.avatar_column', array(
"AVATAR_IMAGE" => $board_config['avatar_gallery_path'] . '/' . $avatar_images[$category][$i][$j],
"AVATAR_IMAGE" => $board_config['avatar_gallery_path'] . '/' . $category . '/' . $avatar_images[$category][$i][$j],
"AVATAR_NAME" => $avatar_name[$category][$i][$j])
);
@@ -320,7 +381,7 @@ function display_avatar_gallery($mode, &$category, &$user_id, &$email, &$current
$params = array('coppa', 'user_id', 'username', 'email', 'current_email', 'cur_password', 'new_password', 'password_confirm', 'icq', 'aim', 'msn', 'yim', 'website', 'location', 'occupation', 'interests', 'signature', 'viewemail', 'notifypm', 'popup_pm', 'notifyreply', 'attachsig', 'allowhtml', 'allowbbcode', 'allowsmilies', 'hideonline', 'style', 'language', 'timezone', 'dateformat');
$s_hidden_vars = '<input type="hidden" name="sid" value="' . $session_id . '" /><input type="hidden" name="agreed" value="true" />';
$s_hidden_vars = '<input type="hidden" name="sid" value="' . $session_id . '" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="avatarcatname" value="' . $category . '" />';
for($i = 0; $i < count($params); $i++)
{
@@ -342,4 +403,4 @@ function display_avatar_gallery($mode, &$category, &$user_id, &$email, &$current
return;
}
?>
?>

View File

@@ -0,0 +1,460 @@
<?php
/***************************************************************************
* usercp_confirm.php
* -------------------
* begin : Saturday, Jan 15, 2003
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id$
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
if ( !defined('IN_PHPBB') )
{
die('Hacking attempt');
exit;
}
// Note to potential users of this code ...
//
// Remember this is released under the _GPL_ and is subject
// to that licence. Do not incorporate this within software
// released or distributed in any way under a licence other
// than the GPL. We will be watching ... ;)
// Do we have an id? No, then just exit
if (empty($HTTP_GET_VARS['id']))
{
exit;
}
$confirm_id = htmlspecialchars($HTTP_GET_VARS['id']);
// Define available charset
$chars = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9');
if (!preg_match('/^[A-Za-z0-9]+$/', $confirm_id))
{
$confirm_id = '';
}
// Try and grab code for this id and session
$sql = 'SELECT code
FROM ' . CONFIRM_TABLE . "
WHERE session_id = '" . $userdata['session_id'] . "'
AND confirm_id = '$confirm_id'";
$result = $db->sql_query($sql);
// If we have a row then grab data else create a new id
if ($row = $db->sql_fetchrow($result))
{
$db->sql_freeresult($result);
$code = $row['code'];
}
else
{
exit;
}
// We can we will generate a single filtered png
// Thanks to DavidMJ for emulating zlib within the code :)
$_png = define_filtered_pngs();
$total_width = 320;
$total_height = 50;
$img_height = 40;
$img_width = 0;
$l = 0;
list($usec, $sec) = explode(' ', microtime());
mt_srand($sec * $usec);
$char_widths = array();
for ($i = 0; $i < strlen($code); $i++)
{
$char = $code{$i};
$width = mt_rand(0, 4);
$char_widths[] = $width;
$img_width += $_png[$char]['width'] - $width;
}
$offset_x = mt_rand(0, $total_width - $img_width);
$offset_y = mt_rand(0, $total_height - $img_height);
$image = '';
$hold_chars = array();
for ($i = 0; $i < $total_height; $i++)
{
$image .= chr(0);
if ($i > $offset_y && $i < $offset_y + $img_height)
{
$j = 0;
for ($k = 0; $k < $offset_x; $k++)
{
$image .= chr(mt_rand(140, 255));
}
for ($k = 0; $k < strlen($code); $k++)
{
$char = $code{$k};
if (empty($hold_chars[$char]))
{
$hold_chars[$char] = explode("\n", chunk_split(base64_decode($_png[$char]['data']), $_png[$char]['width'] + 1, "\n"));
}
$image .= randomise(substr($hold_chars[$char][$l], 1), $char_widths[$j]);
$j++;
}
for ($k = $offset_x + $img_width; $k < $total_width; $k++)
{
$image .= chr(mt_rand(140, 255));
}
$l++;
}
else
{
for ($k = 0; $k < $total_width; $k++)
{
$image .= chr(mt_rand(140, 255));
}
}
}
unset($hold);
$image = create_png($image, $total_width, $total_height);
// Output image
header('Content-Type: image/png');
header('Cache-control: no-cache, no-store');
echo $image;
unset($image);
unset($_png);
exit;
// This is designed to randomise the pixels of the image data within
// certain limits so as to keep it readable. It also varies the image
// width a little
function randomise($scanline, $width)
{
$new_line = '';
$start = floor($width/2);
$end = strlen($scanline) - ceil($width/2);
for ($i = $start; $i < $end; $i++)
{
$pixel = ord($scanline{$i});
if ($pixel < 190)
{
$new_line .= chr(mt_rand(0, 205));
}
else if ($pixel > 190)
{
$new_line .= chr(mt_rand(145, 255));
}
else
{
$new_line .= $scanline{$i};
}
}
return $new_line;
}
// This creates a chunk of the given type, with the given data
// of the given length adding the relevant crc
function png_chunk($length, $type, $data)
{
$raw = $type;
$raw .= $data;
$crc = crc32($raw);
$raw .= pack('C4', $crc >> 24, $crc >> 16, $crc >> 8, $crc);
return pack('C4', $length >> 24, $length >> 16, $length >> 8, $length) . $raw;
}
// Creates greyscale 8bit png - The PNG spec can be found at
// http://www.libpng.org/pub/png/spec/PNG-Contents.html we use
// png because it's a fully recognised open standard and supported
// by practically all modern browsers and OSs
function create_png($raw_image, $width, $height)
{
// SIG
$image = pack('C8', 137, 80, 78, 71, 13, 10, 26, 10);
// IHDR
$raw = pack('C4', $width >> 24, $width >> 16, $width >> 8, $width);
$raw .= pack('C4', $height >> 24, $height >> 16, $height >> 8, $height);
$raw .= pack('C5', 8, 0, 0, 0, 0);
$image .= png_chunk(13, 'IHDR', $raw);
if (@extension_loaded('zlib'))
{
$raw_image = gzcompress($raw_image);
$length = strlen($raw_image);
}
else
{
// The total length of this image, uncompressed, is just a calculation of pixels
$length = ($width + 1) * $height;
// Adler-32 hash generation
// Optimized Adler-32 loop ported from the GNU Classpath project
$temp_length = $length;
$s1 = 1;
$s2 = $index = 0;
while ($temp_length > 0)
{
// We can defer the modulo operation:
// s1 maximally grows from 65521 to 65521 + 255 * 3800
// s2 maximally grows by 3800 * median(s1) = 2090079800 < 2^31
$substract_value = ($temp_length < 3800) ? $temp_length : 3800;
$temp_length -= $substract_value;
while (--$substract_value >= 0)
{
$s1 += ord($raw_image[$index]);
$s2 += $s1;
$index++;
}
$s1 %= 65521;
$s2 %= 65521;
}
$adler_hash = pack('N', ($s2 << 16) | $s1);
// This is the same thing as gzcompress($raw_image, 0) but does not need zlib
$raw_image = pack('C3v2', 0x78, 0x01, 0x01, $length, ~$length) . $raw_image . $adler_hash;
// The Zlib header + Adler hash make us add on 11
$length += 11;
}
// IDAT
$image .= png_chunk($length, 'IDAT', $raw_image);
// IEND
$image .= png_chunk(0, 'IEND', '');
return $image;
}
// Each 'data' element is base64_encoded uncompressed IDAT
// png image data
function define_filtered_pngs()
{
$_png = array(
'0' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A///////////////////olFAkBAAAGDyA4P///M31/////////////wD////////////////0dAgAAAAAAAAAAAAEcPipFGHn////////////AP//////////////6DAAAAAAAAAAAAAAAAAALSEAN+T///////////8A//////////////xAAAAAAAAAAAAAAAAAAAAAACPA/////////////wD/////////////oAAAAAAAAAAAAAAAAAAAAAAAev//////////////AP////////////8oAAAAAAAAPNj/zDAAAAAAAABD//////////////8A////////////1AAAAAAAABjw////5BAAAAAAAADo/////////////wD///////////+QAAAAAAAAbP//////QgAAAAAAAKj/////////////AP///////////1wAAAAAAACs/////8AXAAAAAAAAcP////////////8A////////////OAAAAAAAAND////dNwAAAAAAAABI/////////////wD///////////8gAAAAAAAA4P//7koACwAAAAAAACT/////////////AP///////////wgAAAAAAAD///VqAwaPAAAAAAAAEP////////////8A////////////AAAAAAAAAP/8kQYDavUAAAAAAAAA/////////////wD///////////8AAAAAAAAA/6kNAEru/wAAAAAAAAD/////////////AP///////////wAAAAAAAADAIwA33f//AAAAAAAAAP////////////8A////////////FAAAAAAAADYAI8D///8AAAAAAAAQ/////////////wD///////////8kAAAAAAAAAA2p////5AAAAAAAACD/////////////AP///////////0gAAAAAAAAFkfz////UAAAAAAAAQP////////////8A////////////cAAAAAAAAET1/////7AAAAAAAABo/////////////wD///////////+oAAAAAAAAXfX/////sAAAAAAAAGj/////////////AAAAALgAAAAAAAAwAAAAAAAAAAAAAAD////////////oAAAAAAAACOT////oEAAAAAAAAOD/////////////AP////////////8+AAAAAAAAKMz/zDQAAAAAAAA0//////////////8A////////////7jgAAAAAAAAAAAAAAAAAAAAAAKT//////////////wD///////////VqAwIAAAAAAAAAAAAAAAAAAAA8////////////////AP//////////rQcDaVEAAAAAAAAAAAAAAAAAKOj///////////////8A///////////nblnu/IAIAAAAAAAAAAAAAFzw/////////////////wD////////////79////+iITCAAAAAgSITg////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////w==',
'width' => 40
),
'1' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////8BAAAAAAAP//////////////////AP////////////////////////9sAAAAAAAA//////////////////8A////////////////////////pAAAAAAAAAD//////////////////wD//////////////////////6wEAAAAAAAAAP//////////////////AP////////////////////h4AAAAAAAAAAAA//////////////////8A//////////////////ygJAAAAAAAAAAAAAD//////////////////wD//////////////9x8HAAAAAAAAAAAAAAAAP//////////////////AP//////////////AAAAAAAAAAAAAAAAAAAA//////////////////8A//////////////8AAAAAAAAAAAAAAAAAAAD//////////////////wD//////////////wAAAAAAAAR4AAAAAAAAAP//////////////////AP//////////////AAAAAAA4zP8AAAAAAAAA//////////////////8A//////////////8AAAA4sP///wAAAAAAAAD//////////////////wD//////////////yR80P//////AAAAAAAAAP//////////////////AP////////////////////////8AAAAAAAAA//////////////////8A/////////////////////////wAAAAAAAAD//////////////////wD/////////////////////////AAAAAAAAAP//////////////////AP////////////////////////8AAAAAAAAA//////////////////8A/////////////////////////wAAAAAAAAD//////////////////wD/////////////////////////AAAAAAAAAP//////////////////AP////////////////////////8AAAAAAAAA//////////////////8A/////////////////////////wAAAAAAAAD//////////////////wD/////////////////////////AAAAAAAAAP//////////////////AP////////////////////////8AAAAAAAAA//////////////////8A/////////////////////////wAAAAAAAAD//////////////////wD/////////////////////////AAAAAAAAAP//////////////////AP////////////////////////8AAAAAAAAA//////////////////8A/////////////////////////wAAAAAAAAD//////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'2' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP/////////////////okFAkCAAABCBIfNT///////////////////8A///////////////8hAgAAAAAAAAAAAAAAFTo/////////////////wD//////////////1QAAAAAAAAAAAAAAAAAACjo////////////////AP////////////+MAAAAAAAAAAAAAAAAAAAAADj///////////////8A////////////9BAAAAAAAAAAAAAAAAAAAAAAALD//////////////wD///////////+gAAAAAAAAAHjs+KwMAAAAAAAAVP//////////////AP///////////1gAAAAAAABM/////6QAAAAAAAAU//////////////8A////////////KAAAAAAAALj/////+AAAAAAAAAD//////////////wD///////////+MfGBMOCAI8P/////wAAAAAAAACP//////////////AP///////////////////////////5wAAAAAAAAw//////////////8A///////////////////////////oFAAAAAAAAHz//////////////wD/////////////////////////6CgAAAAAAAAE3P//////////////AP///////////////////////9ggAAAAAAAAAHT///////////////8A//////////////////////+0DAAAAAAAAAA8+P///////////////wD/////////////////////gAAAAAAAAAAAKOj/////////////////AP//////////////////9FAAAAAAAAAAADzw//////////////////8A/////////////////+g4AAAAAAAAAABk/P///////////////////wD////////////////oKAAAAAAAAAAMqP//////////////////////AP//////////////6CgAAAAAAAAAMNz///////////////////////8A//////////////g4AAAAAAAAAFT0/////////////////////////wD/////////////bAAAAAAAAABU/P//////////////////////////AP///////////8wAAAAAAAAAAAAAAAAAAAAAAAAA//////////////8A////////////SAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////AP//////////hAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////8A//////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////xAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'3' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD////////////////8sGg0FAAAACA4cLz8////////////////////AP//////////////rBgAAAAAAAAAAAAAACTA//////////////////8A/////////////3QAAAAAAAAAAAAAAAAAAASs/////////////////wD///////////+YAAAAAAAAAAAAAAAAAAAAAAjc////////////////AP//////////6AwAAAAAAAAAAAAAAAAAAAAAAGT///////////////8A//////////94AAAAAAAABJDw/8g4AAAAAAAAHP///////////////wD//////////yAAAAAAAACE/////9gAAAAAAAAA////////////////AP///////////NSwiGQ4FOT//////AAAAAAAABD///////////////8A//////////////////////////+YAAAAAAAAVP///////////////wD//////////////////////P/ggAQAAAAAAATM////////////////AP////////////////////9gAAAAAAAAAAAElP////////////////8A/////////////////////0AAAAAAAAAAHLj//////////////////wD/////////////////////OAAAAAAAAAAwkPj/////////////////AP////////////////////8gAAAAAAAAAAAAINj///////////////8A/////////////////////xAAAAAAAAAAAAAAIPD//////////////wD/////////////////////uOz/4HgEAAAAAAAAhP//////////////AP///////////////////////////3wAAAAAAAAw//////////////8A////////////////////////////6AAAAAAAAAj//////////////wD/////////////////////////////AAAAAAAAAP//////////////AP//////////tJh8YEQoDNz//////+AAAAAAAAAY//////////////8A//////////88AAAAAAAAaP//////dAAAAAAAAEz//////////////wD//////////6QAAAAAAAAAdOD/5HQAAAAAAAAApP//////////////AP///////////CgAAAAAAAAAAAAAAAAAAAAAACD4//////////////8A////////////yAQAAAAAAAAAAAAAAAAAAAAEuP///////////////wD/////////////rAQAAAAAAAAAAAAAAAAABJD/////////////////AP//////////////zDQAAAAAAAAAAAAAACTA//////////////////8A/////////////////8BwOCAAAAAUNGi0/P///////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'4' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP//////////////////////////nAAAAAAAAAD///////////////8A/////////////////////////8AEAAAAAAAAAP///////////////wD////////////////////////gGAAAAAAAAAAA////////////////AP//////////////////////9DAAAAAAAAAAAAD///////////////8A//////////////////////9UAAAAAAAAAAAAAP///////////////wD/////////////////////hAAAAAAAAAAAAAAA////////////////AP///////////////////7QAAAAAAAAAAAAAAAD///////////////8A///////////////////UDAAAAAAUAAAAAAAAAP///////////////wD/////////////////7CQAAAAABMAAAAAAAAAA////////////////AP////////////////xEAAAAAACU/wAAAAAAAAD///////////////8A////////////////cAAAAAAAZP//AAAAAAAAAP///////////////wD//////////////6AAAAAAADz8//8AAAAAAAAA////////////////AP/////////////IBAAAAAAc6P///wAAAAAAAAD///////////////8A////////////5BgAAAAADMz/////AAAAAAAAAP///////////////wD///////////g0AAAAAACk//////8AAAAAAAAA////////////////AP//////////XAAAAAAAfP///////wAAAAAAAAD///////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8A////////////////////////////AAAAAAAAAP///////////////wD///////////////////////////8AAAAAAAAA////////////////AP///////////////////////////wAAAAAAAAD///////////////8A////////////////////////////AAAAAAAAAP///////////////wD///////////////////////////8AAAAAAAAA////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'5' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP//////////////8AAAAAAAAAAAAAAAAAAAAAAA//////////////8A///////////////MAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////////6wAAAAAAAAAAAAAAAAAAAAAAP//////////////AP//////////////iAAAAAAAAAAAAAAAAAAAAAAA//////////////8A//////////////9kAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////////0QAAAAAAAAAAAAAAAAAAAAAAP//////////////AP//////////////IAAAAAAAYP////////////////////////////8A//////////////wAAAAAAAB8/////////////////////////////wD/////////////3AAAAAAAAIj/////////////////////////////AP////////////+4AAAAAAAAoLRYHAAEKGTE//////////////////8A/////////////5QAAAAAAAAQAAAAAAAAAABY9P///////////////wD/////////////dAAAAAAAAAAAAAAAAAAAAAA89P//////////////AP////////////9QAAAAAAAAAAAAAAAAAAAAAABg//////////////8A/////////////zAAAAAAAAAAAAAAAAAAAAAAAADQ/////////////wD/////////////IAAAAAAAAGjY/+h4BAAAAAAAAGz/////////////AP//////////////9NS0lHSc//////90AAAAAAAALP////////////8A/////////////////////////////9QAAAAAAAAE/////////////wD//////////////////////////////wAAAAAAAAD/////////////AP/////////////////////////////8AAAAAAAAEP////////////8A////////////pIRwWEAgDOD//////8wAAAAAAAA8/////////////wD///////////9EAAAAAAAAaP//////ZAAAAAAAAHz/////////////AP///////////6QAAAAAAAAAaOD/4GQAAAAAAAAE4P////////////8A/////////////CQAAAAAAAAAAAAAAAAAAAAAAGD//////////////wD/////////////yAQAAAAAAAAAAAAAAAAAAAAc7P//////////////AP//////////////rAwAAAAAAAAAAAAAAAAAGNj///////////////8A////////////////0EAAAAAAAAAAAAAAAFTo/////////////////wD//////////////////8h4QCAAAAAcQHzU////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'6' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD///////////////////+0ZCwMAAAUNGjI////////////////////AP/////////////////EMAAAAAAAAAAAAABM6P////////////////8A////////////////lAQAAAAAAAAAAAAAAAAo6P///////////////wD//////////////6wAAAAAAAAAAAAAAAAAAABI////////////////AP/////////////oEAAAAAAAAAAAAAAAAAAAAACw//////////////8A/////////////3AAAAAAAAAoxP/YPAAAAAAAAEj//////////////wD////////////4EAAAAAAACOD////YDCBAVGiAoP//////////////AP///////////7gAAAAAAABY//////////////////////////////8A////////////eAAAAAAAAJT//////////////////////////////wD///////////9MAAAAAAAAvP/IXBgABCx03P//////////////////AP///////////ygAAAAAAADcdAAAAAAAAAAEiP////////////////8A////////////FAAAAAAAAFAAAAAAAAAAAAAAcP///////////////wD///////////8AAAAAAAAAAAAAAAAAAAAAAAAAlP//////////////AP///////////wAAAAAAAAAAAAAAAAAAAAAAAAAQ8P////////////8A////////////AAAAAAAAAABAyP/kZAAAAAAAAACQ/////////////wD///////////8MAAAAAAAALPj/////WAAAAAAAAET/////////////AP///////////yQAAAAAAACY///////MAAAAAAAAFP////////////8A////////////SAAAAAAAAMD///////wAAAAAAAAA/////////////wD///////////9wAAAAAAAAvP///////wAAAAAAAAD/////////////AP///////////7QAAAAAAACI///////UAAAAAAAAJP////////////8A////////////+AwAAAAAACDw/////2wAAAAAAABY/////////////wD/////////////cAAAAAAAADC8/Ox4AAAAAAAAAKj/////////////AP/////////////oEAAAAAAAAAAAAAAAAAAAAAAk/P////////////8A//////////////+oAAAAAAAAAAAAAAAAAAAABLj//////////////wD///////////////+QAAAAAAAAAAAAAAAAAACQ////////////////AP////////////////+0JAAAAAAAAAAAAAAkuP////////////////8A///////////////////8sGg0FAAADCxgqPz//////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'7' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD///////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP///////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD///////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP///////////wAAAAAAAAAAAAAAAAAAAAAAAAAABP////////////8A////////////AAAAAAAAAAAAAAAAAAAAAAAAAAy4/////////////wD//////////////////////////+QUAAAAAAAEuP//////////////AP/////////////////////////8QAAAAAAAAKT///////////////8A/////////////////////////4wAAAAAAAB0/////////////////wD////////////////////////cCAAAAAAANPz/////////////////AP///////////////////////0QAAAAAAATY//////////////////8A//////////////////////+0AAAAAAAAeP///////////////////wD//////////////////////CQAAAAAABTw////////////////////AP////////////////////+gAAAAAAAAkP////////////////////8A/////////////////////ywAAAAAABDw/////////////////////wD///////////////////+4AAAAAAAAbP//////////////////////AP///////////////////1wAAAAAAADQ//////////////////////8A///////////////////4DAAAAAAAMP///////////////////////wD//////////////////7QAAAAAAAB8////////////////////////AP//////////////////aAAAAAAAAMj///////////////////////8A//////////////////8oAAAAAAAM/P///////////////////////wD/////////////////8AAAAAAAAET/////////////////////////AP////////////////+0AAAAAAAAcP////////////////////////8A/////////////////4wAAAAAAACY/////////////////////////wD/////////////////WAAAAAAAAMD/////////////////////////AP////////////////80AAAAAAAA4P////////////////////////8A/////////////////xAAAAAAAAD4/////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'8' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD////////////////////IdDQUAAAEIEiA1P//////////////////AP/////////////////gRAAAAAAAAAAAAAAAROD///////////////8A////////////////0BgAAAAAAAAAAAAAAAAAEMj//////////////wD///////////////AcAAAAAAAAAAAAAAAAAAAAHPD/////////////AP//////////////hAAAAAAAAAAAAAAAAAAAAAAAhP////////////8A//////////////8sAAAAAAAAKMz/zCgAAAAAAAAs/////////////wD//////////////wAAAAAAAADM////zAAAAAAAAAD/////////////AP//////////////BAAAAAAAAP//////AAAAAAAABP////////////8A//////////////8sAAAAAAAAzP///9QAAAAAAAAw/////////////wD//////////////3wAAAAAAAAoyP/YNAAAAAAAAIT/////////////AP//////////////7BgAAAAAAAAAAAAAAAAAAAAc8P////////////8A////////////////xBgAAAAAAAAAAAAAAAAAGNj//////////////wD/////////////////tAQAAAAAAAAAAAAAAACo////////////////AP///////////////HAAAAAAAAAAAAAAAAAAAAB8//////////////8A//////////////9gAAAAAAAAAAAAAAAAAAAAAAB8/////////////wD/////////////wAAAAAAAAABk4P/UWAAAAAAAAATQ////////////AP////////////9UAAAAAAAAaP//////XAAAAAAAAGT///////////8A/////////////xgAAAAAAADg///////cAAAAAAAAJP///////////wD/////////////AAAAAAAAAP////////8AAAAAAAAA////////////AP////////////8AAAAAAAAA4P//////3AAAAAAAAAT///////////8A/////////////ygAAAAAAABg//////9cAAAAAAAALP///////////wD/////////////ZAAAAAAAAABY1P/cXAAAAAAAAABw////////////AP/////////////QAAAAAAAAAAAAAAAAAAAAAAAABNz///////////8A//////////////9gAAAAAAAAAAAAAAAAAAAAAAB0/////////////wD///////////////Q8AAAAAAAAAAAAAAAAAAAAUPz/////////////AP////////////////x4CAAAAAAAAAAAAAAAEIT8//////////////8A///////////////////smFQwGAAAABg0ZKT0/////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'9' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD///////////////////ysYCwMAAAUNGiw/P//////////////////AP////////////////+4JAAAAAAAAAAAAAAkuP////////////////8A////////////////lAQAAAAAAAAAAAAAAAAAkP///////////////wD//////////////8AEAAAAAAAAAAAAAAAAAAAAqP//////////////AP/////////////8JAAAAAAAAAAAAAAAAAAAAAAQ7P////////////8A/////////////6wAAAAAAAAAfOz8vCwAAAAAAABw/////////////wD/////////////WAAAAAAAAHD/////7BgAAAAAAAz4////////////AP////////////8kAAAAAAAA1P//////hAAAAAAAALT///////////8A/////////////wAAAAAAAAD///////+4AAAAAAAAcP///////////wD/////////////AAAAAAAAAPz//////8AAAAAAAABI////////////AP////////////8UAAAAAAAAzP//////lAAAAAAAACT///////////8A/////////////0QAAAAAAABY//////gsAAAAAAAADP///////////wD/////////////kAAAAAAAAABw5P/IPAAAAAAAAAAA////////////AP/////////////wEAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8A//////////////+UAAAAAAAAAAAAAAAAAAAAAAAAAP///////////wD///////////////9wAAAAAAAAAAAAAFAAAAAAAAAU////////////AP////////////////+IBAAAAAAAAABw3AAAAAAAACj///////////8A///////////////////cdCwEABhcxP+8AAAAAAAATP///////////wD//////////////////////////////5AAAAAAAAB4////////////AP//////////////////////////////UAAAAAAAALj///////////8A//////////////+kgGxUQCAM2P///+AIAAAAAAAQ+P///////////wD//////////////0gAAAAAAAA42P/EKAAAAAAAAHD/////////////AP//////////////sAAAAAAAAAAAAAAAAAAAAAAQ6P////////////8A////////////////TAAAAAAAAAAAAAAAAAAAAKz//////////////wD////////////////oKAAAAAAAAAAAAAAAAASU////////////////AP/////////////////sUAAAAAAAAAAAAAAwxP////////////////8A////////////////////yHA0FAAADCxktP///////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'A' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD//////////////////+QAAAAAAAAAAAAAAOT/////////////////AP//////////////////kAAAAAAAAAAAAAAAkP////////////////8A//////////////////88AAAAAAAAAAAAAAA8/////////////////wD/////////////////5AAAAAAAAAAAAAAAAADk////////////////AP////////////////+QAAAAAAAAAAAAAAAAAJD///////////////8A/////////////////zwAAAAAAAAAAAAAAAAAPP///////////////wD////////////////kAAAAAAAAAAgAAAAAAAAA5P//////////////AP///////////////5AAAAAAAAAAgAAAAAAAAACQ//////////////8A////////////////PAAAAAAAAAz8HAAAAAAAADz//////////////wD//////////////+QAAAAAAAAAWP9kAAAAAAAAANz/////////////AP//////////////kAAAAAAAAACk/7wAAAAAAAAAhP////////////8A//////////////88AAAAAAAABOz//BQAAAAAAAAw/////////////wD/////////////4AAAAAAAAAA8////ZAAAAAAAAADc////////////AP////////////+EAAAAAAAAAIj///+8AAAAAAAAAIT///////////8A/////////////zAAAAAAAAAA2P////wQAAAAAAAAMP///////////wD////////////cAAAAAAAAACT//////1wAAAAAAAAA3P//////////AP///////////4QAAAAAAAAAAAAAAAAAAAAAAAAAAACE//////////8A////////////MAAAAAAAAAAAAAAAAAAAAAAAAAAAADD//////////wD//////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANz/////////AP//////////hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhP////////8A//////////8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw/////////wD/////////3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc////////AP////////+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIT///////8A/////////zAAAAAAAAAAhP///////////2QAAAAAAAAAMP///////wD////////cAAAAAAAAAADM////////////vAAAAAAAAAAA3P//////AP///////4QAAAAAAAAAHP/////////////4DAAAAAAAAACE//////8A////////MAAAAAAAAABk//////////////9cAAAAAAAAADD//////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'B' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAEDh83P///////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAEhP//////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAeP////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAxP///////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAABY////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAABT///////////8A//////////8AAAAAAAAAAP/////4zEwAAAAAAAAAAP///////////wD//////////wAAAAAAAAAA////////7AAAAAAAAAAQ////////////AP//////////AAAAAAAAAAD////////sAAAAAAAAAEj///////////8A//////////8AAAAAAAAAAP/////4zEQAAAAAAAAAtP///////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAFz/////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAiA/P////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAIjPj//////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAGKz/////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJT///////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAABNz//////////wD//////////wAAAAAAAAAA///////sqCAAAAAAAAAAbP//////////AP//////////AAAAAAAAAAD/////////yAAAAAAAAAAs//////////8A//////////8AAAAAAAAAAP//////////AAAAAAAAAAT//////////wD//////////wAAAAAAAAAA/////////7wAAAAAAAAAAP//////////AP//////////AAAAAAAAAAD//////+ikGAAAAAAAAAAY//////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFT//////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsP//////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAADj///////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAc6P///////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAATOj/////////////AP//////////AAAAAAAAAAAAAAAAAAAEIEBkkNj///////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'C' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP//////////////////5JRULBAAAAgkTIDQ//////////////////8A////////////////1FAAAAAAAAAAAAAAAABAyP///////////////wD//////////////4gEAAAAAAAAAAAAAAAAAAAElP//////////////AP////////////9wAAAAAAAAAAAAAAAAAAAAAAAAlP////////////8A////////////kAAAAAAAAAAAAAAAAAAAAAAAAAAEyP///////////wD//////////9wIAAAAAAAAAAAAAAAAAAAAAAAAAAAw////////////AP//////////WAAAAAAAAAAAWMz/8JwQAAAAAAAAAACw//////////8A/////////+wEAAAAAAAAAID//////9QMAAAAAAAAAET//////////wD/////////nAAAAAAAAAAo/P///////3wAAAAABDBspP//////////AP////////9gAAAAAAAAAIz/////////3BxQjMT0//////////////8A/////////zQAAAAAAAAAzP///////////////////////////////wD/////////GAAAAAAAAADo////////////////////////////////AP////////8AAAAAAAAAAP////////////////////////////////8A/////////wAAAAAAAAAA/////////////////////////////////wD/////////AAAAAAAAAAD/////////////////////////////////AP////////8cAAAAAAAAAOj///////////////////////////////8A/////////zgAAAAAAAAA0P/////////kIGio7P///////////////wD/////////bAAAAAAAAACg/////////5wAAAAAMHS49P//////////AP////////+oAAAAAAAAAEz/////////PAAAAAAAAAAc//////////8A//////////QIAAAAAAAAALz//////6QAAAAAAAAAAGT//////////wD//////////3AAAAAAAAAADIzo/+SEBAAAAAAAAAAAyP//////////AP//////////7BAAAAAAAAAAAAAAAAAAAAAAAAAAAED///////////8A////////////rAAAAAAAAAAAAAAAAAAAAAAAAAAE0P///////////wD/////////////fAAAAAAAAAAAAAAAAAAAAAAAAJz/////////////AP//////////////iAQAAAAAAAAAAAAAAAAAAASY//////////////8A////////////////yEAAAAAAAAAAAAAAAAA8yP///////////////wD//////////////////9yIUCwQAAAAIEB4yP//////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'D' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD///////////8AAAAAAAAAAAAAAAAADChQkOT/////////////////AP///////////wAAAAAAAAAAAAAAAAAAAAAABGjw//////////////8A////////////AAAAAAAAAAAAAAAAAAAAAAAAACDY/////////////wD///////////8AAAAAAAAAAAAAAAAAAAAAAAAAABjk////////////AP///////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAED///////////8A////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKj//////////wD///////////8AAAAAAAAAAP///+isSAAAAAAAAAAANP//////////AP///////////wAAAAAAAAAA////////hAAAAAAAAAAA2P////////8A////////////AAAAAAAAAAD/////////MAAAAAAAAACQ/////////wD///////////8AAAAAAAAAAP////////+MAAAAAAAAAFj/////////AP///////////wAAAAAAAAAA/////////8gAAAAAAAAAMP////////8A////////////AAAAAAAAAAD/////////5AAAAAAAAAAY/////////wD///////////8AAAAAAAAAAP//////////AAAAAAAAAAD/////////AP///////////wAAAAAAAAAA//////////8AAAAAAAAAAP////////8A////////////AAAAAAAAAAD//////////wAAAAAAAAAA/////////wD///////////8AAAAAAAAAAP/////////wAAAAAAAAABD/////////AP///////////wAAAAAAAAAA/////////9QAAAAAAAAAJP////////8A////////////AAAAAAAAAAD/////////qAAAAAAAAABI/////////wD///////////8AAAAAAAAAAP////////9QAAAAAAAAAHj/////////AP///////////wAAAAAAAAAA////////uAAAAAAAAAAAvP////////8A////////////AAAAAAAAAAD////w0HwEAAAAAAAAACT8/////////wD///////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAoP//////////AP///////////wAAAAAAAAAAAAAAAAAAAAAAAAAAADz8//////////8A////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAY6P///////////wD///////////8AAAAAAAAAAAAAAAAAAAAAAAAAKNz/////////////AP///////////wAAAAAAAAAAAAAAAAAAAAAACHT0//////////////8A////////////AAAAAAAAAAAAAAAAABg4bKj0/////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'E' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP//////////AAAAAAAAAAD///////////////////////////////8A//////////8AAAAAAAAAAP///////////////////////////////wD//////////wAAAAAAAAAA////////////////////////////////AP//////////AAAAAAAAAAD///////////////////////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////8A//////////8AAAAAAAAAAP///////////////////////////////wD//////////wAAAAAAAAAA////////////////////////////////AP//////////AAAAAAAAAAD///////////////////////////////8A//////////8AAAAAAAAAAP///////////////////////////////wD//////////wAAAAAAAAAA////////////////////////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'F' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAA////////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAD///////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAP///////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAA////////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAD///////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAP///////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'G' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD//////////////////MB8TCgQAAAACCA4YJzs////////////////AP///////////////JQcAAAAAAAAAAAAAAAAAAhw8P////////////8A/////////////9gwAAAAAAAAAAAAAAAAAAAAAAAk2P///////////wD////////////EDAAAAAAAAAAAAAAAAAAAAAAAAAAc7P//////////AP//////////2AwAAAAAAAAAAAAAAAAAAAAAAAAAAABY//////////8A//////////wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ/////////wD/////////kAAAAAAAAAAAEHzQ/P/gmCAAAAAAAAAAAFz/////////AP////////wcAAAAAAAAACjg////////8CwAAAAAAAAgWP////////8A////////vAAAAAAAAAAI2P//////////yBRAcJjI8P///////////wD///////94AAAAAAAAAGD/////////////////////////////////AP///////0AAAAAAAAAAsP////////////////////////////////8A////////IAAAAAAAAADc/////////////////////////////////wD///////8AAAAAAAAAAP///////wAAAAAAAAAAAAAAAAD/////////AP///////wAAAAAAAAAA////////AAAAAAAAAAAAAAAAAP////////8A////////AAAAAAAAAAD///////8AAAAAAAAAAAAAAAAA/////////wD///////8gAAAAAAAAAOD//////wAAAAAAAAAAAAAAAAD/////////AP///////0AAAAAAAAAAtP//////AAAAAAAAAAAAAAAAAP////////8A////////cAAAAAAAAABw//////8AAAAAAAAAAAAAAAAA/////////wD///////+8AAAAAAAAABDs////////////AAAAAAAAAAD/////////AP////////wYAAAAAAAAADz0//////////AAAAAAAAAAAP////////8A/////////5AAAAAAAAAAACCY4P//3KhcCAAAAAAAAAAA/////////wD/////////+CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////AP//////////xAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIP////////8A////////////rAQAAAAAAAAAAAAAAAAAAAAAAAAAAGTw/////////wD/////////////vBQAAAAAAAAAAAAAAAAAAAAAADjI////////////AP//////////////8HAQAAAAAAAAAAAAAAAAAEiw//////////////8A//////////////////iwcEAgBAAABCA4aKDk/////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'H' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8A/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8A/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'I' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAA////////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAD///////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAP///////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAA////////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAD///////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAP///////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAA////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAD///////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAP///////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAA////////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAD///////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAP///////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAA////////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAD///////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'J' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP///////////////////////////wAAAAAAAAAA//////////////8A////////////////////////////AAAAAAAAAAD//////////////wD///////////////////////////8AAAAAAAAAAP//////////////AP///////////////////////////wAAAAAAAAAA//////////////8A////////////////////////////AAAAAAAAAAD//////////////wD///////////////////////////8AAAAAAAAAAP//////////////AP///////////////////////////wAAAAAAAAAA//////////////8A////////////////////////////AAAAAAAAAAD//////////////wD///////////////////////////8AAAAAAAAAAP//////////////AP///////////////////////////wAAAAAAAAAA//////////////8A////////////////////////////AAAAAAAAAAD//////////////wD///////////////////////////8AAAAAAAAAAP//////////////AP///////////////////////////wAAAAAAAAAA//////////////8A////////////////////////////AAAAAAAAAAD//////////////wD///////////////////////////8AAAAAAAAAAP//////////////AP///////////////////////////wAAAAAAAAAA//////////////8A////////////////////////////AAAAAAAAAAj//////////////wD//////////+zMrIxwUDAQ//////wAAAAAAAAAIP//////////////AP//////////DAAAAAAAAADo////2AAAAAAAAAA0//////////////8A//////////8wAAAAAAAAAKj///+YAAAAAAAAAFj//////////////wD//////////2gAAAAAAAAAIND/yBgAAAAAAAAAkP//////////////AP//////////vAAAAAAAAAAAAAAAAAAAAAAAAADc//////////////8A////////////MAAAAAAAAAAAAAAAAAAAAAAAUP///////////////wD////////////EBAAAAAAAAAAAAAAAAAAAABjk////////////////AP////////////+sBAAAAAAAAAAAAAAAAAAY2P////////////////8A///////////////EMAAAAAAAAAAAAAAAVOj//////////////////wD/////////////////vHBAIAAAABg8fNT/////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'K' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD///////8AAAAAAAAAAP//////////wAQAAAAAAAAAAABw////////AP///////wAAAAAAAAAA/////////9AMAAAAAAAAAAAAcP////////8A////////AAAAAAAAAAD////////cGAAAAAAAAAAAAHD//////////wD///////8AAAAAAAAAAP//////6CgAAAAAAAAAAABs////////////AP///////wAAAAAAAAAA//////Q0AAAAAAAAAAAAVPz///////////8A////////AAAAAAAAAAD////8RAAAAAAAAAAAAFT8/////////////wD///////8AAAAAAAAAAP///1gAAAAAAAAAAABU/P//////////////AP///////wAAAAAAAAAA//9wAAAAAAAAAAAASPz///////////////8A////////AAAAAAAAAAD/jAAAAAAAAAAAADz0/////////////////wD///////8AAAAAAAAAAKQAAAAAAAAAAAA89P//////////////////AP///////wAAAAAAAAAABAAAAAAAAAAAFPT///////////////////8A////////AAAAAAAAAAAAAAAAAAAAAAAApP///////////////////wD///////8AAAAAAAAAAAAAAAAAAAAAAAAU8P//////////////////AP///////wAAAAAAAAAAAAAAAAAAAAAAAABk//////////////////8A////////AAAAAAAAAAAAAAAAAAAAAAAAAADE/////////////////wD///////8AAAAAAAAAAAAAAAAoEAAAAAAAACz8////////////////AP///////wAAAAAAAAAAAAAAGNiAAAAAAAAAAIj///////////////8A////////AAAAAAAAAAAAABjY//gYAAAAAAAACOD//////////////wD///////8AAAAAAAAAAAAY2P///5wAAAAAAAAASP//////////////AP///////wAAAAAAAAAAGNj//////CgAAAAAAAAAqP////////////8A////////AAAAAAAAAADI////////sAAAAAAAAAAc8P///////////wD///////8AAAAAAAAAAP//////////QAAAAAAAAABs////////////AP///////wAAAAAAAAAA///////////IAAAAAAAAAATI//////////8A////////AAAAAAAAAAD///////////9YAAAAAAAAADD8/////////wD///////8AAAAAAAAAAP///////////9wEAAAAAAAAAJD/////////AP///////wAAAAAAAAAA/////////////3AAAAAAAAAADOT///////8A////////AAAAAAAAAAD/////////////7BAAAAAAAAAAUP///////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'L' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAD/////////////////////////////AP////////////8AAAAAAAAAAP////////////////////////////8A/////////////wAAAAAAAAAA/////////////////////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A/////////////wAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD/////////////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'M' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A//////8AAAAAAAAAAAAAAHz//////3wAAAAAAAAAAAAAAP///////wD//////wAAAAAAAAAAAAAATP//////UAAAAAAAAAAAAAAA////////AP//////AAAAAAAAAAAAAAAc//////8cAAAAAAAAAAAAAAD///////8A//////8AAAAAAAAAAAAAAADw////8AAAAAAAAAAAAAAAAP///////wD//////wAAAAAAAAAAAAAAALz////AAAAAAAAAAAAAAAAA////////AP//////AAAAAAAAAAAAAAAAkP///5AAAAAAAAAAAAAAAAD///////8A//////8AAAAAAAAAAAAAAABc////ZAAAAAAAAAAAAAAAAP///////wD//////wAAAAAAAAAoAAAAADD///8wAAAAACQAAAAAAAAA////////AP//////AAAAAAAAAFwAAAAABPz//AgAAAAAXAAAAAAAAAD///////8A//////8AAAAAAAAAkAAAAAAA0P/UAAAAAACQAAAAAAAAAP///////wD//////wAAAAAAAADMAAAAAACg/6gAAAAAAMQAAAAAAAAA////////AP//////AAAAAAAAAPgEAAAAAHD/dAAAAAAE+AAAAAAAAAD///////8A//////8AAAAAAAAA/zQAAAAAQP9IAAAAADD/AAAAAAAAAP///////wD//////wAAAAAAAAD/bAAAAAAQ/xQAAAAAaP8AAAAAAAAA////////AP//////AAAAAAAAAP+gAAAAAADQAAAAAACc/wAAAAAAAAD///////8A//////8AAAAAAAAA/9QAAAAAAGgAAAAAAND/AAAAAAAAAP///////wD//////wAAAAAAAAD//wwAAAAAFAAAAAAM/P8AAAAAAAAA////////AP//////AAAAAAAAAP//RAAAAAAAAAAAADz//wAAAAAAAAD///////8A//////8AAAAAAAAA//94AAAAAAAAAAAAcP//AAAAAAAAAP///////wD//////wAAAAAAAAD//7AAAAAAAAAAAACo//8AAAAAAAAA////////AP//////AAAAAAAAAP//5AAAAAAAAAAAANz//wAAAAAAAAD///////8A//////8AAAAAAAAA////HAAAAAAAAAAQ////AAAAAAAAAP///////wD//////wAAAAAAAAD///9QAAAAAAAAAEz///8AAAAAAAAA////////AP//////AAAAAAAAAP///4gAAAAAAAAAfP///wAAAAAAAAD///////8A//////8AAAAAAAAA////vAAAAAAAAACw////AAAAAAAAAP///////wD//////wAAAAAAAAD////wAAAAAAAAAOz///8AAAAAAAAA////////AP//////AAAAAAAAAP////8sAAAAAAAc/////wAAAAAAAAD///////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'N' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////AAAAAAAAALD/////////////AAAAAAAAAP//////////AP////////8AAAAAAAAAFOj///////////8AAAAAAAAA//////////8A/////////wAAAAAAAAAASP///////////wAAAAAAAAD//////////wD/////////AAAAAAAAAAAAkP//////////AAAAAAAAAP//////////AP////////8AAAAAAAAAAAAI1P////////8AAAAAAAAA//////////8A/////////wAAAAAAAAAAAAAw+P///////wAAAAAAAAD//////////wD/////////AAAAAAAAAAAAAABw////////AAAAAAAAAP//////////AP////////8AAAAAAAAAAAAAAAC8//////8AAAAAAAAA//////////8A/////////wAAAAAAAAAAAAAAABzs/////wAAAAAAAAD//////////wD/////////AAAAAAAAAAAAAAAAAFD/////AAAAAAAAAP//////////AP////////8AAAAAAAAAAAAAAAAAAJz///8AAAAAAAAA//////////8A/////////wAAAAAAAAAUAAAAAAAADNz//wAAAAAAAAD//////////wD/////////AAAAAAAAALQAAAAAAAAANPz/AAAAAAAAAP//////////AP////////8AAAAAAAAA/2wAAAAAAAAAfP8AAAAAAAAA//////////8A/////////wAAAAAAAAD/+CwAAAAAAAAExAAAAAAAAAD//////////wD/////////AAAAAAAAAP//0AQAAAAAAAAgAAAAAAAAAP//////////AP////////8AAAAAAAAA////jAAAAAAAAAAAAAAAAAAA//////////8A/////////wAAAAAAAAD/////RAAAAAAAAAAAAAAAAAD//////////wD/////////AAAAAAAAAP/////kFAAAAAAAAAAAAAAAAP//////////AP////////8AAAAAAAAA//////+sAAAAAAAAAAAAAAAA//////////8A/////////wAAAAAAAAD///////9kAAAAAAAAAAAAAAD//////////wD/////////AAAAAAAAAP////////QkAAAAAAAAAAAAAP//////////AP////////8AAAAAAAAA/////////8wEAAAAAAAAAAAA//////////8A/////////wAAAAAAAAD//////////4QAAAAAAAAAAAD//////////wD/////////AAAAAAAAAP///////////DwAAAAAAAAAAP//////////AP////////8AAAAAAAAA////////////4BAAAAAAAAAA//////////8A/////////wAAAAAAAAD/////////////qAAAAAAAAAD//////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'O' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A///////////////////0qGw4HAAAABw4aKT0/////////////////wD////////////////wcAwAAAAAAAAAAAAAAAho6P//////////////AP//////////////uBQAAAAAAAAAAAAAAAAAAAAMoP////////////8A/////////////6AEAAAAAAAAAAAAAAAAAAAAAAAAkP///////////wD///////////+4BAAAAAAAAAAAAAAAAAAAAAAAAAAAoP//////////AP//////////8BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAM5P////////8A//////////9wAAAAAAAAAAAsrPD/7KQsAAAAAAAAAABg/////////wD/////////+BAAAAAAAAAAUPj///////hQAAAAAAAAAAjs////////AP////////+sAAAAAAAAABDw//////////AYAAAAAAAAAKD///////8A/////////2wAAAAAAAAAdP///////////3wAAAAAAAAAYP///////wD/////////OAAAAAAAAAC4////////////xAAAAAAAAAAw////////AP////////8cAAAAAAAAAOD////////////oAAAAAAAAABT///////8A/////////wAAAAAAAAAA//////////////8AAAAAAAAAAP///////wD/////////AAAAAAAAAAD//////////////wAAAAAAAAAA////////AP////////8AAAAAAAAAAP/////////////8AAAAAAAAAAD///////8A/////////xwAAAAAAAAA5P///////////+AAAAAAAAAAHP///////wD/////////NAAAAAAAAAC8////////////uAAAAAAAAAA4////////AP////////9oAAAAAAAAAHj///////////98AAAAAAAAAGT///////8A/////////6gAAAAAAAAAGPD/////////+BgAAAAAAAAApP///////wD/////////9AwAAAAAAAAAUPz///////xcAAAAAAAAAAjs////////AP//////////cAAAAAAAAAAALKjs//CwOAAAAAAAAAAAYP////////8A///////////wFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzk/////////wD///////////+4BAAAAAAAAAAAAAAAAAAAAAAAAAAAoP//////////AP////////////+QAAAAAAAAAAAAAAAAAAAAAAAAAJD///////////8A//////////////+sEAAAAAAAAAAAAAAAAAAAAAyg/////////////wD////////////////oZAgAAAAAAAAAAAAAAARg4P//////////////AP//////////////////9KhsOCAAAAAUMFyc7P////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'P' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP///////////wAAAAAAAAAAAAAAAAAACCxguP////////////////8A////////////AAAAAAAAAAAAAAAAAAAAAAAAOOD//////////////wD///////////8AAAAAAAAAAAAAAAAAAAAAAAAAGOD/////////////AP///////////wAAAAAAAAAAAAAAAAAAAAAAAAAARP////////////8A////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAxP///////////wD///////////8AAAAAAAAAAAAAAAAAAAAAAAAAAABo////////////AP///////////wAAAAAAAAAA////6JwMAAAAAAAAADD///////////8A////////////AAAAAAAAAAD//////6AAAAAAAAAADP///////////wD///////////8AAAAAAAAAAP//////9AAAAAAAAAAA////////////AP///////////wAAAAAAAAAA///////0AAAAAAAAAAD///////////8A////////////AAAAAAAAAAD//////5gAAAAAAAAAHP///////////wD///////////8AAAAAAAAAAP///9iICAAAAAAAAABI////////////AP///////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAJD///////////8A////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAI6P///////////wD///////////8AAAAAAAAAAAAAAAAAAAAAAAAAAIT/////////////AP///////////wAAAAAAAAAAAAAAAAAAAAAAAABU/P////////////8A////////////AAAAAAAAAAAAAAAAAAAAAAAIhPz//////////////wD///////////8AAAAAAAAAAAAAAAAABCRMkOz/////////////////AP///////////wAAAAAAAAAA//////////////////////////////8A////////////AAAAAAAAAAD//////////////////////////////wD///////////8AAAAAAAAAAP//////////////////////////////AP///////////wAAAAAAAAAA//////////////////////////////8A////////////AAAAAAAAAAD//////////////////////////////wD///////////8AAAAAAAAAAP//////////////////////////////AP///////////wAAAAAAAAAA//////////////////////////////8A////////////AAAAAAAAAAD//////////////////////////////wD///////////8AAAAAAAAAAP//////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'Q' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////SoaDQcAAAAHDhoqPT///////////////////8A//////////////BwDAAAAAAAAAAAAAAACHDo/////////////////wD///////////+4FAAAAAAAAAAAAAAAAAAAABCo////////////////AP//////////nAQAAAAAAAAAAAAAAAAAAAAAAACQ//////////////8A/////////7gEAAAAAAAAAAAAAAAAAAAAAAAAAACg/////////////wD////////wFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzo////////////AP///////3AAAAAAAAAAACyo8P/sqCwAAAAAAAAAAGT///////////8A///////4EAAAAAAAAABM+P///////FQAAAAAAAAACPT//////////wD//////7AAAAAAAAAAFPD/////////9BgAAAAAAAAApP//////////AP//////bAAAAAAAAAB4////////////fAAAAAAAAABk//////////8A//////84AAAAAAAAALz///////////+8AAAAAAAAADT//////////wD//////xwAAAAAAAAA6P///////////+QAAAAAAAAAHP//////////AP//////AAAAAAAAAAD//////////////wAAAAAAAAAA//////////8A//////8AAAAAAAAAAP//////////////AAAAAAAAAAD//////////wD//////wAAAAAAAAAA/P////////////8AAAAAAAAAAP//////////AP//////GAAAAAAAAADg////////////4AAAAAAAAAAc//////////8A//////84AAAAAAAAALT////MJHTo//+8AAAAAAAAADT//////////wD//////2wAAAAAAAAAdP///2AAABCg/3wAAAAAAAAAZP//////////AP//////rAAAAAAAAAAY9P/sCAAAAABMGAAAAAAAAACk//////////8A///////4EAAAAAAAAABU/P+0OAAAAAAAAAAAAAAACPT//////////wD///////94AAAAAAAAAAA4sPD/gAAAAAAAAAAAAABk////////////AP////////AcAAAAAAAAAAAAAAAAAAAAAAAAAAAADOT///////////8A/////////7wEAAAAAAAAAAAAAAAAAAAAAAAAAACQ/////////////wD//////////6wEAAAAAAAAAAAAAAAAAAAAAAAAABSs////////////AP///////////7gUAAAAAAAAAAAAAAAAAAAAAAAAAABAwP////////8A//////////////BwDAAAAAAAAAAAAAAABAgAAAAAAAA8/////////wD////////////////0qGg0GAAAABgwXJjkxBgAAAAAALD/////////AP//////////////////////////////////5DQAAAAk/P////////8A////////////////////////////////////+GwAAJD//////////wD//////////////////////////////////////8A49P//////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'R' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////wAAAAAAAAAAAAAAAAAAAAQgOGSk+P///////////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAcuP//////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAEsP////////////8A/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ6P///////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADD///////////8A/////////wAAAAAAAAAA///////svDgAAAAAAAAACP///////////wD/////////AAAAAAAAAAD/////////7AAAAAAAAAAA////////////AP////////8AAAAAAAAAAP/////////cAAAAAAAAABD///////////8A/////////wAAAAAAAAAA//////DQoCQAAAAAAAAAQP///////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPj///////////8A/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAzU/////////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAA02P//////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAxctPz///////////////8A/////////wAAAAAAAAAAAAAAAAAAAAAAAEDY/////////////////wD/////////AAAAAAAAAAD/9LAsAAAAAAAAAAzc////////////////AP////////8AAAAAAAAAAP///+wkAAAAAAAAADD8//////////////8A/////////wAAAAAAAAAA/////8QAAAAAAAAAAJD//////////////wD/////////AAAAAAAAAAD//////1QAAAAAAAAAFPD/////////////AP////////8AAAAAAAAAAP//////3AQAAAAAAAAAgP////////////8A/////////wAAAAAAAAAA////////aAAAAAAAAAAM6P///////////wD/////////AAAAAAAAAAD////////oCAAAAAAAAABs////////////AP////////8AAAAAAAAAAP////////+AAAAAAAAAAATc//////////8A/////////wAAAAAAAAAA//////////AUAAAAAAAAAFj//////////wD/////////AAAAAAAAAAD//////////5AAAAAAAAAAAND/////////AP////////8AAAAAAAAAAP//////////+CQAAAAAAAAAQP////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'S' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP/////////////////8vHBEIAgAAAQgQHC8/P////////////////8A////////////////pCQAAAAAAAAAAAAAAAAcoP///////////////wD//////////////FwAAAAAAAAAAAAAAAAAAAAAXP//////////////AP////////////9oAAAAAAAAAAAAAAAAAAAAAAAAhP////////////8A////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAI6P///////////wD///////////9cAAAAAAAAAAAAAAAAAAAAAAAAAACA////////////AP///////////xgAAAAAAAAAUOD/8KwkAAAAAAAAADj///////////8A////////////AAAAAAAAAAD0/////8wABCAgICxASP///////////wD///////////8MAAAAAAAAAMz/////////////////////////////AP///////////0AAAAAAAAAACFiQxPT///////////////////////8A////////////oAAAAAAAAAAAAAAAADBwtPT//////////////////wD////////////8QAAAAAAAAAAAAAAAAAAACFTA////////////////AP/////////////oOAAAAAAAAAAAAAAAAAAAAABM6P////////////8A///////////////4fAgAAAAAAAAAAAAAAAAAAAAY2P///////////wD/////////////////7IwwAAAAAAAAAAAAAAAAAAAo+P//////////AP/////////////////////koGw0BAAAAAAAAAAAAACU//////////8A///////////////////////////4uFgAAAAAAAAAADz//////////wD//////////2BgSEA0IBwA6P///////5QAAAAAAAAADP//////////AP//////////JAAAAAAAAACc/////////AAAAAAAAAAA//////////8A//////////9YAAAAAAAAACDo///////AAAAAAAAAABT//////////wD//////////6QAAAAAAAAAACCk7P/snBQAAAAAAAAAUP//////////AP//////////+BAAAAAAAAAAAAAAAAAAAAAAAAAAAACs//////////8A////////////kAAAAAAAAAAAAAAAAAAAAAAAAAAAOP///////////wD////////////8RAAAAAAAAAAAAAAAAAAAAAAAABjc////////////AP/////////////0PAAAAAAAAAAAAAAAAAAAAAAg2P////////////8A///////////////8hBQAAAAAAAAAAAAAAAAMdPT//////////////wD/////////////////+LRwSCAMAAAAHDhoqPT/////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'T' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8A/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8A/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD///////////////////8AAAAAAAAAAP//////////////////////AP///////////////////wAAAAAAAAAA//////////////////////8A////////////////////AAAAAAAAAAD//////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'U' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////AAAAAAAAAAD///////////8AAAAAAAAAAP//////////AP////////8AAAAAAAAAAP///////////wAAAAAAAAAA//////////8A/////////wAAAAAAAAAA////////////AAAAAAAAAAD//////////wD/////////JAAAAAAAAADk/////////+gAAAAAAAAAHP//////////AP////////9MAAAAAAAAAJz/////////nAAAAAAAAABE//////////8A/////////4gAAAAAAAAAHOj//////+ggAAAAAAAAAHz//////////wD/////////0AAAAAAAAAAAIJzs/+ykIAAAAAAAAAAA0P//////////AP//////////QAAAAAAAAAAAAAAAAAAAAAAAAAAAAED///////////8A///////////IBAAAAAAAAAAAAAAAAAAAAAAAAAAE0P///////////wD///////////+YAAAAAAAAAAAAAAAAAAAAAAAAAJj/////////////AP////////////+UBAAAAAAAAAAAAAAAAAAAAASU//////////////8A///////////////IPAAAAAAAAAAAAAAAAAAwyP///////////////wD/////////////////0IxYOCAIAAAEIEiAyP//////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'V' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD//////zAAAAAAAAAAYP//////////////ZAAAAAAAAAAw////////AP//////kAAAAAAAAAAU/P////////////8UAAAAAAAAAJD///////8A///////oBAAAAAAAAADE////////////xAAAAAAAAAAE7P///////wD///////9MAAAAAAAAAHD///////////94AAAAAAAAAEz/////////AP///////6gAAAAAAAAAJP///////////yQAAAAAAAAArP////////8A////////+BAAAAAAAAAA1P/////////YAAAAAAAAABT4/////////wD/////////aAAAAAAAAACE/////////4QAAAAAAAAAbP//////////AP/////////EAAAAAAAAADT/////////OAAAAAAAAADM//////////8A//////////8kAAAAAAAAAOT//////+QAAAAAAAAAKP///////////wD//////////4QAAAAAAAAAmP//////nAAAAAAAAACI////////////AP//////////5AAAAAAAAABE//////9EAAAAAAAABOT///////////8A////////////QAAAAAAAAAT0////9AgAAAAAAABI/////////////wD///////////+gAAAAAAAAAKT///+kAAAAAAAAAKj/////////////AP////////////QIAAAAAAAAXP///1wAAAAAAAAM+P////////////8A/////////////1wAAAAAAAAM+P/8DAAAAAAAAGT//////////////wD/////////////vAAAAAAAAAC8/7wAAAAAAAAAxP//////////////AP//////////////HAAAAAAAAGj/aAAAAAAAACT///////////////8A//////////////94AAAAAAAAHP8cAAAAAAAAhP///////////////wD//////////////9gAAAAAAAAAkAAAAAAAAADk////////////////AP///////////////zgAAAAAAAAQAAAAAAAAQP////////////////8A////////////////lAAAAAAAAAAAAAAAAACg/////////////////wD////////////////sCAAAAAAAAAAAAAAADPT/////////////////AP////////////////9QAAAAAAAAAAAAAABg//////////////////8A/////////////////7AAAAAAAAAAAAAAAMD//////////////////wD//////////////////BQAAAAAAAAAAAAc////////////////////AP//////////////////cAAAAAAAAAAAAHz///////////////////8A///////////////////MAAAAAAAAAAAA3P///////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'W' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A//8cAAAAAAAAALz/////4AAAAAAAAAAA6P////+8AAAAAAAAABz//wD//1QAAAAAAAAAjP////+gAAAAAAAAAACo/////4wAAAAAAAAAUP//AP//jAAAAAAAAABU/////2AAAAAAAAAAAGj/////VAAAAAAAAACM//8A///EAAAAAAAAACT/////IAAAAAAAAAAAKP////8kAAAAAAAAAMT//wD///gEAAAAAAAAAPD//+AAAAAAAAAAAAAA6P//8AAAAAAAAAAE9P//AP///zAAAAAAAAAAvP//oAAAAAAAAAAAAACo//+8AAAAAAAAADD///8A////bAAAAAAAAACM//9gAAAAAAAAAAAAAGT//4wAAAAAAAAAaP///wD///+kAAAAAAAAAFT//yAAAAAAAAAAAAAAIP//VAAAAAAAAACc////AP///9gAAAAAAAAAJP/gAAAAAAAAAAAAAAAA4P8kAAAAAAAAANT///8A/////xAAAAAAAAAA8KAAAAAAAAAAAAAAAACg8AAAAAAAAAAQ/////wD/////TAAAAAAAAAC8YAAAAAAAAAAAAAAAAGC8AAAAAAAAAET/////AP////+AAAAAAAAAAIwgAAAAAAAAAAAAAAAAIIwAAAAAAAAAfP////8A/////7gAAAAAAAAANAAAAAAAACwwAAAAAAAANAAAAAAAAACw/////wD/////8AAAAAAAAAAAAAAAAAAAdHgAAAAAAAAAAAAAAAAAAOz/////AP//////KAAAAAAAAAAAAAAAAAC4vAAAAAAAAAAAAAAAAAAg//////8A//////9gAAAAAAAAAAAAAAAACPj4CAAAAAAAAAAAAAAAAFj//////wD//////5QAAAAAAAAAAAAAAABE//9IAAAAAAAAAAAAAAAAkP//////AP//////0AAAAAAAAAAAAAAAAIj//4wAAAAAAAAAAAAAAADI//////8A///////8DAAAAAAAAAAAAAAAzP//1AAAAAAAAAAAAAAABPj//////wD///////88AAAAAAAAAAAAABT/////GAAAAAAAAAAAAAA0////////AP///////3QAAAAAAAAAAAAAWP////9gAAAAAAAAAAAAAHD///////8A////////sAAAAAAAAAAAAACg/////6QAAAAAAAAAAAAApP///////wD////////kAAAAAAAAAAAAAOT/////6AAAAAAAAAAAAADc////////AP////////8cAAAAAAAAAAAo////////MAAAAAAAAAAAEP////////8A/////////1QAAAAAAAAAAHD///////94AAAAAAAAAABM/////////wD/////////jAAAAAAAAAAAtP///////7wAAAAAAAAAAID/////////AP/////////EAAAAAAAAAAT0////////+AgAAAAAAAAAuP////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'X' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD///////9UAAAAAAAAAKz///////////+sAAAAAAAAAFD/////////AP///////+QQAAAAAAAAFOT/////////8BwAAAAAAAAM5P////////8A/////////5gAAAAAAAAATP////////9kAAAAAAAAAJD//////////wD//////////0AAAAAAAAAAoP//////wAAAAAAAAAA0/P//////////AP//////////2AgAAAAAAAAQ4P////gkAAAAAAAABMz///////////8A////////////iAAAAAAAAABA////dAAAAAAAAABw/////////////wD////////////8MAAAAAAAAACU/9AEAAAAAAAAHPD/////////////AP/////////////IBAAAAAAAAAzYMAAAAAAAAACs//////////////8A//////////////90AAAAAAAAABAAAAAAAAAATP///////////////wD///////////////QgAAAAAAAAAAAAAAAAAAzg////////////////AP///////////////7wAAAAAAAAAAAAAAAAAjP////////////////8A/////////////////2AAAAAAAAAAAAAAADD8/////////////////wD/////////////////7BQAAAAAAAAAAAAEyP//////////////////AP/////////////////gDAAAAAAAAAAAAAjY//////////////////8A/////////////////0AAAAAAAAAAAAAAADj8/////////////////wD///////////////+UAAAAAAAAAAAAAAAAAJD/////////////////AP//////////////4AwAAAAAAAAAAAAAAAAADOD///////////////8A//////////////9AAAAAAAAAAAAAAAAAAAAAQP///////////////wD/////////////nAAAAAAAAAAAWAAAAAAAAAAAlP//////////////AP///////////+QQAAAAAAAAAGD/YAAAAAAAAAAM4P////////////8A////////////TAAAAAAAAAAs9P/0LAAAAAAAAABM/////////////wD//////////6AAAAAAAAAADNT////UDAAAAAAAAACg////////////AP/////////kEAAAAAAAAACg//////+gAAAAAAAAABDk//////////8A/////////0wAAAAAAAAAYP////////9gAAAAAAAAAEz//////////wD///////+oAAAAAAAAACz0//////////QsAAAAAAAAAKT/////////AP//////7BQAAAAAAAAM1P///////////9QMAAAAAAAAFOz///////8A//////9UAAAAAAAAAKD//////////////6AAAAAAAAAAVP///////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'Y' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP///////1QAAAAAAAAAAGj//////////2gAAAAAAAAAAFT///////8A////////5BAAAAAAAAAAAMT////////EAAAAAAAAAAAQ5P///////wD/////////mAAAAAAAAAAAKPj/////+CgAAAAAAAAAAJj/////////AP//////////PAAAAAAAAAAAgP////+AAAAAAAAAAAA8//////////8A///////////YCAAAAAAAAAAE2P//2AQAAAAAAAAACNj//////////wD///////////+AAAAAAAAAAAA4//84AAAAAAAAAACA////////////AP////////////woAAAAAAAAAACUlAAAAAAAAAAAKPz///////////8A/////////////8gAAAAAAAAAABAQAAAAAAAAAADI/////////////wD//////////////2wAAAAAAAAAAAAAAAAAAAAAbP//////////////AP//////////////8BwAAAAAAAAAAAAAAAAAABzw//////////////8A////////////////tAAAAAAAAAAAAAAAAAAAtP///////////////wD/////////////////VAAAAAAAAAAAAAAAAFT/////////////////AP/////////////////oEAAAAAAAAAAAAAAQ6P////////////////8A//////////////////+cAAAAAAAAAAAAAJz//////////////////wD///////////////////9AAAAAAAAAAABA////////////////////AP///////////////////9gAAAAAAAAAANj///////////////////8A/////////////////////wAAAAAAAAAA/////////////////////wD/////////////////////AAAAAAAAAAD/////////////////////AP////////////////////8AAAAAAAAAAP////////////////////8A/////////////////////wAAAAAAAAAA/////////////////////wD/////////////////////AAAAAAAAAAD/////////////////////AP////////////////////8AAAAAAAAAAP////////////////////8A/////////////////////wAAAAAAAAAA/////////////////////wD/////////////////////AAAAAAAAAAD/////////////////////AP////////////////////8AAAAAAAAAAP////////////////////8A/////////////////////wAAAAAAAAAA/////////////////////wD/////////////////////AAAAAAAAAAD/////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'Z' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAQ//////////////8A/////////////////////////1AAAAAAAAAABLz//////////////wD///////////////////////98AAAAAAAAAACY////////////////AP//////////////////////pAAAAAAAAAAAaP////////////////8A/////////////////////8QIAAAAAAAAAET8/////////////////wD////////////////////gGAAAAAAAAAAo9P//////////////////AP//////////////////9CwAAAAAAAAAFNz///////////////////8A//////////////////xMAAAAAAAAAATA/////////////////////wD/////////////////eAAAAAAAAAAAnP//////////////////////AP///////////////5wAAAAAAAAAAHT///////////////////////8A///////////////ABAAAAAAAAABM/P///////////////////////wD/////////////3BQAAAAAAAAALPT/////////////////////////AP////////////QoAAAAAAAAABjg//////////////////////////8A///////////8SAAAAAAAAAAExP///////////////////////////wD//////////2wAAAAAAAAAAKD/////////////////////////////AP////////+YAAAAAAAAAAB8//////////////////////////////8A/////////wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
);
return $_png;
}
// These define base64_encoded raw png image data used
// when we cannot generate our own single png image
function define_raw_pngs()
{
$_png = array(
'0' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QKCNGXKO6AAAAB3RJTUUH0wUOEDQ6EUG1VwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAXNJREFUeNpj/M9AHGAiUt2wVvhyaqAqKyOjpG3jQwaGv+e+IUn9RwJfSjjg4iwFP1aKJD6HyyErfGGAYrquIoP5E2wK/zigu0v5wH9sChdgeKDqP1aFGhBZmxv/z0Dd4IxV4RWIpMQHIPuJAITzAqEQETx7IFQIP5CQNoJwDmALxzMQCuyjg1chnBPYwtECwr8AZN41h0p6YHOjAkTuwf//77wYuCEcFWwKOWA2fM1iZuuHcASwKYQ55c9ENuasrxgRjKlwJS+D17v/hBUeUGYwv/sfn0IRiJQZJIbxuFEFagjvSlDUQNgK2GIGqpC1JRhIfoAqxBYz0DRhn8IMJO+giKEqhMaMJBeI3AHhIKdkRPqG8DlAifqFADyasKRHO6h1Z/6fMYEwTbCmx3cWGCl8CTaFwBhGz+M2/7EpXMvOnBmIok7jBVaFz/Mi3/1pQORrhpgPyOr+M8IL0j9/gKpeLjhy5QEwoDVsYuRR3cE4IktcAJNx8cJaZBeQAAAAAElFTkSuQmCC',
'1' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QMi//xxVKAAAAB3RJTUUH0wUOEDYLcqnX7wAAAAlwSFlzAAALEgAACxIB0t1+/AAAAHpJREFUeNpj/M9AHGAiUh1WhR8FGUGAsMKaD9iM/I8BlmCVwVS4hoUohT8qcNiFyv2zQIWBCIV3amRwu54RKcDRAgQ1KigIcJYK7CqR3QsCFmf+Y8qgeQakbANMAz6FKjUXECbj8zWa76nm61GFw1UhI10KqVGFNFQIADdK9Zj7PsV9AAAAAElFTkSuQmCC',
'2' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QMwPUBEjoAAAAB3RJTUUH0wUOEDUqFe2UcgAAAAlwSFlzAAALEgAACxIB0t1+/AAAAQxJREFUeNpj/M9AHGAiUt2owkGrkAWF93LFgStPfjCwyGiYRGijqfyPAH9aOJAkQl78RwbICkNQjdB4gUNhD7qzLLAr/CKA4YENSAoRvl7zAUJXvPmxhgfCXILVMxEQvg+IDVUhgtVqDYjkDhD7B2aQIMIx5cOTN29evLAAsaEKObBajQzmQOQMcIQjHLwQgSisIaDwBdS5LHfwK7yhAHVVyX+8CrdAA5HB5gdehQ3Yoxpd4ZcAmDqbD//xKISEIjhU//zHoxDmXQaeFRhOZ8CmzuDOf3wKf8DsDfnyH6/CHJi6P//xKjyDJethVehBpMI7DPgVwrPCCgb8AK5wDwGFcNMF8EkCASOx1QcAGUxu1untnFIAAAAASUVORK5CYII=',
'3' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QMxBQugk2AAAAB3RJTUUH0wUOEDU3duv4qwAAAAlwSFlzAAALEgAACxIB0t1+/AAAATdJREFUeNpj/M9AHGAiUt0IVciCzPm7ZceZB28YGBQkLHwcmNFU/keANRJI4ioH/qMAJIUlaHatwaFwBrqrOO5gVfiCB8P9KVgVVkAtnPDh/wkLCFsGq0IFiGQLiH0D06P/GWHJ7O+NOzfuXLlzQRrEhgSawHscwYPurxAcwQMBf/4/aIAYyHIGr8IEeDhO+Y9XoQNUncwOVHGMRPEDSovc+IkzrpGDCQgUbuC1WgBhhsIHfAp3vPn/oIIFKfRxKQSDGohCA4IKX0DTD7YoRAWMUJ9iyQpbn4DBBWUQ5yFEDDnFw622gXAzwBxoYvfB5sYlUI0lD/4/gWWKJdgU/tHAcKjCD6y+PsGCpo4FJbaRgmcNqkqWCThTzxkTJHXo+Ro1HA9uOPHiATDlKJj4eKCVFIzDqWgGAK7GW/haPS+zAAAAAElFTkSuQmCC',
'4' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QMyqWttCEAAAAB3RJTUUH0wUOEDUxn4hdngAAAAlwSFlzAAALEgAACxIB0t1+/AAAAKBJREFUeNpj/M9AHGAiUh2FCucyQgCK4H9McIAFixwWhQ8kGIhS+MWAgTiFIQzEKWxhIE7hFgbiFF7hASkQIajwjQpInuUAIYV/XMDyU/4TUlgAlk75T0jhArCszR9CCk+AY07mxX8CCp+AY47nzH8CCn+YgOWW/CekMAYsVfMfl0JGmCBq4kNEDp2zAn0UMmItABjRvDykPTO43DgyFQIANP6pTFLWAdoAAAAASUVORK5CYII=',
'5' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QMzPy3XhEAAAAB3RJTUUH0wUOEDUk8lW5dQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAQpJREFUeNpj/M9AHGAiUt2oQuIVfmREBzgU3iHWxAfEKiTaRFpZnfAfAbAr/AsxUYagiVCbeQgqhPpFYmukLCOrZupRNJUIB02BCAjAZCK+/Ed2LoJZgm6bzRfsCgMw3JWAXaEBpg8uIGSRPPMBQmXc+P+iggXCnoOQZUQK1K8PgEAjGcQs7QGL6FzG5mtkcAUiyYIQYcRRUkDTLEIWR1b4ixamQMPhrKUP3rx48eDNFXmwdyFiOthixgXqaTAnBcKpwRaOS6A6Mx78fwBVx/IAm8I/KsTGzAkWNHUyb7Ar/L8GNSlK3MCRev7/v+CApC7kBUoUoAX4yQ0nHjwAWqpiE6GNFgNDoAwHAKC2Q2lMNcCmAAAAAElFTkSuQmCC',
'6' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QNAObRd4vAAAAB3RJTUUH0wUOEDUc2lcB6wAAAAlwSFlzAAALEgAACxIB0t1+/AAAATtJREFUeNpj/M9AHGAiUh2Gwq2puryMjKKmmSfRVf5HBkcMEBI+L1CkUBROYUE2QuMFLoVr0CzzwKHwhQC6szZgV1gAtfHI/xs2mEYywsPxp8QHEMVxQ56B4aaJiIKIiIRCPDZf74DwI/5jB4hwPAChbAgG+BWoExlOxkoysuqW3sUV4BoQ/p0SqARLB44AF4HIByDMKMCuEIu7phCrUOADNl/DgMOJ/09SIMwPC7B5hgfC1/kB4kRAOC7YrFaByM0Ac85AOCLYrFaBhSMIQNPlG2wBDg3HP2CSGU/MuEAoiKVXUWxB9cwPiG8UwEGSg5FCMNOjwZ4/byqgpqwgMoWr/MGeZ1agqWPZgSNz/Z+AqnDCf1wK/29B8qbKDhQpRtTE8HfLjjMP3jDwKJh4hKCGJSPNC6lRhTRWCABWpdoxd/bZ4QAAAABJRU5ErkJggg==',
'7' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QNA18/fMoAAAAB3RJTUUH0wUOEDUVo4u5TwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAM9JREFUeNpj/M9AHGAiUt2oQnorZIGzGLFJIyJ40HqGhUiFPFuQ/YUFPBGBmLcDSQybwj8OEDOW/CegsAeiruQ/AYV3OMDqTP4QUugCceCN/wQUQn1a8Z+Awj8qYHUiHwgpXAAxcMJ/Qgp1wOoEPhBSuANiYM5/QgpjIAovEFL4gweszgAz0NASxZ4vYMqHYDKDBiIWhWhWa0CS1x9CVn+8AaYsmAlZfQRC6RDMChADGTQIKjxDrMI7EEoBi0JGlMJe8AOY+sFOSCEeQHQBAABCZ7xyT9fJhwAAAABJRU5ErkJggg==',
'8' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QNBeBnwpSAAAAB3RJTUUH0wUOEDUOKe5wowAAAAlwSFlzAAALEgAACxIB0t1+/AAAATVJREFUeNpj/M9AHGAiUt1AKmRB459cc+DBGwYWGQ2LEG1Umf/I4IELkozLA2QpFIUXJFDMEDiBQ+EHGTR3yHzArrAFwwct2BXqQGQ1zvw/owFh6mBXCDXmDJB5BsOrjEhxzfoHIgkiGCGB9xtrgEPtOwvEV6FWY4+ZAAgVc5LhZgKEGYI9wN+gBiPu4Pl/BFWlxA1cMfN/C0rUr8AVhX8K0KyuwaEwASNmarAqPACVTXnw/0oENBFewKYQGhYZYE4MVBM2hVAvQ1LhHQhHBVsUMjIgYhCdhy3PPASTd6GOxBYz0KhOQHajDjY3pkC1Rlz5fweqjqEAm8ILGK5gYLlDZICXYI+ZLzZo6gL+4EgUfyo4kJQJtCCpQ8kKQPB2zZ47L14AU5iMgUMAN7IM43AqHwdQIQAhMPz6Gz5V/wAAAABJRU5ErkJggg==',
'9' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QNCQ+T2tEAAAAB3RJTUUH0wUOEDUHUDLIBwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAUZJREFUeNpj/M9AHGAiUh26wr9rE3V5GRlFTTM3/kVT+R8Z7FBBSKjsQJFCUTiFBcWMCbgUHmBBs20FdoV/VNDUMQi8wapwDVS65s2fPToQZgFWhRFIkm8kwGyeH9gUQm2+Aua0QDhb4LJI4XgHQmmDSRMIZw+emIEENAeEcwObQhEIdQHiABRbUGPGBSIQAWL/gHqbB5tnJkC1Fjz5f8IGwxwkhR8EsCQarFE4hViF/wsQCgKgHsSu8H8HLFkUQL2rgUPh/zslOiwMEjFH/kND2geXQvQgqMAWhSjgAIRygAswIuXCpXfevHjz4M0ZdQaGhxo/wAnyBTuWmPnvARGxuPH/iAa+9Ph/A7r9Ai+wK/zvg6ZwzX8cCl9oICtjmfIfl8L/bwIQ6gyO/Met8P//EwUmwHTJo5OyBU2CkdaF1KhCWisEAM/sJxmZkdWnAAAAAElFTkSuQmCC',
'A' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QFwy1U7TfAAAAB3RJTUUH0wUOEC0ZKCZtPQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAO1JREFUeNrt1LERwiAUBuAHZ2GRwsIypQMwQEZwgBQpM4QDZBSLFI7gCA5gQWGRdA5gkTuMSh48eMTUnq96wH98B+QiDCwruTD3D76qF676ueAp0Y9lSBXeSkFWaLAje3T+kkzK4SgpBzZw8pqxJWcdOJuRsyGPbWDk0tS20zw9SXsobdfytJVXdzNsP61i6Zt3K7Ht0UeUgbPdjsrOXMd+2IS2C2qb271HVWi7YANcNXFQsUEVBTXwNdl46jYRxPl52dnwRUZbhkLSDmS8DnxFRWiULxg8UxvobefuRR8ZQYDKtffVVcQWv/RrfgJC4bd0upw4MQAAAABJRU5ErkJggg==',
'B' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QGAusrz2zAAAAB3RJTUUH0wUOEC01Gv4B3gAAAAlwSFlzAAALEgAACxIB0t1+/AAAANJJREFUeNpj/M9AHGAiUh0tFTKiAUHL2rsoKv9DARZDWFr+IwA+hQwMFcQqZDhCrMIIYhWK4FYIYv8444PuV+wK//9/A+UJwBUSCHAL3OEIsdoFyttCpGdiiAtHjoY/RCnk6PlBbBRKrCE6CqcQq5DlDs5whIT3CgUI788EvOEIBCegXB2YPCNMBSNMISqf5TeUjysK90LpP/itfrFEAhZCMHkWdKMYUbk2MAah7BqD02pUYEFkgMu8IE6hD0IdpmegwSejoKLjoY7syaFU7A0HhQA2e4cJytImvAAAAABJRU5ErkJggg==',
'C' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QGBbPqVFqAAAAB3RJTUUH0wUOEC4BEGemqAAAAAlwSFlzAAALEgAACxIB0t1+/AAAASlJREFUeNpj/M9AHGAiUt2owkGrkAWV+3TDgRtPPjBwyGiYBOijSv1HAlcCkGUcTiDLISvsQDOeZQp2hQWYDpuCTeEEbD44ganwDgc2vxpgKoyAyUWc+f9hjgCMtwFd4RuYRxog/ueBcl3QFc6BSmj8gfBrwE40yFmCrjABqrAH5mSZgJ4jX7AEjwlU4Zn/OAAsrp9AaRlccc0IzdeMsBilOPWQrBDmtpfEKnwBpZ8qZq58i6IS6vscKHcBcgQYlOz4gh6OK6AKfaB8G5hN6Aq/wBLPHjB3CczCFIzUA0u2PD0v/j9pgaf1ExgK3wgwYAEOWFL4GizqWC5gyzM1mArnEJkLZ2DPhf//n3BAVmeDkq8ZUZPL3TUn7gBLCgYFBYsAcxQZRmKrDwABNsv9SJSDwwAAAABJRU5ErkJggg==',
'D' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QGC1+orhOAAAAB3RJTUUH0wUOEC4yr7fHvgAAAAlwSFlzAAALEgAACxIB0t1+/AAAAM9JREFUeNpj/M9AHGAiUt1AKmSBsxiRhXlkNBxCpFFU/ocBTDMyPvxHADwKGRgUbhCpkEHiCZEKGRyIVciwArdCIPPFGg8YzwSvQiBogXFvEFD43wDKnQDl44yZGCh9glAU2sCsJqRQBkq/gMUw3G2wuP6PnU/H9PgRSgsQUvgESosQUngFSqsQUrgCSsNiCFcU7oBx9+CL6w8XamB5SeUPkelxAZEJ1+YPcQolXhCXFTTuEJULOUq+IOVrFgasQELBxMaHG1mEcTiVjwOoEADAIkCnGpmJKgAAAABJRU5ErkJggg==',
'E' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QGDeDwEE0AAAAB3RJTUUH0wUOEC8CkHXGUwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAD5JREFUeNpj/M9AHGAiUt2owkGrkAXGYMQqjUgJQ8EzpPsa05+D140oMYTk4KEQ4MMqZqgUhcM1czESW30AABfqB1XDnLzcAAAAAElFTkSuQmCC',
'F' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QGQe8AkDZAAAAB3RJTUUH0wUOEC8JB6cf2wAAAAlwSFlzAAALEgAACxIB0t1+/AAAADlJREFUeNpj/M9AHGAiUt3wUsiCYDJikUYE3lDwDDm+xvTp4HUjIoaQXTsUAnxYxcyoQryAcUSWuAAW/gZTg/yEMAAAAABJRU5ErkJggg==',
'G' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QGRFI1vWIAAAAB3RJTUUH0wUOEC8QY8y3GwAAAAlwSFlzAAALEgAACxIB0t1+/AAAASZJREFUeNpj/M9AHGAiUt0IVciCwvt7ZM+FOy8+MDBwSEho2AQII8v9R4A/U2RQtHEUfEBIIim8YYBhn8oNLAqP8GBxmcwbDIU3sKljYIhAV/jHgAE7uICmcAJMQqDmwp//D2YowPgxqAr/wPyr8QAi8EEHwleIQFW4BxYicG+eEHEomHECET5QhRVQhQn/cQFoFJ6AKgwgFNcPoFwdnAoZIXmGERahKDwkIdqlR1j4PiRW4RVCCmExvQenQrSYEXiDiAoUBfC4loAK23yBSnzArhCRehRmAJPFnRUxHDgU/lDA7zZECj/Cgl2dAkaeWYNVZcoHDIX/94hgKLM4gS27/v9QIICizGMDkiQjSon7c8eBCw+e/GFgkZEwsHCRRpZiHE5FMwCa2YE+WcAOUwAAAABJRU5ErkJggg==',
'H' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QGRw2Z4k1AAAAB3RJTUUH0wUOEC8agxleBQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAD1JREFUeNpj/M9AHGAiUt2oQvyABUozQml4+KMLDAXPDAWFLGh8RlwKh4JnaB88GOlxELhxVCFewDgEynAAN2sFVHAvevkAAAAASUVORK5CYII=',
'I' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QGSlg1E0WAAAAB3RJTUUH0wUOEC86uHd+zQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAD5JREFUeNpj/M9AHGAiUt1AKmRBMBkxJJE9OhQ8Q32FjGhxDQsjjCQwFDwzqnCwKkRKZqO5EBMwDqcSl2iFAMMeB0s/kLo2AAAAAElFTkSuQmCC',
'J' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QGywiiNsbAAAAB3RJTUUH0wUOEDAFw0tdbgAAAAlwSFlzAAALEgAACxIB0t1+/AAAAKdJREFUeNpj/M9AHGAiUh3xClmwijJCaSR3Ud/qUYWjCklTyIHEhifctw8ePHgCxO+B7L9QMQlsChW+QOiX4gwMd6BiItisVoHSB6AYWQwM/kNBBszkC/9PwKyc8B8B4Ar3YPHMHWwK/xtgqAv4j1XhEfScK/EEu8L/a1BVStz4j0Ph/yPItoe8QFH3nxGlkNq75cKDB0DDVBwitNEcwjhwpdmoQrwAAN6ioiFapgUdAAAAAElFTkSuQmCC',
'K' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHAEoFhGpAAAAB3RJTUUH0wUOEDANzZDVXAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAPZJREFUeNpj/M9AHGAiUt2owgFSyAgFMOGDrDARxkKo0H8wYEDh/b/AAzepACqEVeEdCQx1WBW+0ICry/mPR+EXE7i6kD94FP5xwaYOi8IIrOowFRbA1Xkgq8NQ2ANXZ/PlPx6FS3CpQ1fIAmOIoKn7jxbXf2CMNxvQIxvVRAQQ+YDXaiSQQqxChiOEFGoIQGidP/gVStxogLI68CqUuPH/BzSVcTzAoxCo7v//ObBIxK0QrO7/H1iCXIFT4QkIFxbaMh9wKYQJO0D5OYQUnoDF/QkCCuHJ1+APAYV3YOloAgGF8JTO84SAwjfQiGQIgPAZqV4rAACnKSarzdlc4gAAAABJRU5ErkJggg==',
'L' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHA64qQw4AAAAB3RJTUUH0wUOEDAXMPIsJgAAAAlwSFlzAAALEgAACxIB0t1+/AAAADlJREFUeNpj/M9AHGAiUt2QUMiCYDJCaezhMBQ8M6pwVCEdFLJgCjEisRH5Zyh4hvoKGUdkQUq0QgARaARRV9jUFQAAAABJRU5ErkJggg==',
'M' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHBhMfblpAAAAB3RJTUUH0wUOEDAqaJpgNwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAPNJREFUeNrdlK0OgzAUhS8bCQYxMYmcmEAgEAgejQfZQyG2pAIxOYlATkAu691o2tvSYia2iv7lyzn3NG0jhG1tt5H7Aggom7ZuaKPhBFqKV+pFWDGjjcxStEAYXuvBkrKtoVX+gdRiK9i6sxjgeVGUMJzWwZLACaZOTqoAOAronmrlBuvPkQsIgHn8BqnE2AMmhaaYJ57jqTRFMwsDyW249XaJLhAujizm7UFM5XCUXTqiTvBLQYWRc7H3WWt+3NmlyGbOGh9q/45mjQxUb+CA6A2jSqu5MweX0ooQWLJxLYx6fz0GwmBOsww5GP3At/dX4Ayb7qpFI9y5ygAAAABJRU5ErkJggg==',
'N' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHC6DxyzwAAAAB3RJTUUH0wUOEDAye/b4YQAAAAlwSFlzAAALEgAACxIB0t1+/AAAALRJREFUeNpj/M9AHGAiUt0IV8gIARsRMlAROP8/BEB5Ii/+/0cVgXNRhRk8iFXIMIFYhRxXiFTIYPCDSIUMBcQqZNhDrEKZN0QqZAggViHDHIIKRSAUzx1CCrdAaZM/BBT+z4Eyaggp/KEDYbAcIaDw/wUWCEuBkML/PagBgFvhfxdiFT4RIVLh/zXEKvyfQqzCLypEKvx/hoVIhf9biFX4x4ZIhf8fCBCp8P8KNBHG4VQ0AwDEOyeZhO5p1AAAAABJRU5ErkJggg==',
'O' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHQExDSDoAAAAB3RJTUUH0wUOEDA4myMRfwAAAAlwSFlzAAALEgAACxIB0t1+/AAAATtJREFUeNpj/M9AHGAiUt3wUsiCyv265ciZJ08YGGRkDGwCuFGk/iOBDwU8SDIcGS+Q5JAV7hBBs45nAVaFC1gwXTYBi8IdWNQxMCzAUPhBBJs6Bp4n6AoLYFI6az78f7NEB8ZNQFP4QwAqEfADwg+A+f0NqsI1UHGBDzCnSKC6EhYzB6B0Cj+UwZ+CKgNTeAZKu8C94QGlL6DGjAyU+wAeXC+gIiIQLiM0KzDC9CFCBlWICsnsL3aFMDc+hcs8QZWBKYSF2g24whvYFZpA6T1whUegNCwyoYGxAmYyLGZ+wOxYghqFX2BpO+APmP8nBspHj2uk1LPizf8PGyxgXPTUQ3x6JDqF//8/AYs6bHkGmCYF0O3FnguBCSaFA0kZS8IDJDlG1IIUVFK8eABMWzI6DgHCyDKMI7LEBQCD5YgI9wbKGgAAAABJRU5ErkJggg==',
'P' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHQvR2Mn2AAAAB3RJTUUH0wUOEDEDMzPJGgAAAAlwSFlzAAALEgAACxIB0t1+/AAAAKVJREFUeNpj/M9AHGAiUh05ChlRAKdu4k5Ulf9hANMQiwf/EQCfQgaJB0QqZHAhViHDEbg0AV8vwRM8QN0v5vBAOSfw+BrMWQDl8MClGeEKGGEKQcRXHmQemTGD1RMy+N14o4MDyvGAS7NgGMaIzPHAYyIy4HhBZMy0EBmFIX+IUsjRgqQOi2fAgEVBwyVGGEUEQw2O3EbLzDWSFDIOhtJsVCEWAAC/Yt2X+2PYcgAAAABJRU5ErkJggg==',
'Q' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHRxSC0wxAAAAB3RJTUUH0wUOEDEKSu9xvgAAAAlwSFlzAAALEgAACxIB0t1+/AAAAW1JREFUeNpj/M9AHGAiUt2QUMiCzPm65cCZF08YGGRkDBx8uNFU/oeDDwU8SOIcBS/+IwOEwh0iaEYIrMCqcA4LprsmYFG4A4s6BoYFGAo/iGBTx8DzAl1hAUxKZ8WH/29W6MC4KWgKfwhAJXx+gPl/QmB+/4KqcANUXOQDVPiLBFRkCUwhJGb2wGzihzK4U6CMA6hReAbKc4F7wwFKX0CNGRkoB+HJJ1ARGZgAIziFM8J0IUIGXYjMZPaXkEJYYDyBiz+EuRFVoQKUdwWIz6qWvmRguAMVkUBVaIIUalPu9GgshIefAWrwrIHp//L/DQc4KjFiBi2uQ/7832KB5AX0uP5fAZOx2PDhfwNCIXrq+f9BhgEb4HmCkcL3YE3hSHkBnmfWYFMpsoaYXAgGDgcwFKLlaxYOCG2DqRCYrldkmIACUMIgZsaTI5Cg3IBNISp4AoovlT+EFf7/kYPkb3wK//8/YAGPGcYhUIYDAHBC9Yak1w7iAAAAAElFTkSuQmCC',
'R' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHSkEuIgSAAAAB3RJTUUH0wUOEDEUsOBM3QAAAAlwSFlzAAALEgAACxIB0t1+/AAAAOZJREFUeNpj/M9AHGAiUh0NFLJAaUY0YRkJHYcQdmSh/xCAzRCZHf8RAJ9CBpYNRCpkEHgBV4jfMx+mEOVGIDDAaTWY82aPBZTLgV8hUCkaH6cbP8B8gxHgyODjgwstMDfiVIgWQyFE+lrhB3EBznOFuJgxuUFMXPPEbPmDpA53FH55osKMIoAe4F826MDMvPMfj9WgWFGBBeIf/Ar/H4FxJhBQ+B8WzCIfCCi8A4uvBgIK/2fA/POCgMIXHFBuDqH02ABLM3cIKPwgAuVHEFD4fwJM4AIBhT9goe4AFWAcAsXesFIIAEvJyZHTCSiTAAAAAElFTkSuQmCC',
'S' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHTRnvuTLAAAAB3RJTUUH0wUOEDEbIF9RTAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAVZJREFUeNpj/M9AHGAiUt2oQvyABYX398CWK3de/GBgkVEw8HFgRpH7jwSWqCDLyCxAlkNS+CcG3boY7AozMB3Wgk3hGSw+4HgBl0b4egIWhT9mYPGMBFQg4MH/D2tgvrKASzPC0yMjlP7CDSTOmrDIMDDwiHBsxzSRBypw5j9WgFDoAPNAxIQjX/ApXIDsC4OCLV9wKfzjwIACOEIO4IiZFxbooePzAqvC/z9qONBUStzAqvD//zc9BqgqNX5gVwgETxbkmCClvSk4FYLdsCMCptAGI2YSGV78+PLmz5MX4mDu1ByIMM9n9JiBxe4caGChy8MZMMsUIEFyAMoVwVC4BGaEwpI3/9/MEYGlJQyFPwQYsIE1mL7GlnCR0iNSXLtgqpO4gy1mvtigq1NAxCBKgP9pEUFWxlOCnNIYUYrmn3v23Ljx5gsw88sYOPhwI0sxDoEyHAABtSc836a1EQAAAABJRU5ErkJggg==',
'T' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHgUdTbcyAAAAB3RJTUUH0wUOEDEgkVS4aAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADdJREFUeNpj/M9AHGAiUt0IVcgCpRlxyMODeSh4hmiFjGipB+Z7jEQ1FDwzqnBU4WBSyDicimYAb/AFTaJpyH8AAAAASUVORK5CYII=',
'U' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHhEHl2NPAAAAB3RJTUUH0wUOEDEon48wWgAAAAlwSFlzAAALEgAACxIB0t1+/AAAAKlJREFUeNpj/M9AHGAiUh3xClmgNCOUhrsEXYD6Vo8qHFVIuUIVKP0USr+E0jLoCjWg9A4ovQVNHJjUIaADZsILMPeFApRfA5X/D1N4AaZRYc6b/2+WwNQxXEBX+N8Bqxcc/mMoPMGCRR3LBUyF/2dgUTjjPxaF/6egm8ky5T9Whf9P2KCoMziBJPefEaWQurjnzIMXL34wsMhoWHiYo2hjHLjSbFQhXgAAKzejCLAOcVMAAAAASUVORK5CYII=',
'V' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHh/gL05IAAAAB3RJTUUH0wUOEDEuduyVbwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAVNJREFUeNpj/M9AHGAiUt2owoFRaMgIAYlIMqlQMUMo/z8ITIByRP78hwMRqNgECBei8AULVPQIXN0RqAjLGwgfYrW4B1R4DdzmLVDaQxjZ6v8roDwVuIkqMK3/ka3+/0MAKn4FKn4D5uof/5GtZmCPgEpsQHNDBDsDitVwt5tA+RZQ/pn/qFYj3PQEzHsC5WnA3QyPmQQU3+5AE0VYDTfDBcxzgQbik/8YVv93gMp9AbK/cEAD8T+m1TBb/oD8veEHhs0IE2GmxADZMRAmz4//WKxGkv3DA2Gm/MeqcA/Ujj1w1hHsCv/LQKQz/megRzyawgqIvAxMRwsuhbCEAEvGT3AphEUwNCU5IEv9R8lcUH9/wAxE5HAEgjccSBI8X3CbKOyBxAnhxm3i/w1IEgdQZFA98/+PCFydDKo6VKsZmGPQ0wgOq/+fgYvfQTORkeq1AgCIAvD7+THsDgAAAABJRU5ErkJggg==',
'W' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QFhZRKnzkAAAAB3RJTUUH0wUOEDIR66frkQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAXNJREFUeNrtlK1ywkAUhZdMZsJMKyIqKhAIBAKBiEBEVCDyCJV9iIo+Do9QGRERgUBEVCAqKhAIREVERURnTvfn3t27xSA6g+kOQ/ZkP/aec5NlBHXZSC7k/sE/AhUwoVkDPQ58/2RUQ2IC6B1XpN7MV8tg62/pUdjSDO7OwR2J0pbekpqZYlMG50bNSGwBDQ4pyV5YtCZ7mqZf1mO2IN2Jynba0XRx49pThjQCbEKWFfVRpIlBzlK4PuLdpxEWlTr4LHvYMEDOaTYS3HCW3DAJt8mmaSXYchZbOfEzkyYGZRbrEbX8qe7GMpLqFeyxV9F4fon1pwcxjxbqJpJTBPBJLoyHYSz1I3xq78aOMssepHZZHFjKhbX9/AZd6e9bsdABeyHTQXiE2PLO6PugCwiP/r1QVLYSlpXwKE1Wno7b7jY+hoWj0aegPyA9+jPrzgqwZJ0j8hhMVtElmDoD19FFPAvamc+sOXBm+KdYEzC63p/9D7Tr72kj/8qjAAAAAElFTkSuQmCC',
'X' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHi/G9n7kAAAAB3RJTUUH0wUOEDIXAsROpAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAT9JREFUeNpj/M9AHGAiUt3IVhjKCAFr4RJroSKBMIH/YPBEAMITeQLh//8gAxHggQlAFf6fAdXnA+WnQPkT/qMp/O8AlVkA5h2A8kz+YCi8wQGREngA5PxQgXBYzvzHUPi/A2qIA5BdAmUX/Mei8I8BVHbK/wssEJbMB2wK/5+ASvPcgGlZ8x+rQriFAmghgKHwiwJKXPA8wKXw/x4UhT3/cSr8n4CkzuAPHoVvRODqWE6gyPxHTT1ffiAUCjCgAhRtDkgSFnisnoJixAScCh/wEBk8DmiucsChcA5MQQSMMQWrQlgiZ0iAByey5QiFPlBZnS//v+hgxjZc4QKYKVeAnCswby3AUAi3eAGKNoEn6Ap94A5EjXUfNIUrEA6EALgzl6AohCUGsAMhAOZMkTfICkMw3I5wZgiEyzicimYAFRFkVwgDfJ0AAAAASUVORK5CYII=',
'Y' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHjkyIsu1AAAAB3RJTUUH0wUOEDIkvRQvsgAAAAlwSFlzAAALEgAACxIB0t1+/AAAANJJREFUeNrt1L0NgzAQBWAcUVB6AAZgBAoKhmAICoZgCAoKxmAECkbwABSUlBRILwF8duwYhFJEihJ37+6T5T9g8K6N20X3FdDDNjKKOeTIqZLtWcKBU73bCx1lPhgQNTWieY1zRLmGCZFQp1xTSSmBDUUgW754BF+GQLxAPUkMxMb0FlzUsqpKLXhxQPRqo+oIerggCvuMC7jhFJounA4gWhO2OIL6Jp/uzglHrh0fTyAaDRucQaTkUpxDQVBYDWZ/hYze6bsv/A8/DNlP/kgvwzuer4kCMGPZDgAAAABJRU5ErkJggg==',
'Z' => 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAAAAACpleexAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTBQ4QHwfqWOdfAAAAB3RJTUUH0wUOEDIrLasyIwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAL5JREFUeNrl1C0OwkAQBWCWQIJEVPQIFT0GAlHBMRBIBKIHqahAIDlERY9R0UOs3ORh5qVLunmp5GfUZvczbzKzDqtltV7ofgtueHCp16h33xBGwn0KYqoTO/J868Csaj418e0cPujOkLDfmTsECcfcXOGhoC/NZQMUDBUDd5DwxiAtJGzprpCw48xVQcIhM1d6KOgLc/kIBcORgXtIeGGQOyRs6Oq0g7P92YbkRE7bRZhcwhh+6nLF5f7yx30B8Z7FgxzMWtEAAAAASUVORK5CYII=',
);
return $_png;
}
?>

View File

@@ -52,84 +52,67 @@ $sql = "SELECT username, user_email, user_viewemail, user_lang
WHERE user_id = $user_id";
if ( $result = $db->sql_query($sql) )
{
$row = $db->sql_fetchrow($result);
$username = $row['username'];
$user_email = $row['user_email'];
$user_lang = $row['user_lang'];
if ( $row['user_viewemail'] || $userdata['user_level'] == ADMIN )
if ( $row = $db->sql_fetchrow($result) )
{
if ( time() - $userdata['user_emailtime'] < $board_config['flood_interval'] )
$username = $row['username'];
$user_email = $row['user_email'];
$user_lang = $row['user_lang'];
if ( $row['user_viewemail'] || $userdata['user_level'] == ADMIN )
{
message_die(GENERAL_MESSAGE, $lang['Flood_email_limit']);
}
if ( isset($HTTP_POST_VARS['submit']) )
{
$error = FALSE;
if ( !empty($HTTP_POST_VARS['subject']) )
if ( time() - $userdata['user_emailtime'] < $board_config['flood_interval'] )
{
$subject = trim(stripslashes($HTTP_POST_VARS['subject']));
message_die(GENERAL_MESSAGE, $lang['Flood_email_limit']);
}
else
if ( isset($HTTP_POST_VARS['submit']) )
{
$error = TRUE;
$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Empty_subject_email'] : $lang['Empty_subject_email'];
}
if ( !empty($HTTP_POST_VARS['message']) )
{
$message = trim(stripslashes($HTTP_POST_VARS['message']));
}
else
{
$error = TRUE;
$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Empty_message_email'] : $lang['Empty_message_email'];
}
if ( !$error )
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_emailtime = " . time() . "
WHERE user_id = " . $userdata['user_id'];
if ( $result = $db->sql_query($sql) )
$error = FALSE;
if ( !empty($HTTP_POST_VARS['subject']) )
{
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
$emailer = new emailer($board_config['smtp_delivery']);
$emailer->from($userdata['user_email']);
$emailer->replyto($userdata['user_email']);
$email_headers = 'X-AntiAbuse: Board servername - ' . $server_name . "\n";
$email_headers .= 'X-AntiAbuse: User_id - ' . $userdata['user_id'] . "\n";
$email_headers .= 'X-AntiAbuse: Username - ' . $userdata['username'] . "\n";
$email_headers .= 'X-AntiAbuse: User IP - ' . decode_ip($user_ip) . "\n";
$emailer->use_template('profile_send_email', $user_lang);
$emailer->email_address($user_email);
$emailer->set_subject($subject);
$emailer->extra_headers($email_headers);
$emailer->assign_vars(array(
'SITENAME' => $board_config['sitename'],
'BOARD_EMAIL' => $board_config['board_email'],
'FROM_USERNAME' => $userdata['username'],
'TO_USERNAME' => $username,
'MESSAGE' => $message)
);
$emailer->send();
$emailer->reset();
if ( !empty($HTTP_POST_VARS['cc_email']) )
$subject = trim(stripslashes($HTTP_POST_VARS['subject']));
}
else
{
$error = TRUE;
$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Empty_subject_email'] : $lang['Empty_subject_email'];
}
if ( !empty($HTTP_POST_VARS['message']) )
{
$message = trim(stripslashes($HTTP_POST_VARS['message']));
}
else
{
$error = TRUE;
$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Empty_message_email'] : $lang['Empty_message_email'];
}
if ( !$error )
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_emailtime = " . time() . "
WHERE user_id = " . $userdata['user_id'];
if ( $result = $db->sql_query($sql) )
{
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
$emailer = new emailer($board_config['smtp_delivery']);
$emailer->from($userdata['user_email']);
$emailer->replyto($userdata['user_email']);
$emailer->use_template('profile_send_email');
$emailer->email_address($userdata['user_email']);
$email_headers = 'X-AntiAbuse: Board servername - ' . $server_name . "\n";
$email_headers .= 'X-AntiAbuse: User_id - ' . $userdata['user_id'] . "\n";
$email_headers .= 'X-AntiAbuse: Username - ' . $userdata['username'] . "\n";
$email_headers .= 'X-AntiAbuse: User IP - ' . decode_ip($user_ip) . "\n";
$emailer->use_template('profile_send_email', $user_lang);
$emailer->email_address($user_email);
$emailer->set_subject($subject);
$emailer->extra_headers($email_headers);
$emailer->assign_vars(array(
'SITENAME' => $board_config['sitename'],
'BOARD_EMAIL' => $board_config['board_email'],
@@ -139,72 +122,95 @@ if ( $result = $db->sql_query($sql) )
);
$emailer->send();
$emailer->reset();
if ( !empty($HTTP_POST_VARS['cc_email']) )
{
$emailer->from($userdata['user_email']);
$emailer->replyto($userdata['user_email']);
$emailer->use_template('profile_send_email');
$emailer->email_address($userdata['user_email']);
$emailer->set_subject($subject);
$emailer->assign_vars(array(
'SITENAME' => $board_config['sitename'],
'BOARD_EMAIL' => $board_config['board_email'],
'FROM_USERNAME' => $userdata['username'],
'TO_USERNAME' => $username,
'MESSAGE' => $message)
);
$emailer->send();
$emailer->reset();
}
$template->assign_vars(array(
'META' => '<meta http-equiv="refresh" content="5;url=' . append_sid("index.$phpEx") . '">')
);
$message = $lang['Email_sent'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
else
{
message_die(GENERAL_ERROR, 'Could not update last email time', '', __LINE__, __FILE__, $sql);
}
$template->assign_vars(array(
'META' => '<meta http-equiv="refresh" content="5;url=' . append_sid("index.$phpEx") . '">')
);
$message = $lang['Email_sent'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
else
{
message_die(GENERAL_ERROR, 'Could not update last email time', '', __LINE__, __FILE__, $sql);
}
}
}
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
'body' => 'profile_send_email.tpl')
);
make_jumpbox('viewforum.'.$phpEx);
if ( $error )
{
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
'reg_header' => 'error_body.tpl')
'body' => 'profile_send_email.tpl')
);
make_jumpbox('viewforum.'.$phpEx);
if ( $error )
{
$template->set_filenames(array(
'reg_header' => 'error_body.tpl')
);
$template->assign_vars(array(
'ERROR_MESSAGE' => $error_msg)
);
$template->assign_var_from_handle('ERROR_BOX', 'reg_header');
}
$template->assign_vars(array(
'ERROR_MESSAGE' => $error_msg)
'USERNAME' => $username,
'S_HIDDEN_FIELDS' => '',
'S_POST_ACTION' => append_sid("profile.$phpEx?mode=email&amp;" . POST_USERS_URL . "=$user_id"),
'L_SEND_EMAIL_MSG' => $lang['Send_email_msg'],
'L_RECIPIENT' => $lang['Recipient'],
'L_SUBJECT' => $lang['Subject'],
'L_MESSAGE_BODY' => $lang['Message_body'],
'L_MESSAGE_BODY_DESC' => $lang['Email_message_desc'],
'L_EMPTY_SUBJECT_EMAIL' => $lang['Empty_subject_email'],
'L_EMPTY_MESSAGE_EMAIL' => $lang['Empty_message_email'],
'L_OPTIONS' => $lang['Options'],
'L_CC_EMAIL' => $lang['CC_email'],
'L_SPELLCHECK' => $lang['Spellcheck'],
'L_SEND_EMAIL' => $lang['Send_email'])
);
$template->assign_var_from_handle('ERROR_BOX', 'reg_header');
$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}
else
{
message_die(GENERAL_MESSAGE, $lang['User_prevent_email']);
}
$template->assign_vars(array(
'USERNAME' => $username,
'S_HIDDEN_FIELDS' => '',
'S_POST_ACTION' => append_sid("profile.$phpEx?mode=email&amp;" . POST_USERS_URL . "=$user_id"),
'L_SEND_EMAIL_MSG' => $lang['Send_email_msg'],
'L_RECIPIENT' => $lang['Recipient'],
'L_SUBJECT' => $lang['Subject'],
'L_MESSAGE_BODY' => $lang['Message_body'],
'L_MESSAGE_BODY_DESC' => $lang['Email_message_desc'],
'L_EMPTY_SUBJECT_EMAIL' => $lang['Empty_subject_email'],
'L_EMPTY_MESSAGE_EMAIL' => $lang['Empty_message_email'],
'L_OPTIONS' => $lang['Options'],
'L_CC_EMAIL' => $lang['CC_email'],
'L_SPELLCHECK' => $lang['Spellcheck'],
'L_SEND_EMAIL' => $lang['Send_email'])
);
$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}
else
{
message_die(GENERAL_MESSAGE, $lang['User_prevent_email']);
message_die(GENERAL_MESSAGE, $lang['User_not_exist']);
}
}
else
{
message_die(GENERAL_MESSAGE, $lang['User_not_exist']);
message_die(GENERAL_ERROR, 'Could not select user data', '', __LINE__, __FILE__, $sql);
}
?>

View File

@@ -21,6 +21,19 @@
*
***************************************************************************/
/*
This code has been modified from its original form by psoTFX @ phpbb.com
Changes introduce the back-ported phpBB 2.2 visual confirmation code.
NOTE: Anyone using the modified code contained within this script MUST include
a relevant message such as this in usercp_register.php ... failure to do so
will affect a breach of Section 2a of the GPL and our copyright
png visual confirmation system : (c) phpBB Group, 2003 : All Rights Reserved
*/
if ( !defined('IN_PHPBB') )
{
die("Hacking attempt");
@@ -60,6 +73,7 @@ function show_coppa()
// ---------------------------------------
$error = FALSE;
$error_msg = '';
$page_title = ( $mode == 'editprofile' ) ? $lang['Edit_profile'] : $lang['Register'];
if ( $mode == 'register' && !isset($HTTP_POST_VARS['agreed']) && !isset($HTTP_GET_VARS['agreed']) )
@@ -93,7 +107,7 @@ if (
$current_email = trim(htmlspecialchars($HTTP_POST_VARS['current_email']));
}
$strip_var_list = array('username' => 'username', 'email' => 'email', 'icq' => 'icq', 'aim' => 'aim', 'msn' => 'msn', 'yim' => 'yim', 'website' => 'website', 'location' => 'location', 'occupation' => 'occupation', 'interests' => 'interests');
$strip_var_list = array('email' => 'email', 'icq' => 'icq', 'aim' => 'aim', 'msn' => 'msn', 'yim' => 'yim', 'website' => 'website', 'location' => 'location', 'occupation' => 'occupation', 'interests' => 'interests', 'confirm_code' => 'confirm_code');
// Strip all tags from data ... may p**s some people off, bah, strip_tags is
// doing the job but can still break HTML output ... have no choice, have
@@ -106,6 +120,8 @@ if (
}
}
$username = ( !empty($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
$trim_var_list = array('cur_password' => 'cur_password', 'new_password' => 'new_password', 'password_confirm' => 'password_confirm', 'signature' => 'signature');
while( list($var, $param) = @each($trim_var_list) )
@@ -116,7 +132,8 @@ if (
}
}
$signature = str_replace('<br />', "\n", $signature);
$signature = (isset($signature)) ? str_replace('<br />', "\n", $signature) : '';
$signature_bbcode_uid = '';
// Run some validation on the optional fields. These are pass-by-ref, so they'll be changed to
// empty strings if they fail.
@@ -127,6 +144,7 @@ if (
$notifyreply = ( isset($HTTP_POST_VARS['notifyreply']) ) ? ( ($HTTP_POST_VARS['notifyreply']) ? TRUE : 0 ) : 0;
$notifypm = ( isset($HTTP_POST_VARS['notifypm']) ) ? ( ($HTTP_POST_VARS['notifypm']) ? TRUE : 0 ) : TRUE;
$popup_pm = ( isset($HTTP_POST_VARS['popup_pm']) ) ? ( ($HTTP_POST_VARS['popup_pm']) ? TRUE : 0 ) : TRUE;
$sid = (isset($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : 0;
if ( $mode == 'register' )
{
@@ -138,7 +156,7 @@ if (
}
else
{
$attachsig = ( isset($HTTP_POST_VARS['attachsig']) ) ? ( ($HTTP_POST_VARS['attachsig']) ? TRUE : 0 ) : 0;
$attachsig = ( isset($HTTP_POST_VARS['attachsig']) ) ? ( ($HTTP_POST_VARS['attachsig']) ? TRUE : 0 ) : $userdata['user_attachsig'];
$allowhtml = ( isset($HTTP_POST_VARS['allowhtml']) ) ? ( ($HTTP_POST_VARS['allowhtml']) ? TRUE : 0 ) : $userdata['user_allowhtml'];
$allowbbcode = ( isset($HTTP_POST_VARS['allowbbcode']) ) ? ( ($HTTP_POST_VARS['allowbbcode']) ? TRUE : 0 ) : $userdata['user_allowbbcode'];
@@ -165,9 +183,20 @@ if (
}
$user_timezone = ( isset($HTTP_POST_VARS['timezone']) ) ? doubleval($HTTP_POST_VARS['timezone']) : $board_config['board_timezone'];
$sql = "SELECT config_value
FROM " . CONFIG_TABLE . "
WHERE config_name = 'default_dateformat'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not select default dateformat', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$board_config['default_dateformat'] = $row['config_value'];
$user_dateformat = ( !empty($HTTP_POST_VARS['dateformat']) ) ? trim(htmlspecialchars($HTTP_POST_VARS['dateformat'])) : $board_config['default_dateformat'];
$user_avatar_local = ( isset($HTTP_POST_VARS['avatarselect']) && !empty($HTTP_POST_VARS['submitavatar']) && $board_config['allow_avatar_local'] ) ? $HTTP_POST_VARS['avatarselect'] : ( ( isset($HTTP_POST_VARS['avatarlocal']) ) ? htmlspecialchars($HTTP_POST_VARS['avatarlocal']) : '' );
$user_avatar_local = ( isset($HTTP_POST_VARS['avatarselect']) && !empty($HTTP_POST_VARS['submitavatar']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarselect']) : ( ( isset($HTTP_POST_VARS['avatarlocal']) ) ? htmlspecialchars($HTTP_POST_VARS['avatarlocal']) : '' );
$user_avatar_category = ( isset($HTTP_POST_VARS['avatarcatname']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarcatname']) : '' ;
$user_avatar_remoteurl = ( !empty($HTTP_POST_VARS['avatarremoteurl']) ) ? trim(htmlspecialchars($HTTP_POST_VARS['avatarremoteurl'])) : '';
$user_avatar_upload = ( !empty($HTTP_POST_VARS['avatarurl']) ) ? trim($HTTP_POST_VARS['avatarurl']) : ( ( $HTTP_POST_FILES['avatar']['tmp_name'] != "none") ? $HTTP_POST_FILES['avatar']['tmp_name'] : '' );
@@ -175,8 +204,8 @@ if (
$user_avatar_size = ( !empty($HTTP_POST_FILES['avatar']['size']) ) ? $HTTP_POST_FILES['avatar']['size'] : 0;
$user_avatar_filetype = ( !empty($HTTP_POST_FILES['avatar']['type']) ) ? $HTTP_POST_FILES['avatar']['type'] : '';
$user_avatar = ( empty($user_avatar_loc) && $mode == 'editprofile' ) ? $userdata['user_avatar'] : '';
$user_avatar_type = ( empty($user_avatar_loc) && $mode == 'editprofile' ) ? $userdata['user_avatar_type'] : '';
$user_avatar = ( empty($user_avatar_local) && $mode == 'editprofile' ) ? $userdata['user_avatar'] : '';
$user_avatar_type = ( empty($user_avatar_local) && $mode == 'editprofile' ) ? $userdata['user_avatar_type'] : '';
if ( (isset($HTTP_POST_VARS['avatargallery']) || isset($HTTP_POST_VARS['submitavatar']) || isset($HTTP_POST_VARS['cancelavatar'])) && (!isset($HTTP_POST_VARS['submit'])) )
{
@@ -195,14 +224,14 @@ if (
$location = stripslashes($location);
$occupation = stripslashes($occupation);
$interests = stripslashes($interests);
$signature = stripslashes($signature);
$signature = htmlspecialchars(stripslashes($signature));
$user_lang = stripslashes($user_lang);
$user_dateformat = stripslashes($user_dateformat);
if ( !isset($HTTP_POST_VARS['cancelavatar']))
{
$user_avatar = $user_avatar_local;
$user_avatar = $user_avatar_category . '/' . $user_avatar_local;
$user_avatar_type = USER_AVATAR_GALLERY;
}
}
@@ -225,6 +254,13 @@ if ( isset($HTTP_POST_VARS['submit']) )
{
include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);
// session id check
if ($sid == '' || $sid != $userdata['session_id'])
{
$error = true;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Session_invalid'];
}
$passwd_sql = '';
if ( $mode == 'editprofile' )
{
@@ -243,6 +279,57 @@ if ( isset($HTTP_POST_VARS['submit']) )
}
}
if ($board_config['enable_confirm'] && $mode == 'register')
{
if (empty($HTTP_POST_VARS['confirm_id']))
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
}
else
{
$confirm_id = htmlspecialchars($HTTP_POST_VARS['confirm_id']);
if (!preg_match('/^[A-Za-z0-9]+$/', $confirm_id))
{
$confirm_id = '';
}
$sql = 'SELECT code
FROM ' . CONFIRM_TABLE . "
WHERE confirm_id = '$confirm_id'
AND session_id = '" . $userdata['session_id'] . "'";
if (!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not obtain confirmation code', '', __LINE__, __FILE__, $sql);
}
if ($row = $db->sql_fetchrow($result))
{
if ($row['code'] != $confirm_code)
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
}
else
{
$sql = 'DELETE FROM ' . CONFIRM_TABLE . "
WHERE confirm_id = '$confirm_id'
AND session_id = '" . $userdata['session_id'] . "'";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not delete confirmation code', '', __LINE__, __FILE__, $sql);
}
}
}
else
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
}
$db->sql_freeresult($result);
}
}
$passwd_sql = '';
if ( !empty($new_password) && !empty($password_confirm) )
{
@@ -334,9 +421,9 @@ if ( isset($HTTP_POST_VARS['submit']) )
// Error is already triggered, since one field is empty.
$error = TRUE;
}
else if ( $username != $userdata['username'] || $mode == 'register' )
else if ( $username != $userdata['username'] || $mode == 'register')
{
if (strtolower($username) != strtolower($userdata['username']))
if (strtolower($username) != strtolower($userdata['username']) || $mode == 'register')
{
$result = validate_username($username);
if ( $result['error'] )
@@ -361,7 +448,7 @@ if ( isset($HTTP_POST_VARS['submit']) )
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Signature_too_long'];
}
if ( $signature_bbcode_uid == '' )
if ( !isset($signature_bbcode_uid) || $signature_bbcode_uid == '' )
{
$signature_bbcode_uid = ( $allowbbcode ) ? make_bbcode_uid() : '';
}
@@ -379,12 +466,12 @@ if ( isset($HTTP_POST_VARS['submit']) )
{
$avatar_sql = user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
}
else
if ( ( !empty($user_avatar_upload) || !empty($user_avatar_name) ) && $board_config['allow_avatar_upload'] )
{
if ( !empty($user_avatar_upload) )
{
$avatar_mode = ( !empty($user_avatar_name) ) ? 'local' : 'remote';
$avatar_mode = (empty($user_avatar_name)) ? 'remote' : 'local';
$avatar_sql = user_avatar_upload($mode, $avatar_mode, $userdata['user_avatar'], $userdata['user_avatar_type'], $error, $error_msg, $user_avatar_upload, $user_avatar_name, $user_avatar_size, $user_avatar_filetype);
}
else if ( !empty($user_avatar_name) )
@@ -397,19 +484,13 @@ if ( isset($HTTP_POST_VARS['submit']) )
}
else if ( $user_avatar_remoteurl != '' && $board_config['allow_avatar_remote'] )
{
if ( @file_exists(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $userdata['user_avatar'])) )
{
@unlink(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $userdata['user_avatar']));
}
user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
$avatar_sql = user_avatar_url($mode, $error, $error_msg, $user_avatar_remoteurl);
}
else if ( $user_avatar_local != '' && $board_config['allow_avatar_local'] )
{
if ( @file_exists(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $userdata['user_avatar'])) )
{
@unlink(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $userdata['user_avatar']));
}
$avatar_sql = user_avatar_gallery($mode, $error, $error_msg, $user_avatar_local);
user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
$avatar_sql = user_avatar_gallery($mode, $error, $error_msg, $user_avatar_local, $user_avatar_category);
}
if ( !$error )
@@ -449,6 +530,13 @@ if ( isset($HTTP_POST_VARS['submit']) )
message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
}
// We remove all stored login keys since the password has been updated
// and change the current one (if applicable)
if ( !empty($passwd_sql) )
{
session_reset_keys($user_id, $user_ip);
}
if ( !$user_active )
{
//
@@ -457,22 +545,56 @@ if ( isset($HTTP_POST_VARS['submit']) )
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
$emailer = new emailer($board_config['smtp_delivery']);
$emailer->from($board_config['board_email']);
$emailer->replyto($board_config['board_email']);
$emailer->use_template('user_activate', stripslashes($user_lang));
$emailer->email_address($email);
$emailer->set_subject($lang['Reactivate']);
$emailer->assign_vars(array(
'SITENAME' => $board_config['sitename'],
'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
);
$emailer->send();
$emailer->reset();
if ( $board_config['require_activation'] != USER_ACTIVATION_ADMIN )
{
$emailer->from($board_config['board_email']);
$emailer->replyto($board_config['board_email']);
$emailer->use_template('user_activate', stripslashes($user_lang));
$emailer->email_address($email);
$emailer->set_subject($lang['Reactivate']);
$emailer->assign_vars(array(
'SITENAME' => $board_config['sitename'],
'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
);
$emailer->send();
$emailer->reset();
}
else if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
{
$sql = 'SELECT user_email, user_lang
FROM ' . USERS_TABLE . '
WHERE user_level = ' . ADMIN;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not select Administrators', '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
$emailer->from($board_config['board_email']);
$emailer->replyto($board_config['board_email']);
$emailer->email_address(trim($row['user_email']));
$emailer->use_template("admin_activate", $row['user_lang']);
$emailer->set_subject($lang['Reactivate']);
$emailer->assign_vars(array(
'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),
'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
);
$emailer->send();
$emailer->reset();
}
$db->sql_freeresult($result);
}
$message = $lang['Profile_updated_inactive'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
}
@@ -612,7 +734,7 @@ if ( isset($HTTP_POST_VARS['submit']) )
if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
{
$sql = "SELECT user_email
$sql = "SELECT user_email, user_lang
FROM " . USERS_TABLE . "
WHERE user_level = " . ADMIN;
@@ -623,21 +745,23 @@ if ( isset($HTTP_POST_VARS['submit']) )
while ($row = $db->sql_fetchrow($result))
{
$emailer->bcc(trim($row['user_email']));
$emailer->from($board_config['board_email']);
$emailer->replyto($board_config['board_email']);
$emailer->email_address(trim($row['user_email']));
$emailer->use_template("admin_activate", $row['user_lang']);
$emailer->set_subject($lang['New_account_subject']);
$emailer->assign_vars(array(
'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),
'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
);
$emailer->send();
$emailer->reset();
}
$emailer->use_template("admin_activate", $board_config['default_lang']);
$emailer->email_address($lang['New_account_subject'] . ':;');
$emailer->set_subject($lang['New_account_subject']);
$emailer->assign_vars(array(
'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),
'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
);
$emailer->send();
$emailer->reset();
$db->sql_freeresult($result);
}
$message = $message . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
@@ -655,6 +779,7 @@ if ( $error )
//
$username = stripslashes($username);
$email = stripslashes($email);
$cur_password = '';
$new_password = '';
$password_confirm = '';
@@ -679,6 +804,7 @@ else if ( $mode == 'editprofile' && !isset($HTTP_POST_VARS['avatargallery']) &&
$user_id = $userdata['user_id'];
$username = $userdata['username'];
$email = $userdata['user_email'];
$cur_password = '';
$new_password = '';
$password_confirm = '';
@@ -692,7 +818,7 @@ else if ( $mode == 'editprofile' && !isset($HTTP_POST_VARS['avatargallery']) &&
$occupation = $userdata['user_occ'];
$interests = $userdata['user_interests'];
$signature_bbcode_uid = $userdata['user_sig_bbcode_uid'];
$signature = ($signature_bbcode_uid != '') ? preg_replace("/:(([a-z0-9]+:)?)$signature_bbcode_uid(=|\])/si", '\\3', $userdata['user_sig']) : $userdata['user_sig'];
$signature = ($signature_bbcode_uid != '') ? preg_replace('/:(([a-z0-9]+:)?)' . preg_quote($signature_bbcode_uid, '/') . '(=|\])/si', '\\3', $userdata['user_sig']) : $userdata['user_sig'];
$viewemail = $userdata['user_viewemail'];
$notifypm = $userdata['user_notify_pm'];
@@ -733,7 +859,7 @@ if( isset($HTTP_POST_VARS['avatargallery']) && !$error )
{
include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);
$avatar_category = ( !empty($HTTP_POST_VARS['avatarcategory']) ) ? $HTTP_POST_VARS['avatarcategory'] : '';
$avatar_category = ( !empty($HTTP_POST_VARS['avatarcategory']) ) ? htmlspecialchars($HTTP_POST_VARS['avatarcategory']) : '';
$template->set_filenames(array(
'body' => 'profile_avatar_gallery.tpl')
@@ -741,7 +867,7 @@ if( isset($HTTP_POST_VARS['avatargallery']) && !$error )
$allowviewonline = !$allowviewonline;
display_avatar_gallery($mode, $avatar_category, $user_id, $email, $current_email, $coppa, $username, $email, &$new_password, &$cur_password, $password_confirm, $icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature, $viewemail, $notifypm, $popup_pm, $notifyreply, $attachsig, $allowhtml, $allowbbcode, $allowsmilies, $allowviewonline, $user_style, $user_lang, $user_timezone, $user_dateformat, $userdata['session_id']);
display_avatar_gallery($mode, $avatar_category, $user_id, $email, $current_email, $coppa, $username, $email, $new_password, $cur_password, $password_confirm, $icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature, $viewemail, $notifypm, $popup_pm, $notifyreply, $attachsig, $allowhtml, $allowbbcode, $allowsmilies, $allowviewonline, $user_style, $user_lang, $user_timezone, $user_dateformat, $userdata['session_id']);
}
else
{
@@ -752,9 +878,9 @@ else
$coppa = FALSE;
}
if ( !isset($user_template) )
if ( !isset($user_style) )
{
$selected_template = $board_config['system_template'];
$user_style = $board_config['default_style'];
}
$avatar_img = '';
@@ -775,6 +901,7 @@ else
}
$s_hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' . $coppa . '" />';
$s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
if( $mode == 'editprofile' )
{
$s_hidden_fields .= '<input type="hidden" name="user_id" value="' . $userdata['user_id'] . '" />';
@@ -787,7 +914,7 @@ else
if ( !empty($user_avatar_local) )
{
$s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' . $user_avatar_local . '" />';
$s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' . $user_avatar_local . '" /><input type="hidden" name="avatarcatname" value="' . $user_avatar_category . '" />';
}
$html_status = ( $userdata['user_allowhtml'] && $board_config['allow_html'] ) ? $lang['HTML_is_ON'] : $lang['HTML_is_OFF'];
@@ -823,6 +950,76 @@ else
$template->assign_block_vars('switch_namechange_disallowed', array());
}
// Visual Confirmation
$confirm_image = '';
if (!empty($board_config['enable_confirm']) && $mode == 'register')
{
$sql = 'SELECT session_id
FROM ' . SESSIONS_TABLE;
if (!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not select session data', '', __LINE__, __FILE__, $sql);
}
if ($row = $db->sql_fetchrow($result))
{
$confirm_sql = '';
do
{
$confirm_sql .= (($confirm_sql != '') ? ', ' : '') . "'" . $row['session_id'] . "'";
}
while ($row = $db->sql_fetchrow($result));
$sql = 'DELETE FROM ' . CONFIRM_TABLE . "
WHERE session_id NOT IN ($confirm_sql)";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not delete stale confirm data', '', __LINE__, __FILE__, $sql);
}
}
$db->sql_freeresult($result);
$sql = 'SELECT COUNT(session_id) AS attempts
FROM ' . CONFIRM_TABLE . "
WHERE session_id = '" . $userdata['session_id'] . "'";
if (!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not obtain confirm code count', '', __LINE__, __FILE__, $sql);
}
if ($row = $db->sql_fetchrow($result))
{
if ($row['attempts'] > 3)
{
message_die(GENERAL_MESSAGE, $lang['Too_many_registers']);
}
}
$db->sql_freeresult($result);
// Generate the required confirmation code
// NB 0 (zero) could get confused with O (the letter) so we make change it
$code = dss_rand();
$code = substr(str_replace('0', 'Z', strtoupper(base_convert($code, 16, 35))), 2, 6);
$confirm_id = md5(uniqid($user_ip));
$sql = 'INSERT INTO ' . CONFIRM_TABLE . " (confirm_id, session_id, code)
VALUES ('$confirm_id', '". $userdata['session_id'] . "', '$code')";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not insert new confirm code information', '', __LINE__, __FILE__, $sql);
}
unset($code);
$confirm_image = '<img src="' . append_sid("profile.$phpEx?mode=confirm&amp;id=$confirm_id") . '" alt="" title="" />';
$s_hidden_fields .= '<input type="hidden" name="confirm_id" value="' . $confirm_id . '" />';
$template->assign_block_vars('switch_confirm', array());
}
//
// Let's do an overall check for settings/versions which would prevent
// us from doing file uploads....
@@ -831,11 +1028,12 @@ else
$form_enctype = ( @$ini_val('file_uploads') == '0' || strtolower(@$ini_val('file_uploads') == 'off') || phpversion() == '4.0.4pl1' || !$board_config['allow_avatar_upload'] || ( phpversion() < '4.0.3' && @$ini_val('open_basedir') != '' ) ) ? '' : 'enctype="multipart/form-data"';
$template->assign_vars(array(
'USERNAME' => $username,
'CUR_PASSWORD' => $cur_password,
'NEW_PASSWORD' => $new_password,
'PASSWORD_CONFIRM' => $password_confirm,
'EMAIL' => $email,
'USERNAME' => isset($username) ? $username : '',
'CUR_PASSWORD' => isset($cur_password) ? $cur_password : '',
'NEW_PASSWORD' => isset($new_password) ? $new_password : '',
'PASSWORD_CONFIRM' => isset($password_confirm) ? $password_confirm : '',
'EMAIL' => isset($email) ? $email : '',
'CONFIRM_IMG' => $confirm_image,
'YIM' => $yim,
'ICQ' => $icq,
'MSN' => $msn,
@@ -930,6 +1128,10 @@ else
'L_PROFILE_INFO_NOTICE' => $lang['Profile_info_warn'],
'L_EMAIL_ADDRESS' => $lang['Email_address'],
'L_CONFIRM_CODE_IMPAIRED' => sprintf($lang['Confirm_code_impaired'], '<a href="mailto:' . $board_config['board_email'] . '">', '</a>'),
'L_CONFIRM_CODE' => $lang['Confirm_code'],
'L_CONFIRM_CODE_EXPLAIN' => $lang['Confirm_code_explain'],
'S_ALLOW_AVATAR_UPLOAD' => $board_config['allow_avatar_upload'],
'S_ALLOW_AVATAR_LOCAL' => $board_config['allow_avatar_local'],
'S_ALLOW_AVATAR_REMOTE' => $board_config['allow_avatar_remote'],

View File

@@ -29,7 +29,7 @@ if ( !defined('IN_PHPBB') )
if ( isset($HTTP_POST_VARS['submit']) )
{
$username = ( !empty($HTTP_POST_VARS['username']) ) ? trim(strip_tags($HTTP_POST_VARS['username'])) : '';
$username = ( !empty($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
$email = ( !empty($HTTP_POST_VARS['email']) ) ? trim(strip_tags(htmlspecialchars($HTTP_POST_VARS['email']))) : '';
$sql = "SELECT user_id, username, user_email, user_active, user_lang
@@ -50,7 +50,7 @@ if ( isset($HTTP_POST_VARS['submit']) )
$user_actkey = gen_rand_string(true);
$key_len = 54 - strlen($server_url);
$key_len = ( $str_len > 6 ) ? $key_len : 6;
$key_len = ($key_len > 6) ? $key_len : 6;
$user_actkey = substr($user_actkey, 0, $key_len);
$user_password = gen_rand_string(false);

View File

@@ -33,6 +33,11 @@ if ( empty($HTTP_GET_VARS[POST_USERS_URL]) || $HTTP_GET_VARS[POST_USERS_URL] ==
}
$profiledata = get_userdata($HTTP_GET_VARS[POST_USERS_URL]);
if (!$profiledata)
{
message_die(GENERAL_MESSAGE, $lang['No_user_id_specified']);
}
$sql = "SELECT *
FROM " . RANKS_TABLE . "
ORDER BY rank_special, rank_min";
@@ -41,6 +46,7 @@ if ( !($result = $db->sql_query($sql)) )
message_die(GENERAL_ERROR, 'Could not obtain ranks information', '', __LINE__, __FILE__, $sql);
}
$ranksrow = array();
while ( $row = $db->sql_fetchrow($result) )
{
$ranksrow[] = $row;
@@ -159,8 +165,8 @@ $yim_img = ( $profiledata['user_yim'] ) ? '<a href="http://edit.yahoo.com/config
$yim = ( $profiledata['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $profiledata['user_yim'] . '&amp;.src=pg">' . $lang['YIM'] . '</a>' : '';
$temp_url = append_sid("search.$phpEx?search_author=" . urlencode($profiledata['username']) . "&amp;showresults=posts");
$search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . $lang['Search_user_posts'] . '" border="0" /></a>';
$search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';
$search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . sprintf($lang['Search_user_posts'], $profiledata['username']) . '" title="' . sprintf($lang['Search_user_posts'], $profiledata['username']) . '" border="0" /></a>';
$search = '<a href="' . $temp_url . '">' . sprintf($lang['Search_user_posts'], $profiledata['username']) . '</a>';
//
// Generate page
@@ -168,6 +174,15 @@ $search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';
$page_title = $lang['Viewing_profile'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
if (function_exists('get_html_translation_table'))
{
$u_search_author = urlencode(strtr($profiledata['username'], array_flip(get_html_translation_table(HTML_ENTITIES))));
}
else
{
$u_search_author = urlencode(str_replace(array('&amp;', '&#039;', '&quot;', '&lt;', '&gt;'), array('&', "'", '"', '<', '>'), $profiledata['username']));
}
$template->assign_vars(array(
'USERNAME' => $profiledata['username'],
'JOINED' => create_date($lang['DATE_FORMAT'], $profiledata['user_regdate'], $board_config['board_timezone']),
@@ -222,7 +237,7 @@ $template->assign_vars(array(
'L_OCCUPATION' => $lang['Occupation'],
'L_INTERESTS' => $lang['Interests'],
'U_SEARCH_USER' => append_sid("search.$phpEx?search_author=" . urlencode($profiledata['username'])),
'U_SEARCH_USER' => append_sid("search.$phpEx?search_author=" . $u_search_author),
'S_PROFILE_ACTION' => append_sid("profile.$phpEx"))
);

View File

@@ -118,7 +118,12 @@ if( !($result = $db->sql_query($sql)) )
message_die(GENERAL_ERROR, 'Could not query categories list', '', __LINE__, __FILE__, $sql);
}
while( $category_rows[] = $db->sql_fetchrow($result) );
$category_rows = array();
while ($row = $db->sql_fetchrow($result))
{
$category_rows[] = $row;
}
$db->sql_freeresult($result);
if( ( $total_categories = count($category_rows) ) )
{
@@ -170,6 +175,7 @@ if( ( $total_categories = count($category_rows) ) )
{
$forum_data[] = $row;
}
$db->sql_freeresult($result);
if ( !($total_forums = count($forum_data)) )
{
@@ -180,8 +186,14 @@ if( ( $total_categories = count($category_rows) ) )
// Obtain a list of topic ids which contain
// posts made since user last visited
//
if ( $userdata['session_logged_in'] )
if ($userdata['session_logged_in'])
{
// 60 days limit
if ($userdata['user_lastvisit'] < (time() - 5184000))
{
$userdata['user_lastvisit'] = time() - 5184000;
}
$sql = "SELECT t.forum_id, t.topic_id, p.post_time
FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
WHERE p.post_id = t.topic_last_post_id
@@ -197,6 +209,7 @@ if( ( $total_categories = count($category_rows) ) )
{
$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];
}
$db->sql_freeresult($result);
}
//
@@ -222,6 +235,7 @@ if( ( $total_categories = count($category_rows) ) )
{
$forum_moderators[$row['forum_id']][] = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $row['username'] . '</a>';
}
$db->sql_freeresult($result);
$sql = "SELECT aa.forum_id, g.group_id, g.group_name
FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
@@ -241,6 +255,7 @@ if( ( $total_categories = count($category_rows) ) )
{
$forum_moderators[$row['forum_id']][] = '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $row['group_id']) . '">' . $row['group_name'] . '</a>';
}
$db->sql_freeresult($result);
//
// Find which forums are visible for this user
@@ -287,6 +302,19 @@ if( ( $total_categories = count($category_rows) ) )
'U_MARK_READ' => append_sid("index.$phpEx?mark=forums"))
);
//
// Let's decide which categories we should display
//
$display_categories = array();
for ($i = 0; $i < $total_forums; $i++ )
{
if ($is_auth_ary[$forum_data[$i]['forum_id']]['auth_view'])
{
$display_categories[$forum_data[$i]['cat_id']] = true;
}
}
//
// Okay, let's build the index
//
@@ -294,23 +322,11 @@ if( ( $total_categories = count($category_rows) ) )
{
$cat_id = $category_rows[$i]['cat_id'];
//
// Should we display this category/forum set?
//
$display_forums = false;
for($j = 0; $j < $total_forums; $j++)
{
if ( $is_auth_ary[$forum_data[$j]['forum_id']]['auth_view'] && $forum_data[$j]['cat_id'] == $cat_id )
{
$display_forums = true;
}
}
//
// Yes, we should, so first dump out the category
// title, then, if appropriate the forum list
//
if ( $display_forums )
if (isset($display_categories[$cat_id]) && $display_categories[$cat_id])
{
$template->assign_block_vars('catrow', array(
'CAT_ID' => $cat_id,

View File

@@ -225,6 +225,23 @@ function guess_lang()
error_reporting (E_ERROR | E_WARNING | E_PARSE); // This will NOT report uninitialized variables
set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
// PHP5 with register_long_arrays off?
if (!isset($HTTP_POST_VARS) && isset($_POST))
{
$HTTP_POST_VARS = $_POST;
$HTTP_GET_VARS = $_GET;
$HTTP_SERVER_VARS = $_SERVER;
$HTTP_COOKIE_VARS = $_COOKIE;
$HTTP_ENV_VARS = $_ENV;
$HTTP_POST_FILES = $_FILES;
// _SESSION is the only superglobal which is conditionally set
if (isset($_SESSION))
{
$HTTP_SESSION_VARS = $_SESSION;
}
}
// Slash data if it isn't slashed
if (!get_magic_quotes_gpc())
{
@@ -316,7 +333,7 @@ $available_dbms = array(
'COMMENTS' => 'remove_remarks'
),
'mysql4' => array(
'LABEL' => 'MySQL 4.x',
'LABEL' => 'MySQL 4.x/5.x',
'SCHEMA' => 'mysql',
'DELIM' => ';',
'DELIM_BASIC' => ';',

View File

@@ -41,7 +41,9 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_sentbox_privms
INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_savebox_privmsgs','50');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_sig','Thanks, The Management');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email','youraddress@yourdomain.com');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_confirm', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_confirm', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_autologin','1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_autologin_time','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_delivery','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_host','');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_username','');
@@ -49,6 +51,10 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_password','')
INSERT INTO phpbb_config (config_name, config_value) VALUES ('sendmail_fix','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('require_activation','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('flood_interval','15');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_flood_interval','15');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_min_chars','3');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_login_attempts', '5');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('login_reset_time', '30');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_form','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_filesize','6144');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_max_width','80');
@@ -69,7 +75,8 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('record_online_date
INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_name', 'www.yourdomain.tld');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_port', '80');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('script_path', '/phpBB2/');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '.0.5');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '.0.23');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('rand_seed', '0');
/*
-- Categories
@@ -84,14 +91,14 @@ SET IDENTITY_INSERT phpbb_categories OFF;
/*
-- Forums
*/
INSERT INTO phpbb_forums (forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_announce, auth_sticky, auth_pollcreate, auth_vote, auth_attachments) VALUES (1, 1, 'Test Forum 1', 'This is just a test forum, nothing special here.', '', 1, 1, 1, 1, '', 1, '', '', '', '', 1, 1, 3, 3, 1, 1, 3);
INSERT INTO phpbb_forums (forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_announce, auth_sticky, auth_pollcreate, auth_vote, auth_attachments) VALUES (1, 1, 'Test Forum 1', 'This is just a test forum, nothing special here.', '', 1, 1, 1, 1, '', 1, '', '', 1, 1, 1, 1, 3, 3, 1, 1, 3);
/*
-- Users
Default Admin --> username: admin
password: admin (change this or remove it once everything is working!)
*/
INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( -1, 'Anonymous', 0, 0, '', '', '', '', '', '', '', '', 0, NULL, '', '', '', 0, 0, 1, 0, 1, 0, 1, 1, NULL, '', '', 0, '', '', '', 0, 0);
INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( -1, 'Anonymous', 0, 0, '', '', '', '', '', '', '', '', 0, NULL, '', '', '', 0, 0, 1, 1, 1, 0, 1, 1, NULL, '', '', 0, '', '', '', 0, 0);
INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_popup_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( 2, 'Admin', 1, 0, '21232f297a57a5a743894a0e4a801fc3', 'admin@yourdomain.com', '', '', '', '', '', '', 1, 1, '', '', '', 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, '', 'english', 0, 'd M Y h:i a', '', '', 0, 1);

View File

@@ -165,6 +165,7 @@ GO
CREATE TABLE [phpbb_search_results] (
[search_id] [int] NOT NULL ,
[session_id] [char] (32) NOT NULL ,
[search_time] [int] NOT NULL ,
[search_array] [text] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
@@ -190,7 +191,17 @@ CREATE TABLE [phpbb_sessions] (
[session_time] [int] NULL ,
[session_ip] [char] (8) NOT NULL ,
[session_page] [int] NULL ,
[session_logged_in] [smallint] NULL
[session_logged_in] [smallint] NULL,
[session_admin] [smallint] NULL
[priv_session_id] [char] (32) NOT NULL ,
) ON [PRIMARY]
GO
CREATE TABLE [phpbb_sessions_keys] (
[key_id] [char] (32) NOT NULL ,
[user_id] [int] NOT NULL ,
[last_ip] [char] (8) NOT NULL ,
[last_login] [int] NOT NULL
) ON [PRIMARY]
GO
@@ -333,6 +344,8 @@ CREATE TABLE [phpbb_users] (
[user_new_privmsg] [smallint] NOT NULL ,
[user_unread_privmsg] [smallint] NOT NULL ,
[user_last_privmsg] [int] NOT NULL ,
[user_login_tries] [smallint] NOT NULL ,
[user_last_login_try] [int] NOT NULL ,
[user_emailtime] [int] NOT NULL ,
[user_viewemail] [smallint] NULL ,
[user_attachsig] [smallint] NULL ,
@@ -412,7 +425,7 @@ GO
ALTER TABLE [phpbb_confirm] WITH NOCHECK ADD
CONSTRAINT [PK_phpbb_confirm] PRIMARY KEY CLUSTERED
(
[session_id,confirm_id]
[session_id],[confirm_id]
) ON [PRIMARY]
GO
@@ -582,6 +595,10 @@ ALTER TABLE [phpbb_posts] WITH NOCHECK ADD
CONSTRAINT [DF_phpbb_posts_post_edit_count] DEFAULT (0) FOR [post_edit_count]
GO
ALTER TABLE [phpbb_search_results] WITH NOCHECK ADD
CONSTRAINT [DF_phpbb_search_results_search_time] DEFAULT (0) FOR [search_time]
GO
ALTER TABLE [phpbb_search_wordlist] WITH NOCHECK ADD
CONSTRAINT [DF_phpbb_search_wordlist_word_common] DEFAULT (0) FOR [word_common]
GO
@@ -604,6 +621,8 @@ ALTER TABLE [phpbb_users] WITH NOCHECK ADD
CONSTRAINT [DF_phpbb_users_user_new_privmsg] DEFAULT (0) FOR [user_new_privmsg],
CONSTRAINT [DF_phpbb_users_user_unread_privmsg] DEFAULT (0) FOR [user_unread_privmsg],
CONSTRAINT [DF_phpbb_users_user_last_privmsg] DEFAULT (0) FOR [user_last_privmsg],
CONSTRAINT [DF_phpbb_users_user_login_tries] DEFAULT (0) FOR [user_login_tries],
CONSTRAINT [DF_phpbb_users_user_last_login_try] DEFAULT (0) FOR [user_last_login_try],
CONSTRAINT [DF_phpbb_users_user_emailtime] DEFAULT (0) FOR [user_emailtime],
CONSTRAINT [DF_phpbb_users_user_viewemail] DEFAULT (1) FOR [user_viewemail],
CONSTRAINT [DF_phpbb_users_user_attachsig] DEFAULT (1) FOR [user_attachsig],
@@ -615,6 +634,7 @@ ALTER TABLE [phpbb_users] WITH NOCHECK ADD
CONSTRAINT [DF_phpbb_users_user_allow_viewonline] DEFAULT (1) FOR [user_allow_viewonline],
CONSTRAINT [DF_phpbb_users_user_notify_pm] DEFAULT (0) FOR [user_notify_pm],
CONSTRAINT [DF_phpbb_users_user_popup_pm] DEFAULT (1) FOR [user_popup_pm],
CONSTRAINT [DF_phpbb_users_user_dateformat] DEFAULT('d M Y H:i') FOR [user_dateformat],
CONSTRAINT [DF_phpbb_users_user_avatar_type] DEFAULT (0) FOR [user_avatar_type]
GO
@@ -666,6 +686,12 @@ GO
CREATE INDEX [IX_phpbb_sessions] ON [phpbb_sessions]([session_id], [session_user_id], [session_ip], [session_logged_in]) ON [PRIMARY]
GO
CREATE INDEX [IX_phpbb_sessions_keys] ON [phpbb_sessions_keys]([key_id], [user_id]) ON [PRIMARY]
GO
CREATE INDEX [IX_phpbb_sessions_keys_1] ON [phpbb_sessions_keys]([last_login]) ON [PRIMARY]
GO
CREATE INDEX [IX_phpbb_topics] ON [phpbb_topics]([forum_id], [topic_type], [topic_first_post_id], [topic_last_post_id]) ON [PRIMARY]
GO

View File

@@ -23,7 +23,9 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_theme_create
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_local','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_remote','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_upload','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_confirm', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_confirm', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_autologin','1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_autologin_time','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('override_user_style','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('posts_per_page','15');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('topics_per_page','50');
@@ -42,6 +44,10 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_password','')
INSERT INTO phpbb_config (config_name, config_value) VALUES ('sendmail_fix','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('require_activation','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('flood_interval','15');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_flood_interval','15');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_min_chars','3');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_login_attempts', '5');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('login_reset_time', '30');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_form','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_filesize','6144');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_max_width','80');
@@ -62,7 +68,8 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('record_online_date
INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_name', 'www.myserver.tld');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_port', '80');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('script_path', '/phpBB2/');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '.0.5');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '.0.23');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('rand_seed', '0');
# -- Categories
@@ -70,11 +77,11 @@ INSERT INTO phpbb_categories (cat_id, cat_title, cat_order) VALUES (1, 'Test cat
# -- Forums
INSERT INTO phpbb_forums (forum_id, forum_name, forum_desc, cat_id, forum_order, forum_posts, forum_topics, forum_last_post_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_announce, auth_sticky, auth_pollcreate, auth_vote, auth_attachments) VALUES (1, 'Test Forum 1', 'This is just a test forum.', 1, 10, 1, 1, 1, 0, 0, 0, 0, 1, 1, 3, 3, 1, 1, 3);
INSERT INTO phpbb_forums (forum_id, forum_name, forum_desc, cat_id, forum_order, forum_posts, forum_topics, forum_last_post_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_announce, auth_sticky, auth_pollcreate, auth_vote, auth_attachments) VALUES (1, 'Test Forum 1', 'This is just a test forum.', 1, 10, 1, 1, 1, 0, 0, 1, 1, 1, 1, 3, 3, 1, 1, 3);
# -- Users
INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( -1, 'Anonymous', 0, 0, '', '', '', '', '', '', '', '', 0, NULL, '', '', '', 0, 0, 1, 0, 1, 0, 1, 1, NULL, '', '', 0, '', '', '', 0, 0);
INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( -1, 'Anonymous', 0, 0, '', '', '', '', '', '', '', '', 0, NULL, '', '', '', 0, 0, 1, 1, 1, 0, 1, 1, NULL, '', '', 0, '', '', '', 0, 0);
# -- username: admin password: admin (change this or remove it once everything is working!)
INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_popup_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( 2, 'Admin', 1, 0, '21232f297a57a5a743894a0e4a801fc3', 'admin@yourdomain.com', '', '', '', '', '', '', 1, 1, '', '', '', 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, '', 'english', 0, 'd M Y h:i a', '', '', 0, 1);
@@ -104,7 +111,7 @@ INSERT INTO phpbb_posts_text (post_id, post_subject, post_text) VALUES (1, NULL,
# -- Themes
INSERT INTO phpbb_themes (themes_id, template_name, style_name, head_stylesheet, body_background, body_bgcolor, body_text, body_link, body_vlink, body_alink, body_hlink, tr_color1, tr_color2, tr_color3, tr_class1, tr_class2, tr_class3, th_color1, th_color2, th_color3, th_class1, th_class2, th_class3, td_color1, td_color2, td_color3, td_class1, td_class2, td_class3, fontface1, fontface2, fontface3, fontsize1, fontsize2, fontsize3, fontcolor1, fontcolor2, fontcolor3, span_class1, span_class2, span_class3) VALUES (1, 'subSilver', 'subSilver', 'subSilver.css', '', 'E5E5E5', '000000', '006699', '5493B4', '', 'DD6900', 'EFEFEF', 'DEE3E7', 'D1D7DC', '', '', '', '98AAB1', '006699', 'FFFFFF', 'cellpic1.gif', 'cellpic3.gif', 'cellpic2.jpg', 'FAFAFA', 'FFFFFF', '', 'row1', 'row2', '', 'Verdana, Arial, Helvetica, sans-serif', 'Trebuchet MS', 'Courier, \'Courier New\', sans-serif', 10, 11, 12, '444444', '006600', 'FFA34F', '', '', '');
INSERT INTO phpbb_themes (themes_id, template_name, style_name, head_stylesheet, body_background, body_bgcolor, body_text, body_link, body_vlink, body_alink, body_hlink, tr_color1, tr_color2, tr_color3, tr_class1, tr_class2, tr_class3, th_color1, th_color2, th_color3, th_class1, th_class2, th_class3, td_color1, td_color2, td_color3, td_class1, td_class2, td_class3, fontface1, fontface2, fontface3, fontsize1, fontsize2, fontsize3, fontcolor1, fontcolor2, fontcolor3, span_class1, span_class2, span_class3) VALUES (1, 'subSilver', 'subSilver', 'subSilver.css', '', 'E5E5E5', '000000', '006699', '5493B4', '', 'DD6900', 'EFEFEF', 'DEE3E7', 'D1D7DC', '', '', '', '98AAB1', '006699', 'FFFFFF', 'cellpic1.gif', 'cellpic3.gif', 'cellpic2.jpg', 'FAFAFA', 'FFFFFF', '', 'row1', 'row2', '', 'Verdana, Arial, Helvetica, sans-serif', 'Trebuchet MS', 'Courier, ''Courier New'', sans-serif', 10, 11, 12, '444444', '006600', 'FFA34F', '', '', '');
INSERT INTO phpbb_themes_name (themes_id, tr_color1_name, tr_color2_name, tr_color3_name, tr_class1_name, tr_class2_name, tr_class3_name, th_color1_name, th_color2_name, th_color3_name, th_class1_name, th_class2_name, th_class3_name, td_color1_name, td_color2_name, td_color3_name, td_class1_name, td_class2_name, td_class3_name, fontface1_name, fontface2_name, fontface3_name, fontsize1_name, fontsize2_name, fontsize3_name, fontcolor1_name, fontcolor2_name, fontcolor3_name, span_class1_name, span_class2_name, span_class3_name) VALUES (1, 'The lightest row colour', 'The medium row color', 'The darkest row colour', '', '', '', 'Border round the whole page', 'Outer table border', 'Inner table border', 'Silver gradient picture', 'Blue gradient picture', 'Fade-out gradient on index', 'Background for quote boxes', 'All white areas', '', 'Background for topic posts', '2nd background for topic posts', '', 'Main fonts', 'Additional topic title font', 'Form fonts', 'Smallest font size', 'Medium font size', 'Normal font size (post body etc)', 'Quote & copyright text', 'Code text colour', 'Main table header text colour', '', '', '');

View File

@@ -194,7 +194,7 @@ CREATE TABLE phpbb_posts (
#
CREATE TABLE phpbb_posts_text (
post_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
bbcode_uid char(10) NOT NULL,
bbcode_uid char(10) DEFAULT '' NOT NULL,
post_subject char(60),
post_text text,
PRIMARY KEY (post_id)
@@ -256,7 +256,8 @@ CREATE TABLE phpbb_ranks (
CREATE TABLE phpbb_search_results (
search_id int(11) UNSIGNED NOT NULL default '0',
session_id char(32) NOT NULL default '',
search_array text NOT NULL,
search_time int(11) DEFAULT '0' NOT NULL,
search_array mediumtext NOT NULL,
PRIMARY KEY (search_id),
KEY session_id (session_id)
);
@@ -305,11 +306,26 @@ CREATE TABLE phpbb_sessions (
session_ip char(8) DEFAULT '0' NOT NULL,
session_page int(11) DEFAULT '0' NOT NULL,
session_logged_in tinyint(1) DEFAULT '0' NOT NULL,
session_admin tinyint(2) DEFAULT '0' NOT NULL,
priv_session_id char(32) DEFAULT '' NOT NULL,
PRIMARY KEY (session_id),
KEY session_user_id (session_user_id),
KEY session_id_ip_user_id (session_id, session_ip, session_user_id)
);
# --------------------------------------------------------
#
# Table structure for table `phpbb_sessions_keys`
#
CREATE TABLE phpbb_sessions_keys (
key_id varchar(32) DEFAULT '0' NOT NULL,
user_id mediumint(8) DEFAULT '0' NOT NULL,
last_ip varchar(8) DEFAULT '0' NOT NULL,
last_login int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (key_id, user_id),
KEY last_login (last_login)
);
# --------------------------------------------------------
#
@@ -478,6 +494,8 @@ CREATE TABLE phpbb_users (
user_new_privmsg smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
user_unread_privmsg smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
user_last_privmsg int(11) DEFAULT '0' NOT NULL,
user_login_tries smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
user_last_login_try int(11) DEFAULT '0' NOT NULL,
user_emailtime int(11),
user_viewemail tinyint(1),
user_attachsig tinyint(1),

View File

@@ -24,7 +24,9 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_theme_create
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_local','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_remote','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_upload','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_confirm', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_confirm', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_autologin','1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_autologin_time','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('override_user_style','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('posts_per_page','15');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('topics_per_page','50');
@@ -43,6 +45,10 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_password','')
INSERT INTO phpbb_config (config_name, config_value) VALUES ('sendmail_fix','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('require_activation','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('flood_interval','15');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_flood_interval','15');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_min_chars','3');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_login_attempts', '5');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('login_reset_time', '30');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_form','0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_filesize','6144');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_max_width','80');
@@ -63,17 +69,18 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('record_online_date
INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_name', 'www.yourdomain.tld');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_port', '80');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('script_path', '/phpBB2/');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '.0.5');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '.0.23');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('rand_seed', '0');
-- Categories
INSERT INTO phpbb_categories (cat_id, cat_title, cat_order) VALUES (1, 'Test category 1', 10);
-- Forums
INSERT INTO phpbb_forums (forum_id, forum_name, forum_desc, cat_id, forum_order, forum_posts, forum_topics, forum_last_post_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_announce, auth_sticky, auth_pollcreate, auth_vote, auth_attachments) VALUES (1, 'Test Forum 1', 'This is just a test forum.', 1, 10, 1, 1, 1, 0, 0, 0, 0, 1, 1, 3, 3, 1, 1, 3);
INSERT INTO phpbb_forums (forum_id, forum_name, forum_desc, cat_id, forum_order, forum_posts, forum_topics, forum_last_post_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_announce, auth_sticky, auth_pollcreate, auth_vote, auth_attachments) VALUES (1, 'Test Forum 1', 'This is just a test forum.', 1, 10, 1, 1, 1, 0, 0, 1, 1, 1, 1, 3, 3, 1, 1, 3);
-- Users
INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( -1, 'Anonymous', 0, 0, '', '', '', '', '', '', '', '', 0, NULL, '', '', '', 0, 0, 1, 0, 1, 0, 1, 1, NULL, '', '', 0, '', '', '', 0, 0);
INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( -1, 'Anonymous', 0, 0, '', '', '', '', '', '', '', '', 0, NULL, '', '', '', 0, 0, 1, 1, 1, 0, 1, 1, NULL, '', '', 0, '', '', '', 0, 0);
-- username: admin password: admin (change this or remove it once everything is working!)
INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_popup_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( 2, 'Admin', 1, 0, '21232f297a57a5a743894a0e4a801fc3', 'admin@yourdomain.com', '', '', '', '', '', '', 1, 1, '', '', '', 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, '', 'english', 0, 'd M Y h:i a', '', '', 0, 1);

View File

@@ -248,6 +248,7 @@ CREATE TABLE phpbb_ranks (
CREATE TABLE phpbb_search_results (
search_id int4 NOT NULL default '0',
session_id char(32) NOT NULL default '',
search_time int4 DEFAULT '0' NOT NULL,
search_array text NOT NULL,
CONSTRAINT phpbb_search_results_pkey PRIMARY KEY (search_id)
);
@@ -289,11 +290,24 @@ CREATE TABLE phpbb_sessions (
session_ip char(8) DEFAULT '0' NOT NULL,
session_page int4 DEFAULT '0' NOT NULL,
session_logged_in int2 DEFAULT '0' NOT NULL,
session_admin int2 DEFAULT '0' NOT NULL,
priv_session_id char(32) DEFAULT '0' NOT NULL,
CONSTRAINT phpbb_session_pkey PRIMARY KEY (session_id)
);
CREATE INDEX session_user_id_phpbb_sessions_index ON phpbb_sessions (session_user_id);
CREATE INDEX session_id_ip_user_id_phpbb_sessions_index ON phpbb_sessions (session_id, session_ip, session_user_id);
/* --------------------------------------------------------
Table structure for table phpbb_sessions_keys
-------------------------------------------------------- */
CREATE TABLE phpbb_sessions_keys (
key_id char(32) DEFAULT '0' NOT NULL,
user_id int4 DEFAULT '0' NOT NULL,
last_ip char(8) DEFAULT '0' NOT NULL,
last_login int4 DEFAULT '0' NOT NULL,
CONSTRAINT phpbb_sessions_keys_pkey PRIMARY KEY (key_id, user_id)
);
CREATE INDEX last_login_phpbb_sessions_keys_index ON phpbb_sessions_keys (last_login);
/* --------------------------------------------------------
Table structure for table phpbb_smilies
@@ -476,6 +490,8 @@ CREATE TABLE phpbb_users (
user_new_privmsg int2 DEFAULT '0' NOT NULL,
user_unread_privmsg int2 DEFAULT '0' NOT NULL,
user_last_privmsg int4 DEFAULT '0' NOT NULL,
user_login_tries int2 DEFAULT '0' NOT NULL,
user_last_login_try int4 DEFAULT '0' NOT NULL,
user_emailtime int4,
user_viewemail int2,
user_attachsig int2,
@@ -488,10 +504,10 @@ CREATE TABLE phpbb_users (
user_rank int4 DEFAULT '0',
user_avatar varchar(100),
user_avatar_type int2 DEFAULT '0' NOT NULL,
user_level int4 DEFAULT '1',
user_level int4 DEFAULT '0',
user_lang varchar(255),
user_timezone decimal(5) DEFAULT '0' NOT NULL,
user_dateformat varchar(14) DEFAULT 'd M Y H:m' NOT NULL,
user_timezone decimal(5,2) DEFAULT '0.0' NOT NULL,
user_dateformat varchar(14) DEFAULT 'd M Y H:i' NOT NULL,
user_notify_pm int2 DEFAULT '0' NOT NULL,
user_popup_pm int2 DEFAULT '0' NOT NULL,
user_notify int2,

View File

@@ -1,665 +0,0 @@
<?php
/***************************************************************************
* update_to_xxx.php
* -------------------
* begin : Wednesday, May 16, 2002
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id$
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
function _sql($sql, &$errored, &$error_ary, $echo_dot = true)
{
global $db;
if( !($result = $db->sql_query($sql)) )
{
$errored = true;
$error_ary['sql'][] = ( is_array($sql) ) ? $sql[$i] : $sql;
$error_ary['error_code'][] = $db->sql_error();
}
if ( $echo_dot )
{
echo ".";
flush();
}
return $result;
}
define('IN_PHPBB', 1);
$phpbb_root_path = './../';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'config.'.$phpEx);
include($phpbb_root_path . 'includes/constants.'.$phpEx);
include($phpbb_root_path . 'includes/functions.'.$phpEx);
include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
include($phpbb_root_path . 'includes/db.'.$phpEx);
//
//
//
$updates_to_version = ".0.2";
//
//
//
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css">
<!--
font,th,td,p,body { font-family: "Courier New", courier; font-size: 11pt }
a:link,a:active,a:visited { color : #006699; }
a:hover { text-decoration: underline; color : #DD6900;}
hr { height: 0px; border: solid #D1D7DC 0px; border-top-width: 1px;}
.maintitle,h1,h2 {font-weight: bold; font-size: 22px; font-family: "Trebuchet MS",Verdana, Arial, Helvetica, sans-serif; text-decoration: none; line-height : 120%; color : #000000;}
.ok {color:green}
/* Import the fancy styles for IE only (NS4.x doesn't use the @import function) */
@import url("../templates/subSilver/formIE.css");
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#006699" vlink="#5584AA">
<table width="100%" border="0" cellspacing="0" cellpadding="10" align="center">
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="../templates/subSilver/images/logo_phpBB.gif" border="0" alt="Forum Home" vspace="1" /></td>
<td align="center" width="100%" valign="middle"><span class="maintitle">Updating to latest stable release</span></td>
</tr>
</table></td>
</tr>
</table>
<br clear="all" />
<h2>Information</h2>
<?php
echo '<p>Database type &nbsp; &nbsp;:: <b>' . SQL_LAYER . '</b><br />';
$sql = "SELECT config_value
FROM " . CONFIG_TABLE . "
WHERE config_name = 'version'";
if ( !($result = $db->sql_query($sql)) )
{
die("Couldn't obtain version info");
}
$row = $db->sql_fetchrow($result);
$sql = array();
switch ( $row['config_value'] )
{
case '':
echo 'Previous version :: <b>&lt; RC-3</b></p><br />';
break;
case 'RC-3':
echo 'Previous version :: <b>RC-3</b></p><br />';
break;
case 'RC-4':
echo 'Previous version :: <b>RC-4</b></p><br />';
break;
default:
echo 'Previous version :: <b>2' . $row['config_value'] . '</b><br />';
break;
}
echo 'Updated version &nbsp;:: <b>2' . $updates_to_version . '</b></p>' ."\n";
switch ( $row['config_value'] )
{
case '':
switch ( SQL_LAYER )
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
COLUMN user_autologin_key";
$sql[] = "ALTER TABLE " . RANKS_TABLE . " DROP
COLUMN rank_max";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_session_time int(11) DEFAULT '0' NOT NULL,
ADD COLUMN user_session_page smallint(5) DEFAULT '0' NOT NULL,
ADD INDEX (user_session_time)";
$sql[] = "ALTER TABLE " . SEARCH_TABLE . "
MODIFY search_id int(11) NOT NULL";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . "
MODIFY topic_moved_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ADD COLUMN topic_first_post_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ADD INDEX (topic_first_post_id)";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class1_name varchar(50) NULL,
ADD COLUMN tr_class2_name varchar(50) NULL,
ADD COLUMN tr_class3_name varchar(50) NULL,
ADD COLUMN th_class1_name varchar(50) NULL,
ADD COLUMN th_class2_name varchar(50) NULL,
ADD COLUMN th_class3_name varchar(50) NULL,
ADD COLUMN td_class1_name varchar(50) NULL,
ADD COLUMN td_class2_name varchar(50) NULL,
ADD COLUMN td_class3_name varchar(50) NULL,
ADD COLUMN span_class1_name varchar(50) NULL,
ADD COLUMN span_class2_name varchar(50) NULL,
ADD COLUMN span_class3_name varchar(50) NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_session_time int4";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_session_page int2";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN user_session_time SET DEFAULT '0'";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN user_session_page SET DEFAULT '0'";
$sql[] = "CREATE INDEX user_session_time_" . $table_prefix . "users_index
ON " . USERS_TABLE . " (user_session_time)";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . "
ADD COLUMN topic_first_post_id int4";
$sql[] = "CREATE INDEX topic_first_post_id_" . $table_prefix . "topics_index
ON " . TOPICS_TABLE . " (topic_first_post_id)";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class3_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN th_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN th_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN th_class3_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN td_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN td_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN td_class3_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN span_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN span_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN span_class3_name varchar(50) NULL";
break;
case 'mssql-odbc':
case 'mssql':
$sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
COLUMN user_autologin_key";
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_session_time int NOT NULL,
user_session_page smallint NOT NULL,
CONSTRAINT [DF_" . $table_prefix . "users_user_session_time] DEFAULT (0) FOR [user_session_time],
CONSTRAINT [DF_" . $table_prefix . "users_user_session_page] DEFAULT (0) FOR [user_session_page]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "users]
ON [" . USERS_TABLE . "]([user_session_time]) ON [PRIMARY]";
/* ---------------------------------------------------------------------
DROP FORUM TABLE -- if this may cause you problems you can safely
comment it out, remember to manually remove the IDENTITY setting on
the forum_id column
--------------------------------------------------------------------- */
$sql [] = "ALTER TABLE " . FORUMS_TABLE . " DROP
CONSTRAINT [DF_" . $table_prefix . "forums_forum_posts],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_topics],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_last_post_id],
CONSTRAINT [DF_" . $table_prefix . "forums_prune_enable],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_view],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_read],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_post],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_reply],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_edit],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_delete],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_sticky],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_announce],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_vote],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_pollcreate],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_attachments]";
$sql[] = "CREATE TABLE Tmp_" . FORUMS_TABLE . "
(forum_id int NOT NULL, cat_id int NOT NULL, forum_name varchar(100) NOT NULL, forum_desc varchar(255) NULL, forum_status smallint NOT NULL, forum_order int NOT NULL, forum_posts int NOT NULL, forum_topics smallint NOT NULL, forum_last_post_id int NOT NULL, prune_next int NULL, prune_enable smallint NOT NULL, auth_view smallint NOT NULL, auth_read smallint NOT NULL, auth_post smallint NOT NULL, auth_reply smallint NOT NULL, auth_edit smallint NOT NULL, auth_delete smallint NOT NULL, auth_sticky smallint NOT NULL, auth_announce smallint NOT NULL, auth_vote smallint NOT NULL, auth_pollcreate smallint NOT NULL, auth_attachments smallint NOT NULL) ON [PRIMARY]";
$sql[] = "ALTER TABLE [Tmp_" . FORUMS_TABLE . "] WITH NOCHECK ADD
CONSTRAINT [DF_" . $table_prefix . "forums_forum_posts] DEFAULT (0) FOR [forum_posts],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_topics] DEFAULT (0) FOR [forum_topics],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_last_post_id] DEFAULT (0) FOR [forum_last_post_id],
CONSTRAINT [DF_" . $table_prefix . "forums_prune_enable] DEFAULT (0) FOR [prune_enable],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_view] DEFAULT (0) FOR [auth_view],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_read] DEFAULT (0) FOR [auth_read],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_post] DEFAULT (0) FOR [auth_post],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_reply] DEFAULT (0) FOR [auth_reply],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_edit] DEFAULT (0) FOR [auth_edit],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_delete] DEFAULT (0) FOR [auth_delete],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_sticky] DEFAULT (0) FOR [auth_sticky],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_announce] DEFAULT (0) FOR [auth_announce],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_vote] DEFAULT (0) FOR [auth_vote],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_pollcreate] DEFAULT (0) FOR [auth_pollcreate],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_attachments] DEFAULT (0) FOR [auth_attachments]";
$sql[] = "INSERT INTO Tmp_" . FORUMS_TABLE . " (forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments)
SELECT forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments FROM " . FORUMS_TABLE . " TABLOCKX";
$sql[] = "DROP TABLE " . FORUMS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . FORUMS_TABLE . "', N'" . FORUMS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . FORUMS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "forums] PRIMARY KEY CLUSTERED (forum_id) ON [PRIMARY]";
$sql[] = "CREATE NONCLUSTERED INDEX [IX_" . $table_prefix . "forums]
ON " . FORUMS_TABLE . " (cat_id, forum_order, forum_last_post_id) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP FORUM -- don't remove anything after this point!
-------------------------------------------------------------- */
/* ---------------------------------------------------------------------
DROP GROUP TABLE -- if this may cause you problems you can safely
comment it out, remember to manually add the IDENTITY setting on
the group_id column
--------------------------------------------------------------------- */
$sql[] = "CREATE TABLE Tmp_" . GROUPS_TABLE . "
(group_id int IDENTITY (1, 1) NOT NULL, group_type smallint NULL, group_name varchar(50) NOT NULL, group_description varchar(255) NOT NULL, group_moderator int NULL, group_single_user smallint NOT NULL) ON [PRIMARY]";
$sql[] = "INSERT INTO Tmp_" . GROUPS_TABLE . " (group_id, group_type, group_name, group_description, group_moderator, group_single_user)
SELECT group_id, group_type, group_name, group_description, group_moderator, group_single_user FROM " . GROUPS_TABLE . " TABLOCKX";
$sql[] = "DROP TABLE " . GROUPS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . GROUPS_TABLE . "', N'" . GROUPS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . GROUPS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "groups] PRIMARY KEY CLUSTERED (group_id) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "groups]
ON " . GROUPS_TABLE . " (group_single_user) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP GROUP -- don't remove anything after this point!
-------------------------------------------------------------- */
$sql[] = "DROP INDEX " . RANKS_TABLE . ".IX_" . $table_prefix . "ranks";
$sql[] = "ALTER TABLE " . RANKS_TABLE . " DROP
COLUMN rank_max";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "ranks]
ON [" . RANKS_TABLE . "]([rank_min], [rank_special]) ON [PRIMARY]";
$sql[] = "DROP INDEX " . TOPICS_TABLE . ".IX_" . $table_prefix . "topics";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . " ADD
topic_first_post_id int NULL,
CONSTRAINT [DF_" . $table_prefix . "topics_topic_first_post_id] FOR [topic_first_post_id]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "topics]
ON [" . TOPICS_TABLE . "]([forum_id], [topic_type], [topic_first_post_id], [topic_last_post_id]) ON [PRIMARY]";
$sql[] = "ALTER TABLE " . SEARCH_WORD_TABLE . " DROP
CONSTRAINT [PK_" . $table_prefix . "search_wordlist]";
$sql[] = "CREATE UNIQUE INDEX [IX_" . $table_prefix . "search_wordlist]
ON [" . SEARCH_WORD_TABLE . "]([word_text]) WITH IGNORE_DUP_KEY ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "search_wordlist_1]
ON [" . SEARCH_WORD_TABLE . "]([word_common]) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "search_wordmatch_1]
ON [" . SEARCH_MATCH_TABLE . "]([word_id]) ON [PRIMARY]";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . " ADD
tr_class1_name varchar(50) NULL,
tr_class2_name varchar(50) NULL,
tr_class3_name varchar(50) NULL,
th_class1_name varchar(50) NULL,
th_class2_name varchar(50) NULL,
th_class3_name varchar(50) NULL,
td_class1_name varchar(50) NULL,
td_class2_name varchar(50) NULL,
td_class3_name varchar(50) NULL,
span_class1_name varchar(50) NULL,
span_class2_name varchar(50) NULL,
span_class3_name varchar(50) NULL";
break;
case 'msaccess':
$sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
COLUMN user_autologin_key";
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_session_time int NOT NULL,
user_session_page smallint NOT NULL";
$sql[] = "CREATE INDEX user_session_time
ON " . USERS_TABLE . " (user_session_time)";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . " ADD
topic_first_post_id int NULL";
$sql[] = "CREATE INDEX topic_first_post_id
ON " . TOPICS_TABLE . " (topic_first_post_id)";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . " ADD
tr_class1_name varchar(50) NULL,
tr_class2_name varchar(50) NULL,
tr_class3_name varchar(50) NULL,
th_class1_name varchar(50) NULL,
th_class2_name varchar(50) NULL,
th_class3_name varchar(50) NULL,
td_class1_name varchar(50) NULL,
td_class2_name varchar(50) NULL,
td_class3_name varchar(50) NULL,
span_class1_name varchar(50) NULL,
span_class2_name varchar(50) NULL,
span_class3_name varchar(50) NULL";
break;
default:
die("No DB LAYER found!");
break;
}
case 'RC-3':
case 'RC-4':
case '.0.0':
switch ( SQL_LAYER )
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
MODIFY COLUMN user_id mediumint(8) NOT NULL,
MODIFY COLUMN user_timezone decimal(4,2) DEFAULT '0' NOT NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
RENAME COLUMN user_timezone TO user_timezone_old";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_timezone decimal(4)";
break;
case 'mssql':
case 'mssql-odbc':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN [user_timezone] [decimal] (4,2) NOT NULL";
/* ---------------------------------------------------------------------
DROP GROUP TABLE -- if this may cause you problems you can safely
comment it out, remember to manually add the IDENTITY setting on
the group_id column
--------------------------------------------------------------------- */
$sql[] = "CREATE TABLE Tmp_" . GROUPS_TABLE . "
(group_id int IDENTITY (1, 1) NOT NULL, group_type smallint NULL, group_name varchar(50) NOT NULL, group_description varchar(255) NOT NULL, group_moderator int NULL, group_single_user smallint NOT NULL) ON [PRIMARY]";
$sql[] = "INSERT INTO Tmp_" . GROUPS_TABLE . " (group_id, group_type, group_name, group_description, group_moderator, group_single_user)
SELECT group_id, group_type, group_name, group_description, group_moderator, group_single_user FROM " . GROUPS_TABLE . " TABLOCKX";
$sql[] = "DROP TABLE " . GROUPS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . GROUPS_TABLE . "', N'" . GROUPS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . GROUPS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "groups] PRIMARY KEY CLUSTERED (group_id) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "groups]
ON " . GROUPS_TABLE . " (group_single_user) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP GROUP -- don't remove anything after this point!
-------------------------------------------------------------- */
break;
}
case '.0.1':
switch ( SQL_LAYER )
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . GROUPS_TABLE . "
MODIFY COLUMN group_id mediumint(8) NOT NULL auto_increment";
break;
case 'mssql':
case 'mssql-odbc':
/* ---------------------------------------------------------------------
DROP GROUP TABLE -- if this may cause you problems you can safely
comment it out, remember to manually add the IDENTITY setting on
the group_id column
--------------------------------------------------------------------- */
$sql[] = "CREATE TABLE Tmp_" . GROUPS_TABLE . "
(group_id int IDENTITY (1, 1) NOT NULL, group_type smallint NULL, group_name varchar(50) NOT NULL, group_description varchar(255) NOT NULL, group_moderator int NULL, group_single_user smallint NOT NULL) ON [PRIMARY]";
$sql[] = "INSERT INTO Tmp_" . GROUPS_TABLE . " (group_id, group_type, group_name, group_description, group_moderator, group_single_user)
SELECT group_id, group_type, group_name, group_description, group_moderator, group_single_user FROM " . GROUPS_TABLE . " TABLOCKX";
$sql[] = "DROP TABLE " . GROUPS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . GROUPS_TABLE . "', N'" . GROUPS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . GROUPS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "groups] PRIMARY KEY CLUSTERED (group_id) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "groups]
ON " . GROUPS_TABLE . " (group_single_user) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP GROUP -- don't remove anything after this point!
-------------------------------------------------------------- */
break;
}
}
echo "<h2>Updating database schema</h2>\n";
echo "<p>Progress :: <b>";
flush();
$error_ary = array();
$errored = false;
if ( count($sql) )
{
for($i = 0; $i < count($sql); $i++)
{
_sql($sql[$i], $errored, $error_ary);
}
echo "</b> <b class=\"ok\">Done</b><br />Result &nbsp; :: \n";
if ( $errored )
{
echo " <b>Some queries failed, the statements and errors are listing below</b>\n<ul>";
for($i = 0; $i < count($error_ary['sql']); $i++)
{
echo "<li>Error :: <b>" . $error_ary['error_code'][$i]['message'] . "</b><br />";
echo "SQL &nbsp; :: <b>" . $error_ary['sql'][$i] . "</b><br /><br /></li>";
}
echo "</ul>\n<p>This is probably nothing to worry about, update will continue. Should this fail to complete you may need to seek help at our development board. See <a href=\"docs\README.html\">README</a> for details on how to obtain advice.</p>\n";
}
else
{
echo "<b>No errors</b>\n";
}
}
else
{
echo " No updates required</b></p>\n";
}
//
//
//
unset($sql);
$error_ary = array();
$errored = false;
echo "<h2>Updating data</h2>\n";
echo "<p>Progress :: <b>";
flush();
switch ( $row['config_value'] )
{
case '':
$sql = "SELECT themes_id
FROM " . THEMES_TABLE . "
WHERE template_name = 'subSilver'";
$result = _sql($sql, $errored, $error_ary);
if( $row = $db->sql_fetchrow($result) )
{
$theme_id = $row['themes_id'];
$sql = "UPDATE " . THEMES_TABLE . "
SET head_stylesheet = 'subSilver.css', body_background = '', body_bgcolor = 'E5E5E5', body_text = '000000', body_link = '006699', body_vlink = '5493B4', body_alink = '', body_hlink = 'DD6900', tr_color1 = 'EFEFEF', tr_color2 = 'DEE3E7', tr_color3 = 'D1D7DC', tr_class1 = '', tr_class2 = '', tr_class3 = '', th_color1 = '98AAB1', th_color2 = '006699', th_color3 = 'FFFFFF', th_class1 = 'cellpic1.gif', th_class2 = 'cellpic3.gif', th_class3 = 'cellpic2.jpg', td_color1 = 'FAFAFA', td_color2 = 'FFFFFF', td_color3 = '', td_class1 = 'row1', td_class2 = 'row2', td_class3 = '', fontface1 = 'Verdana, Arial, Helvetica, sans-serif', fontface2 = 'Trebuchet MS', fontface3 = 'Courier, ''Courier New'', sans-serif', fontsize1 = 10, fontsize2 = 11, fontsize3 = 12, fontcolor1 = '444444', fontcolor2 = '006600', fontcolor3 = 'FFA34F', span_class1 = '', span_class2 = '', span_class3 = ''
WHERE themes_id = $theme_id";
_sql($sql, $errored, $error_ary);
$sql = "DELETE FROM " . THEMES_NAME_TABLE . "
WHERE themes_id = $theme_id";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . THEMES_NAME_TABLE . " (themes_id, tr_color1_name, tr_color2_name, tr_color3_name, tr_class1_name, tr_class2_name, tr_class3_name, th_color1_name, th_color2_name, th_color3_name, th_class1_name, th_class2_name, th_class3_name, td_color1_name, td_color2_name, td_color3_name, td_class1_name, td_class2_name, td_class3_name, fontface1_name, fontface2_name, fontface3_name, fontsize1_name, fontsize2_name, fontsize3_name, fontcolor1_name, fontcolor2_name, fontcolor3_name, span_class1_name, span_class2_name, span_class3_name)
VALUES ($theme_id, 'The lightest row colour', 'The medium row color', 'The darkest row colour', '', '', '', 'Border round the whole page', 'Outer table border', 'Inner table border', 'Silver gradient picture', 'Blue gradient picture', 'Fade-out gradient on index', 'Background for quote boxes', 'All white areas', '', 'Background for topic posts', '2nd background for topic posts', '', 'Main fonts', 'Additional topic title font', 'Form fonts', 'Smallest font size', 'Medium font size', 'Normal font size (post body etc)', 'Quote & copyright text', 'Code text colour', 'Main table header text colour', '', '', '')";
_sql($sql, $errored, $error_ary);
}
$sql = "SELECT MIN(post_id) AS first_post_id, topic_id
FROM " . POSTS_TABLE . "
GROUP BY topic_id
ORDER BY topic_id ASC";
$result = _sql($sql, $errored, $error_ary);
if ( $row = $db->sql_fetchrow($result) )
{
do
{
$sql = "UPDATE " . TOPICS_TABLE . "
SET topic_first_post_id = " . $row['first_post_id'] . "
WHERE topic_id = " . $row['topic_id'];
_sql($sql, $errored, $error_ary);
}
while ( $row = $db->sql_fetchrow($result) );
}
$sql = "SELECT DISTINCT u.user_id
FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa
WHERE aa.auth_mod = 1
AND ug.group_id = aa.group_id
AND u.user_id = ug.user_id
AND u.user_level <> " . ADMIN;
$result = _sql($sql, $errored, $error_ary);
$mod_user = array();
while ( $row = $db->sql_fetchrow($result) )
{
$mod_user[] = $row['user_id'];
}
if ( count($mod_user) )
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_level = " . MOD . "
WHERE user_id IN (" . implode(', ', $mod_user) . ")";
_sql($sql, $errored, $error_ary);
}
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('server_name', 'www.myserver.tld')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('script_path', '/phpBB2/')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('server_port', '80')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('record_online_users', '1')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('record_online_date', '" . time() . "')";
_sql($sql, $errored, $error_ary);
case 'RC-3':
case 'RC-4':
case '.0.0':
case '.0.1':
if ( SQL_LAYER == 'postgresql' )
{
$sql = "SELECT user_id, user_timezone_old
FROM " . USERS_TABLE;
$result = _sql($sql, $errored, $error_ary);
while ( $row = $db->sql_fetchrow($result) )
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_timezone = " . $row['user_timezone_old'] . "
WHERE user_id = " . $row['user_id'];
_sql($sql, $errored, $error_ary);
}
}
$sql = "SELECT topic_id, topic_moved_id
FROM " . TOPICS_TABLE . "
WHERE topic_moved_id <> 0";
$result = _sql($sql, $errored, $error_ary);
$topic_ary = array();
while ( $row = $db->sql_fetchrow($result) )
{
$topic_ary[$row['topic_id']] = $row['topic_moved_id'];
}
while ( list($topic_id, $topic_moved_id) = each($topic_ary) )
{
$sql = "SELECT MAX(post_id) AS last_post, MIN(post_id) AS first_post, COUNT(post_id) AS total_posts
FROM " . POSTS_TABLE . "
WHERE topic_id = $topic_moved_id";
$result = _sql($sql, $errored, $error_ary);
$sql = ( $row = $db->sql_fetchrow($result) ) ? "UPDATE " . TOPICS_TABLE . " SET topic_replies = " . ( $row['total_posts'] - 1 ) . ", topic_first_post_id = " . $row['first_post'] . ", topic_last_post_id = " . $row['last_post'] . " WHERE topic_id = $topic_id" : "DELETE FROM " . TOPICS_TABLE . " WHERE topic_id = " . $row['topic_id'];
_sql($sql, $errored, $error_ary);
}
unset($sql);
$sql = "UPDATE " . CONFIG_TABLE . "
SET config_value = '$updates_to_version'
WHERE config_name = 'version'";
_sql($sql, $errored, $error_ary);
sync('all forums');
echo "</b> <b class=\"ok\">Done</b><br />Result &nbsp; :: \n";
if ( $errored )
{
echo " <b>Some queries failed, the statements and errors are listing below</b>\n<ul>";
for($i = 0; $i < count($error_ary['sql']); $i++)
{
echo "<li>Error :: <b>" . $error_ary['error_code'][$i]['message'] . "</b><br />";
echo "SQL &nbsp; :: <b>" . $error_ary['sql'][$i] . "</b><br /><br /></li>";
}
echo "</ul>\n<p>This is probably nothing to worry about, update will continue. Should this fail to complete you may need to seek help at our development board. See <a href=\"docs\README.html\">README</a> for details on how to obtain advice.</p>\n";
}
else
{
echo "<b>No errors</b>\n";
}
break;
default:
echo " No updates where required</b></p>\n";
break;
}
echo "<h2>Update completed</h2>\n";
echo "\n<p>You should now visit the General Configuration settings page in the <a href=\"../admin/\">Administration Panel</a> and check the General Configuration of the board. If you updated from versions prior to RC-3 you <b>must</b> update some entries. If you do not do this emails sent from the board will contain incorrect information. Don't forget to delete this file!</p>\n";
?>
<br clear="all" />
</body>
</html>

View File

@@ -1,668 +0,0 @@
<?php
/***************************************************************************
* update_to_xxx.php
* -------------------
* begin : Wednesday, May 16, 2002
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id$
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
function _sql($sql, &$errored, &$error_ary, $echo_dot = true)
{
global $db;
if( !($result = $db->sql_query($sql)) )
{
$errored = true;
$error_ary['sql'][] = ( is_array($sql) ) ? $sql[$i] : $sql;
$error_ary['error_code'][] = $db->sql_error();
}
if ( $echo_dot )
{
echo ".";
flush();
}
return $result;
}
define('IN_PHPBB', 1);
$phpbb_root_path = './../';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'config.'.$phpEx);
include($phpbb_root_path . 'includes/constants.'.$phpEx);
include($phpbb_root_path . 'includes/functions.'.$phpEx);
include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
include($phpbb_root_path . 'includes/db.'.$phpEx);
//
//
//
$updates_to_version = ".0.3";
//
//
//
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css">
<!--
font,th,td,p,body { font-family: "Courier New", courier; font-size: 11pt }
a:link,a:active,a:visited { color : #006699; }
a:hover { text-decoration: underline; color : #DD6900;}
hr { height: 0px; border: solid #D1D7DC 0px; border-top-width: 1px;}
.maintitle,h1,h2 {font-weight: bold; font-size: 22px; font-family: "Trebuchet MS",Verdana, Arial, Helvetica, sans-serif; text-decoration: none; line-height : 120%; color : #000000;}
.ok {color:green}
/* Import the fancy styles for IE only (NS4.x doesn't use the @import function) */
@import url("../templates/subSilver/formIE.css");
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#006699" vlink="#5584AA">
<table width="100%" border="0" cellspacing="0" cellpadding="10" align="center">
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="../templates/subSilver/images/logo_phpBB.gif" border="0" alt="Forum Home" vspace="1" /></td>
<td align="center" width="100%" valign="middle"><span class="maintitle">Updating to latest stable release</span></td>
</tr>
</table></td>
</tr>
</table>
<br clear="all" />
<h2>Information</h2>
<?php
echo '<p>Database type &nbsp; &nbsp;:: <b>' . SQL_LAYER . '</b><br />';
$sql = "SELECT config_value
FROM " . CONFIG_TABLE . "
WHERE config_name = 'version'";
if ( !($result = $db->sql_query($sql)) )
{
die("Couldn't obtain version info");
}
$row = $db->sql_fetchrow($result);
$sql = array();
switch ( $row['config_value'] )
{
case '':
echo 'Previous version :: <b>&lt; RC-3</b></p><br />';
break;
case 'RC-3':
echo 'Previous version :: <b>RC-3</b></p><br />';
break;
case 'RC-4':
echo 'Previous version :: <b>RC-4</b></p><br />';
break;
default:
echo 'Previous version :: <b>2' . $row['config_value'] . '</b><br />';
break;
}
echo 'Updated version &nbsp;:: <b>2' . $updates_to_version . '</b></p>' ."\n";
switch ( $row['config_value'] )
{
case '':
switch ( SQL_LAYER )
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
COLUMN user_autologin_key";
$sql[] = "ALTER TABLE " . RANKS_TABLE . " DROP
COLUMN rank_max";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_session_time int(11) DEFAULT '0' NOT NULL,
ADD COLUMN user_session_page smallint(5) DEFAULT '0' NOT NULL,
ADD INDEX (user_session_time)";
$sql[] = "ALTER TABLE " . SEARCH_TABLE . "
MODIFY search_id int(11) NOT NULL";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . "
MODIFY topic_moved_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ADD COLUMN topic_first_post_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ADD INDEX (topic_first_post_id)";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class1_name varchar(50) NULL,
ADD COLUMN tr_class2_name varchar(50) NULL,
ADD COLUMN tr_class3_name varchar(50) NULL,
ADD COLUMN th_class1_name varchar(50) NULL,
ADD COLUMN th_class2_name varchar(50) NULL,
ADD COLUMN th_class3_name varchar(50) NULL,
ADD COLUMN td_class1_name varchar(50) NULL,
ADD COLUMN td_class2_name varchar(50) NULL,
ADD COLUMN td_class3_name varchar(50) NULL,
ADD COLUMN span_class1_name varchar(50) NULL,
ADD COLUMN span_class2_name varchar(50) NULL,
ADD COLUMN span_class3_name varchar(50) NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_session_time int4";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_session_page int2";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN user_session_time SET DEFAULT '0'";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN user_session_page SET DEFAULT '0'";
$sql[] = "CREATE INDEX user_session_time_" . $table_prefix . "users_index
ON " . USERS_TABLE . " (user_session_time)";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . "
ADD COLUMN topic_first_post_id int4";
$sql[] = "CREATE INDEX topic_first_post_id_" . $table_prefix . "topics_index
ON " . TOPICS_TABLE . " (topic_first_post_id)";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class3_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN th_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN th_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN th_class3_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN td_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN td_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN td_class3_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN span_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN span_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN span_class3_name varchar(50) NULL";
break;
case 'mssql-odbc':
case 'mssql':
$sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
COLUMN user_autologin_key";
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_session_time int NOT NULL,
user_session_page smallint NOT NULL,
CONSTRAINT [DF_" . $table_prefix . "users_user_session_time] DEFAULT (0) FOR [user_session_time],
CONSTRAINT [DF_" . $table_prefix . "users_user_session_page] DEFAULT (0) FOR [user_session_page]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "users]
ON [" . USERS_TABLE . "]([user_session_time]) ON [PRIMARY]";
/* ---------------------------------------------------------------------
DROP FORUM TABLE -- if this may cause you problems you can safely
comment it out, remember to manually remove the IDENTITY setting on
the forum_id column
--------------------------------------------------------------------- */
$sql [] = "ALTER TABLE " . FORUMS_TABLE . " DROP
CONSTRAINT [DF_" . $table_prefix . "forums_forum_posts],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_topics],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_last_post_id],
CONSTRAINT [DF_" . $table_prefix . "forums_prune_enable],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_view],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_read],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_post],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_reply],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_edit],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_delete],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_sticky],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_announce],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_vote],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_pollcreate],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_attachments]";
$sql[] = "CREATE TABLE Tmp_" . FORUMS_TABLE . "
(forum_id int NOT NULL, cat_id int NOT NULL, forum_name varchar(100) NOT NULL, forum_desc varchar(255) NULL, forum_status smallint NOT NULL, forum_order int NOT NULL, forum_posts int NOT NULL, forum_topics smallint NOT NULL, forum_last_post_id int NOT NULL, prune_next int NULL, prune_enable smallint NOT NULL, auth_view smallint NOT NULL, auth_read smallint NOT NULL, auth_post smallint NOT NULL, auth_reply smallint NOT NULL, auth_edit smallint NOT NULL, auth_delete smallint NOT NULL, auth_sticky smallint NOT NULL, auth_announce smallint NOT NULL, auth_vote smallint NOT NULL, auth_pollcreate smallint NOT NULL, auth_attachments smallint NOT NULL) ON [PRIMARY]";
$sql[] = "ALTER TABLE [Tmp_" . FORUMS_TABLE . "] WITH NOCHECK ADD
CONSTRAINT [DF_" . $table_prefix . "forums_forum_posts] DEFAULT (0) FOR [forum_posts],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_topics] DEFAULT (0) FOR [forum_topics],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_last_post_id] DEFAULT (0) FOR [forum_last_post_id],
CONSTRAINT [DF_" . $table_prefix . "forums_prune_enable] DEFAULT (0) FOR [prune_enable],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_view] DEFAULT (0) FOR [auth_view],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_read] DEFAULT (0) FOR [auth_read],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_post] DEFAULT (0) FOR [auth_post],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_reply] DEFAULT (0) FOR [auth_reply],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_edit] DEFAULT (0) FOR [auth_edit],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_delete] DEFAULT (0) FOR [auth_delete],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_sticky] DEFAULT (0) FOR [auth_sticky],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_announce] DEFAULT (0) FOR [auth_announce],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_vote] DEFAULT (0) FOR [auth_vote],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_pollcreate] DEFAULT (0) FOR [auth_pollcreate],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_attachments] DEFAULT (0) FOR [auth_attachments]";
$sql[] = "INSERT INTO Tmp_" . FORUMS_TABLE . " (forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments)
SELECT forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments FROM " . FORUMS_TABLE . " TABLOCKX";
$sql[] = "DROP TABLE " . FORUMS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . FORUMS_TABLE . "', N'" . FORUMS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . FORUMS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "forums] PRIMARY KEY CLUSTERED (forum_id) ON [PRIMARY]";
$sql[] = "CREATE NONCLUSTERED INDEX [IX_" . $table_prefix . "forums]
ON " . FORUMS_TABLE . " (cat_id, forum_order, forum_last_post_id) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP FORUM -- don't remove anything after this point!
-------------------------------------------------------------- */
/* ---------------------------------------------------------------------
DROP GROUP TABLE -- if this may cause you problems you can safely
comment it out, remember to manually add the IDENTITY setting on
the group_id column
--------------------------------------------------------------------- */
$sql[] = "CREATE TABLE Tmp_" . GROUPS_TABLE . "
(group_id int IDENTITY (1, 1) NOT NULL, group_type smallint NULL, group_name varchar(50) NOT NULL, group_description varchar(255) NOT NULL, group_moderator int NULL, group_single_user smallint NOT NULL) ON [PRIMARY]";
$sql[] = "INSERT INTO Tmp_" . GROUPS_TABLE . " (group_id, group_type, group_name, group_description, group_moderator, group_single_user)
SELECT group_id, group_type, group_name, group_description, group_moderator, group_signle_user FROM " . GROUPS_TABLE . " TABLOCKX";
$sql[] = "DROP TABLE " . GROUPS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . GROUPS_TABLE . "', N'" . GROUPS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . GROUPS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "groups] PRIMARY KEY CLUSTERED (group_id) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "groups]
ON " . GROUPS_TABLE . " (group_single_user) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP GROUP -- don't remove anything after this point!
-------------------------------------------------------------- */
$sql[] = "DROP INDEX " . RANKS_TABLE . ".IX_" . $table_prefix . "ranks";
$sql[] = "ALTER TABLE " . RANKS_TABLE . " DROP
COLUMN rank_max";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "ranks]
ON [" . RANKS_TABLE . "]([rank_min], [rank_special]) ON [PRIMARY]";
$sql[] = "DROP INDEX " . TOPICS_TABLE . ".IX_" . $table_prefix . "topics";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . " ADD
topic_first_post_id int NULL,
CONSTRAINT [DF_" . $table_prefix . "topics_topic_first_post_id] FOR [topic_first_post_id]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "topics]
ON [" . TOPICS_TABLE . "]([forum_id], [topic_type], [topic_first_post_id], [topic_last_post_id]) ON [PRIMARY]";
$sql[] = "ALTER TABLE " . SEARCH_WORD_TABLE . " DROP
CONSTRAINT [PK_" . $table_prefix . "search_wordlist]";
$sql[] = "CREATE UNIQUE INDEX [IX_" . $table_prefix . "search_wordlist]
ON [" . SEARCH_WORD_TABLE . "]([word_text]) WITH IGNORE_DUP_KEY ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "search_wordlist_1]
ON [" . SEARCH_WORD_TABLE . "]([word_common]) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "search_wordmatch_1]
ON [" . SEARCH_MATCH_TABLE . "]([word_id]) ON [PRIMARY]";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . " ADD
tr_class1_name varchar(50) NULL,
tr_class2_name varchar(50) NULL,
tr_class3_name varchar(50) NULL,
th_class1_name varchar(50) NULL,
th_class2_name varchar(50) NULL,
th_class3_name varchar(50) NULL,
td_class1_name varchar(50) NULL,
td_class2_name varchar(50) NULL,
td_class3_name varchar(50) NULL,
span_class1_name varchar(50) NULL,
span_class2_name varchar(50) NULL,
span_class3_name varchar(50) NULL";
break;
case 'msaccess':
$sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
COLUMN user_autologin_key";
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_session_time int NOT NULL,
user_session_page smallint NOT NULL";
$sql[] = "CREATE INDEX user_session_time
ON " . USERS_TABLE . " (user_session_time)";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . " ADD
topic_first_post_id int NULL";
$sql[] = "CREATE INDEX topic_first_post_id
ON " . TOPICS_TABLE . " (topic_first_post_id)";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . " ADD
tr_class1_name varchar(50) NULL,
tr_class2_name varchar(50) NULL,
tr_class3_name varchar(50) NULL,
th_class1_name varchar(50) NULL,
th_class2_name varchar(50) NULL,
th_class3_name varchar(50) NULL,
td_class1_name varchar(50) NULL,
td_class2_name varchar(50) NULL,
td_class3_name varchar(50) NULL,
span_class1_name varchar(50) NULL,
span_class2_name varchar(50) NULL,
span_class3_name varchar(50) NULL";
break;
default:
die("No DB LAYER found!");
break;
}
case 'RC-3':
case 'RC-4':
case '.0.0':
switch ( SQL_LAYER )
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
MODIFY COLUMN user_id mediumint(8) NOT NULL,
MODIFY COLUMN user_timezone decimal(4,2) DEFAULT '0' NOT NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
RENAME COLUMN user_timezone TO user_timezone_old";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_timezone decimal(4)";
break;
case 'mssql':
case 'mssql-odbc':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN [user_timezone] [decimal] (4,2) NOT NULL";
/* ---------------------------------------------------------------------
DROP GROUP TABLE -- if this may cause you problems you can safely
comment it out, remember to manually add the IDENTITY setting on
the group_id column
--------------------------------------------------------------------- */
$sql[] = "CREATE TABLE Tmp_" . GROUPS_TABLE . "
(group_id int IDENTITY (1, 1) NOT NULL, group_type smallint NULL, group_name varchar(50) NOT NULL, group_description varchar(255) NOT NULL, group_moderator int NULL, group_single_user smallint NOT NULL) ON [PRIMARY]";
$sql[] = "INSERT INTO Tmp_" . GROUPS_TABLE . " (group_id, group_type, group_name, group_description, group_moderator, group_single_user)
SELECT group_id, group_type, group_name, group_description, group_moderator, group_signle_user FROM " . GROUPS_TABLE . " TABLOCKX";
$sql[] = "DROP TABLE " . GROUPS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . GROUPS_TABLE . "', N'" . GROUPS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . GROUPS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "groups] PRIMARY KEY CLUSTERED (group_id) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "groups]
ON " . GROUPS_TABLE . " (group_single_user) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP GROUP -- don't remove anything after this point!
-------------------------------------------------------------- */
break;
}
case '.0.1':
switch ( SQL_LAYER )
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . GROUPS_TABLE . "
MODIFY COLUMN group_id mediumint(8) NOT NULL auto_increment";
break;
case 'mssql':
case 'mssql-odbc':
/* ---------------------------------------------------------------------
DROP GROUP TABLE -- if this may cause you problems you can safely
comment it out, remember to manually add the IDENTITY setting on
the group_id column
--------------------------------------------------------------------- */
$sql[] = "CREATE TABLE Tmp_" . GROUPS_TABLE . "
(group_id int IDENTITY (1, 1) NOT NULL, group_type smallint NULL, group_name varchar(50) NOT NULL, group_description varchar(255) NOT NULL, group_moderator int NULL, group_single_user smallint NOT NULL) ON [PRIMARY]";
$sql[] = "INSERT INTO Tmp_" . GROUPS_TABLE . " (group_id, group_type, group_name, group_description, group_moderator, group_single_user)
SELECT group_id, group_type, group_name, group_description, group_moderator, group_signle_user FROM " . GROUPS_TABLE . " TABLOCKX";
$sql[] = "DROP TABLE " . GROUPS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . GROUPS_TABLE . "', N'" . GROUPS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . GROUPS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "groups] PRIMARY KEY CLUSTERED (group_id) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "groups]
ON " . GROUPS_TABLE . " (group_single_user) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP GROUP -- don't remove anything after this point!
-------------------------------------------------------------- */
break;
}
}
echo "<h2>Updating database schema</h2>\n";
echo "<p>Progress :: <b>";
flush();
$error_ary = array();
$errored = false;
if ( count($sql) )
{
for($i = 0; $i < count($sql); $i++)
{
_sql($sql[$i], $errored, $error_ary);
}
echo "</b> <b class=\"ok\">Done</b><br />Result &nbsp; :: \n";
if ( $errored )
{
echo " <b>Some queries failed, the statements and errors are listing below</b>\n<ul>";
for($i = 0; $i < count($error_ary['sql']); $i++)
{
echo "<li>Error :: <b>" . $error_ary['error_code'][$i]['message'] . "</b><br />";
echo "SQL &nbsp; :: <b>" . $error_ary['sql'][$i] . "</b><br /><br /></li>";
}
echo "</ul>\n<p>This is probably nothing to worry about, update will continue. Should this fail to complete you may need to seek help at our development board. See <a href=\"docs\README.html\">README</a> for details on how to obtain advice.</p>\n";
}
else
{
echo "<b>No errors</b>\n";
}
}
else
{
echo " No updates required</b></p>\n";
}
//
//
//
unset($sql);
$error_ary = array();
$errored = false;
echo "<h2>Updating data</h2>\n";
echo "<p>Progress :: <b>";
flush();
switch ( $row['config_value'] )
{
case '':
$sql = "SELECT themes_id
FROM " . THEMES_TABLE . "
WHERE template_name = 'subSilver'";
$result = _sql($sql, $errored, $error_ary);
if( $row = $db->sql_fetchrow($result) )
{
$theme_id = $row['themes_id'];
$sql = "UPDATE " . THEMES_TABLE . "
SET head_stylesheet = 'subSilver.css', body_background = '', body_bgcolor = 'E5E5E5', body_text = '000000', body_link = '006699', body_vlink = '5493B4', body_alink = '', body_hlink = 'DD6900', tr_color1 = 'EFEFEF', tr_color2 = 'DEE3E7', tr_color3 = 'D1D7DC', tr_class1 = '', tr_class2 = '', tr_class3 = '', th_color1 = '98AAB1', th_color2 = '006699', th_color3 = 'FFFFFF', th_class1 = 'cellpic1.gif', th_class2 = 'cellpic3.gif', th_class3 = 'cellpic2.jpg', td_color1 = 'FAFAFA', td_color2 = 'FFFFFF', td_color3 = '', td_class1 = 'row1', td_class2 = 'row2', td_class3 = '', fontface1 = 'Verdana, Arial, Helvetica, sans-serif', fontface2 = 'Trebuchet MS', fontface3 = 'Courier, ''Courier New'', sans-serif', fontsize1 = 10, fontsize2 = 11, fontsize3 = 12, fontcolor1 = '444444', fontcolor2 = '006600', fontcolor3 = 'FFA34F', span_class1 = '', span_class2 = '', span_class3 = ''
WHERE themes_id = $theme_id";
_sql($sql, $errored, $error_ary);
$sql = "DELETE FROM " . THEMES_NAME_TABLE . "
WHERE themes_id = $theme_id";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . THEMES_NAME_TABLE . " (themes_id, tr_color1_name, tr_color2_name, tr_color3_name, tr_class1_name, tr_class2_name, tr_class3_name, th_color1_name, th_color2_name, th_color3_name, th_class1_name, th_class2_name, th_class3_name, td_color1_name, td_color2_name, td_color3_name, td_class1_name, td_class2_name, td_class3_name, fontface1_name, fontface2_name, fontface3_name, fontsize1_name, fontsize2_name, fontsize3_name, fontcolor1_name, fontcolor2_name, fontcolor3_name, span_class1_name, span_class2_name, span_class3_name)
VALUES ($theme_id, 'The lightest row colour', 'The medium row color', 'The darkest row colour', '', '', '', 'Border round the whole page', 'Outer table border', 'Inner table border', 'Silver gradient picture', 'Blue gradient picture', 'Fade-out gradient on index', 'Background for quote boxes', 'All white areas', '', 'Background for topic posts', '2nd background for topic posts', '', 'Main fonts', 'Additional topic title font', 'Form fonts', 'Smallest font size', 'Medium font size', 'Normal font size (post body etc)', 'Quote & copyright text', 'Code text colour', 'Main table header text colour', '', '', '')";
_sql($sql, $errored, $error_ary);
}
$sql = "SELECT MIN(post_id) AS first_post_id, topic_id
FROM " . POSTS_TABLE . "
GROUP BY topic_id
ORDER BY topic_id ASC";
$result = _sql($sql, $errored, $error_ary);
if ( $row = $db->sql_fetchrow($result) )
{
do
{
$sql = "UPDATE " . TOPICS_TABLE . "
SET topic_first_post_id = " . $row['first_post_id'] . "
WHERE topic_id = " . $row['topic_id'];
_sql($sql, $errored, $error_ary);
}
while ( $row = $db->sql_fetchrow($result) );
}
$sql = "SELECT DISTINCT u.user_id
FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa
WHERE aa.auth_mod = 1
AND ug.group_id = aa.group_id
AND u.user_id = ug.user_id
AND u.user_level <> " . ADMIN;
$result = _sql($sql, $errored, $error_ary);
$mod_user = array();
while ( $row = $db->sql_fetchrow($result) )
{
$mod_user[] = $row['user_id'];
}
if ( count($mod_user) )
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_level = " . MOD . "
WHERE user_id IN (" . implode(', ', $mod_user) . ")";
_sql($sql, $errored, $error_ary);
}
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('server_name', 'www.myserver.tld')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('script_path', '/phpBB2/')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('server_port', '80')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('record_online_users', '1')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('record_online_date', '" . time() . "')";
_sql($sql, $errored, $error_ary);
case 'RC-3':
case 'RC-4':
case '.0.0':
case '.0.1':
if ( SQL_LAYER == 'postgresql' )
{
$sql = "SELECT user_id, user_timezone_old
FROM " . USERS_TABLE;
$result = _sql($sql, $errored, $error_ary);
while ( $row = $db->sql_fetchrow($result) )
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_timezone = " . $row['user_timezone_old'] . "
WHERE user_id = " . $row['user_id'];
_sql($sql, $errored, $error_ary);
}
}
$sql = "SELECT topic_id, topic_moved_id
FROM " . TOPICS_TABLE . "
WHERE topic_moved_id <> 0";
$result = _sql($sql, $errored, $error_ary);
$topic_ary = array();
while ( $row = $db->sql_fetchrow($result) )
{
$topic_ary[$row['topic_id']] = $row['topic_moved_id'];
}
while ( list($topic_id, $topic_moved_id) = each($topic_ary) )
{
$sql = "SELECT MAX(post_id) AS last_post, MIN(post_id) AS first_post, COUNT(post_id) AS total_posts
FROM " . POSTS_TABLE . "
WHERE topic_id = $topic_moved_id";
$result = _sql($sql, $errored, $error_ary);
$sql = ( $row = $db->sql_fetchrow($result) ) ? "UPDATE " . TOPICS_TABLE . " SET topic_replies = " . ( $row['total_posts'] - 1 ) . ", topic_first_post_id = " . $row['first_post'] . ", topic_last_post_id = " . $row['last_post'] . " WHERE topic_id = $topic_id" : "DELETE FROM " . TOPICS_TABLE . " WHERE topic_id = " . $row['topic_id'];
_sql($sql, $errored, $error_ary);
}
unset($sql);
sync('all forums');
case '.0.2':
$sql = "UPDATE " . CONFIG_TABLE . "
SET config_value = '$updates_to_version'
WHERE config_name = 'version'";
_sql($sql, $errored, $error_ary);
echo "</b> <b class=\"ok\">Done</b><br />Result &nbsp; :: \n";
if ( $errored )
{
echo " <b>Some queries failed, the statements and errors are listing below</b>\n<ul>";
for($i = 0; $i < count($error_ary['sql']); $i++)
{
echo "<li>Error :: <b>" . $error_ary['error_code'][$i]['message'] . "</b><br />";
echo "SQL &nbsp; :: <b>" . $error_ary['sql'][$i] . "</b><br /><br /></li>";
}
echo "</ul>\n<p>This is probably nothing to worry about, update will continue. Should this fail to complete you may need to seek help at our development board. See <a href=\"docs\README.html\">README</a> for details on how to obtain advice.</p>\n";
}
else
{
echo "<b>No errors</b>\n";
}
break;
default:
echo " No updates where required</b></p>\n";
break;
}
echo "<h2>Update completed</h2>\n";
echo "\n<p>You should now visit the General Configuration settings page in the <a href=\"../admin/\">Administration Panel</a> and check the General Configuration of the board. If you updated from versions prior to RC-3 you <b>must</b> update some entries. If you do not do this emails sent from the board will contain incorrect information. Don't forget to delete this file!</p>\n";
?>
<br clear="all" />
</body>
</html>

View File

@@ -1,893 +0,0 @@
<?php
/***************************************************************************
* update_to_xxx.php
* -------------------
* begin : Wednesday, May 16, 2002
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id$
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
function _sql($sql, &$errored, &$error_ary, $echo_dot = true)
{
global $db;
if (!($result = $db->sql_query($sql)))
{
$errored = true;
$error_ary['sql'][] = (is_array($sql)) ? $sql[$i] : $sql;
$error_ary['error_code'][] = $db->sql_error();
}
if ($echo_dot)
{
echo ". \n";
flush();
}
return $result;
}
@set_time_limit(120);
define('IN_PHPBB', 1);
$phpbb_root_path = './../';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'config.'.$phpEx);
if(!isset($dbms))
{
die("Please read: <a href='../docs/INSTALL.html'>INSTALL.html</a> before attempting to update.");
}
include($phpbb_root_path . 'includes/constants.'.$phpEx);
include($phpbb_root_path . 'includes/functions.'.$phpEx);
include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
include($phpbb_root_path . 'includes/functions_search.'.$phpEx);
include($phpbb_root_path . 'includes/db.'.$phpEx);
//
//
//
$updates_to_version = ".0.4";
//
//
//
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css">
<!--
font,th,td,p,body { font-family: "Courier New", courier; font-size: 11pt }
a:link,a:active,a:visited { color : #006699; }
a:hover { text-decoration: underline; color : #DD6900;}
hr { height: 0px; border: solid #D1D7DC 0px; border-top-width: 1px;}
.maintitle,h1,h2 {font-weight: bold; font-size: 22px; font-family: "Trebuchet MS",Verdana, Arial, Helvetica, sans-serif; text-decoration: none; line-height : 120%; color : #000000;}
.ok {color:green}
/* Import the fancy styles for IE only (NS4.x doesn't use the @import function) */
@import url("../templates/subSilver/formIE.css");
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#006699" vlink="#5584AA">
<table width="100%" border="0" cellspacing="0" cellpadding="10" align="center">
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="../templates/subSilver/images/logo_phpBB.gif" border="0" alt="Forum Home" vspace="1" /></td>
<td align="center" width="100%" valign="middle"><span class="maintitle">Updating to latest stable release</span></td>
</tr>
</table></td>
</tr>
</table>
<br clear="all" />
<h2>Information</h2>
<?php
echo '<p>Database type &nbsp; &nbsp;:: <b>' . SQL_LAYER . '</b><br />';
$sql = "SELECT config_value
FROM " . CONFIG_TABLE . "
WHERE config_name = 'version'";
if (!($result = $db->sql_query($sql)))
{
die("Couldn't obtain version info");
}
$row = $db->sql_fetchrow($result);
$sql = array();
switch ($row['config_value'])
{
case '':
echo 'Previous version :: <b>&lt; RC-3</b></p><br />';
break;
case 'RC-3':
echo 'Previous version :: <b>RC-3</b></p><br />';
break;
case 'RC-4':
echo 'Previous version :: <b>RC-4</b></p><br />';
break;
default:
echo 'Previous version :: <b>2' . $row['config_value'] . '</b><br />';
break;
}
echo 'Updated version &nbsp;:: <b>2' . $updates_to_version . '</b></p>' ."\n";
//
// Schema updates
//
switch ($row['config_value'])
{
case '':
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
COLUMN user_autologin_key";
$sql[] = "ALTER TABLE " . RANKS_TABLE . " DROP
COLUMN rank_max";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_session_time int(11) DEFAULT '0' NOT NULL,
ADD COLUMN user_session_page smallint(5) DEFAULT '0' NOT NULL,
ADD INDEX (user_session_time)";
$sql[] = "ALTER TABLE " . SEARCH_TABLE . "
MODIFY search_id int(11) NOT NULL";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . "
MODIFY topic_moved_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ADD COLUMN topic_first_post_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ADD INDEX (topic_first_post_id)";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class1_name varchar(50) NULL,
ADD COLUMN tr_class2_name varchar(50) NULL,
ADD COLUMN tr_class3_name varchar(50) NULL,
ADD COLUMN th_class1_name varchar(50) NULL,
ADD COLUMN th_class2_name varchar(50) NULL,
ADD COLUMN th_class3_name varchar(50) NULL,
ADD COLUMN td_class1_name varchar(50) NULL,
ADD COLUMN td_class2_name varchar(50) NULL,
ADD COLUMN td_class3_name varchar(50) NULL,
ADD COLUMN span_class1_name varchar(50) NULL,
ADD COLUMN span_class2_name varchar(50) NULL,
ADD COLUMN span_class3_name varchar(50) NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_session_time int4";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_session_page int2";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN user_session_time SET DEFAULT '0'";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN user_session_page SET DEFAULT '0'";
$sql[] = "CREATE INDEX user_session_time_" . $table_prefix . "users_index
ON " . USERS_TABLE . " (user_session_time)";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . "
ADD COLUMN topic_first_post_id int4";
$sql[] = "CREATE INDEX topic_first_post_id_" . $table_prefix . "topics_index
ON " . TOPICS_TABLE . " (topic_first_post_id)";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN tr_class3_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN th_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN th_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN th_class3_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN td_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN td_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN td_class3_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN span_class1_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN span_class2_name varchar(50) NULL";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
ADD COLUMN span_class3_name varchar(50) NULL";
break;
case 'mssql-odbc':
case 'mssql':
$sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
COLUMN user_autologin_key";
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_session_time int NOT NULL,
user_session_page smallint NOT NULL,
CONSTRAINT [DF_" . $table_prefix . "users_user_session_time] DEFAULT (0) FOR [user_session_time],
CONSTRAINT [DF_" . $table_prefix . "users_user_session_page] DEFAULT (0) FOR [user_session_page]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "users]
ON [" . USERS_TABLE . "]([user_session_time]) ON [PRIMARY]";
/* ---------------------------------------------------------------------
DROP FORUM TABLE -- if this may cause you problems you can safely
comment it out, remember to manually remove the IDENTITY setting on
the forum_id column
--------------------------------------------------------------------- */
$sql [] = "ALTER TABLE " . FORUMS_TABLE . " DROP
CONSTRAINT [DF_" . $table_prefix . "forums_forum_posts],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_topics],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_last_post_id],
CONSTRAINT [DF_" . $table_prefix . "forums_prune_enable],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_view],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_read],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_post],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_reply],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_edit],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_delete],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_sticky],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_announce],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_vote],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_pollcreate],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_attachments]";
$sql[] = "CREATE TABLE Tmp_" . FORUMS_TABLE . "
(forum_id int NOT NULL, cat_id int NOT NULL, forum_name varchar(100) NOT NULL, forum_desc varchar(255) NULL, forum_status smallint NOT NULL, forum_order int NOT NULL, forum_posts int NOT NULL, forum_topics smallint NOT NULL, forum_last_post_id int NOT NULL, prune_next int NULL, prune_enable smallint NOT NULL, auth_view smallint NOT NULL, auth_read smallint NOT NULL, auth_post smallint NOT NULL, auth_reply smallint NOT NULL, auth_edit smallint NOT NULL, auth_delete smallint NOT NULL, auth_sticky smallint NOT NULL, auth_announce smallint NOT NULL, auth_vote smallint NOT NULL, auth_pollcreate smallint NOT NULL, auth_attachments smallint NOT NULL) ON [PRIMARY]";
$sql[] = "ALTER TABLE [Tmp_" . FORUMS_TABLE . "] WITH NOCHECK ADD
CONSTRAINT [DF_" . $table_prefix . "forums_forum_posts] DEFAULT (0) FOR [forum_posts],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_topics] DEFAULT (0) FOR [forum_topics],
CONSTRAINT [DF_" . $table_prefix . "forums_forum_last_post_id] DEFAULT (0) FOR [forum_last_post_id],
CONSTRAINT [DF_" . $table_prefix . "forums_prune_enable] DEFAULT (0) FOR [prune_enable],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_view] DEFAULT (0) FOR [auth_view],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_read] DEFAULT (0) FOR [auth_read],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_post] DEFAULT (0) FOR [auth_post],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_reply] DEFAULT (0) FOR [auth_reply],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_edit] DEFAULT (0) FOR [auth_edit],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_delete] DEFAULT (0) FOR [auth_delete],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_sticky] DEFAULT (0) FOR [auth_sticky],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_announce] DEFAULT (0) FOR [auth_announce],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_vote] DEFAULT (0) FOR [auth_vote],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_pollcreate] DEFAULT (0) FOR [auth_pollcreate],
CONSTRAINT [DF_" . $table_prefix . "forums_auth_attachments] DEFAULT (0) FOR [auth_attachments]";
$sql[] = "INSERT INTO Tmp_" . FORUMS_TABLE . " (forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments)
SELECT forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments FROM " . FORUMS_TABLE . " TABLOCKX";
$sql[] = "DROP TABLE " . FORUMS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . FORUMS_TABLE . "', N'" . FORUMS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . FORUMS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "forums] PRIMARY KEY CLUSTERED (forum_id) ON [PRIMARY]";
$sql[] = "CREATE NONCLUSTERED INDEX [IX_" . $table_prefix . "forums]
ON " . FORUMS_TABLE . " (cat_id, forum_order, forum_last_post_id) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP FORUM -- don't remove anything after this point!
-------------------------------------------------------------- */
$sql[] = "DROP INDEX " . RANKS_TABLE . ".IX_" . $table_prefix . "ranks";
$sql[] = "ALTER TABLE " . RANKS_TABLE . " DROP
COLUMN rank_max";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "ranks]
ON [" . RANKS_TABLE . "]([rank_min], [rank_special]) ON [PRIMARY]";
$sql[] = "DROP INDEX " . TOPICS_TABLE . ".IX_" . $table_prefix . "topics";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . " ADD
topic_first_post_id int NULL,
CONSTRAINT [DF_" . $table_prefix . "topics_topic_first_post_id] FOR [topic_first_post_id]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "topics]
ON [" . TOPICS_TABLE . "]([forum_id], [topic_type], [topic_first_post_id], [topic_last_post_id]) ON [PRIMARY]";
$sql[] = "ALTER TABLE " . SEARCH_WORD_TABLE . " DROP
CONSTRAINT [PK_" . $table_prefix . "search_wordlist]";
$sql[] = "CREATE UNIQUE INDEX [IX_" . $table_prefix . "search_wordlist]
ON [" . SEARCH_WORD_TABLE . "]([word_text]) WITH IGNORE_DUP_KEY ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "search_wordlist_1]
ON [" . SEARCH_WORD_TABLE . "]([word_common]) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "search_wordmatch_1]
ON [" . SEARCH_MATCH_TABLE . "]([word_id]) ON [PRIMARY]";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . " ADD
tr_class1_name varchar(50) NULL,
tr_class2_name varchar(50) NULL,
tr_class3_name varchar(50) NULL,
th_class1_name varchar(50) NULL,
th_class2_name varchar(50) NULL,
th_class3_name varchar(50) NULL,
td_class1_name varchar(50) NULL,
td_class2_name varchar(50) NULL,
td_class3_name varchar(50) NULL,
span_class1_name varchar(50) NULL,
span_class2_name varchar(50) NULL,
span_class3_name varchar(50) NULL";
break;
case 'msaccess':
$sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
COLUMN user_autologin_key";
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_session_time int NOT NULL,
user_session_page smallint NOT NULL";
$sql[] = "CREATE INDEX user_session_time
ON " . USERS_TABLE . " (user_session_time)";
$sql[] = "ALTER TABLE " . TOPICS_TABLE . " ADD
topic_first_post_id int NULL";
$sql[] = "CREATE INDEX topic_first_post_id
ON " . TOPICS_TABLE . " (topic_first_post_id)";
$sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . " ADD
tr_class1_name varchar(50) NULL,
tr_class2_name varchar(50) NULL,
tr_class3_name varchar(50) NULL,
th_class1_name varchar(50) NULL,
th_class2_name varchar(50) NULL,
th_class3_name varchar(50) NULL,
td_class1_name varchar(50) NULL,
td_class2_name varchar(50) NULL,
td_class3_name varchar(50) NULL,
span_class1_name varchar(50) NULL,
span_class2_name varchar(50) NULL,
span_class3_name varchar(50) NULL";
break;
default:
die("No DB LAYER found!");
break;
}
case 'RC-3':
case 'RC-4':
case '.0.0':
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
MODIFY COLUMN user_id mediumint(8) NOT NULL,
MODIFY COLUMN user_timezone decimal(5,2) DEFAULT '0' NOT NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
RENAME COLUMN user_timezone TO user_timezone_old";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_timezone decimal(5)";
break;
case 'mssql':
case 'mssql-odbc':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN [user_timezone] [decimal] (5,2) NOT NULL";
break;
}
case '.0.1':
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . GROUPS_TABLE . "
MODIFY COLUMN group_id mediumint(8) NOT NULL auto_increment";
break;
case 'mssql':
case 'mssql-odbc':
/* ---------------------------------------------------------------------
DROP GROUP TABLE -- if this may cause you problems you can safely
comment it out, remember to manually add the IDENTITY setting on
the group_id column
--------------------------------------------------------------------- */
$sql[] = "CREATE TABLE Tmp_" . GROUPS_TABLE . "
(group_id int IDENTITY (1, 1) NOT NULL, group_type smallint NULL, group_name varchar(50) NOT NULL, group_description varchar(255) NOT NULL, group_moderator int NULL, group_single_user smallint NOT NULL) ON [PRIMARY]";
$sql[] = "SET IDENTITY_INSERT " . GROUPS_TABLE . " ON";
$sql[] = "INSERT INTO Tmp_" . GROUPS_TABLE . " (group_id, group_type, group_name, group_description, group_moderator, group_single_user)
SELECT group_id, group_type, group_name, group_description, group_moderator, group_single_user FROM " . GROUPS_TABLE . " TABLOCKX";
$sql[] = "SET IDENTITY_INSERT " . GROUPS_TABLE . " OFF";
$sql[] = "DROP TABLE " . GROUPS_TABLE;
$sql[] = "EXECUTE sp_rename N'Tmp_" . GROUPS_TABLE . "', N'" . GROUPS_TABLE . "', 'OBJECT'";
$sql[] = "ALTER TABLE " . GROUPS_TABLE . " ADD
CONSTRAINT [PK_" . $table_prefix . "groups] PRIMARY KEY CLUSTERED (group_id) ON [PRIMARY]";
$sql[] = "CREATE INDEX [IX_" . $table_prefix . "groups]
ON " . GROUPS_TABLE . " (group_single_user) ON [PRIMARY]";
/* --------------------------------------------------------------
END OF DROP GROUP -- don't remove anything after this point!
-------------------------------------------------------------- */
break;
}
case '.0.3':
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
// Add indexes to post_id in search match table (+ word_id for MS Access)
$sql[] = "ALTER TABLE " . SEARCH_MATCH_TABLE . "
ADD INDEX post_id (post_id)";
// Modify user_timezone to decimal(5,2) for mysql ... mysql4/mssql/pgsql/msaccess
// should be completely unaffected
// Change default user_notify to 0
$sql[] = "ALTER TABLE " . USERS_TABLE . "
MODIFY COLUMN user_timezone decimal(5,2) DEFAULT '0' NOT NULL,
MODIFY COLUMN user_notify tinyint(1) DEFAULT '0' NOT NULL";
// Adjust field type for prune_days, prune_freq ... was too small
$sql[] = "ALTER TABLE " . PRUNE_TABLE . "
MODIFY COLUMN prune_days smallint(5) UNSIGNED NOT NULL,
MODIFY COLUMN prune_freq smallint(5) UNSIGNED NOT NULL";
break;
case 'mssql':
case 'mssql-odbc':
// Add missing defaults to MSSQL post table schema
$sql[] = "ALTER TABLE [" . POSTS_TABLE . "] WITH NOCHECK ADD
CONSTRAINT [DF_" . POSTS_TABLE . "_enable_bbcode] DEFAULT (1) FOR [enable_bbcode],
CONSTRAINT [DF_" . POSTS_TABLE . "_enable_html] DEFAULT (0) FOR [enable_html],
CONSTRAINT [DF_" . POSTS_TABLE . "_enable_smilies] DEFAULT (1) FOR [enable_smilies],
CONSTRAINT [DF_" . POSTS_TABLE . "_enable_sig] DEFAULT (1) FOR [enable_sig],
CONSTRAINT [DF_" . POSTS_TABLE . "_post_edit_count] DEFAULT (0) FOR [post_edit_count]";
case 'msaccess':
// Add indexes to post_id in search match table (+ word_id for MS Access)
$sql[] = "CREATE INDEX " . SEARCH_MATCH_TABLE . "
ON " . SEARCH_MATCH_TABLE . " ([post_id])";
$sql[] = "CREATE INDEX " . SEARCH_MATCH_TABLE . "_1
ON " . SEARCH_MATCH_TABLE . " ([word_id])";
break;
case 'postgresql':
// Add indexes to post_id in search match table (+ word_id for MS Access)
$sql[] = "CREATE INDEX post_id_" . SEARCH_MATCH_TABLE . "
ON " . SEARCH_MATCH_TABLE . " (post_id)";
// Regenerate groups table with incremented group_id for pgsql
// ... missing in 2.0.3 ...
$sql[] = "CREATE SEQUENCE " . GROUPS_TABLE . "_id_seq start 3 increment 1 maxvalue 2147483647 minvalue 1 cache 1";
$sql[] = "CREATE TABLE tmp_" . GROUPS_TABLE . "
AS SELECT group_id, group_name, group_type, group_description, group_moderator, group_single_user
FROM " . GROUPS_TABLE;
$sql[] = "DROP TABLE " . GROUPS_TABLE;
$sql[] = "CREATE TABLE phpbb_groups (group_id int DEFAULT nextval('" . GROUPS_TABLE . "_id_seq'::text) NOT NULL, group_name varchar(40) NOT NULL, group_type int2 DEFAULT '1' NOT NULL, group_description varchar(255) NOT NULL, group_moderator int4 DEFAULT '0' NOT NULL, group_single_user int2 DEFAULT '0' NOT NULL, CONSTRAINT phpbb_groups_pkey PRIMARY KEY (group_id))";
$sql[] = "INSERT INTO " . GROUPS_TABLE . " (group_id, group_name, group_type, group_description, group_moderator, group_single_user)
SELECT group_id, group_name, group_type, group_description, group_moderator, group_single_user
FROM tmp_" . GROUPS_TABLE;
$sql[] = "DROP TABLE tmp_" . GROUPS_TABLE;
break;
}
}
echo "<h2>Updating database schema</h2>\n";
echo "<p>Progress :: <b>";
flush();
$error_ary = array();
$errored = false;
if (count($sql))
{
for ($i = 0; $i < count($sql); $i++)
{
_sql($sql[$i], $errored, $error_ary);
}
echo "</b> <b class=\"ok\">Done</b><br />Result &nbsp; :: \n";
if ($errored)
{
echo " <b>Some queries failed, the statements and errors are listing below</b>\n<ul>";
for ($i = 0; $i < count($error_ary['sql']); $i++)
{
echo "<li>Error :: <b>" . $error_ary['error_code'][$i]['message'] . "</b><br />";
echo "SQL &nbsp; :: <b>" . $error_ary['sql'][$i] . "</b><br /><br /></li>";
}
echo "</ul>\n<p>This is probably nothing to worry about, update will continue. Should this fail to complete you may need to seek help at our development board. See <a href=\"docs\README.html\">README</a> for details on how to obtain advice.</p>\n";
}
else
{
echo "<b>No errors</b>\n";
}
}
else
{
echo " No updates required</b></p>\n";
}
//
// Data updates
//
unset($sql);
$error_ary = array();
$errored = false;
echo "<h2>Updating data</h2>\n";
echo "<p>Progress :: <b>";
flush();
switch ($row['config_value'])
{
case '':
$sql = "SELECT themes_id
FROM " . THEMES_TABLE . "
WHERE template_name = 'subSilver'";
$result = _sql($sql, $errored, $error_ary);
if ($row = $db->sql_fetchrow($result))
{
$theme_id = $row['themes_id'];
$sql = "UPDATE " . THEMES_TABLE . "
SET head_stylesheet = 'subSilver.css', body_background = '', body_bgcolor = 'E5E5E5', body_text = '000000', body_link = '006699', body_vlink = '5493B4', body_alink = '', body_hlink = 'DD6900', tr_color1 = 'EFEFEF', tr_color2 = 'DEE3E7', tr_color3 = 'D1D7DC', tr_class1 = '', tr_class2 = '', tr_class3 = '', th_color1 = '98AAB1', th_color2 = '006699', th_color3 = 'FFFFFF', th_class1 = 'cellpic1.gif', th_class2 = 'cellpic3.gif', th_class3 = 'cellpic2.jpg', td_color1 = 'FAFAFA', td_color2 = 'FFFFFF', td_color3 = '', td_class1 = 'row1', td_class2 = 'row2', td_class3 = '', fontface1 = 'Verdana, Arial, Helvetica, sans-serif', fontface2 = 'Trebuchet MS', fontface3 = 'Courier, ''Courier New'', sans-serif', fontsize1 = 10, fontsize2 = 11, fontsize3 = 12, fontcolor1 = '444444', fontcolor2 = '006600', fontcolor3 = 'FFA34F', span_class1 = '', span_class2 = '', span_class3 = ''
WHERE themes_id = $theme_id";
_sql($sql, $errored, $error_ary);
$sql = "DELETE FROM " . THEMES_NAME_TABLE . "
WHERE themes_id = $theme_id";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . THEMES_NAME_TABLE . " (themes_id, tr_color1_name, tr_color2_name, tr_color3_name, tr_class1_name, tr_class2_name, tr_class3_name, th_color1_name, th_color2_name, th_color3_name, th_class1_name, th_class2_name, th_class3_name, td_color1_name, td_color2_name, td_color3_name, td_class1_name, td_class2_name, td_class3_name, fontface1_name, fontface2_name, fontface3_name, fontsize1_name, fontsize2_name, fontsize3_name, fontcolor1_name, fontcolor2_name, fontcolor3_name, span_class1_name, span_class2_name, span_class3_name)
VALUES ($theme_id, 'The lightest row colour', 'The medium row color', 'The darkest row colour', '', '', '', 'Border round the whole page', 'Outer table border', 'Inner table border', 'Silver gradient picture', 'Blue gradient picture', 'Fade-out gradient on index', 'Background for quote boxes', 'All white areas', '', 'Background for topic posts', '2nd background for topic posts', '', 'Main fonts', 'Additional topic title font', 'Form fonts', 'Smallest font size', 'Medium font size', 'Normal font size (post body etc)', 'Quote & copyright text', 'Code text colour', 'Main table header text colour', '', '', '')";
_sql($sql, $errored, $error_ary);
}
$db->sql_freeresult($result);
$sql = "SELECT MIN(post_id) AS first_post_id, topic_id
FROM " . POSTS_TABLE . "
GROUP BY topic_id
ORDER BY topic_id ASC";
$result = _sql($sql, $errored, $error_ary);
if ($row = $db->sql_fetchrow($result))
{
do
{
$sql = "UPDATE " . TOPICS_TABLE . "
SET topic_first_post_id = " . $row['first_post_id'] . "
WHERE topic_id = " . $row['topic_id'];
_sql($sql, $errored, $error_ary);
}
while ($row = $db->sql_fetchrow($result));
}
$db->sql_freeresult($result);
$sql = "SELECT DISTINCT u.user_id
FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa
WHERE aa.auth_mod = 1
AND ug.group_id = aa.group_id
AND u.user_id = ug.user_id
AND u.user_level <> " . ADMIN;
$result = _sql($sql, $errored, $error_ary);
$mod_user = array();
while ($row = $db->sql_fetchrow($result))
{
$mod_user[] = $row['user_id'];
}
$db->sql_freeresult($result);
if (count($mod_user))
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_level = " . MOD . "
WHERE user_id IN (" . implode(', ', $mod_user) . ")";
_sql($sql, $errored, $error_ary);
}
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('server_name', 'www.myserver.tld')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('script_path', '/phpBB2/')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('server_port', '80')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('record_online_users', '1')";
_sql($sql, $errored, $error_ary);
$sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
VALUES ('record_online_date', '" . time() . "')";
_sql($sql, $errored, $error_ary);
case 'RC-3':
case 'RC-4':
case '.0.0':
case '.0.1':
if (SQL_LAYER == 'postgresql')
{
$sql = "SELECT user_id, user_timezone_old
FROM " . USERS_TABLE;
$result = _sql($sql, $errored, $error_ary);
while ($row = $db->sql_fetchrow($result))
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_timezone = " . $row['user_timezone_old'] . "
WHERE user_id = " . $row['user_id'];
_sql($sql, $errored, $error_ary);
}
$db->sql_freeresult($result);
}
$sql = "SELECT topic_id, topic_moved_id
FROM " . TOPICS_TABLE . "
WHERE topic_moved_id <> 0
AND topic_status = " . TOPIC_MOVED;
$result = _sql($sql, $errored, $error_ary);
$topic_ary = array();
while ($row = $db->sql_fetchrow($result))
{
$topic_ary[$row['topic_id']] = $row['topic_moved_id'];
}
$db->sql_freeresult($result);
while (list($topic_id, $topic_moved_id) = each($topic_ary))
{
$sql = "SELECT MAX(post_id) AS last_post, MIN(post_id) AS first_post, COUNT(post_id) AS total_posts
FROM " . POSTS_TABLE . "
WHERE topic_id = $topic_moved_id";
$result = _sql($sql, $errored, $error_ary);
$sql = ($row = $db->sql_fetchrow($result)) ? "UPDATE " . TOPICS_TABLE . " SET topic_replies = " . ($row['total_posts'] - 1) . ", topic_first_post_id = " . $row['first_post'] . ", topic_last_post_id = " . $row['last_post'] . " WHERE topic_id = $topic_id" : "DELETE FROM " . TOPICS_TABLE . " WHERE topic_id = " . $row['topic_id'];
_sql($sql, $errored, $error_ary);
}
unset($sql);
sync('all forums');
case '.0.2':
case '.0.3':
// Topics will resync automatically
// Remove stop words from search match and search words
$dirname = 'language';
$dir = opendir($phpbb_root_path . $dirname);
while ($file = readdir($dir))
{
if (preg_match("#^lang_#i", $file) && !is_file($phpbb_root_path . $dirname . "/" . $file) && !is_link($phpbb_root_path . $dirname . "/" . $file) && file_exists($phpbb_root_path . $dirname . "/" . $file . '/search_stopwords.txt'))
{
$stopword_list = trim(preg_replace('#([\w\.\-_\+\'<27><>-<2D>\\\]+?)[ \n\r]*?(,|$)#', '\'\1\'\2', str_replace("'", "\'", implode(', ', file($phpbb_root_path . $dirname . "/" . $file . '/search_stopwords.txt')))));
$sql = "SELECT word_id
FROM " . SEARCH_WORD_TABLE . "
WHERE word_text IN ($stopword_list)";
$result = _sql($sql, $errored, $error_ary);
$word_id_sql = '';
if ($row = $db->sql_fetchrow($result))
{
do
{
$word_id_sql .= (($word_id_sql != '') ? ', ' : '') . $row['word_id'];
}
while ($row = $db->sql_fetchrow($result));
$sql = "DELETE FROM " . SEARCH_WORD_TABLE . "
WHERE word_id IN ($word_id_sql)";
_sql($sql, $errored, $error_ary);
$sql = "DELETE FROM " . SEARCH_MATCH_TABLE . "
WHERE word_id IN ($word_id_sql)";
_sql($sql, $errored, $error_ary);
}
$db->sql_freeresult($result);
}
}
closedir($dir);
// Mark common words ...
remove_common('global', 4/10);
// remove superfluous polls ... grab polls with topics then delete polls
// not in that list
$sql = "SELECT v.vote_id
FROM " . TOPICS_TABLE . " t, " . VOTE_DESC_TABLE . " v
WHERE v.topic_id = t.topic_id";
$result = _sql($sql, $errored, $error_ary);
$vote_id_sql = '';
if ($row = $db->sql_fetchrow($result))
{
do
{
$vote_id_sql .= (($vote_id_sql != '') ? ', ' : '') . $row['vote_id'];
}
while ($row = $db->sql_fetchrow($result));
$sql = "DELETE FROM " . VOTE_DESC_TABLE . "
WHERE vote_id NOT IN ($vote_id_sql)";
_sql($sql, $errored, $error_ary);
$sql = "DELETE FROM " . VOTE_RESULTS_TABLE . "
WHERE vote_id NOT IN ($vote_id_sql)";
_sql($sql, $errored, $error_ary);
$sql = "DELETE FROM " . VOTE_USERS_TABLE . "
WHERE vote_id NOT IN ($vote_id_sql)";
_sql($sql, $errored, $error_ary);
}
$db->sql_freeresult($result);
// update pm counters
$sql = "SELECT privmsgs_to_userid, COUNT(privmsgs_id) AS unread_count
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . "
GROUP BY privmsgs_to_userid";
$result = _sql($sql, $errored, $error_ary);
if ($row = $db->sql_fetchrow($result))
{
$update_users = array();
do
{
$update_users[$row['unread_count']][] = $row['privmsgs_to_userid'];
}
while ($row = $db->sql_fetchrow($result));
while (list($num, $user_ary) = each($update_users))
{
$user_ids = implode(', ', $user_ary);
$sql = "UPDATE " . USERS_TABLE . "
SET user_unread_privmsg = $num
WHERE user_id IN ($user_ids)";
_sql($sql, $errored, $error_ary);
}
unset($update_list);
}
$db->sql_freeresult($result);
$sql = "SELECT privmsgs_to_userid, COUNT(privmsgs_id) AS new_count
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
GROUP BY privmsgs_to_userid";
$result = _sql($sql, $errored, $error_ary);
if ($row = $db->sql_fetchrow($result))
{
$update_users = array();
do
{
$update_users[$row['new_count']][] = $row['privmsgs_to_userid'];
}
while ($row = $db->sql_fetchrow($result));
while (list($num, $user_ary) = each($update_users))
{
$user_ids = implode(', ', $user_ary);
$sql = "UPDATE " . USERS_TABLE . "
SET user_new_privmsg = $num
WHERE user_id IN ($user_ids)";
_sql($sql, $errored, $error_ary);
}
unset($update_list);
}
$db->sql_freeresult($result);
// Remove superfluous watched topics
$sql = "SELECT t.topic_id
FROM " . TOPICS_TABLE . " t, " . TOPICS_WATCH_TABLE . " w
WHERE w.topic_id = t.topic_id";
$result = _sql($sql, $errored, $error_ary);
$topic_id_sql = '';
if ($row = $db->sql_fetchrow($result))
{
do
{
$topic_id_sql .= (($topic_id_sql != '') ? ', ' : '') . $row['topic_id'];
}
while ($row = $db->sql_fetchrow($result));
$sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
WHERE topic_id NOT IN ($topic_id_sql)";
_sql($sql, $errored, $error_ary);
}
$db->sql_freeresult($result);
// Reset any email addresses which are non-compliant ... something
// not done in the upgrade script and thus which may affect some
// mysql users
switch (SQL_LAYER)
{
case 'mysql':
$sql = "UPDATE " . USERS_TABLE . "
SET user_email = ''
WHERE user_email NOT REGEXP '^[a-zA-Z0-9_\+\.\-]+@.*[a-zA-Z0-9_\-]+\.[a-zA-Z]{2,}$'";
_sql($sql, $errored, $error_ary);
}
// Optimize/vacuum analyze the tables where appropriate
// this should be done for each version in future along with
// the version number update
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql = 'OPTIMIZE TABLE ' . $table_prefix . 'auth_access, ' . $table_prefix . 'banlist, ' . $table_prefix . 'categories, ' . $table_prefix . 'config, ' . $table_prefix . 'disallow, ' . $table_prefix . 'forum_prune, ' . $table_prefix . 'forums, ' . $table_prefix . 'groups, ' . $table_prefix . 'posts, ' . $table_prefix . 'posts_text, ' . $table_prefix . 'privmsgs, ' . $table_prefix . 'privmsgs_text, ' . $table_prefix . 'ranks, ' . $table_prefix . 'search_results, ' . $table_prefix . 'search_wordlist, ' . $table_prefix . 'search_wordmatch, ' . $table_prefix . 'smilies, ' . $table_prefix . 'themes, ' . $table_prefix . 'themes_name, ' . $table_prefix . 'topics, ' . $table_prefix . 'topics_watch, ' . $table_prefix . 'user_group, ' . $table_prefix . 'users, ' . $table_prefix . 'vote_desc, ' . $table_prefix . 'vote_results, ' . $table_prefix . 'vote_voters, ' . $table_prefix . 'words';
_sql($sql, $errored, $error_ary);
break;
case 'postgresql':
_sql("VACUUM ANALYZE", $errored, $error_ary);
break;
}
// Very last thing, update the version
$sql = "UPDATE " . CONFIG_TABLE . "
SET config_value = '$updates_to_version'
WHERE config_name = 'version'";
_sql($sql, $errored, $error_ary);
echo "</b> <b class=\"ok\">Done</b><br />Result &nbsp; :: \n";
if ($errored)
{
echo " <b>Some queries failed, the statements and errors are listing below</b>\n<ul>";
for ($i = 0; $i < count($error_ary['sql']); $i++)
{
echo "<li>Error :: <b>" . $error_ary['error_code'][$i]['message'] . "</b><br />";
echo "SQL &nbsp; :: <b>" . $error_ary['sql'][$i] . "</b><br /><br /></li>";
}
echo "</ul>\n<p>This is probably nothing to worry about, update will continue. Should this fail to complete you may need to seek help at our development board. See <a href=\"docs\README.html\">README</a> for details on how to obtain advice.</p>\n";
}
else
{
echo "<b>No errors</b>\n";
}
break;
default:
echo " No updates where required</b></p>\n";
break;
}
echo "<h2>Update completed</h2>\n";
echo "\n<p>You should now visit the General Configuration settings page in the <a href=\"../admin/\">Administration Panel</a> and check the General Configuration of the board. If you updated from versions prior to RC-3 you <b>must</b> update some entries. If you do not do this emails sent from the board will contain incorrect information. Don't forget to delete this file!</p>\n";
?>
<br clear="all" />
</body>
</html>

View File

@@ -59,7 +59,7 @@ include($phpbb_root_path . 'includes/db.'.$phpEx);
//
//
//
$updates_to_version = ".0.5";
$updates_to_version = '.0.24';
//
//
//
@@ -420,6 +420,8 @@ switch ($row['config_value'])
}
case '.0.2':
case '.0.3':
switch (SQL_LAYER)
@@ -463,7 +465,7 @@ switch ($row['config_value'])
AS SELECT group_id, group_name, group_type, group_description, group_moderator, group_single_user
FROM " . GROUPS_TABLE;
$sql[] = "DROP TABLE " . GROUPS_TABLE;
$sql[] = "CREATE TABLE phpbb_groups (group_id int DEFAULT nextval('" . GROUPS_TABLE . "_id_seq'::text) NOT NULL, group_name varchar(40) NOT NULL, group_type int2 DEFAULT '1' NOT NULL, group_description varchar(255) NOT NULL, group_moderator int4 DEFAULT '0' NOT NULL, group_single_user int2 DEFAULT '0' NOT NULL, CONSTRAINT phpbb_groups_pkey PRIMARY KEY (group_id))";
$sql[] = "CREATE TABLE {$table_prefix}groups (group_id int DEFAULT nextval('" . GROUPS_TABLE . "_id_seq'::text) NOT NULL, group_name varchar(40) NOT NULL, group_type int2 DEFAULT '1' NOT NULL, group_description varchar(255) NOT NULL, group_moderator int4 DEFAULT '0' NOT NULL, group_single_user int2 DEFAULT '0' NOT NULL, CONSTRAINT {$table_prefix}groups_pkey PRIMARY KEY (group_id))";
$sql[] = "INSERT INTO " . GROUPS_TABLE . " (group_id, group_name, group_type, group_description, group_moderator, group_single_user)
SELECT group_id, group_name, group_type, group_description, group_moderator, group_single_user
FROM tmp_" . GROUPS_TABLE;
@@ -499,7 +501,7 @@ switch ($row['config_value'])
case 'mssql':
case 'mssql-odbc':
$sql[] = 'CREATE TABLE [' . $table_prefix . 'confirm] ([confirm_id] [char] (32) NOT NULL , [session_id] [char] (32) NOT NULL , [code] [char] (6) NOT NULL ) ON [PRIMARY]';
$sql[] = 'ALTER TABLE [' . $table_prefix . 'confirm] WITH NOCHECK ADD CONSTRAINT [PK_' . $table_prefix . 'confirm] PRIMARY KEY CLUSTERED ( [session_id,confirm_id]) ON [PRIMARY]';
$sql[] = 'ALTER TABLE [' . $table_prefix . 'confirm] WITH NOCHECK ADD CONSTRAINT [PK_' . $table_prefix . 'confirm] PRIMARY KEY CLUSTERED ( [session_id],[confirm_id]) ON [PRIMARY]';
$sql[] = 'ALTER TABLE [' . $table_prefix . 'confirm] WITH NOCHECK ADD CONSTRAINT [DF_' . $table_prefix . 'confirm_confirm_id] DEFAULT (\'\') FOR [confirm_id], CONSTRAINT [DF_' . $table_prefix . 'confirm_session_id] DEFAULT (\'\') FOR [session_id], CONSTRAINT [DF_' . $table_prefix . 'confirm_code] DEFAULT (\'\') FOR [code]';
break;
@@ -509,11 +511,197 @@ switch ($row['config_value'])
break;
case 'postgresql':
$sql[] = 'CREATE TABLE ' . $table_prefix . 'confirm (confirm_id char(32) DEFAULT \'\' NOT NULL, session_id char(32) DEFAULT \'\' NOT NULL, code char(6) DEFAULT \'\' NOT NULL, CONSTRAINT phpbb_confirm_pkey PRIMARY KEY (session_id, confirm_id))';
$sql[] = 'CREATE TABLE ' . $table_prefix . 'confirm (confirm_id char(32) DEFAULT \'\' NOT NULL, session_id char(32) DEFAULT \'\' NOT NULL, code char(6) DEFAULT \'\' NOT NULL, CONSTRAINT {$table_prefix}confirm_pkey PRIMARY KEY (session_id, confirm_id))';
break;
}
case '.0.5':
case '.0.6':
case '.0.7':
case '.0.8':
case '.0.9':
case '.0.10':
case '.0.11':
case '.0.12':
case '.0.13':
case '.0.14':
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . "
ADD COLUMN session_admin tinyint(2) DEFAULT '0' NOT NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . "
ADD COLUMN session_admin int2";
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . "
ALTER COLUMN session_admin SET DEFAULT '0'";
break;
case 'mssql-odbc':
case 'mssql':
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . " ADD
session_admin smallint NOT NULL,
CONSTRAINT [DF_" . $table_prefix . "sessions_session_admin] DEFAULT (0) FOR [session_admin]";
break;
case 'msaccess':
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . " ADD
session_admin smallint NOT NULL";
break;
}
case '.0.15':
case '.0.16':
case '.0.17':
// Add tables for session keys
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql[] = 'CREATE TABLE ' . $table_prefix . 'sessions_keys (key_id varchar(32) DEFAULT \'0\' NOT NULL, user_id mediumint(8) DEFAULT \'0\' NOT NULL, last_ip varchar(8) DEFAULT \'0\' NOT NULL, last_login int(11) DEFAULT \'0\' NOT NULL, PRIMARY KEY (key_id, user_id), KEY last_login (last_login))';
break;
case 'mssql':
case 'mssql-odbc':
$sql[] = 'CREATE TABLE [' . $table_prefix . 'sessions_keys] ([key_id] [char] (32) NOT NULL , [user_id] [int] NOT NULL , [last_ip] [char] (8) NOT NULL , [last_login] [int] NOT NULL) ON [PRIMARY]';
$sql[] = 'CREATE INDEX [IX_' . $table_prefix . 'sessions_keys] ON [' . $table_prefix . 'sessions_keys]([key_id], [user_id]) ON [PRIMARY]';
$sql[] = 'CREATE INDEX [IX_' . $table_prefix . 'sessions_keys_1] ON [' . $table_prefix . 'sessions_keys]([last_login]) ON [PRIMARY]';
break;
case 'msaccess':
$sql[] = 'CREATE TABLE ' . $table_prefix . 'sessions_keys (key_id char(32) NOT NULL, user_id int NOT NULL, last_ip char(8) NOT NULL, last_login int NOT NULL)';
$sql[] = 'ALTER TABLE ' . $table_prefix . 'sessions_keys ADD PRIMARY KEY (key_id, user_id)';
break;
case 'postgresql':
$sql[] = 'CREATE TABLE ' . $table_prefix . 'sessions_keys (key_id char(32) DEFAULT \'0\' NOT NULL, user_id int4 DEFAULT \'0\' NOT NULL, last_ip char(8) DEFAULT \'0\' NOT NULL, last_login int4 DEFAULT \'0\' NOT NULL, CONSTRAINT ' . $table_prefix . 'sessions_keys_pkey PRIMARY KEY (key_id, user_id))';
$sql[] = 'CREATE INDEX last_login_' . $table_prefix . 'sessions_keys_index ON ' . $table_prefix . 'sessions_keys (last_login)';
break;
}
case '.0.18':
// Add login columns to user table
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_login_tries smallint(5) UNSIGNED DEFAULT '0' NOT NULL";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_last_login_try int(11) DEFAULT '0' NOT NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_login_tries int2";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN user_login_tries SET DEFAULT '0'";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ADD COLUMN user_last_login_try int4";
$sql[] = "ALTER TABLE " . USERS_TABLE . "
ALTER COLUMN user_last_login_try SET DEFAULT '0'";
break;
case 'mssql-odbc':
case 'mssql':
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_login_tries smallint NOT NULL,
CONSTRAINT [DF_" . $table_prefix . "users_user_login_tries] DEFAULT (0) FOR [user_login_tries]";
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_last_login_try int NOT NULL,
CONSTRAINT [DF_" . $table_prefix . "users_user_last_login_try] DEFAULT (0) FOR [user_last_login_try]";
break;
case 'msaccess':
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_login_tries smallint NOT NULL";
$sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
user_last_login_try int NOT NULL";
break;
}
case '.0.19':
// Add search time to the search table
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . SEARCH_TABLE . "
ADD COLUMN search_time int(11) DEFAULT '0' NOT NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . SEARCH_TABLE . "
ADD COLUMN search_time int4";
$sql[] = "ALTER TABLE " . SEARCH_TABLE . "
ALTER COLUMN search_time SET DEFAULT '0'";
break;
case 'mssql-odbc':
case 'mssql':
$sql[] = "ALTER TABLE " . SEARCH_TABLE . " ADD
search_time int NOT NULL,
CONSTRAINT [DF_" . $table_prefix . "search_results_search_time] DEFAULT (0) FOR [search_time]";
break;
case 'msaccess':
$sql[] = "ALTER TABLE " . SEARCH_TABLE . " ADD
search_time int NOT NULL";
break;
}
break;
case '.0.21':
// MySQL only change
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql[] = 'ALTER TABLE ' . SEARCH_TABLE . '
MODIFY COLUMN search_array MEDIUMTEXT NOT NULL';
}
break;
case '.0.22':
case '.0.23':
switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . "
ADD COLUMN priv_session_id char(32) DEFAULT '' NOT NULL";
break;
case 'postgresql':
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . "
ADD COLUMN priv_session_id char(32)";
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . "
ALTER COLUMN priv_session_id SET DEFAULT ''";
break;
case 'mssql-odbc':
case 'mssql':
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . " ADD
priv_session_id char (32) NOT NULL";
break;
case 'msaccess':
$sql[] = "ALTER TABLE " . SESSIONS_TABLE . " ADD
priv_session_id char (32) NOT NULL";
break;
}
}
echo "<h2>Updating database schema</h2>\n";
@@ -716,7 +904,7 @@ switch ($row['config_value'])
if (preg_match("#^lang_#i", $file) && !is_file($phpbb_root_path . $dirname . "/" . $file) && !is_link($phpbb_root_path . $dirname . "/" . $file) && file_exists($phpbb_root_path . $dirname . "/" . $file . '/search_stopwords.txt'))
{
$stopword_list = trim(preg_replace('#([\w\.\-_\+\'±µ-ÿ\\\]+?)[ \n\r]*?(,|$)#', '\'\1\'\2', str_replace("'", "\'", implode(', ', file($phpbb_root_path . $dirname . "/" . $file . '/search_stopwords.txt')))));
$stopword_list = trim(preg_replace('#([\w\.\-_\+\'-\\\]+?)[ \n\r]*?(,|$)#', '\'\1\'\2', str_replace("'", "\'", implode(', ', file($phpbb_root_path . $dirname . "/" . $file . '/search_stopwords.txt')))));
$sql = "SELECT word_id
FROM " . SEARCH_WORD_TABLE . "
@@ -879,10 +1067,100 @@ switch ($row['config_value'])
VALUES ('sendmail_fix', '0')";
_sql($sql, $errored, $error_ary);
case '.0.5':
$sql = "SELECT user_id, username
FROM " . USERS_TABLE;
$result = _sql($sql, $errored, $error_ary);
while ($row = $db->sql_fetchrow($result))
{
if (!preg_match('#(&gt;)|(&lt;)|(&quot)|(&amp;)#', $row['username']))
{
if ($row['username'] != htmlspecialchars($row['username']))
{
$sql = "UPDATE " . USERS_TABLE . "
SET username = '" . str_replace("'", "''", htmlspecialchars($row['username'])) . "'
WHERE user_id = " . $row['user_id'];
_sql($sql, $errored, $error_ary);
}
}
}
$db->sql_freeresult($result);
case '.0.6':
case '.0.7':
case '.0.8':
case '.0.9':
case '.0.10':
case '.0.11':
case '.0.12':
case '.0.13':
case '.0.14':
$sql = 'UPDATE ' . USERS_TABLE . ' SET user_allowhtml = 1 WHERE user_id = ' . ANONYMOUS;
_sql($sql, $errored, $error_ary);
case '.0.15':
case '.0.16':
case '.0.17':
$sql = 'UPDATE ' . USERS_TABLE . ' SET user_active = 0 WHERE user_id = ' . ANONYMOUS;
_sql($sql, $errored, $error_ary);
$sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value)
VALUES ('allow_autologin', '1')";
_sql($sql, $errored, $error_ary);
$sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value)
VALUES ('max_autologin_time', '0')";
_sql($sql, $errored, $error_ary);
case '.0.18':
$sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value)
VALUES ('max_login_attempts', '5')";
_sql($sql, $errored, $error_ary);
$sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value)
VALUES ('login_reset_time', '30')";
_sql($sql, $errored, $error_ary);
case '.0.19':
$sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value)
VALUES ('search_flood_interval', '15')";
_sql($sql, $errored, $error_ary);
$sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value)
VALUES ('rand_seed', '0')";
_sql($sql, $errored, $error_ary);
case '.0.20':
$sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value)
VALUES ('search_min_chars', '3')";
_sql($sql, $errored, $error_ary);
// We reset those having autologin enabled and forcing the re-assignment of a session id
// since there have been changes to the way these are handled from previous versions
$sql = 'DELETE FROM ' . SESSIONS_TABLE;
_sql($sql, $errored, $error_ary);
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE;
_sql($sql, $errored, $error_ary);
break;
case '.0.21':
case '.0.22':
case '.0.23':
$sql = 'DELETE FROM ' . SESSIONS_TABLE;
_sql($sql, $errored, $error_ary);
break;
default:
echo " No updates where required</b></p>\n";
echo " No updates were required</b></p>\n";
break;
}
@@ -903,7 +1181,7 @@ switch (SQL_LAYER)
{
case 'mysql':
case 'mysql4':
$sql = 'OPTIMIZE TABLE ' . $table_prefix . 'auth_access, ' . $table_prefix . 'banlist, ' . $table_prefix . 'categories, ' . $table_prefix . 'config, ' . $table_prefix . 'disallow, ' . $table_prefix . 'forum_prune, ' . $table_prefix . 'forums, ' . $table_prefix . 'groups, ' . $table_prefix . 'posts, ' . $table_prefix . 'posts_text, ' . $table_prefix . 'privmsgs, ' . $table_prefix . 'privmsgs_text, ' . $table_prefix . 'ranks, ' . $table_prefix . 'search_results, ' . $table_prefix . 'search_wordlist, ' . $table_prefix . 'search_wordmatch, ' . $table_prefix . 'smilies, ' . $table_prefix . 'themes, ' . $table_prefix . 'themes_name, ' . $table_prefix . 'topics, ' . $table_prefix . 'topics_watch, ' . $table_prefix . 'user_group, ' . $table_prefix . 'users, ' . $table_prefix . 'vote_desc, ' . $table_prefix . 'vote_results, ' . $table_prefix . 'vote_voters, ' . $table_prefix . 'words';
$sql = 'OPTIMIZE TABLE ' . $table_prefix . 'auth_access, ' . $table_prefix . 'banlist, ' . $table_prefix . 'categories, ' . $table_prefix . 'config, ' . $table_prefix . 'disallow, ' . $table_prefix . 'forum_prune, ' . $table_prefix . 'forums, ' . $table_prefix . 'groups, ' . $table_prefix . 'posts, ' . $table_prefix . 'posts_text, ' . $table_prefix . 'privmsgs, ' . $table_prefix . 'privmsgs_text, ' . $table_prefix . 'ranks, ' . $table_prefix . 'search_results, ' . $table_prefix . 'search_wordlist, ' . $table_prefix . 'search_wordmatch, ' . $table_prefix . 'sessions_keys, ' . $table_prefix . 'smilies, ' . $table_prefix . 'themes, ' . $table_prefix . 'themes_name, ' . $table_prefix . 'topics, ' . $table_prefix . 'topics_watch, ' . $table_prefix . 'user_group, ' . $table_prefix . 'users, ' . $table_prefix . 'vote_desc, ' . $table_prefix . 'vote_results, ' . $table_prefix . 'vote_voters, ' . $table_prefix . 'words';
_sql($sql, $errored, $error_ary);
break;
@@ -932,6 +1210,7 @@ else
}
echo "<h2>Update completed</h2>\n";
echo "\n" . '<p style="color:red">Please make sure you have updated your board files too, this file is only updating your database.</p>';
echo "\n<p>You should now visit the General Configuration settings page in the <a href=\"../admin/\">Administration Panel</a> and check the General Configuration of the board. If you updated from versions prior to RC-3 you <b>must</b> update some entries. If you do not do this emails sent from the board will contain incorrect information. Don't forget to delete this file!</p>\n";
?>

View File

@@ -1,10 +0,0 @@
Subject: Llogari e re
Charset: iso-8859-1
P<EFBFBD>rsh<EFBFBD>ndetje,
Llogaria e "{USERNAME}" <20>sht<68> c'aktivizuar ose sapo krijuar; kontrolloni detajet mbi k<>t<EFBFBD> p<>rdorues dhe aktivizoni llogarin<69> duke klikuar lidhjen e m<>poshtme:
{U_ACTIVATE}
{EMAIL_SIG}

View File

@@ -1,12 +0,0 @@
Charset: iso-8859-1
Mesazhi i m<>posht<68>m <20>sht<68> d<>rguar nga nj<6E> administrator i "{SITENAME}". Nqs ky mesazh <20>sht<68> i pad<61>shiruesh<73>m, abuzues apo p<>rmban material t<> pahijsh<73>m ju lutem kontaktoni webmasterin tek adresa:
{BOARD_EMAIL}
Ju lutem p<>rfshini k<>t<EFBFBD> mesazh (sidomos detajet e serverit).
Mesazhi i d<>rguar vazhdon:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{MESSAGE}

View File

@@ -1,8 +0,0 @@
Subject: Llogaria u aktivizia
Charset: iso-8859-1
P<EFBFBD>rsh<EFBFBD>ndetje {USERNAME},
Llogaria juaj tek "{SITENAME}" u aktivizua, ju mund t<> identifikoheni tashti duke p<>rdorur emrin dhe fjal<61>kalimin q<> mor<6F>t n<> mesazhin e m<>parsh<73>m.
{EMAIL_SIG}

View File

@@ -1,19 +0,0 @@
Subject: Mirsevini tek forumi i {SITENAME}
Charset: iso-8859-1
{WELCOME_MSG}
Ju lutem ruajeni k<>t<EFBFBD> mesazh p<>r referenc<6E>. Informacioni mbi llogarin<69> tuaj <20>sht<68> si m<> posht<68>:
----------------------------
Identifikimi: {USERNAME}
Fjal<EFBFBD>kalimi: {PASSWORD}
----------------------------
Llogaria juaj <20>sht<68> e <20>'aktivizuar tashti p<>r tashti, administratori duhet ta aprovoj<6F> p<>rpara se t<> keni mund<6E>si t<> identifikoheni. Kur llogaria juaj t<> aprovohet do merrni nj<6E> mesazh t<> ri.
Ju lutem mos harroni fjal<61>kalimin sepse ai ruhet i shifruar n<> regjistrin ton<6F> dhe ne nuk mund ta deshifrojm<6A>. Megjithat<61> nqs harroni fjal<61>kalimin ju mund t<> k<>rkoni nj<6E> t<> ri i cili duhet aktivizuar n<> t<> nj<6E>jt<6A>n m<>nyr<79>.
Ju fal<61>nderojm<6A> p<>r regjistrimin.
{EMAIL_SIG}

View File

@@ -1,53 +0,0 @@
Subject: Mirsevini tek forumi i {SITENAME}
Charset: iso-8859-1
{WELCOME_MSG}
In compliance with the COPPA act your account is currently inactive.
Please print this message out and have your parent or guardian sign and date it. Then fax it to:
{FAX_INFO}
OR mail it to:
{MAIL_INFO}
------------------------------ CUT HERE ------------------------------
Permission to Participate at {SITENAME}
Username: {USERNAME}
Password: {PASSWORD}
Email: {EMAIL_ADDRESS}
ICQ Number: {ICQ}
AIM Address: {AIM}
MSN Messenger: {MSN}
Yahoo Messenger: {YIM}
Web Site: {WEB_SITE}
From: {FROM}
Occupation: {OCC}
Interests: {INTERESTS}
I HAVE REVIEWED THE INFORMATION PROVIDED BY MY CHILD AND HEREBY GRANT PERMISSION TO {SITENAME} TO STORE THIS INFORMATION.
I UNDERSTAND THIS INFORMATION CAN BE CHANGED AT ANY TIME BY ENTERING A PASSWORD.
I UNDERSTAND THAT I MAY REQUEST FOR THIS INFORMATION TO BE REMOVED FROM {SITENAME} AT ANY TIME.
Parent or Guardian
(print your name here): _____________________
(sign here): __________________
Date: _______________
------------------------------ CUT HERE ------------------------------
Once the administrator has recived the above form via fax or regular mail your account will be activated.
Please do not forget your password as it has been encrypted in our database and we cannot retrieve it for you. However, should you forget your password you can request a new one which will be activated in the same way as this account.
Thank you for registering.
{EMAIL_SIG}

View File

@@ -1,12 +0,0 @@
Subject: Jeni an<61>tar i k<>tij grupi tashm<68>
Charset: iso-8859-1
Urime,
Ju jeni pranuar tek grupi "{GROUP_NAME}" n<> {SITENAME}.
Ky veprim u b<> nga moderatori i grupit ose administratori i forumit, kontaktoni ata p<>r m<> shum<75> informacion.
Ju mund t<> shikoni an<61>tar<61>sit<69> tuaja k<>tu:
{U_GROUPCP}
{EMAIL_SIG}

View File

@@ -1,11 +0,0 @@
Subject: K<>rkesa juaj u aprovua
Charset: iso-8859-1
Urime,
K<EFBFBD>rkesa juaj p<>r an<61>tar<61>sim tek grupi "{GROUP_NAME}" tek {SITENAME} u aprovua.
Ju mund t<> shikoni an<61>tar<61>sit<69> tuaja k<>tu:
{U_GROUPCP}
{EMAIL_SIG}

View File

@@ -1,11 +0,0 @@
Subject: Dikush ka b<>r<EFBFBD> k<>rkes<65> p<>r an<61>tar<61>sim tek grupi juaj
Charset: iso-8859-1
I nderuar {GROUP_MODERATOR},
Nj<EFBFBD> an<61>tar ka k<>rkuar t<> an<61>tar<61>sohet tek nj<6E> nga grupet q<> moderoni tek {SITENAME}.
P<EFBFBD>r ta aprovuar ose mosaprovuar k<>t<EFBFBD> k<>rkes<65> kliko:
{U_GROUPCP}
{EMAIL_SIG}

View File

@@ -1,12 +0,0 @@
Subject: Sapo keni marr<72> mesazh privat t<> ri
Charset: iso-8859-1
P<EFBFBD>rsh<EFBFBD>ndetje {USERNAME},
Ju sapo keni marr<72> nj<6E> mesazh t<> ri privat n<> llogarin<69> tuaj tek "{SITENAME}" dhe keni k<>rkuar tu informojm<6A> sa her<65> q<> kjo ndodh. Klikoni k<>tu p<>r ta par<61> mesazhin e ri:
{U_INBOX}
Kini parasysh q<> gjithmon<6F> mund t<> zgjidhni q<> t<> mos njoftoheni p<>r mesazhe t<> reja duke ndryshuar vetit<69> e duhura tek profili juaj.
{EMAIL_SIG}

View File

@@ -1,15 +0,0 @@
Charset: iso-8859-1
P<EFBFBD>rsh<EFBFBD>ndetje {TO_USERNAME},
Mesazhi i m<>posht<68>m u d<>rgua p<>r ju nga {FROM_USERNAME} n<>p<EFBFBD>rmjet llogaris<69> tuaj tek {SITENAME}. Nqs ky mesazh <20>sht<68> i pad<61>shiruesh<73>m, abuzues apo p<>rmban material t<> pahijsh<73>m ju lutem kontaktoni webmasterin tek adresa:
{BOARD_EMAIL}
Ju lutem p<>rfshini k<>t<EFBFBD> mesazh (sidomos detajet e serverit). Ju lutem njoftoni q<> adresa nga u d<>rgua ky mesazh <20>sht<68> ajo e {FROM_USERNAME}.
Mesazhi i d<>rguar vazhdon:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
{MESSAGE}

View File

@@ -1,14 +0,0 @@
Subject: P<>rgjigje tek tema - {TOPIC_TITLE}
Charset: iso-8859-1
P<EFBFBD>rsh<EFBFBD>ndetje {USERNAME},
Ju po merrni k<>t<EFBFBD> mesazh sepse jeni duke v<>zhguar tem<65>n "{TOPIC_TITLE}" tek {SITENAME}. Kjo tem<65> ka pasur t<> pakt<6B>n nj<6E> p<>rgjigje q<> nga vizita juaj e fundit. Ju mund t<> p<>rdorni lidhjen e m<>poshtme p<>r t<> par<61> k<>to p<>rgjigje; nuk do ju d<>rgohen lajm<6A>rime t<> tjera deri sa ta vizitoni tem<65>n.
{U_TOPIC}
Nqs nuk d<>shironi m<> ta v<>zhgoni k<>t<EFBFBD> tem<65> ose klikoni lidhjen "Ndalo s<> v<>zhguari k<>t<EFBFBD> tem<65>", ose klikoni lidhjen e m<>poshtme:
{U_STOP_WATCHING_TOPIC}
{EMAIL_SIG}

View File

@@ -1,10 +0,0 @@
Subject: Riaktivizoni llogarin<69> tuaj
Charset: iso-8859-1
P<EFBFBD>rsh<EFBFBD>ndetje {USERNAME},
Llogaria juaj tek "{SITENAME}" <20>sht<68> c'aktivizuar, ka shum<75> mund<6E>si p<>r shkak t<> ndryshimeve n<> profilin tuaj. Klikoni n<> lidhjen e m<>poshtme p<>r ta riaktivizuar:
{U_ACTIVATE}
{EMAIL_SIG}

View File

@@ -1,18 +0,0 @@
Subject: Aktivizoni fjal<61>kalimin e ri
Charset: iso-8859-1
P<EFBFBD>rsh<EFBFBD>ndetje {USERNAME}
Po e merrni k<>t<EFBFBD> mesazh sepse ju (ose dikush q<> pretendon t<> jet<65> ju) ka k<>rkuar nj<6E> fjal<61>kalim i ri p<>r llogarin<69> tuaj tek {SITENAME}. Nqs nuk ishit ju ai q<> k<>rkuat nj<6E> fjal<61>kalim t<> ri injorojeni k<>t<EFBFBD> mesazh. Nqs ky mesazh ju vjen n<> m<>nyr<79> t<> p<>rs<72>ritur kontaktoni administratorin e forumit.
P<EFBFBD>r t<> p<>rdorur fjal<61>kalimi e ri ju duhet ta aktivizoni duke klikuar m<> posht<68>:
{U_ACTIVATE}
Nqs kjo procedur<75> <20>sht<68> e sukseshme at<61>her<65> mund t<> identifikoheni duke p<>rdorur fjal<61>kalimin e m<>posht<68>m:
Fjal<EFBFBD>kalimi: {PASSWORD}
Ju mund ta ndryshoni k<>t<EFBFBD> fjal<61>kalim n<>p<EFBFBD>rmjet profilit tuaj. Nqs hasni ndonj<6E> problem kontaktoni administratorin e forumit.
{EMAIL_SIG}

View File

@@ -1,17 +0,0 @@
Subject: Mirsevini tek forumi i {SITENAME}
Charset: iso-8859-1
{WELCOME_MSG}
Ju lutem ruajeni k<>t<EFBFBD> mesazh p<>r referenc<6E>. Informacioni mbi llogarin<69> tuaj <20>sht<68> si m<> posht<68>:
----------------------------
Identifikimi: {USERNAME}
Fjal<EFBFBD>kalimi: {PASSWORD}
----------------------------
Ju lutem mos harroni fjal<61>kalimin sepse ai ruhet i shifruar n<> regjistrin ton<6F> dhe ne nuk mund ta deshifrojm<6A>. Megjithat<61> nqs harroni fjal<61>kalimin ju mund t<> k<>rkoni nj<6E> t<> ri i cili duhet aktivizuar n<> t<> nj<6E>jt<6A>n m<>nyr<79>.
Ju fal<61>nderojm<6A> p<>r regjistrimin.
{EMAIL_SIG}

View File

@@ -1,21 +0,0 @@
Subject: Mirsevini tek forumi i {SITENAME}
Charset: iso-8859-1
{WELCOME_MSG}
Ju lutem ruajeni k<>t<EFBFBD> mesazh p<>r referenc<6E>. Informacioni mbi llogarin<69> tuaj <20>sht<68> si m<> posht<68>:
----------------------------
Identifikimi: {USERNAME}
Fjal<EFBFBD>kalimi: {PASSWORD}
----------------------------
Llogaria juaj <20>sht<68> e <20>'aktivizuar tashti p<>r tashti. Ju nuk mund ta p<>rdorni derisa t<> vizitoni lidhjen e m<>poshtme:
{U_ACTIVATE}
Ju lutem mos harroni fjal<61>kalimin sepse ai ruhet i shifruar n<> regjistrin ton<6F> dhe ne nuk mund ta deshifrojm<6A>. Megjithat<61> nqs harroni fjal<61>kalimin ju mund t<> k<>rkoni nj<6E> t<> ri i cili duhet aktivizuar n<> t<> nj<6E>jt<6A>n m<>nyr<79>.
Ju fal<61>nderojm<6A> p<>r regjistrimin.
{EMAIL_SIG}

View File

@@ -1,10 +0,0 @@
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

View File

@@ -1,721 +0,0 @@
<?php
/***************************************************************************
* lang_admin.php [English]
* -------------------
* begin : Sat Dec 16 2000
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id$
*
****************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
//
// Format is same as lang_main
//
//
// Modules, this replaces the keys used
// in the modules[][] arrays in each module file
//
$lang['General'] = "Administrim i P<>rgjithsh<73>m";
$lang['Users'] = "Administrim i An<41>tar<61>ve";
$lang['Groups'] = "Administrim i Grupeve";
$lang['Forums'] = "Administrim i Forumeve";
$lang['Styles'] = "Administrim i Paraqitjes";
$lang['Configuration'] = "Konfigurimi";
$lang['Permissions'] = "Autorizimet";
$lang['Manage'] = "Menaxhimi";
$lang['Disallow'] = "Mos lejo emrat";
$lang['Prune'] = "Shkurtimi";
$lang['Mass_Email'] = "Email Masiv";
$lang['Ranks'] = "Gradimi";
$lang['Smilies'] = "Figurinat";
$lang['Ban_Management'] = "P<EFBFBD>rjashtimet";
$lang['Word_Censor'] = "Fjal<EFBFBD>t e Censuruara";
$lang['Export'] = "Eksporto";
$lang['Create_new'] = "Krijo";
$lang['Add_new'] = "Shto";
$lang['Backup_DB'] = "Krijo nj<6E> kopje t<> Regjistrit";
$lang['Restore_DB'] = "Rivendos Regjistrin";
//
// Index
//
$lang['Admin'] = "Administrim";
$lang['Not_admin'] = "Ju nuk keni autorizim p<>r t<> modifikuar k<>t<EFBFBD> forum";
$lang['Welcome_phpBB'] = "Mir<EFBFBD>sevini tek phpBB";
$lang['Admin_intro'] = "Ju fal<61>nderojm<6A> q<> zgjodh<64>t phpBB p<>r forumin tuaj. Kjo faqe jep nj<6E> p<>rmbledhje t<> statistikave kryesore p<>r forumin tuaj. Kthehuni tek kjo faqe duke klikuar mbi butonin <u>Indeksi i Administrimit</u> n<> an<61>n e majt<6A> t<> faqes. Klikoni ikon<6F>n e phpBB p<>r t<> shkuar tek indeksi kryesor i forumeve. Lidhjet e tjera n<> an<61>n e majte t<> faqes mund<6E>sojn<6A> kontrollin e plot<6F> t<> forumit dhe p<>rmbajn<6A> udh<64>zime mbi p<>rdorimin e cdo kontrolli.";
$lang['Main_index'] = "Indeksi i Forumit";
$lang['Forum_stats'] = "Statistikat e Forumit";
$lang['Admin_Index'] = "Indeksi i Administrimit";
$lang['Preview_forum'] = "Shqyrto Forumin";
$lang['Click_return_admin_index'] = "Kliko %sk<73>tu%s p<>r t<> shkuar tek indeksi i administrimit";
$lang['Statistic'] = "Statistika";
$lang['Value'] = "Vlera";
$lang['Number_posts'] = "Numri i postimeve";
$lang['Posts_per_day'] = "Postime n<> dit<69>";
$lang['Number_topics'] = "Numri i temave";
$lang['Topics_per_day'] = "Tema n<> dit<69>";
$lang['Number_users'] = "Numri i an<61>tar<61>ve";
$lang['Users_per_day'] = "An<EFBFBD>tar<EFBFBD> n<> dit<69>";
$lang['Board_started'] = "Forumi filloi";
$lang['Avatar_dir_size'] = "Madh<EFBFBD>sia e direktoris<69> s<> fotos personale";
$lang['Database_size'] = "Madh<EFBFBD>sia e regjistrit";
$lang['Gzip_compression'] ="Kompresimi me Gzip";
$lang['Not_available'] = "Nuk ofrohet";
$lang['ON'] = "Aktiv"; // This is for GZip compression
$lang['OFF'] = "Jo-aktiv";
//
// DB Utils
//
$lang['Database_Utilities'] = "Vegla t<> dobishme p<>r p<>rpunimin e regjistrit";
$lang['Restore'] = "Rivendos";
$lang['Backup'] = "Krijo kopje";
$lang['Restore_explain'] = "Ky veprim do kryej<65> nj<6E> rivendosje t<> plot<6F> t<> t<> gjitha tabelave t<> phpBB nga nj<6E> skedar. Nqs serveri juaj e lejon, ju mund t<> ngarkoni nj<6E> skedar t<> kompresuar me gzip. <b>KUJDES</b> Ky veprim do rishkruaj<61> t<> gjitha t<> dh<64>nat e forumit. Procesi i rivendosjes mund t<> k<>rkoj<6F> shum<75> koh<6F>, ju lutem mos ikni nga kjo faqe deri n<> p<>rfundim t<> procesit!";
$lang['Backup_explain'] = "K<EFBFBD>tu mund t<> krijoni nj<6E> kopje t<> plot<6F> t<> phpBB. Nqs keni tabela speciale n<> t<> nj<6E>jtin regjist<73>r me phpBB dhe doni ti kopjoni n<> t<> nj<6E>jtin skedar, specifikoni emrat e tyre duke i ndar<61> me presje tek kutia e Tabelave Shtes<65>. Nqs serveri juaj e lejon, ju mund t<> kompresoni skedarin me gzip para se ta shkarkoni.";
$lang['Backup_options'] = "Mund<EFBFBD>sit<EFBFBD> p<>r Kopjen";
$lang['Start_backup'] = "Fillo kopjimin";
$lang['Full_backup'] = "Kopjim i plot<6F>";
$lang['Structure_backup'] = "Vet<EFBFBD>m - Kopjim i struktur<75>s";
$lang['Data_backup'] = "Vet<EFBFBD>m - Kopjim i t<> dh<64>nave";
$lang['Additional_tables'] = "Tabela Shtes<65>";
$lang['Gzip_compress'] = "Kompreso skedarin me gzip";
$lang['Select_file'] = "Zgjidh nj<6E> skedar";
$lang['Start_Restore'] = "Fillo rivendosjen";
$lang['Restore_success'] = "Regjistri u rivendos n<> m<>nyr<79> t<> suksesshme.<br /><br />Forumi juaj duhet t<> kthehet n<> gjendjen q<> kishte kur u kopjua.";
$lang['Backup_download'] = "Shkarkimi do filloje s<> shpejti, prisni deri sa t<> filloj<6F>";
$lang['Backups_not_supported'] = "Na vjen keq, por kopjimi nuk mb<6D>shtetet p<>r k<>t<EFBFBD> lloj regjistri";
$lang['Restore_Error_uploading'] = "Problem me ngarkimin e skedarit (kopja e regjistrit)";
$lang['Restore_Error_filename'] = "Problem me emrin e skedarit, provo nj<6E> skedar tjet<65>r";
$lang['Restore_Error_decompress'] = "Nuk dekompreson dot skedarin me gzip, ngarkoni nj<6E> text-file";
$lang['Restore_Error_no_file'] = "Asnj<EFBFBD> skedar nuk u ngarkua";
//
// Auth pages
//
$lang['Select_a_User'] = "Zgjidh nj<6E> an<61>tar";
$lang['Select_a_Group'] = "Zgjidh nj<6E> grup";
$lang['Select_a_Forum'] = "Zgjidh nj<6E> forum";
$lang['Auth_Control_User'] = "Kontrolli i autorizimeve personale";
$lang['Auth_Control_Group'] = "Kontrolli i autorizimeve t<> grupeve";
$lang['Auth_Control_Forum'] = "Kontrolli i autorizimeve p<>r forumet";
$lang['Look_up_User'] = "Analizo an<61>tarin";
$lang['Look_up_Group'] = "Analizo grupin";
$lang['Look_up_Forum'] = "Analizo forumin";
$lang['Group_auth_explain'] = "K<EFBFBD>tu mund t<> ndryshoni autorizimet dhe statusin e moderatorit q<> i jan<61> caktuar cdo grupi an<61>tar<61>sh. Kujdes, mos harroni q<> ndryshimi i autorizimeve p<>r grupin mund t<> mos ndikoj<6F> autorizimet personale, etj. Ju do paralajm<6A>roheni n<> k<>to raste.";
$lang['User_auth_explain'] = "K<EFBFBD>tu mund t<> ndryshoni autorizimet dhe statusin e moderatorit q<> i jan<61> caktuar cdo p<>rdoruesi. Kujdes, mos harroni q<> ndryshimi i autorizimeve p<>r p<>rdoruesin mund t<> mos ndikoj<6F> autorizimet p<>r grupin, etj. Ju do paralajm<6A>roheni n<> k<>to raste.";
$lang['Forum_auth_explain'] = "K<EFBFBD>tu mund t<> ndryshoni autorizimet p<>r cdo forum. Ka dy m<>nyra p<>r ta b<>r<EFBFBD> k<>t<EFBFBD>, m<>nyra e thjesht<68> dhe m<>nyra e avancuar. M<>nyra e avancuar ofron kontroll m<> t<> p<>rpikt<6B> p<>r cdo veprim. Mos harroni q<> ndryshimi i nivelit t<> autorizimit n<> nj<6E> forum do ndikoj<6F> p<>rdorimin e tij nga p<>rdorues<65>t e ndrysh<73>m.";
$lang['Simple_mode'] = "M<EFBFBD>nyra e thjesht<68>";
$lang['Advanced_mode'] = "M<EFBFBD>nyra e avancuar";
$lang['Moderator_status'] = "Status moderatori";
$lang['Allowed_Access'] = "Lejohet hyrja";
$lang['Disallowed_Access'] = "Ndalohet hyrja";
$lang['Is_Moderator'] = "Esht<EFBFBD> moderator";
$lang['Not_Moderator'] = "Nuk <20>sht<68> moderator";
$lang['Conflict_warning'] = "Paralajm<EFBFBD>rim: Konflikt n<> autorizim";
$lang['Conflict_access_userauth'] = "Ky p<>rdorues ka akoma te drejta p<>r hyrje n<> k<>t<EFBFBD> forum n<>p<EFBFBD>rmjet an<61>tar<61>sis<69> n<> grup. You duhet t<> ndryshoni autorizimet e grupit, ose ta hiqni k<>t<EFBFBD> p<>rdorues nga ky grup n<> m<>nyr<79> q<> ta ndaloni. Grupet q<> i japin t<> drejta (dhe forumet q<> ndikohen) jan<61> renditur m<> posht<68>.";
$lang['Conflict_mod_userauth'] = "Ky p<>rdorues ka akoma t<> drejta Moderatori p<>r k<>t<EFBFBD> forum n<>p<EFBFBD>rmjet an<61>tar<61>sis<69> n<> grup. You duhet t<> ndryshoni autorizimet e grupit, ose ta hiqni k<>t<EFBFBD> p<>rdorues nga ky grup n<> m<>nyr<79> q<> ta ndaloni. Grupet q<> i japin t<> drejta (dhe forumet q<> ndikohen) jan<61> renditur m<> posht<68>.";
$lang['Conflict_access_groupauth'] = "Ky p<>rdorues/<2F> kan<61> akoma te drejta p<>r hyrje n<> k<>t<EFBFBD> forum n<>p<EFBFBD>rmjet autorizimeve individuale. You duhet t<> ndryshoni autorizimet individuale q<> ta/i ndaloni. P<>rdorues<65>t me t<> drejta (dhe forumet q<> ndikohen) jan<61> renditur m<> posht<68>.";
$lang['Conflict_mod_groupauth'] = "Ky p<>rdorues ka akoma t<> drejta Moderatori p<>r k<>t<EFBFBD> forum n<>p<EFBFBD>rmjet autorizimeve personale. You duhet t<> ndryshoni autorizimet individuale q<> ta ndaloni. P<>rdorues<65>t me t<> drejta (dhe forumet q<> ndikohen) jan<61> renditur m<> posht<68>.";
$lang['Public'] = "Publik";
$lang['Private'] = "Privat";
$lang['Registered'] = "I regjistruar";
$lang['Administrators'] = "Administrator<EFBFBD>t";
$lang['Hidden'] = "I fshehur";
// These are displayed in the drop down boxes for advanced
// mode forum auth, try and keep them short!
$lang['Forum_ALL'] = "ALL";
$lang['Forum_REG'] = "REG";
$lang['Forum_PRIVATE'] = "PRIVATE";
$lang['Forum_MOD'] = "MOD";
$lang['Forum_ADMIN'] = "ADMIN";
$lang['View'] = "Shiko";
$lang['Read'] = "Lexo";
$lang['Post'] = "Shkruaj";
$lang['Reply'] = "P<EFBFBD>rgjigju";
$lang['Edit'] = "Modifiko";
$lang['Delete'] = "Fshi";
$lang['Sticky'] = "Ngjit<EFBFBD>s";
$lang['Announce'] = "Lajm<EFBFBD>ro";
$lang['Vote'] = "Voto";
$lang['Pollcreate'] = "Krijo votim";
$lang['Permissions'] = "Autorizimet";
$lang['Simple_Permission'] = "Autorizim i thjesht<68>suar";
$lang['User_Level'] = "Nivel p<>rdoruesi";
$lang['Auth_User'] = "P<EFBFBD>rdorues";
$lang['Auth_Admin'] = "Administrator";
$lang['Group_memberships'] = "An<EFBFBD>tar<EFBFBD>sia e grupit";
$lang['Usergroup_members'] = "Ky grup ka keta an<61>tar<61>";
$lang['Forum_auth_updated'] = "Autorizimet e forumit u ri-freskuan";
$lang['User_auth_updated'] = "Autorizimet e p<>rdoruesit u ri-freskuan";
$lang['Group_auth_updated'] = "Autorizimet e grupit u ri-freskuan";
$lang['Auth_updated'] = "Autorizimet u ri-freskuan";
$lang['Click_return_userauth'] = "Kliko %sketu%s p<>r ty kthyer tek Autorizimet e P<>rdoruesve";
$lang['Click_return_groupauth'] = "Kliko %sketu%s p<>r ty kthyer tek Autorizimet e Grupeve";
$lang['Click_return_forumauth'] = "Kliko %sketu%s p<>r ty kthyer tek Autorizimet e Forumeve";
//
// Banning
//
$lang['Ban_control'] = "Menaxhimi i p<>rjashtimeve";
$lang['Ban_explain'] = "K<EFBFBD>tu b<>het p<>rjashtimi i p<>rdoruesve/an<61>tar<61>ve. Kjo arrihet duke p<>rjashtuar nj<6E> an<61>tar specifik, nj<6E> IP/hostname ose grup IP/hostname, ose t<> dyja bashk<68>. K<>to metoda pengojn<6A> nj<6E> p<>rdorues madje dhe t<> shikojn<6A> faqen kryesore t<> forumit. Nqs doni t<> pengoni dik<69> t<> p<>rjashtuar m<> par<61> dhe q<> tenton t<> regjistrohet me nj<6E> em<65>r t<> ri, mund ta ndaloni at<61> duke p<>rjashtuar adres<65>n e email. Kini parasysh, p<>rjashtimi i email-it nuk pengon dik<69> q<> t<> shkruaj<61> apo shikoj<6F> forumin. P<>r k<>t<EFBFBD> p<>rdorni nj<6E> ose t<> dyja metodat e m<>sip<69>rme.";
$lang['Ban_explain_warn'] = "Kujdes, p<>rjashtimi i nj<6E> serie IP-sh p<>rjashton cdo IP midis fillimit dhe fundit t<> seris<69>. Nqs ju duhet t<> p<>rjashtoni nj<6E> seri, mundohuni ta minimizoni serin<69>. ";
$lang['Select_username'] = "Zgjidh identifikimin";
$lang['Select_ip'] = "Zgjidh IP";
$lang['Select_email'] = "Zgjidh adres<65>n e e-mail";
$lang['Ban_username'] = "P<EFBFBD>rjashto nj<6E> ose m<> shum<75> an<61>tar<61>";
$lang['Ban_username_explain'] = "P<EFBFBD>rjashtimi i nj<6E> ose m<> shum<75> an<61>tar<61>ve nj<6E>koh<6F>sisht <20>sht<68> i mundur me kombinimin e duhur t<> butonave";
$lang['Ban_IP'] = "P<EFBFBD>rjashto nj<6E> ose m<> shum<75> IP ose hostname";
$lang['IP_hostname'] = "IP ose hostnames";
$lang['Ban_IP_explain'] = "Per t<> specifikuar m<> shum<75> se nj<6E> IP ose hostname, ndajini me presje. To specify a range of IP addresses separate the start and end with a hyphen (-), to specify a wildcard use *";
$lang['Ban_email'] = "P<EFBFBD>jashto nj<6E> ose m<> shum<75> adresa e-mail";
$lang['Ban_email_explain'] = "Per t<> specifikuar m<> shum<75> se nj<6E> adres<65> e-maili, ndajini me presje. P<>r t<> specifikuar nj<6E> -wildcard username- p<>rdor *, p<>r shembull *@hotmail.com";
$lang['Unban_username'] = "Riprano nj<6E> ose m<> shum<75> an<61>tar<61>";
$lang['Unban_username_explain'] = "Ripranimi i nj<6E> ose m<> shum<75> an<61>tar<61>ve nj<6E>koh<6F>sisht <20>sht<68> i mundur me kombinimin e duhur t<> butonave";
$lang['Unban_IP'] = "Riprano nj<6E> ose m<> shum<75> IP";
$lang['Unban_IP_explain'] = "Ripranimi i nj<6E> ose m<> shum<75> IP nj<6E>koh<6F>sisht <20>sht<68> i mundur me kombinimin e duhur t<> butonave";
$lang['Unban_email'] = "Riprano nj<6E> ose m<> shum<75> adresa e-maili";
$lang['Unban_email_explain'] = "Ripranimi i nj<6E> ose m<> shum<75> adresave nj<6E>koh<6F>sisht <20>sht<68> i mundur me kombinimin e duhur t<> butonave";
$lang['No_banned_users'] = "Asnj<EFBFBD> an<61>tar i p<>rjashtuar";
$lang['No_banned_ip'] = "Asnj<EFBFBD> IP e p<>rjashtuar";
$lang['No_banned_email'] = "Asnj<EFBFBD> adres<65> e-maili e p<>rjashtuar";
$lang['Ban_update_sucessful'] = "Lista e p<>rjashtimeve u refreskua n<> m<>nyr<79> t<> suksesshme";
$lang['Click_return_banadmin'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek menaxhimi i p<>rjashtimeve";
//
// Configuration
//
$lang['General_Config'] = "Konfigurim i p<>rgjithsh<73>m";
$lang['Config_explain'] = "Formulari i m<>posht<68>m ju jep mund<6E>sine e konfigurimit t<> opsioneve t<> p<>rgjithshme. P<>r administrimin dhe konfigurimin e an<61>tar<61>ve dhe forumeve, p<>rdorni tabelat n<> krahun e majt<6A>.";
$lang['Click_return_config'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek konfigurimi i p<>rgjithsh<73>m";
$lang['General_settings'] = "Vetit<EFBFBD> e p<>rgjithshme t<> forumit(site)";
$lang['Server_name'] = "Domain Name";
$lang['Server_name_explain'] = "The domain name this board runs from";
$lang['Script_path'] = "Script path";
$lang['Script_path_explain'] = "The path where phpBB2 is located relative to the domain name";
$lang['Server_port'] = "Server Port";
$lang['Server_port_explain'] = "The port your server is running on, usually 80, only change if different";
$lang['Site_name'] = "Emri i websitit";
$lang['Site_desc'] = "P<EFBFBD>rshkrimi i websitit";
$lang['Board_disable'] = "Disaktivizoje websitin";
$lang['Board_disable_explain'] = "KUJDES!!!! Ky veprim do e b<>j<EFBFBD> forumin jofunksional. Nqs b<>ni logout pas disaktivizimit,nuk do keni mund<6E>si q<> t<> b<>ni login!";
$lang['Acct_activation'] = "Mund<EFBFBD>so aktivizimin e llogaris<69> nga";
$lang['Acc_None'] = "Askush"; // K<>to jan<61> 3 llojet e aktivizimit
$lang['Acc_User'] = "An<EFBFBD>tari";
$lang['Acc_Admin'] = "Administratori";
$lang['Abilities_settings'] = "Veti Elementare t<> An<41>tar<61>ve dhe Forumeve";
$lang['Max_poll_options'] = "Nr. maksimal i mund<6E>sive p<>r nj<6E> votim";
$lang['Flood_Interval'] = "Flood Interval";
$lang['Flood_Interval_explain'] = "Numri i sekondave q<> nj<6E> an<61>tar duhet t<> pres<65> midis postimeve";
$lang['Board_email_form'] = "P<EFBFBD>rdorimi p<>r e-mail";
$lang['Board_email_form_explain'] = "An<EFBFBD>tar<EFBFBD>t mund t<> d<>rgojn<6A> e-mail n<>p<EFBFBD>rmjet k<>tij serveri";
$lang['Topics_per_page'] = "Diskutime p<>r faqe";
$lang['Posts_per_page'] = "Poste p<>r faqe";
$lang['Hot_threshold'] = "Posts for Popular Threshold";
$lang['Default_style'] = "Paraqitja e paracaktuar";
$lang['Override_style'] = "Z<EFBFBD>vend<EFBFBD>so preferenc<6E>n e p<>rdoruesve?";
$lang['Override_style_explain'] = "Z<EFBFBD>vend<EFBFBD>son paraqitjen e preferuar t<> p<>rdoruesve me paraqitjen e paracaktuar";
$lang['Default_language'] = "Gjuha e paracaktuar";
$lang['Date_format'] = "Formatimi i Dat<61>s";
$lang['System_timezone'] = "Brezi orar i sistemit";
$lang['Enable_gzip'] = "Mund<EFBFBD>so kompresimin me GZip";
$lang['Enable_prune'] = "Mund<EFBFBD>so shkurtimin/shartimin e forumeve";
$lang['Allow_HTML'] = "Lejo HTML";
$lang['Allow_BBCode'] = "Lejo BBCode";
$lang['Allowed_tags'] = "Sh<EFBFBD>njat HTML t<> lejuara";
$lang['Allowed_tags_explain'] = "Ndaji sh<73>njat me presje";
$lang['Allow_smilies'] = "Lejo figurinat";
$lang['Smilies_path'] = "Shtegu i direktoris<69> s<> figurinave";
$lang['Smilies_path_explain'] = "Path under your phpBB root dir, e.g. images/smilies";
$lang['Allow_sig'] = "Lejo firmat";
$lang['Max_sig_length'] = "Madh<EFBFBD>sia maksimale e firmave";
$lang['Max_sig_length_explain'] = "Nr. maksimal i shkronjave t<> lejuara n<> nj<6E> firm<72>";
$lang['Allow_name_change'] = "Lejo nd<6E>rrimin e username";
$lang['Avatar_settings'] = "Vetit<EFBFBD> e Ikonave Personale";
$lang['Allow_local'] = "Mund<EFBFBD>so galerin<69> e ikonave personale";
$lang['Allow_remote'] = "Mund<EFBFBD>so ikona personale nga servera t<> tjer<65>";
$lang['Allow_remote_explain'] = "Ikona personale q<> ruhen n<> nj<6E> websit tjet<65>r";
$lang['Allow_upload'] = "Mund<EFBFBD>so ngarkimin e ikonave personale";
$lang['Max_filesize'] = "Madh<EFBFBD>sia maksimale e ikon<6F>s personale";
$lang['Max_filesize_explain'] = "Vet<EFBFBD>m p<>r ikonat e ngarkuara ne k<>t<EFBFBD> server";
$lang['Max_avatar_size'] = "Dimensionet maksimale t<> ikonave personale";
$lang['Max_avatar_size_explain'] = "(Gjat<61>si x Gjer<65>si n<> piksel)";
$lang['Avatar_storage_path'] = "Shtegu i magazinimit t<> ikonave personale";
$lang['Avatar_storage_path_explain'] = "Path under your phpBB root dir, e.g. images/avatars";
$lang['Avatar_gallery_path'] = "Shtegu i galeris<69> s<> ikonave personale";
$lang['Avatar_gallery_path_explain'] = "Path under your phpBB root dir for pre-loaded images, e.g. images/avatars/gallery";
$lang['COPPA_settings'] = "COPPA Settings";
$lang['COPPA_fax'] = "COPPA Fax Number";
$lang['COPPA_mail'] = "COPPA Mailing Address";
$lang['COPPA_mail_explain'] = "This is the mailing address where parents will send COPPA registration forms";
$lang['Email_settings'] = "Vetit<EFBFBD> e E-mail";
$lang['Admin_email'] = "Adresa e email t<> administratorit";
$lang['Email_sig'] = "Firma e email-it";
$lang['Email_sig_explain'] = "Kjo firm<72> do u bashkangjitet n<> fund t<> gjith<74> mesazheve t<> derguara nga ky server";
$lang['Use_SMTP'] = "P<EFBFBD>rdor server SMTP per d<>rgimin e email-ave";
$lang['Use_SMTP_explain'] = "P<EFBFBD>rcaktoje k<>t<EFBFBD> veti nqs doni/jeni i detyruar t<> mos p<>rdorni programin mail te serverit";
$lang['SMTP_server'] = "Adresa e serverit SMTP";
$lang['SMTP_username'] = "SMTP Username";
$lang['SMTP_username_explain'] = "Only enter a username if your smtp server requires it";
$lang['SMTP_password'] = "SMTP Password";
$lang['SMTP_password_explain'] = "Only enter a password if your smtp server requires it";
$lang['Disable_privmsg'] = "Private Messaging";
$lang['Inbox_limits'] = "Maksimumi i posteve n<> Inbox";
$lang['Sentbox_limits'] = "Maksimumi i posteve n<> Sentbox";
$lang['Savebox_limits'] = "Maksimumi i posteve n<> Savebox";
$lang['Cookie_settings'] = "Vetit<EFBFBD> e Cookie-s ";
$lang['Cookie_settings_explain'] = "K<EFBFBD>to t<> dh<64>na kontrollojn<6A> se si cooki i d<>rgohet browser-it. N<> shumic<69>n e rasteve, vlerat e paracaktuara jane t<> mjaftueshme. Nqs keni nevoj<6F> ti ndryshoni, kini kujdes se t<> dh<64>na jokorrekte krijojne probleme me indentifikimin e an<61>tar<61>ve.";
$lang['Cookie_name'] = "Emri i Cookie";
$lang['Cookie_domain'] = "Domain i Cookie";
$lang['Cookie_path'] = "Shtegu i Cookie";
$lang['Session_length'] = "Zgjatja e sesionit [ n<> sekonda ]";
$lang['Cookie_secure'] = "Cookie e sigurt<72> [ https ]";
$lang['Session_length'] = "Session length [ seconds ]";
//
// Forum Management
//
$lang['Forum_admin'] = "Administrim Forumi";
$lang['Forum_admin_explain'] = "Nga ky panel b<>het krijimi, fshirja, modifikimi, ri-renditja, dhe ri-sinkronizimi i kategorive dhe forumeve";
$lang['Edit_forum'] = "Modifiko forumin";
$lang['Create_forum'] = "Krijo forum";
$lang['Create_category'] = "Krijo kategori";
$lang['Remove'] = "Hiq";
$lang['Action'] = "Veprimi";
$lang['Update_order'] = "Rifresko renditjen";
$lang['Config_updated'] = "Rifreskimi i konfigurimit t<> forumit u b<> n<> m<>nyr<79> t<> suksesshme";
$lang['Edit'] = "Modifiko";
$lang['Delete'] = "Fshi";
$lang['Move_up'] = "L<EFBFBD>vize sip<69>r";
$lang['Move_down'] = "L<EFBFBD>vize posht<68>";
$lang['Resync'] = "Ri-sinkronizo";
$lang['No_mode'] = "No mode was set";
$lang['Forum_edit_delete_explain'] = "Formulari i m<>posht<68>m ju jep mund<6E>sine e konfigurimit t<> opsioneve t<> p<>rgjithshme. P<>r administrimin dhe konfigurimin e an<61>tar<61>ve dhe forumeve, p<>rdorni tabelat n<> krahun e majt<6A>.";
$lang['Move_contents'] = "Zhvendos gjith<74> p<>rmbajtjen";
$lang['Forum_delete'] = "Fshije k<>t<EFBFBD> forum";
$lang['Forum_delete_explain'] = "Formulari i m<>posht<68>m ju jep mund<6E>sine e fshirjes s<> nj<6E> forumi (apo kategorie) dhe ruajtjen e gjith<74> mesazheve (forumeve) q<> p<>rmban.";
$lang['Forum_settings'] = "Vetit<EFBFBD> e p<>rgjithshme t<> forumit";
$lang['Forum_name'] = "Emri i forumit";
$lang['Forum_desc'] = "P<EFBFBD>rshkrimi";
$lang['Forum_status'] = "Statusi i forumit";
$lang['Forum_pruning'] = "Auto-shkurtim";
$lang['prune_freq'] = 'Kontrollo vjet<65>rsin<69> e diskutimit cdo';
$lang['prune_days'] = "Hiq diskutimet ku nuk postohet prej";
$lang['Set_prune_data'] = "Ju zgjodh<64>t auto-shkurtim p<>r k<>t<EFBFBD> forum por nuk specifikuat nj<6E> frekuenc<6E> ose nr. e dit<69>ve p<>r shkurtim. Ju lutem shkoni mbrapsht dhe specifikoni k<>to veti.";
$lang['Move_and_Delete'] = "Zhvendos dhe Fshi";
$lang['Delete_all_posts'] = "Fshi gjith<74> postet";
$lang['Nowhere_to_move'] = "S'ke ku e con";
$lang['Edit_Category'] = "Modifiko kategorin<69>";
$lang['Edit_Category_explain'] = "P<EFBFBD>rdor k<>t<EFBFBD> formular p<>r nd<6E>rrimin e emrit t<> kategoris<69>";
$lang['Forums_updated'] = "Informacioni rreth forumit dhe kategoris<69> u freskua n<> menyr<79> t<> suksesshme";
$lang['Must_delete_forums'] = "Fshi gjith<74> forumet n<> k<>t<EFBFBD> kategori para se t<> fshish kategorin<69> vet<65>";
$lang['Click_return_forumadmin'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek administrimi i forumeve";
//
// Smiley Management
//
$lang['smiley_title'] = "Veg<EFBFBD>l p<>r menaxhimin e figurinave";
$lang['smile_desc'] = "Nga ky panel ju mund t<> shtoni, hiqni dhe editoni figurinat q<> mund t<> p<>rdoren nga p<>rdoruesit.";
$lang['smiley_config'] = "Konfigurimi i figurinave";
$lang['smiley_code'] = "Kodi i figurinave";
$lang['smiley_url'] = "Adresa e figurin<69>s";
$lang['smiley_emot'] = "Emocioni i figurin<69>s";
$lang['smile_add'] = "Shto nj<6E> figurin<69>";
$lang['Smile'] = "Figurina";
$lang['Emotion'] = "Emocioni";
$lang['Select_pak'] = "Zgjidh skedarin paket<65> (.pak)";
$lang['replace_existing'] = "Z<EFBFBD>vend<EFBFBD>so figurin<69>n egzistuese";
$lang['keep_existing'] = "Mbaje figurin<69>n egzistuese";
$lang['smiley_import_inst'] = "You duhet t<> dekompresoni skedarin me figurina dhe vendosni figurinat n<> direktorin<69> e duhur. Pastaj zgjidhni informacionin e duhur n<> k<>t<EFBFBD> formular q<> t<> importoni skedarin e figurinave (Smiley Pack)";
$lang['smiley_import'] = "Importo skedarin e figurinave (Smiley Pack)";
$lang['choose_smile_pak'] = "Zgjidh nj<6E> nga skedar<61>t e figurinave ( .pak)";
$lang['import'] = "Importo figurina";
$lang['smile_conflicts'] = "Cfar<EFBFBD> duhet b<>r<EFBFBD> n<> rast konflikti";
$lang['del_existing_smileys'] = "Fshi figurinat ekzistuese p<>rpara se t<> importosh";
$lang['import_smile_pack'] = "Importo skedarin e figurinave";
$lang['export_smile_pack'] = "Krijo nj<6E> skedar figurinash";
$lang['export_smiles'] = "P<EFBFBD>r t<> krijuar nj<6E> skedar figurinash prej figurinave ekzistuese, kliko %sk<73>tu%s p<>r t<> shkarkuar skedarin smiles.pak Ndryshojini emrin skedarin nqs doni, po mos i ndryshoni -file extension-. Pastaj krijoni nj<6E> skedar .zip q<> p<>rmban t<> gjitha imazhet e figurinave plus skedarin .pak.";
$lang['smiley_add_success'] = "Figurina u shtua n<> m<>nyr<79> t<> suksesshme.";
$lang['smiley_edit_success'] = "Figurina u ri-freskua n<> m<>nyr<79> t<> suksesshme.";
$lang['smiley_import_success'] = "Skedari i figurinave (Smiley Pack) u importua n<> m<>nyr<79> t<> suksesshme.";
$lang['smiley_del_success'] = "Figurina u hoq n<> m<>nyr<79> t<> suksesshme.";
$lang['Click_return_smileadmin'] = "Kliko %sk<73>tu%s p<>r ty kthyer tek Administrimi i Figurinave";
//
// User Management
//
$lang['User_admin'] = "Administrimi i An<41>tar<61>ve";
$lang['User_admin_explain'] = "K<EFBFBD>tu mund t<> ndryshoni informacionin mbi an<61>tar<61>t dhe disa opcione specifike. B<>ni modifikimin e autorizimeve me an<61> t<> panelit t<> p<>rshtatsh<73>m n<> krahun e majt<6A> t<> panelit.";
$lang['Look_up_user'] = "Analizo an<61>tarin";
$lang['Admin_user_fail'] = "Nuk u arrit t<> ri-freskohej profili i an<61>tarit.";
$lang['Admin_user_updated'] = "Profili i k<>tij an<61>tari u ri-freskua n<> m<>nyr<79> t<> suksesshme.";
$lang['Click_return_useradmin'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek Administrimi i An<41>tar<61>ve";
$lang['User_delete'] = "Fshije k<>t<EFBFBD> p<>rdorues";
$lang['User_delete_explain'] = "Kliko k<>tu p<>r ta fshir<69> k<>t<EFBFBD> an<61>tar, ky veprim <20>sht<68> i pakthyesh<73>m.";
$lang['User_deleted'] = "An<EFBFBD>tari u fshi n<> m<>nyr<79> t<> suksesshme.";
$lang['User_status'] = "An<EFBFBD>tari <20>sht<68> aktiv";
$lang['User_allowpm'] = "Mund t<> d<>rgoj<6F> Mesazhe Private";
$lang['User_allowavatar'] = "Mund t<> shfaq<61> ikon<6F>n personale";
$lang['Admin_avatar_explain'] = "K<EFBFBD>tu mund t<> shikoni dhe fshini ikon<6F>n aktuale personale t<> an<61>tarit.";
$lang['User_special'] = "Fusha speciale vet<65>m p<>r administrator<6F>t.";
$lang['User_special_explain'] = "K<EFBFBD>to fusha nuk mund t<> modifikohen nga an<61>tar<61>t. Ju mund t<> vendosni statusin dhe veti t<> tjera q<> nuk i jepen an<61>tar<61>ve.";
//
// Group Management
//
$lang['Group_administration'] = "Administrim i Grupeve";
$lang['Group_admin_explain'] = "Tek ky panel ju mund t<> administroni t<> gjith<74> grupet e p<>rdoruesve. Fshi, krijo dhe modifiko grupet ekzistuese. Zgjidh moderator<6F>t, hap/mbyll dhe vendos emrin dhe p<>rshkrimin e grupit.";
$lang['Error_updating_groups'] = "Pati nj<6E> problem gjat<61> ri-freskimit t<> grupeve";
$lang['Updated_group'] = "Grupi u ri-freskua me sukses";
$lang['Added_new_group'] = "Grupi u krijua me sukses";
$lang['Deleted_group'] = "Grupi u fshi me sukses";
$lang['New_group'] = "Krijo grup t<> ri";
$lang['Edit_group'] = "Modifiko grupin";
$lang['group_name'] = "Emri i grupit";
$lang['group_description'] = "P<EFBFBD>rshkrimi i grupit";
$lang['group_moderator'] = "Moderatori i grupit";
$lang['group_status'] = "Statusi i grupit";
$lang['group_open'] = "Grup i hapur";
$lang['group_closed'] = "Grup i mbyllur";
$lang['group_hidden'] = "Grup i fshehte";
$lang['group_delete'] = "Fshi grupin";
$lang['group_delete_check'] = "Fshi k<>t<EFBFBD> grup";
$lang['submit_group_changes'] = "Paraqit ndryshimet";
$lang['reset_group_changes'] = "Pastro ndryshimet";
$lang['No_group_name'] = "Specifiko emrin e k<>tij grupi";
$lang['No_group_moderator'] = "Specifiko moderatorin e k<>tij grupi";
$lang['No_group_mode'] = "Specifiko nj<6E> m<>nyr<79> p<>r k<>t<EFBFBD> grup, hapur ose mbyllur";
$lang['delete_group_moderator'] = "Fshi moderatorin e vjet<65>r t<> grupit?";
$lang['delete_moderator_explain'] = "Nqs jeni duke ndryshuar moderatorin e grupit, v<>r nj<6E> kryq tek kjo kuti p<>r t<> hequr moderatorin e vjet<65>r nga grupi. Ndryshe, l<>re bosh dhe moderatori i vjet<65>r do b<>het nj<6E> an<61>tar i thjesht<68> i grupit.";
$lang['Click_return_groupsadmin'] = "Kliko %sk<73>tu%s p<>r ty kthyer tek Administrimi i Grupeve";
$lang['Select_group'] = "Zgjidh nj<6E> grup";
$lang['Look_up_group'] = "Analizo nj<6E> grup";
//
// Prune Administration
//
$lang['Forum_Prune'] = "Shkurto forumin";
$lang['Forum_Prune_explain'] = "Ky veprim do fshij<69> cdo tem<65> ku nuk <20>sht<68> postuar br<62>nda afatit q<> ju keni p<>rcaktuar. Nqs nuk p<>rcaktoni nj<6E> num<75>r, at<61>her<65> gjith<74> temat do fshihen. Megjithat<61>, temat ku ka votime t<> hapura dhe lajm<6A>rimet duhen fshir<69> mekanikisht.";
$lang['Do_Prune'] = "B<EFBFBD>je shkurtimin";
$lang['All_Forums'] = "Gjith<EFBFBD> forumet";
$lang['Prune_topics_not_posted'] = "Shkurto temat pa pergjigje br<62>nda";
$lang['Topics_pruned'] = "Temat e shkurtuara";
$lang['Posts_pruned'] = "Mesazhet e shkurtuara";
$lang['Prune_success'] = "Shkurtimi i forumeve u b<> me sukses";
//
// Word censor
//
$lang['Words_title'] = "Censurimi i fjal<61>ve";
$lang['Words_explain'] = "Nga ky panel ju mund t<> shtoni, modifikoni, dhe hiqni fjal<61> q<> do censurohen automatikisht. Gjithashtu, emrat e an<61>tar<61>ve nuk do mund t<> p<>rmbajn<6A> fjal<61> t<> tilla. Wildcards (*) are accepted in the word field, eg. *test* will match detestable, test* would match testing, *test would match detest.";
$lang['Word'] = "Fjal<EFBFBD>";
$lang['Edit_word_censor'] = "Modifiko censur<75>n";
$lang['Replacement'] = "Z<EFBFBD>vend<EFBFBD>simi";
$lang['Add_new_word'] = "Shto nj<6E> fjal<61>";
$lang['Update_word'] = "Ri-fresko censur<75>n";
$lang['Must_enter_word'] = "You duhet t<> specifikoni nj<6E> fjal<61> dhe z<>vend<6E>simin e saj";
$lang['No_word_selected'] = "Asnj<EFBFBD> fjal<61> nuk <20>sht<68> zgjedhur p<>r modifikim";
$lang['Word_updated'] = "Censura e zgjedhur u ri-freskua me sukses";
$lang['Word_added'] = "Censura u shtua me sukses";
$lang['Word_removed'] = "Censura e zgjedhur u hoq me sukses";
$lang['Click_return_wordadmin'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek Administrimi i Censur<75>s";
//
// Mass Email
//
$lang['Mass_email_explain'] = "Nga ky panel ju mund t<> d<>rgoni nj<6E> e-mail tek t<> gjith<74> an<61>tar<61>t e forumit, ose nje grupi specifik. P<>r t<> kryer k<>t<EFBFBD>, nj<6E> e-mail do i d<>rgohet adres<65>s administrative t<> specifikuar, dhe nj<6E> kopje karboni do u d<>rgohet gjith<74> marr<72>sve. Kini parasysh se nqs i d<>rgoni e-mail nje grupi t<> madh personash, ky proces do koh<6F>, k<>shtu q<> prisni deri sa t<> njoftoheni se procesi mbaroi.";
$lang['Compose'] = "Harto";
$lang['Recipients'] = "Marr<EFBFBD>sit";
$lang['All_users'] = "T<EFBFBD> gjith<74> an<61>tar<61>t";
$lang['Email_successfull'] = "Mesazhi u d<>rgua";
$lang['Click_return_massemail'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek paneli i E-mail n<> Mas<61>";
//
// Ranks admin
//
$lang['Ranks_title'] = "Administrimi i Gradave";
$lang['Ranks_explain'] = "Ky formular mund<6E>son shtimin, modifikimin dhe fshirjen e gradave. Gjithashtu, ju mund t<> krijoni grada t<> personalizuara t<> cilat i aplikohen p<>rdoruesve n<>p<EFBFBD>rmjet panelit t<> administrimit t<> p<>rdoruesve.";
$lang['Add_new_rank'] = "Shto nj<6E> grad<61>";
$lang['Rank_title'] = "Titulli i grad<61>s";
$lang['Rank_special'] = "Cakto si grad<61> speciale";
$lang['Rank_minimum'] = "Minimumi i mesazheve";
$lang['Rank_maximum'] = "Maksimumi i mesazheve";
$lang['Rank_image'] = "Ikona e grad<61>s";
$lang['Rank_image_explain'] = "P<EFBFBD>rdore k<>t<EFBFBD> p<>r t<> specifikuar ikon<6F>n q<> shoq<6F>ron grad<61>n";
$lang['Must_select_rank'] = "Zgjidh nj<6E> grad<61>";
$lang['No_assigned_rank'] = "Nuk <20>sht<68> dh<64>n<EFBFBD> ndonj<6E> grad<61> speciale";
$lang['Rank_updated'] = "Grada u ri-freskua me sukses";
$lang['Rank_added'] = "Grada u shtua me sukses";
$lang['Rank_removed'] = "Grada u fshi me sukses";
$lang['No_update_ranks'] = "The rank was successfully deleted, however, user accounts using this rank were not updated. You will need to manually reset the rank on these accounts";
$lang['Click_return_rankadmin'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek Administrimi i Gradave";
//
// Disallow Username Admin
//
$lang['Disallow_control'] = "Kontrolli i emrave t<> ndaluar";
$lang['Disallow_explain'] = "K<EFBFBD>tu mund t<> specifikoni emrat q<> nuk mund t<> p<>rdoren. Disallowed usernames are allowed to contain a wildcard character of *. Kini parasysh se nuk mund t<> specifikoni nj<6E> em<65>r q<> <20>sht<68> regjistruar tashm<68>. Fshini at<61> an<61>tar dhe pastaj ndalojeni at<61> fjal<61>.";
$lang['Delete_disallow'] = "Fshi";
$lang['Delete_disallow_title'] = "Hiq nj<6E> nga emrat e ndaluar";
$lang['Delete_disallow_explain'] = "Heqja e nj<6E> emri nga lista e ndaluar b<>het duke e zgjedhur at<61> tek kjo list<73> dhe klikuar paraqit.";
$lang['Add_disallow'] = "Shto";
$lang['Add_disallow_title'] = "Shto nj<6E> em<65>r t<> ndaluar";
$lang['Add_disallow_explain'] = "Ju mund t<> ndaloni nj<6E> em<65>r duke p<>rdorur * n<> vend t<> cdo karakteri n<> at<61> pozicion.";
$lang['No_disallowed'] = "Asnj<EFBFBD> em<65>r i ndaluar";
$lang['Disallowed_deleted'] = "Emri i ndaluar u fshi me sukses";
$lang['Disallow_successful'] = "Emri i ndaluar u shtua me sukses";
$lang['Disallowed_already'] = "Emri q<> shtuat nuk mund t<> ndalohet. Ky em<65>r ose ekziston n<> list<73>n e emrave t<> ndaluar, ose ekziston n<> list<73>n e censur<75>s ose <20>sht<68> n<> p<>rdorim nga nj<6E> an<61>tar.";
$lang['Click_return_disallowadmin'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek Administrimi i emrave t<> ndaluar";
//
// Styles Admin
//
$lang['Styles_admin'] = "Administrimi i stileve";
$lang['Styles_explain'] = "Me an<61> t<> k<>tij paneli mund t<> shtoni, hiqni dhe menaxhoni (shabllonet dhe motivet) n<> dispozicion t<> an<61>tar<61>ve.";
$lang['Styles_addnew_explain'] = "Lista e m<>poshtme p<>rmban t<> gjith<74> motivet q<> jan<61> t<> mundsh<73>m p<>r shabllonet q<> keni. Artikujt n<> k<>t<EFBFBD> list<73> nuk jan<61> instaluar akoma n<> regjistrin e phpBB. Kliko butonin instalo p<>r t<> instaluar nj<6E> nga k<>to artikuj n<> databaz<61>.";
$lang['Select_template'] = "Zgjidh nj<6E> shabllon";
$lang['Style'] = "Stili";
$lang['Template'] = "Shabllon";
$lang['Install'] = "Instalo";
$lang['Download'] = "Shkarko";
$lang['Edit_theme'] = "Modifiko motivin";
$lang['Edit_theme_explain'] = "N<EFBFBD> formularin m<> posht<68> modifiko vetit<69> e motivit q<> keni zgjedhur.";
$lang['Create_theme'] = "Krijo motiv";
$lang['Create_theme_explain'] = "P<EFBFBD>rdor formularin e m<>posht<68>m p<>r t<> krijuar nj<6E> motiv p<>r shabllonin e zgjedhur. Kur zgjidhni ngjyrat (p<>r t<> cilat duhen p<>rdorur numrat me baz<61> 16 --hexadecimal--) mos vendosni shenj<6E>n #. psh. #CC00BB <20>sht<68> gabim.";
$lang['Export_themes'] = "Eksporto motivet";
$lang['Export_explain'] = "Ky panel mund<6E>son eksportimin e t<> dh<64>nave t<> motivit p<>r shabllonin e zgjedhur. Zgjidh shabllonin nga lista e m<>poshtme dhe phpBB do krijoj<6F> automatikisht skedarin p<>r konfigurimin e motivit dhe do provoj<6F> ta ruaj<61> n<> direktorin<69> ku shablloni i zgjedhur rri. Nqs nuk mund ta ruani skedarin atje, do keni mund<6E>sin<69> p<>r ta shkarkuar n<> kompjuterin tuaj. N<> m<>nyr<79> q<> skedari t<> vendoset n<> direktorin<69> e shabllonit, webserveri duhet t<> ket<65> autorizim p<>r t<> shkruar n<> at<61> direktori. P<>r m<> shum<75> info, shiko manualin e p<>rdorimit.";
$lang['Theme_installed'] = "Motivi i zgjedhur u instalua me sukses";
$lang['Style_removed'] = "Stili i zgjedhur u hoq nga regjistri. P<>r ta hequr k<>t<EFBFBD> stil p<>rfundimisht nga sistemi juaj, fshijeni k<>t<EFBFBD> stil nga direktoria e shablloneve.";
$lang['Theme_info_saved'] = "Informacioni i motivit p<>r shabllonin e zgjedhur u ruajt. Rivendosni autorizimet n<> nivelin lexim-vet<65>m (read-only) p<>r theme_info.cfg ";
$lang['Theme_updated'] = "Motivi i zgjedhur u ri-freskua. Tashti duhet t<> eksportoni vetit<69> e reja t<> motivit";
$lang['Theme_created'] = "Motivi u krijua. Tashti duhet t<> eskportoni motivin e ri tek skedari i konfigurimit p<>r ruajtje.";
$lang['Confirm_delete_style'] = "Jeni i sigurt<72> p<>r fshirjen e k<>tij stili";
$lang['Download_theme_cfg'] = "Eksportuesi nuk mundi t<> shkruaj<61> skedarin e informacionit t<> motivit. Kliko butonin e meposht<68>m p<>r ta shkarkuar k<>t<EFBFBD> skedar. Pasi ta keni shkarkuar, transferojeni tek direktoria q<> p<>rmban skedar<61>t e shablloneve. You mund ti arkivoni skedar<61>t dhe ti shp<68>rndani p<>r p<>rdorim diku tjet<65>r.";
$lang['No_themes'] = "Shablloni q<> zgjodh<64>t nuk ka asnj<6E> motiv t<> bashkangjitur. P<>r t<> krijuar nj<6E> motiv t<> ri kliko butonin Krijo n<> an<61>n e majt<6A>.";
$lang['No_template_dir'] = "Direktoria e shablloneve nuk hapet. Webserveri nuk mund ta lexoj<6F> ose direktoria nuk ekziston.";
$lang['Cannot_remove_style'] = "Stili i zgjdhur nuk mund t<> fshihet sepse <20>sht<68> stili i paracaktuar i forumi. Ndryshoni stilin e paracaktuar dh pastaj provoni nga e para";
$lang['Style_exists'] = "Emri i zgjedhur p<>r k<>t<EFBFBD> stil ekziston. Zgjidhni nj<6E> em<65>r tjet<65>r";
$lang['Click_return_styleadmin'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek Administratori i Stileve";
$lang['Theme_settings'] = "Vetit<EFBFBD> e motivit";
$lang['Theme_element'] = "Elementi i motivit";
$lang['Simple_name'] = "Em<EFBFBD>r i thjesht<68>";
$lang['Value'] = "Vlera";
$lang['Save_Settings'] = "Regjistro vetit<69>";
$lang['Stylesheet'] = "CSS Stylesheet";
$lang['Background_image'] = "Background Image";
$lang['Background_color'] = "Background Colour";
$lang['Theme_name'] = "Emri i Motivit";
$lang['Link_color'] = "Link Colour";
$lang['Text_color'] = "Ngjyra e tekstit";
$lang['VLink_color'] = "Visited Link Colour";
$lang['ALink_color'] = "Active Link Colour";
$lang['HLink_color'] = "Hover Link Colour";
$lang['Tr_color1'] = "Table Row Colour 1";
$lang['Tr_color2'] = "Table Row Colour 2";
$lang['Tr_color3'] = "Table Row Colour 3";
$lang['Tr_class1'] = "Table Row Class 1";
$lang['Tr_class2'] = "Table Row Class 2";
$lang['Tr_class3'] = "Table Row Class 3";
$lang['Th_color1'] = "Table Header Colour 1";
$lang['Th_color2'] = "Table Header Colour 2";
$lang['Th_color3'] = "Table Header Colour 3";
$lang['Th_class1'] = "Table Header Class 1";
$lang['Th_class2'] = "Table Header Class 2";
$lang['Th_class3'] = "Table Header Class 3";
$lang['Td_color1'] = "Table Cell Colour 1";
$lang['Td_color2'] = "Table Cell Colour 2";
$lang['Td_color3'] = "Table Cell Colour 3";
$lang['Td_class1'] = "Table Cell Class 1";
$lang['Td_class2'] = "Table Cell Class 2";
$lang['Td_class3'] = "Table Cell Class 3";
$lang['fontface1'] = "Font Face 1";
$lang['fontface2'] = "Font Face 2";
$lang['fontface3'] = "Font Face 3";
$lang['fontsize1'] = "Font Size 1";
$lang['fontsize2'] = "Font Size 2";
$lang['fontsize3'] = "Font Size 3";
$lang['fontcolor1'] = "Font Colour 1";
$lang['fontcolor2'] = "Font Colour 2";
$lang['fontcolor3'] = "Font Colour 3";
$lang['span_class1'] = "Span Class 1";
$lang['span_class2'] = "Span Class 2";
$lang['span_class3'] = "Span Class 3";
$lang['img_poll_size'] = "Polling Image Size [px]";
$lang['img_pm_size'] = "Private Message Status size [px]";
//
// Install Process
//
$lang['Welcome_install'] = "Mir<EFBFBD>sevini tek instaluesi i phpBB v.2";
$lang['Initial_config'] = "Konfigurimi elementar";
$lang['DB_config'] = "Konfigurimi i regjistrit";
$lang['Admin_config'] = "Konfigurimi i administratorit";
$lang['continue_upgrade'] = "Once you have downloaded your config file to your local machine you may\"Continue Upgrade\" button below to move forward with the upgrade process. Please wait to upload the config file until the upgrade process is complete.";
$lang['upgrade_submit'] = "Continue Upgrade";
$lang['Installer_Error'] = "An error has occurred during installation";
$lang['Previous_Install'] = "A previous installation has been detected";
$lang['Install_db_error'] = "An error occurred trying to update the database";
$lang['Re_install'] = "Your previous installation is still active. <br /><br />If you would like to re-install phpBB 2 you should click the Yes button below. Please be aware that doing so will destroy all existing data, no backups will be made! The administrator username and password you have used to login in to the board will be re-created after the re-installation, no other settings will be retained. <br /><br />Think carefully before pressing Yes!";
$lang['Inst_Step_0'] = "Thank you for choosing phpBB 2. In order to complete this install please fill out the details requested below. Please note that the database you install into should already exist. If you are installing to a database that uses ODBC, e.g. MS Access you should first create a DSN for it before proceeding.";
$lang['Start_Install'] = "Start Install";
$lang['Finish_Install'] = "Finish Installation";
$lang['Default_lang'] = "Default board language";
$lang['DB_Host'] = "Database Server Hostname / DSN";
$lang['DB_Name'] = "Your Database Name";
$lang['DB_Username'] = "Database Username";
$lang['DB_Password'] = "Database Password";
$lang['Database'] = "Your Database";
$lang['Install_lang'] = "Choose Language for Installation";
$lang['dbms'] = "Database Type";
$lang['Table_Prefix'] = "Prefix for tables in database";
$lang['Admin_Username'] = "Administrator Username";
$lang['Admin_Password'] = "Administrator Password";
$lang['Admin_Password_confirm'] = "Administrator Password [ Confirm ]";
$lang['Inst_Step_2'] = "Your admin username has been created. At this point your basic installation is complete. You will now be taken to a screen which will allow you to administer your new installation. Please be sure to check the General Configuration details and make any required changes. Thank you for choosing phpBB 2.";
$lang['Unwriteable_config'] = "Your config file is un-writeable at present. A copy of the config file will be downloaded to your when you click the button below. You should upload this file to the same directory as phpBB 2. Once this is done you should log in using the administrator name and password you provided on the previous form and visit the admin control centre (a link will appear at the bottom of each screen once logged in) to check the general configuration. Thank you for choosing phpBB 2.";
$lang['Download_config'] = "Download Config";
$lang['ftp_choose'] = "Choose Download Method";
$lang['ftp_option'] = "<br />Since FTP extensions are enabled in this version of PHP you may also be given the option of first trying to automatically ftp the config file into place.";
$lang['ftp_instructs'] = "You have chosen to ftp the file to the account containing phpBB 2 automatically. Please enter the information below to facilitate this process. Note that the FTP path should be the exact path via ftp to your phpBB2 installation as if you were ftping to it using any normal client.";
$lang['ftp_info'] = "Enter Your FTP Information";
$lang['Attempt_ftp'] = "Attempt to ftp config file into place";
$lang['Send_file'] = "Just send the file to me and I'll ftp it manually";
$lang['ftp_path'] = "FTP path to phpBB 2";
$lang['ftp_username'] = "Your FTP Username";
$lang['ftp_password'] = "Your FTP Password";
$lang['Transfer_config'] = "Start Transfer";
$lang['NoFTP_config'] = "The attempt to ftp the config file into place failed. Please download the config file and ftp it into place manually.";
$lang['Install'] = "Install";
$lang['Upgrade'] = "Upgrade";
$lang['Install_Method'] = "Choose your installation method";
$lang['Install_No_Ext'] = "The php configuration on your server doesn't support the database type that you choose";
$lang['Install_No_PCRE'] = "phpBB2 Requires the Perl-Compatible Regular Expressions Module for php which your php configuration doesn't appear to support!";
//
// That's all Folks!
// -------------------------------------------------
?>

View File

@@ -1,76 +0,0 @@
<?php
/***************************************************************************
* lang_bbcode.php [english]
* -------------------
* begin : Wednesday Oct 3, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id$
*
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
/***************************************************************************/
*
* Translation to Albanian done by alket ---> alkettttt@yahoo.com
* http://www26.brinkster.com/alketttt/
*
***************************************************************************/
//
// To add an entry to your BBCode guide simply add a line to this file in this format:
// $faq[] = array("question", "answer");
// If you want to separate a section enter $faq[] = array("--","Block heading goes here if wanted");
// Links will be created automatically
//
// DO NOT forget the ; at the end of the line.
// Do NOT put double quotes (") in your BBCode guide entries, if you absolutely must then escape them ie. \"something\"
//
// The BBCode guide items will appear on the BBCode guide page in the same order they are listed in this file
//
// If just translating this file please do not alter the actual HTML unless absolutely necessary, thanks :)
//
// In addition please do not translate the colours referenced in relation to BBCode any section, if you do
// users browsing in your language may be confused to find they're BBCode doesn't work :D You can change
// references which are 'in-line' within the text though.
//
$faq[] = array("--","Hyrje");
$faq[] = array("C'<27>sht<68> BBCode?", "BBCode <20>sht<68> nj<6E> implementim special i HTML. P<>rdorimi i BBCode tek forumi juaj varet nga konfigurimi q<> ka b<>r<EFBFBD> administratori. P<>r m<> tep<65>r BBCode mund t<> aktivizohet ose c'aktivizohet n<> mesazhet individuale. BBCode <20>sht<68> shum<75> i ngjash<73>m me HTML, tags jan<61> mbyllur brenda kllapave katrore [ and ] n<> vend t<> &lt; and &gt; dhe ofron kontroll m<> t<> madh n<> formatimin e teksteve. N<> var<61>si t<> shabllonit n<> p<>rdorim, shtimi i BBCode n<> mesazhet tuaja <20>sht<68> shum<75> i leht<68> n<>p<EFBFBD>rmjet kodeve t<> klikueshme mbi p<>rmbajtjen e mesazhit n<> formularin e postimit. Megjithat<61> guida e m<>poshtme mund t'ju hyj<79> n<> pun<75>.");
$faq[] = array("--","Formatimi i tekstit");
$faq[] = array("Si t<> krijoni tekst bold, underlined dhe italic.", "BBCode ju lejon ta ndryshoni stilin e tekstit shum<75> thjesht<68>. Psh: <ul><li>P<>r ta b<>r<EFBFBD> nj<6E> tekst bold futeni midis <b>[b][/b]</b>, psh. <br /><br /><b>[b]</b>P<>rsh<73>ndetje<b>[/b]</b><br /><br />b<>het <b>P<>rsh<73>ndetje</b></li><li>P<>r n<>nvizim p<>rdor <b>[u][/u]</b>, psh:<br /><br /><b>[u]</b>Mir<69>m<EFBFBD>ngjes<b>[/u]</b><br /><br />b<>het <u>Mir<69>m<EFBFBD>ngjes</u></li><li>P<>r t<> b<>r<EFBFBD> tekstin me italics p<>rdor <b>[i][/i]</b>, psh.<br /><br />Si jeni <b>[i]</b>Sonte?<b>[/i]</b><br /><br />del: Si jeni <i>Sonte?</i></li></ul>");
$faq[] = array("Si t<> ndryshohet ngjyra ose madh<64>sia e tekstit.", "P<EFBFBD>rdorni kodet e m<>poshtme p<>r k<>t<EFBFBD>, megjithat<61> kini parasysh q<> paraqitja n<> ekran varet nga sistemi dhe browser-i q<> p<>rdoret: <ul><li>Ndryshimi i ngjyr<79>s b<>het duke e futur tekstin midis <b>[color=][/color]</b>. Ju mund t<> specifikoni emrin e ngjyr<79>s (psh. red - kuq, blue - blu, yellow - verdh<64>, etj.) ose kodin hegzadeksimal, psh. #FFFFFF, #000000. Psh, p<>r t<> shkruar me t<> kuqe p<>rdorni:<br /><br ><b>[color=red]</b>Hello!<b>[/color]</b><br /><br />ose<br /><br /><b>[color=#FF0000]</b>Hello!<b>[/color]</b><br /><br />dhe t<> dyja kodet do nxjerrin <span style=\"color:red\">Hello!</span></li><li>Ndryshimi i madh<64>sis<69> s<> tekstit b<>het n<> m<>nyr<79> t<> ngjashme duke p<>rdorur<b>[size=][/size]</b>. Ky kod varet nga shablloni n<> p<>rdorim megjithat<61> formati i rekomanduar <20>sht<68> nj<6E> vler<65> numerike q<> prezanton madh<64>sin<69> e tekstit n<> piksel, duke filluar nga 1 (aq i vog<6F>l sa nuk e sheh dot) deri tek 29-ta (shum<75> i madh). Psh:<br /><br /><b>[size=9]</b>I vog<6F>l<b>[/size]</b><br /><br />do jet<65> zakonisht <span style=\"font-size:9px\">I vog<6F>l</span><br /><br />kurse:<br /><br /><b>[size=24]</b>I st<73>rmadh!<b>[/size]</b><br /><br />do jet<65> <span style=\"font-size:24px\">I st<73>rmadh!</span></li></ul>");
$faq[] = array("A mund ti kombinoj kodet e formatimit?", "Po, patjet<65>r, psh. nqs doni t<> t<>rhiqni v<>mendjen mund t<> shkruani:<br /><br /><b>[size=18][color=red][b]</b>Kujdes!<b>[/b][/color][/size]</b><br /><br />dhe kjo do nxjerr<72> <span style=\"color:red;font-size:18px\"><b>Kujdes!</b></span><br /><br />Kini parasysh q<> <20>sht<68> p<>rgjegj<67>sia juaj ti mbyllni kodet e formatimit n<> m<>nyr<79> korrekte. Shembulli i m<>posht<68>m tregon nj<6E> rast kur kodet nuk jan<61> mbyllur n<> m<>nyr<79> korrekte:<br /><br /><b>[b][u]</b>Kjo <20>sht<68> gabim<b>[/b][/u]</b>");
$faq[] = array("--","Si t<> citoni dhe tekstet me gjer<65>si fikse");
$faq[] = array("Si t<> citoni n<> p<>rgjigjet tuaja", "Ka dy m<>nyra p<>r t<> cituar, me ose pa referenc<6E>.<ul><li>Kur p<>rdorni funksionin Cito n<> p<>rgjigjet tuaja do shikoni q<> teksti i mesazhit shtohet n<> dritaren ku do shkruani i p<>rfshir<69> n<> nj<6E> bllok <b>[quote=\"\"][/quote]</b>. Kjo metod<6F> ju lejon t<> citoni duke iu refereruar nj<6E> personi. Psh. p<>r t<> cituar dicka nga z.Arjan shkruani:<br /><br /><b>[quote=\"z.Arjan\"]</b>teksti q<> po citoni shkon k<>tu<b>[/quote]</b><br /><br />Kjo do rezultoj<6F> n<> shtimin e z.Arjan shkroi: p<>rpara tekstit q<> po citoni. Ju <b>duhet</b> t<> vini \"\" rreth emrit; jan<61> t<> domosdoshme.</li><li>Metoda e dyt<79> ju lejon t<> citoni dicka pa specifikuar autorin. P<>r t<> b<>r<EFBFBD> k<>t<EFBFBD> rrethojeni tekstin mekodet <b>[quote][/quote]</b>. Kur t<> shikoni mesazhin do v<>reni q<> do tregoj<6F> vet<65>m Kuot<6F>: p<>rpara tekstit. </li></ul>");
$faq[] = array("Shkruarja e kodeve kompjuterike dhe teksteve me gjer<65>si fikse", "Nqs doni t<> shkruani nj<6E> pjes<65> me kod kompjuteri ose cdo lloj teksti q<> k<>rkon gjer<65>si fikse at<61>her<65> duhet ta rrethoni me kodet <b>[code][/code]</b>, psh.<br /><br /><b>[code]</b>echo \"Ky <20>sht<68> kod komputeri\";<b>[/code]</b><br /><br />Formatimi i p<>rdorur br<62>nda kodeve <b>[code][/code]</b> ruhet kur p<>rpunohet nga kompjuteri.");
$faq[] = array("--","Prodhimi i listave");
$faq[] = array("Krijimi i nj<6E> liste t<> pa-renditur", "BBCode lejon dy lloj listash, t<> renditura dhe t<> parenditura. N<> thelb ato jan<61> t<> nj<6E>jta me ekuivalentet n<> HTML. Nj<4E> list<73> e parenditur tregon cdo send n<> list<73>n tuaj n<> m<>nyr<79> t<> nj<6E>pasnj<6E>shme t<> paraprira nga nj<6E> karakter pike. P<>r t<> krijuar nj<6E> list<73> t<> parenditur p<>rdoret <b>[list][/list]</b> dhe p<>rcakto cdo send t<> list<73>s duke p<>rdorur <b>[*]</b>. Psh. p<>r t<> renditur ngjyrat tuaja t<> preferuara ju mund t<> p<>rdorni:<br /><br /><b>[list]</b><br /><b>[*]</b>E kuqe<br /><b>[*]</b>Blu<br /><b>[*]</b>E verdh<64><br /><b>[/list]</b><br /><br />Kjo do prodhonte list<73>n<ul><li>E kuqe</li><li>Blu</li><li>E verdh<64></li></ul>");
$faq[] = array("Krijimi i nj<6E> liste t<> renditur", "Lloji i dyt<79> i list<73>s, lista e renditur, ju mund<6E>son t<> kontrolloni se c'shkruhet para cdo sendi t<> list<73>s. P<>r t<> krijuar nj<6E> list<73> t<> renditur p<>rdoret <b>[list=1][/list]</b> p<>r t<> krijuar nj<6E> list<73> me renditje numerike ose <b>[list=a][/list]</b> p<>r nj<6E> list<73> me renditje alfabetike. Nj<4E>lloj si tek lista e parenditur cdo send p<>rcaktohet nga <b>[*]</b>. Psh:<br /><br /><b>[list=1]</b><br /><b>[*]</b>Shko n<> dyqan<br /><b>[*]</b>Bli nj<6E> kompjuter<br /><b>[*]</b>Shaje kompjuterin kur nuk punon<br /><b>[/list]</b><br /><br />do prodhoj<6F>:<ol type=\"1\"><li>Shko n<> dyqan</li><li>Bli nj<6E> kompjuter</li><li>Shaje kompjuterin kur nuk punon</li></ol>kurse p<>r nj<6E> list<73> me renditje alfabetike:<br /><br /><b>[list=a]</b><br /><b>[*]</b>P<>rgjigja e par<61> e mundshme<br /><b>[*]</b>P<>rgjigja e dyt<79> e mundshme<br /><b>[*]</b>P<>rgjigja e tret<65> e mundshme<br /><b>[/list]</b><br /><br />e cila jep<ol type=\"a\"><li>P<>rgjigja e par<61> e mundshme</li><li>P<>rgjigja e dyt<79> e mundshme</li><li>P<>rgjigja e tret<65> e mundshme</li></ol>");
$faq[] = array("--", "Krijimi i lidhjeve");
$faq[] = array("Lidhje me nj<6E> websit tjet<65>r", "BBCode i phpBB lejon disa m<>nyra p<>r krijimin e URI-ve, Uniform Resource Indicators q<> njihen si URL.<ul><li>M<>nyra e par<61> p<>rdor kodin <b>[url=][/url]</b>, cdo gj<67> q<> shkruani mbas shenj<6E>s s<> barazimit do shkaktoj<6F> p<>rmbajtjen e atij kodi t<> sh<73>rbej<65> si nj<6E> URL. Psh. p<>r tu lidhur me phpBB.com me k<>t<EFBFBD> metod<6F> shkruani:<br /><br /><b>[url=http://www.phpbb.com/]</b>Vizito phpBB!<b>[/url]</b><br /><br />kjo do prodhonte lidhjen q<> vijon, <a href=\"http://www.phpbb.com/\" target=\"_blank\">Vizito phpBB!</a> Do shikoni q<> lidhja hapet n<> nj<6E> dritare t<> re duke i lejuar p<>rdoruesit t<> vazhdojn<6A> t<> p<>rdorin forumin.</li><li>Nqs doni q<> adresa URL vet<65> t<> tregohet si lidhje shkruani:<br /><br /><b>[url]</b>http://www.phpbb.com/<b>[/url]</b><br /><br />Kjo do tregoj<6F> lidhjen q<> vijon, <a href=\"http://www.phpbb.com/\" target=\"_blank\">http://www.phpbb.com/</a></li><li>P<>r m<> tep<65>r phpBB p<>rdor dicka q<> quhet <i>Lidhjet Magjike</i>, kjo do e kthej<65> cdo URL me sintaks<6B> korrekte n<> nj<6E> lidhje pa patur nevoj<6F> te shkruhet ndonj<6E> kod, nuk ka nevoj<6F> as p<>r http://. Psh. shkruajtja e www.phpbb.com n<> mesazhin tuaj do krijoj<6F> nj<6E> lidhje tek <a href=\"http://www.phpbb.com/\" target=\"_blank\">www.phpbb.com</a> n<> m<>nyr<79> automatike kur dikush lexon mesazhin. </li><li>E nj<6E>jta gj<67> aplikohet me adresat e post<73>s elektronike, ju mund ta specifikoni adres<65>n me an<61> t<> kodit, psh:<br /><br /><b>[email]</b>no.one@domain.adr<b>[/email]</b><br /><br />e cila do tregoj<6F> <a href=\"emailto:no.one@domain.adr\">no.one@domain.adr</a> ose mund t<> shtypni thjesht no.one@domain.adr n<> mesazhin tuaj dhe adresa do konvertohet n<> lidhje n<> m<>nyr<79> automatike.</li></ul>Ashtu si me t<> gjitha kodet e tjera BBCode URL-t<> mund t<> mb<6D>shtjellin cdo lloj kodi tjet<65>r BBCode, psh <b>[img][/img]</b> (lexo m<> posht<68>), <b>[b][/b]</b>, etj. Ashtu si me kodet e formatimit <20>sht<68> n<> dor<6F>n tuaj q<> kodet t<> jen<65> hapur dhe mbyllur n<> rradh<64>n e duhur, psh: <br /><br /><b>[url=http://www.phpbb.com/][img]</b>http://www.phpbb.com/images/phplogo.gif<b>[/url][/img]</b><br /><br /> <u>nuk</u> <20>sht<68> korrekte gj<67> q<> mund t<> shkaktoj<6F> fshirjen e mesazhit tuaj.");
$faq[] = array("--", "Tregimi i imazheve");
$faq[] = array("Shtimi i nj<6E> imazhi n<> mesazhin tuaj", "BBCode i phpBB p<>rfshin nj<6E> kod p<>r tregimin e imazheve n<> mesazhet tuaja. Duhet t<> keni dy gj<67>ra parasysh kur p<>rdorni k<>t<EFBFBD> kod; e para, shum<75> p<>rdorues nuk e cmojn<6A> vendosjen e shum<75> imazheve n<>p<EFBFBD>r poste dhe e dyta imazhi duhet t<> jet<65> diku n<> internet para se t<> tregohet n<> nj<6E> mesazh (nuk mund t<> ekzistoj<6F> vet<65>m n<> kompjuterin tuaj, p<>rvec rastit kur keni nj<6E> webserver). phpBB nuk e mund<6E>son mbajtjen e imazheve n<> nj<6E> dosje lokale tashti p<>r tashti (k<>to c<>shtje do adresohen n<> versionin e m<>vonsh<73>m t<> phpBB). P<>r t<> treguar nj<6E> imazh duhet ta rrethoni URL-n<> (adres<65>n n<> internet) e imazhit me kodet <b>[img][/img]</b>. Psh:<br /><br /><b>[img]</b>http://www.phpbb.com/images/phplogo.gif<b>[/img]</b><br /><br />Sic u tregua n<> seksionin e URL (m<>sip<69>r) ju mund ta mb<6D>shtillni nj<6E> imazh me kodin <b>[url][/url]</b> nqs d<>shironi q<> imazhi t<> sh<73>rbej<65> edhe si lidhje, psh.<br /><br /><b>[url=http://www.phpbb.com/][img]</b>http://www.phpbb.com/images/phplogo.gif<b>[/img][/url]</b><br /><br />do prodhonte:<br /><br /><a href=\"http://www.phpbb.com/\" target=\"_blank\"><img src=\"templates/subSilver/images/logo_phpBB_med.gif\" border=\"0\" alt=\"\" /></a><br />");
$faq[] = array("--", "C<EFBFBD>shtje t<> tjera");
$faq[] = array("A mund t<> shtoj kodet e mia?", "Jo, nuk besojm<6A> se <20>sht<68> e mundur n<> phpBB 2.0 Po mundohemi t<> shtojm<6A> kode BBCode t<> personalizueshme n<> versionin tjet<65>r t<> phpBB.");
//
// This ends the BBCode guide entries
//
?>

View File

@@ -1,107 +0,0 @@
<?php
/***************************************************************************
* lang_faq.php [english]
* -------------------
* begin : Wednesday Oct 3, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id$
*
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
/***************************************************************************/
*
* Translation to Albanian done by alket ---> alkettttt@yahoo.com
* http://www26.brinkster.com/alketttt/
*
***************************************************************************/
//
// To add an entry to your FAQ simply add a line to this file in this format:
// $faq[] = array("question", "answer");
// If you want to separate a section enter $faq[] = array("--","Block heading goes here if wanted");
// Links will be created automatically
//
// DO NOT forget the ; at the end of the line.
// Do NOT put double quotes (") in your FAQ entries, if you absolutely must then escape them ie. \"something\"
//
// The FAQ items will appear on the FAQ page in the same order they are listed in this file
//
$faq[] = array("--","Probleme me regjistrimin dhe identifikimin");
$faq[] = array("Pse nuk identifikohem dot?", "A jeni regjistruar? Duhet t<> regjistroheni nqs doni t<> identifikoheni. A jeni p<>rjashtuar nga forumi (nj<6E> mesazh do shfaqet dhe do ju thot<6F> q<> jeni p<>rjashtuar)? Nqs po, kontaktoni webmasterin ose administratorin e forumit p<>r sqarime t<> m<>tejshme. Nqs jeni regjistruar dhe nuk jeni p<>rjashtuar dhe prap<61> nuk identifikoheni dot, at<61>her<65> kontrolloni emrin e identifikimit dhe fjal<61>kalimin. Ky <20>sht<68> problemi m<> i zakonsh<73>m po nqs ju jeni i sigurt<72> q<> emri dhe fjal<61>kalimi jan<61> korrekt<6B> kontaktoni administratorin e forumit.");
$faq[] = array("P<EFBFBD>rse <20>sht<68> e nevojshme q<> t<> regjistrohem?", "Kjo varet nga konfigurimi i forumit. Megjithat<61>, regjistrimi ju jep mund<6E>si q<> nuk u jepen vizitor<6F>ve t<> paregjistruar. Regjistrimi ju mund<6E>son caktimin e ikonave personale, p<>rdorimin e mesazheve private, d<>rgimin e mesazheve me post<73> elektronike an<61>tar<61>ve t<> tjer<65>, an<61>tar<61>simin n<> grupe p<>rdoruesish, etj. Regjistrimi b<>het brenda disa minutash k<>shtu q<> ju k<>shillojm<6A> ta b<>ni k<>t<EFBFBD>.");
$faq[] = array("Pse c'indentifikohem automatikisht?", "Nqs nuk zgjidhni kutin<69> <i>M<> identifiko automatikisht</i> kur identifikoheni, programi i forumit do ju mbaj<61> mend vet<65>m p<>r nj<6E> koh<6F> t<> caktuar. Kjo ndalon p<>rdorimin e llogaris<69> tuaj nga dikush tjet<65>r q<> p<>rdor kompjuerin tuaj. Nqs doni t<> identifikoheni automatikisht, zgjidhni kutin<69> e p<>rmendur m<> lart<72>; Ky veprim nuk rekomandohet n<>se p<>rdorni nj<6E> kompjuter q<> nuk <20>sht<68> juaji.");
$faq[] = array("A <20>sht<68> e mundur q<> emri im t<> mos shfaqet tek lista e p<>rdoruesve n<> linj<6E>?", "Po, tek profili juaj b<>je mund<6E>sin<69> <i>Fshih q<>nien n<> linj<6E></i> aktive. Pasi b<>n k<>t<EFBFBD> vet<65>m administrator<6F>t dhe ti mund t<> shikojne emrin t<>nd. Ti do num<75>rohesh si p<>rdorues i fshehur.");
$faq[] = array("Humba fjal<61>kalimin!", "Mos u frik<69>soni. Megjith<74>se fjal<61>kalimi i vjet<65>r nuk mund t<> shikohet, ai mund t<> rishkruhet. P<>r t<> b<>r<EFBFBD> k<>t<EFBFBD> shko tek faqja e identifikimit dhe kliko <u>Harrova fjal<61>kalimin</u>, ndiq udh<64>zimet dhe br<62>nda disa minutash do keni nj<6E> fjal<61>kalim t<> ri.");
$faq[] = array("U regjistrova po nuk identifikohem dot!", "N<EFBFBD> fillim kontrollo n<>se po specifikon emrin dhe fjal<61>kalimin e duhur. Nqs ata jan<61> korrekt, dy gj<67>ra mund t<> ndodhin: Nqs COPPA <20>sht<68> aktivizuar dhe ju zgjodh<64>t <u>Jam n<>n 13 vjec</u> kur u regjistruat, ndiq udh<64>zimet q<> tu d<>rguan. Nqs COPPA nuk <20>sht<68> aktivizuar, a ka nevoj<6F> p<>r aktivizim llogaria juaj? Disa forume k<>rkojn<6A> aktivizim t<> llogaris<69> nga ju ose administratori para se t<> identifikoheni. Kjo gj<67> duhet tu thuhej n<> momentin q<> u regjistruat. Nqs mor<6F>t nj<6E> mesazh me post<73> elektronike, ndiqni udh<64>zimet, nqs jo verifikoni adres<65>n tuaj t<> post<73>s elektronike. Nj<4E> prej arsyeve q<> aktivizimi k<>rkohet <20>sht<68> parandalimi i regjistrimit me adresa q<> nuk ekzistojn<6A>. Nqs jeni i sigurt<72> q<> adresa juaj e post<73>s elektronike <20>sht<68> korrekte, kontaktoni administratorin e forumit.");
$faq[] = array("U regjistrova koh<6F> m<> par<61> po nuk identifikohem dot m<>!", "Arsyet m<> t<> zakonshme jan<61> specifikimi i gabuar i emrit t<> identifikimit ose fjal<61>kalimit (shikoni post<73>n elektronike me adres<65>n e s<> cil<69>s u u regjistruat p<>r k<>to) ose administratori ka fshir<69> llogarin<69> tuaj p<>r t<> zvog<6F>luar regjistrin e forumit. Provoni t<> regjistroheni prap<61> dhe t<> merrni pjes<65> n<> diskutime.");
$faq[] = array("--","Preferencat dhe vetit<69> e p<>rdoruesve");
$faq[] = array("Si mund ti ndryshoj vetit<69> e mia?", "T<EFBFBD> gjitha vetit<69> tuaja (nqs jeni regjistruar) ruhen ne regjist<73>r. Klikoni <u>Profili</u> p<> t<> modifikuar t<> gjitha vetit<69> e profilit tuaj (zakonisht shfaqet n<> fillim t<> faqes");
$faq[] = array("Ora nuk <20>sht<68> e sakt<6B>!", "Ora <20>sht<68> p<>rgjith<74>sisht e sakt<6B>, megjithat<61> ju mund t<> jeni duke par<61> or<6F>n e nj<6E> brezi tjet<65> orar. N<> k<>t<EFBFBD> rast duhet t<> ndryshoni brezin orar ku jeni tek profili juaj, psh. Lond<6E>r, Paris, New York, Sidnei, etj. Vini re se brezi orar ashtu si shum<75> veti t<> tjera mund t<> ndryshoshet vet<65>m nqs jeni i regjistruar");
$faq[] = array("E ndryshova brezin orar po ora <20>sht<68> prap<61> gabim!", "If you are sure you have set the timezone correctly and the time is still different the most likely answer is daylight savings time (or summer time as it is known in the UK and other places). The board is not designed to handle the changeovers between standard and daylight time so during summer months the time may be an hour different from the real local time.");
$faq[] = array("Gjuha ime nuk <20>sht<68> n<> list<73>!", "Kjo ndodh se ose administratori nuk e ka instaluar ose paketa p<>r gjuh<75>n q<> doni nuk ekziston. Provoni ti k<>rkoni administratorit ta instaloj<6F> gjuh<75>n q<> doni; nqs nuk ekziston mos merrni leje dhe krijoni vet<65> nj<6E> p<>rkthim t<> ri. M<> shum<75> informacion ka tek faqja e phpBB Group (shiko lidhjen n<> fund t<> faqes)");
$faq[] = array("Si mund t<> vendos nj<6E> imazh n<>n emrin tim?", "Zakonisht ka dy imazhe n<>n emrin tuaj. I pari <20>sht<68> imazhi q<> tregon grad<61>n tuaj dhe zakonisht p<>rb<72>het nga disa yje q<> tregojn<6A> se sa mesazhe keni shkruar n<> forum. N<>n k<>t<EFBFBD> mund t<> jet<65> nj<6E> imazh m<> i madh q<> njihet si ikona personale. Aktivizimi dhe m<>nyra e p<>rdorjes s<> ikonave personale <20>sht<68> n<> dor<6F> t<> administratorit t<> forumit. Nqs nuk keni mund<6E>si ti p<>rdorni ikonat personale, pyesni administratorin p<>r arsyet.");
$faq[] = array("Si mund ta ndryshoj grad<61>n?", "In general you cannot directly change the wording of any rank (ranks appear below your username in topics and on your profile depending on the style used). Most boards use ranks to indicate the number of posts you have made and to identify certain users, e.g. moderators and administrators may have a special rank. Please do not abuse the board by posting unnecessarily just to increase your rank, you will probably find the moderator or administrator will simply lower your post count.");
$faq[] = array("Kur klikoj butonin e post<73>s elektronike t<> nj<6E> p<>rdoruesi m<> k<>rkohet t<> identifikohem!", "Na vjen keq, po vet<65>m p<>rdorues<65>t e regjistruar mund t<> d<>rgojn<6A> mesazhe n<>p<EFBFBD>rmjet formularit t<> forumit (nqs administratori e ka aktivizuar k<>t<EFBFBD> funksion). Kjo b<>het p<>r t<> penguar abuzimin e sistemit t<> post<73>s elektronike nga p<>rdoruesit anonim<69>.");
$faq[] = array("--","Probleme me postimin");
$faq[] = array("Si mund t<> shkruaj n<> forum?", "Shum<EFBFBD> e thjesht<68>. Kliko n<> butonin e duhur tek paneli i forumit ose tem<65>s. Mund tu k<>rkohet t<> regjistroheni p<>rpara se t<> shkruani dicka; veprimet q<> ju lejohen tregohen n<>n panelin e forumit ose tem<65>s. (psh. <i>Ju mund t<> krijoni tema t<> reja n<> k<>t<EFBFBD> forum. Ju mund ti p<>rgjigjeni temave t<> k<>tij forumi<i> etj.)");
$faq[] = array("Si mund ta redaktoj apo fshij nj<6E> mesazh?", "Nqs nuk jeni moderator ju mund t<> fshini apo redaktoni vet<65>m shkrimet tuaja (shpeshher<65> vet<65>m brenda nj<6E> kohe t<> caktuar mbas postimit) duke klikuar butonin <i>redakto</i> p<>r mesazhin e duhur. If someone has already replied to the post you will find a small piece of text output below the post when you return to the topic, this lists the number of times you edited it. This will only appear if no one has replied, it also will not appear if moderators or administrators edit the post (they should leave a message saying what they altered and why). Please note that normal users cannot delete a post once someone has replied.");
$faq[] = array("Si mund ti shtoj nj<6E> firm<72> mesazheve t<> mia?", "N<EFBFBD> fillim krijo nj<6E> firm<72> n<>p<EFBFBD>rmjet profilit tuaj. Pasi ta keni krijuar, zgjidhni kutin<69> <i>Bashkangjit firm<72>n</i> n<> formularin e postimit. Gjithashtu, ju mund ti shtoni firm<72>n cdo mesazhi automatikisht duke zgjedhur kutin<69> e duhur tek profili juaj (megjithat<61> ju akoma keni mund<6E>sin<69> p<>r t<> mos ta shtuar firm<72>n n<> mesazhe individuale, c'zgjidh kutin<69> tek formulari i postimit).");
$faq[] = array("Si mund t<> b<>j nj<6E> sondazh?", "Kur hapni nj<6E> tem<65> t<> re (ose kur redaktoni mesazhin e par<61> t<> tem<65>s, nqs keni lejen e duhur) do shikoni formularin <i>Hap Sondazh</i> n<>n formularin kryesor (nqs nuk e shikoni formularin e sondazhit ju nuk keni lejen e duhur p<>r t<> hapur nj<6E> sondazh). Shkruani pyetjen e sondazhit dhe t<> pakt<6B>n dy zgjedhje. P<>r t<> shtuar nj<6E> zgjedhje shkruaj emrin dhe kliko <i>Shto zgjedhje</i>. Gjithashtu keni mund<6E>si t<> specifikoni se p<>r sa dit<69> <20>sht<68> i hapur sondazhi, 0 <20>sht<68> sondazh infinit . Nr. i zgjedhjeve p<>r nj<6E> sondazh <20>sht<68> i kufizuar nga administratori.");
$faq[] = array("Si fshihet apo redaktohet nj<6E> sondazh?", "Ashtu si mesazhet, sondazhet mund t<> redaktohen vet<65>m nga autori, moderator<6F>t ose administratori. P<>r t<> redaktuar sondazhin kliko tek mesazhi i par<61> i tem<65>s (vet<65>m mesazhi i par<61> n<> nj<6E> tem<65> mund t<> ket<65> nj<6E> sondazh). Nqs askush nuk ka votuar at<61>her<65> autori mund ta fshij<69> ose redaktoj<6F> sondazhin, megjithat<61> n<>se dikush ka votuar vet<65>m moderator<6F>t ose administratori mund ta redaktoj<6F> ose fshij<69>. Kjo b<>het p<>r t<> siguruar v<>rtet<65>sin<69> e nj<6E> sondazhi.");
$faq[] = array("Pse nuk hyj dot n<> disa forume?", "Disa forume mund t<> jen<65> private dhe vet<65>m an<61>tar<61> me leje speciale mund t<> hyjn<6A> atje. Kjo leje jepet vetem nga administratori ose moderator<6F>t, pyesni ata n<>se mund t<> hyni.");
$faq[] = array("Pse nuk votoj dot?", "Vet<EFBFBD>m p<>rdoruesit e regjistruar mund t<> votojn<6A>. Nqs jeni regjistruar dhe prap<61> nuk mund t<> votoni at<61>her<65> nuk keni lejen e duhur p<>r ta b<>r<EFBFBD> at<61> gj<67>.");
$faq[] = array("--","Formatimi dhe llojet e temave");
$faq[] = array("C'<27>sht<68> BBCode?", "BBCode <20>sht<68> nj<6E> implementim special i HTML. P<>rdorimi i BBCode tek forumi juaj varet nga konfigurimi q<> ka b<>r<EFBFBD> administratori. P<>r m<> tep<65>r BBCode mund t<> aktivizohet ose c'aktivizohet n<> mesazhet individuale. BBCode <20>sht<68> shum<75> i ngjash<73>m me HTML, tags jan<61> mbyllur brenda kllapave katrore [ and ] n<> vend t<> < and > dhe ofron kontroll m<> t<> madh n<> formatimin e teksteve. N<> var<61>si t<> shabllonit n<> p<>rdorim, shtimi i BBCode n<> mesazhet tuaja <20>sht<68> shum<75> i leht<68> n<>p<EFBFBD>rmjet kodeve t<> klikueshme mbi p<>rmbajtjen e mesazhit n<> formularin e postimit. Megjithat<61> udhezuesi i BBCode mund t'ju hyj<79> n<> pun<75>.");
$faq[] = array("A mund t<> p<>rdor HTML?", "P<EFBFBD>rdorimi i HTML <20>sht<68> i mundur kur administratori e ka aktivizuar, ai ka kontroll t<> plot<6F>. Nqs HTML lejohet ju mund t<> realizoni se vet<65>m disa nga kodet punojn<6A>. Kjo <20>sht<68> b<>r<EFBFBD> p<>r arsye <i>sigurie</i> n<> m<>nyr<79> q<> t<> ndalohet abuzimi i forumit nga p<>rdorimi i kodeve HTML t<> cilat shkat<61>rrojn<6A> formatimin ose krijojn<6A> probleme t<> tjera. Nqs HTML <20>sht<68> aktivizuar ju mund ta <20>'aktivizoni n<> m<>nyr<79> individuale tek formulari i postimit.");
$faq[] = array("Cfar<EFBFBD> jan<61> figurinat?", "Figurinat jan<61> imazhe t<> vogla q<> mund t<> p<>rdoren p<>r t<> shprehur emocione apo ndjenja n<> m<>nyr<79> grafike duke shkruar nj<6E> kod t<> thjesht<68> psh. :) n<>nkupton i g<>zuar dhe :( n<>nkupton i m<>rzitur. Lista e plot<6F> e figurinave shihet tek formulari i postimit. Mundohuni t<> mos i mbi-p<>rdorni figurinat ama, ato mund ta b<>jn<6A> nj<6E> mesazh t<> palexuesh<73>m dhe moderator<6F>t mund ta redaktojn<6A> ose fshijn<6A> mesazhin fare.");
$faq[] = array("A mund t<> postoj imazhe?", "Imazhen mund t<> tregohen n<> mesazhin tuaj. Megjithat<61>, nuk ka asnj<6E> m<>nyr<79> p<>r ti ngarkuar imazhet n<> regjistrin e k<>tij forumi. Prandaj ju duhet t<> krijoni nj<6E> lidhje me nj<6E> imazh n<> internet. Psh. http://www.diku.net/foto-ime.gif. Nuk mund t<> lidhni nj<6E> imazh n<> kompjuterin tuaj ose imazhe q<> ruhen me fjal<61>kalim si psh. imazhe n<> inbox t<> hotmail apo yahoo etj. P<>r t<> krijuar lidhjen e imazhit me mesazhin tuaj p<>rdor kodin BBCode [img] ose HTML. (Nqs lejohet)");
$faq[] = array("Cfar<EFBFBD> jan<61> Lajm<6A>rimet?", "Lajm<EFBFBD>rimet shpesh p<>rmbajn<6A> informacion t<> r<>nd<6E>sish<73>m q<> duhet lexuar sa m<> par<61>. Lajm<6A>rimet q<>ndrojn<6A> n<> krye t<> forumit ku jan<61> postuar. Postimi i Lajm<6A>rimeve b<>het nga persona me leje t<> posa<73>me.");
$faq[] = array("C'jan<61> temat ngjit<69>se?", "Temat ngjit<69>se duken n<>n lajm<6A>rimet dhe vet<65>m n<> faqen e par<61>. Ato jan<61> t<> r<>nd<6E>sishme k<>shtu q<> duhen lexuar po pat<61>t mund<6E>si. Ashtu si lajm<6A>rimet leja p<>r t<> postuar tema ngjit<69>se jepet nga administratori.");
$faq[] = array("C'jan<61> temat e kycura?", "Temat mund t<> kycen nga moderator<6F>t ose administratori. Ju nuk mund ti p<>rgjigjeni temave t<> kycura dhe sondazhet mbyllen automatikisht. Temat mund t<> mbyllen p<>r shum<75> arsye.");
$faq[] = array("--","Nivelet dhe grupet e p<>rdoruesve");
$faq[] = array("C'jan<61> Administrator<6F>t?", "Administrator<EFBFBD>t jan<61> persona me nivelin m<> t<> lart<72> t<> kontrollit mbi gjith<74> forumin. Ata mund t<> vendosin mbi gjithcka q<> ka lidhje me forumin si psh. vendosjen e autorizimeve, p<>rjashtimin e an<61>tar<61>ve, kush b<>het moderator etj. Ata gjithashtu kan<61> t<> gjitha vetit<69> e nj<6E> moderatori.");
$faq[] = array("C'jan<61> Moderator<6F>t?", "Moderator<EFBFBD>t jan<61> an<61>tar<61> (ose grupe an<61>tar<61>sh) t<> cil<69>t jan<61> zgjedhur p<>r tu marr<72> me problemet e p<>rditshme t<> forumit. Ata kan<61> mund<6E>si t<> redaktojn<6A> dhe fshijn<6A> mesazhet si edhe mund<6E>si t<> kycin, shkycin, zhvendosin, fshijn<6A> dhe ndajn<6A> temat e forumit q<> moderojn<6A>. P<>rgjith<74>sisht moderator<6F>t kan<61> p<>r detyr<79> t<> mbajn<6A> mesazhet <i>n<> tem<65></i> dhe t<> fshijn<6A> mesazhet fyese dhe abuzive");
$faq[] = array("C'jan<61> grupet e an<61>tar<61>ve?", "Grupet e an<61>tar<61>ve jan<61> nj<6E> m<>nyr<79> p<>r grupimin e an<61>tar<61>ve p<>r q<>llime administrative. Cdo an<61>tar mund ti p<>rkas<61> disa grupeve dhe cdo grupi mund ti jepen autorizme t<> ndryshme. Kjo e b<>n t<> leht<68> b<>rjen e disa an<61>tar<61>ve moderator<6F> n<> nj<6E> forum apo dh<64>nien e lejes p<>r tu futur n<> nj<6E> forum privat etj.");
$faq[] = array("Si mund t<> an<61>tar<61>sohem n<> nj<6E> grup?", "P<EFBFBD>r tu b<>r<EFBFBD> an<61>tar i nj<6E> grupi kliko atje ku thot<6F> Grupet e An<41>tar<61>ve dhe do shihni t<> gjitha grupet. Megjithat<61> jo t<> gjitha grupet jan<61> <i>t<> hapura</i> p<>r cdo p<>rdorues, disa jan<61> t<> mbyllur dhe disa jan<61> t<> fsheht<68>. Nqs grupi <20>sht<68> i hapur at<61>her<65> kliko butonin e duhur p<>r tu b<>r<EFBFBD> an<61>tar. Moderatori i grupit duhet ta aprovoj<6F> k<>rkes<65>n tuaj, ata mund tu b<>jn<6A> pyetje t<> ndryshme.");
$faq[] = array("Si mund t<> b<>hem moderator i nj<6E> grupi?", "Grupet e an<61>tar<61>ve krijohen fillimisht nga administratori dhe pastaj ai zgjedh moderatorin. Nqs doni t<> b<>heni moderator i nj<6E> grupi, kontaktoni administratorin, provo ti d<>rgosh nj<6E> mesazh privat.");
$faq[] = array("--","Mesazhet Private");
$faq[] = array("Nuk d<>rgoj dot mesazhe private!", "Ju ose nuk jeni regjistruar ose identifikuar, ose administratori ka <20>'aktivizuar sistemin e mesazheve private p<>r t<>r<EFBFBD> forumin. Gjithashtu administratori mund tua ket<65> ndaluar t<> d<>rgoni mesazhe private. N<> rastin e fundit kontaktoni administratorin.");
$faq[] = array("Ngela duke marr<72> mesazhe private q<> nuk i dua!", "S<EFBFBD> shpejti do i shtojm<6A> nj<6E> list<73> injorimesh sistemit t<> mesazheve private, tashti p<>r tashti provoni ti lajm<6A>roni k<>ta persona. Nqs ata vazhdojn<6A> tu ngacmojn<6A> lajm<6A>roni administratorin i cili mund tua ndaloj<6F> mesazhet private atyre p<>rgjithmon<6F>.");
$faq[] = array("M<EFBFBD> ka ardhur nj<6E> mesazh abuziv ose ofendues nga nj<6E> p<>rdorues i k<>tij forumi!", "Na vjen shum<75> keq p<>r k<>t<EFBFBD>. Sistemi i post<73>s elektronike q<> p<>rdor ky forum p<>rfshin disa m<>nyra p<>r gjetjen e personave q<> d<>rgojn<6A> mesazhe t<> tilla. Ju duhet ti d<>rgoni administratori nj<6E> kopje t<> plot<6F> t<> mesazhit q<> mor<6F>t; it is very important this include the headers (these list details of the user that sent the email). Administratori mund t<> veproj<6F> pastaj.");
//
// These entries should remain in all languages and for all modifications
//
$faq[] = array("--","C<EFBFBD>shtje t<> phpBB 2");
$faq[] = array("Kush e krijoi k<>t<EFBFBD> program?", "Ky program (n<> form<72>n origjinale) u prodhua, l<>shua dhe <20>sht<68> pron<6F> e <a href=\"http://www.phpbb.com/\" target=\"_blank\">phpBB Group</a>. I disponuesh<73>m sipas kushteve t<> GNU General Public Licence (Li<4C>enca Publike e P<>rgjithshme) dhe mund t<> kopjohet lirisht, kliko tek lidhja e m<>sip<69>rme p<>r detaje");
$faq[] = array("Pse nuk e ka X apo Y veti ky program?", "Ky program u shkrua dhe li<6C>encua n<>p<EFBFBD>rmjet phpBB Group. Nqs mendoni se nj<6E> veti e re duhet shtuar at<61>her<65> vizitoni faqen phpbb.com. Ju lutem mos postoni k<>rkesa p<>r veti tek forumi i phpbb.com, phpbb Group p<>rdor sourceforge.net p<>r menaxhimin e procesit t<> programimit t<> phpBB. Ju lutem shikoni n<>p<EFBFBD>r forum p<>r t<> par<61> se c'pozicion merr grupi yn<79> p<>r vetit<69> e reja dhe ndiqni procedurat e specifikuara.");
$faq[] = array("K<EFBFBD> duhet t<> kontaktoj p<>r probleme abuzimi apo legale n<> lidhje me k<>t<EFBFBD> forum?", "Ju duhet t<> kontaktoni administratorin e k<>tij forumi. Nqs nuk mundeni, duhet t<> kontaktoni ndonj<6E> nga moderator<6F>t. Nqs nuk merrni p<>rgjigje at<61>her<65> kontaktoni pronarin e domain-it (b<>ni nj<6E> k<>rkim whois) ose nqs ky forum p<>rdor nj<6E> sh<73>rbim falas (psh. yahoo, free.fr, f2s.com, etc.), departamentin e ankesave t<> atij sh<73>rbimi. Ju lutem kini parasysh q<> phpBB Group nuk ka absolutisht asnj<6E> kontroll mbi k<>t<EFBFBD> forum dhe nuk mund t<> mbahet p<>rgjegj<67>s se si, ku ose nga kush p<>rdoret ky forum. Esht<68> komplet i kot<6F> kontaktimi i phpBB Group n<> lidhje me cdo lloj <20><>shtjeje legale (cease and desist, liable, defamatory comment, etc.) q<> nuk lidhet direkt me phpbb.com ose me programin e phpBB vet<65>. Nqs i d<>rgoni ndonj<6E> mesazh phpBB Group mbi cdo lloj p<>rdorimi t<> k<>tij nga programi nga nj<6E> subjekt i tret<65> at<61>her<65> duhet t<> prisni nj<6E> p<>rgjigje t<> shkurt<72>r ose mos prisni fare.");
//
// This ends the FAQ entries
//
?>

View File

@@ -1,992 +0,0 @@
<?php
/***************************************************************************
* lang_main.php [English]
* -------------------
* begin : Sat Dec 16 2000
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id$
*
****************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
//
// The format of this file is:
//
// ---> $lang['message'] = "text";
//
// You should also try to set a locale and a character
// encoding (plus direction). The encoding and direction
// will be sent to the template. The locale may or may
// not work, it's dependent on OS support and the syntax
// varies ... give it your best guess!
//
//setlocale(LC_ALL, "en");
$lang['ENCODING'] = "iso-8859-1";
$lang['DIRECTION'] = "LTR";
$lang['LEFT'] = "LEFT";
$lang['RIGHT'] = "RIGHT";
$lang['DATE_FORMAT'] = "d M Y"; // This should be changed to the default date format for your language, php date() format
//
// Common, these terms are used
// extensively on several pages
//
$lang['Forum'] = "Forum";
$lang['Category'] = "Kategori";
$lang['Topic'] = "Tema";
$lang['Topics'] = "Temat";
$lang['Replies'] = "P<EFBFBD>rgjigjet";
$lang['Views'] = "Shikime";
$lang['Post'] = "Mesazh";
$lang['Posts'] = "Mesazhe";
$lang['Posted'] = "Postuar";
$lang['Username'] = "Identifikim";
$lang['Password'] = "Fjal<EFBFBD>kalim";
$lang['Email'] = "Email";
$lang['Poster'] = "Shkruesi";
$lang['Author'] = "Autori";
$lang['Time'] = "Ora";
$lang['Hours'] = "Or<EFBFBD>";
$lang['Message'] = "Mesazh";
$lang['1_Day'] = "1 Dit<69>";
$lang['7_Days'] = "7 Dit<69>";
$lang['2_Weeks'] = "2 Jav<61>";
$lang['1_Month'] = "1 Muaj";
$lang['3_Months'] = "3 Muaj";
$lang['6_Months'] = "6 Muaj";
$lang['1_Year'] = "1 Vit";
$lang['Go'] = "Shko";
$lang['Jump_to'] = "K<EFBFBD>rce tek";
$lang['Submit'] = "Paraqit";
$lang['Reset'] = "Nga e para";
$lang['Cancel'] = "Anullo";
$lang['Preview'] = "Preview";
$lang['Confirm'] = "Konfirmo";
$lang['Spellcheck'] = "Spellcheck";
$lang['Yes'] = "Po";
$lang['No'] = "Jo";
$lang['Enabled'] = "Aktivizuar";
$lang['Disabled'] = "C'aktivizuar";
$lang['Error'] = "Problem";
$lang['Next'] = "Tjetri";
$lang['Previous'] = "I m<>parsh<73>m";
$lang['Goto_page'] = "Shko tek faqja";
$lang['Joined'] = "An<EFBFBD>tar<EFBFBD>suar";
$lang['IP_Address'] = "Adresa IP";
$lang['Select_forum'] = "Zgjidh nj<6E> forum";
$lang['View_latest_post'] = "Shiko mesazhin e fundit";
$lang['View_newest_post'] = "Shiko mesazhin m<> t<> ri";
$lang['Page_of'] = "Faqja <b>%d</b> e <b>%d</b>"; // Replaces with: Page 1 of 2 for example
$lang['ICQ'] = "Nr. i ICQ";
$lang['AIM'] = "Adresa e AIM";
$lang['MSNM'] = "MSN Messenger";
$lang['YIM'] = "Yahoo Messenger";
$lang['Forum_Index'] = "%s Indeksi i forumit"; // eg. sitename Forum Index, %s can be removed if you prefer
$lang['Post_new_topic'] = "Posto tem<65> t<> re";
$lang['Reply_to_topic'] = "P<EFBFBD>rgjigju tem<65>s";
$lang['Reply_with_quote'] = "P<EFBFBD>rgjigju me kuot<6F>";
$lang['Click_return_topic'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek tema"; // %s's here are for uris, do not remove!
$lang['Click_return_login'] = "Kliko %sk<73>tu%s p<>r ta riprovuar";
$lang['Click_return_forum'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek forumi";
$lang['Click_view_message'] = "Kliko %sk<73>tu%s p<>r t<> par<61> mesazhin t<>nd";
$lang['Click_return_modcp'] = "Kliko %sk<73>tu%s p<>r tu kthyer Paneli i Kontrollit p<>r Moderator<6F>t";
$lang['Click_return_group'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek informacioni i grupit";
$lang['Admin_panel'] = "Shko tek Paneli i Administrimit";
$lang['Board_disable'] = "K<EFBFBD>rkojme ndjes<65> po ky forum nuk <20>sht<68> i disponuesh<73>m";
//
// Global Header strings
//
$lang['Registered_users'] = "An<EFBFBD>tar<EFBFBD>t e regjistruar";
$lang['Browsing_forum'] = "P<EFBFBD>rdoruesit q<> po shfletojn<6A> forumin:";
$lang['Online_users_zero_total'] = "<b>0</b> p<>rdorues online:";
$lang['Online_users_total'] = "<b>%d</b> p<>rdorues online:";
$lang['Online_user_total'] = "<b>%d</b> p<>rdorues online:";
$lang['Reg_users_zero_total'] = " 0 an<61>tar<61>";
$lang['Reg_users_total'] = " %d an<61>tar<61>";
$lang['Reg_user_total'] = " %d an<61>tar";
$lang['Hidden_users_zero_total'] = " 0 t<> fshehur";
$lang['Hidden_user_total'] = " %d t<> fshehur";
$lang['Hidden_users_total'] = " %d t<> fshehur";
$lang['Guest_users_zero_total'] = " 0 vizitor<6F>";
$lang['Guest_users_total'] = " %d vizitor<6F>";
$lang['Guest_user_total'] = " %d vizitor";
$lang['Record_online_users'] = "Nr. Rekord i p<>rdoruesve online ishte <b>%s</b> m<> %s"; // first %s = number of users, second %s is the date.
$lang['Admin_online_color'] = "%sAdministrator%s";
$lang['Mod_online_color'] = "%sModerator%s";
$lang['You_last_visit'] = "Hera e fundit q<> vizituat %s"; // %s replaced by date/time
$lang['Current_time'] = "Ora <20>sht<68> %s"; // %s replaced by time
$lang['Search_new'] = "Shiko mesazhet q<> nga vizita e fundit";
$lang['Search_your_posts'] = "Shiko mesazhet e tua";
$lang['Search_unanswered'] = "Shiko mesazhet pa p<>rgjigje";
$lang['Register'] = "Regjistrohu";
$lang['Profile'] = "Profili";
$lang['Edit_profile'] = "Modifiko profilin";
$lang['Search'] = "K<EFBFBD>rko";
$lang['Memberlist'] = "Lista e An<41>tar<61>ve";
$lang['FAQ'] = "FAQ";
$lang['BBCode_guide'] = "Udh<EFBFBD>zuesi i BBCode";
$lang['Usergroups'] = "Grupet e An<41>tar<61>ve";
$lang['Last_Post'] = "Mesazhi i fundit";
$lang['Moderator'] = "Moderator";
$lang['Moderators'] = "Moderator<EFBFBD>";
//
// Stats block text
//
$lang['Posted_articles_zero_total'] = "An<EFBFBD>tar<EFBFBD>t e k<>tij forumi kan<61> postuar <b>0</b> artikuj"; // Number of posts
$lang['Posted_articles_total'] = "An<EFBFBD>tar<EFBFBD>t e k<>tij forumi kan<61> postuar <b>%d</b> artikuj"; // Number of posts
$lang['Posted_article_total'] = "An<EFBFBD>tar<EFBFBD>t e k<>tij forumi kan<61> postuar <b>%d</b> artikull"; // Number of posts
$lang['Registered_users_zero_total'] = "Forumi ka <b>0</b> an<61>tar<61> t<> regjistruar"; // # registered users
$lang['Registered_users_total'] = "Forumi ka <b>%d</b> an<61>tar<61> t<> regjistruar"; // # registered users
$lang['Registered_user_total'] = "Forumi ka <b>%d</b> an<61>tar t<> regjistruar"; // # registered users
$lang['Newest_user'] = "An<EFBFBD>tari m<> i ri <20>sht<68> <b>%s%s%s</b>"; // a href, username, /a
$lang['No_new_posts_last_visit'] = "Asnj<EFBFBD> mesazh i ri q<> nga vizita juaj e fundit";
$lang['No_new_posts'] = "Asnj<EFBFBD> mesazh i ri";
$lang['New_posts'] = "Mesazhe t<> reja";
$lang['New_post'] = "Mesazh i ri";
$lang['No_new_posts_hot'] = "Asnj<EFBFBD> mesazh i ri [ Popular ]";
$lang['New_posts_hot'] = "Mesazhe t<> reja [ Popular ]";
$lang['No_new_posts_locked'] = "Asnj<EFBFBD> mesazh i ri [ Locked ]";
$lang['New_posts_locked'] = "Mesazhe t<> reja [ Locked ]";
$lang['Forum_is_locked'] = "Forumi <20>sht<68> kycur";
//
// Login
//
$lang['Enter_password'] = "Ju lutem shkruani identifikimin dhe fjalkalimin p<>r tu identifikuar";
$lang['Login'] = "Identifikohu";
$lang['Logout'] = "C'identifikohu";
$lang['Forgotten_password'] = "Harrova fjalkalimin";
$lang['Log_me_in'] = "M<EFBFBD> identifiko automatikisht sa her<65> q<> vizitoj";
$lang['Error_login'] = "Keni specifikuar nj<6E> llogari inekzistente, inaktive ose nj<6E> fjal<61>kalim t<> gabuar";
//
// Index page
//
$lang['Index'] = "Indeksi";
$lang['No_Posts'] = "Asnj<EFBFBD> mesazh";
$lang['No_forums'] = "Ky forum <20>sht<68> bosh";
$lang['Private_Message'] = "Mesazh Privat";
$lang['Private_Messages'] = "Mesazhe Private";
$lang['Who_is_Online'] = "Kush <20>sht<68> online";
$lang['Mark_all_forums'] = "Sh<EFBFBD>noji gjith<74> forumet si t<> vizituar";
$lang['Forums_marked_read'] = "T<EFBFBD> gjith<74> forumet jan<61> sh<73>nuar si t<> lexuar";
//
// Viewforum
//
$lang['View_forum'] = "Shiko forumin";
$lang['Forum_not_exist'] = "Forumi q<> zgjodh<64>t nuk ekziston";
$lang['Reached_on_error'] = "Keni arritur tek kjo faqe n<>p<EFBFBD>rmjet nj<6E> gabimi";
$lang['Display_topics'] = "Shfaq tema nga ";
$lang['All_Topics'] = "Gjith<EFBFBD> temat";
$lang['Topic_Announcement'] = "<b>Lajm<6A>rim:</b>";
$lang['Topic_Sticky'] = "<b>Ngjit<69>s</b>";
$lang['Topic_Moved'] = "<b>Ka l<>vizur</b>";
$lang['Topic_Poll'] = "<b>[ Sondazh ]</b>";
$lang['Mark_all_topics'] = "Sh<EFBFBD>noji gjith<74> temat si t<> lexuara";
$lang['Topics_marked_read'] = "Temat e k<>tij forumi u sh<73>nuan si t<> lexuara";
$lang['Rules_post_can'] = "Ju <b>mund</b> t<> krijoni tema t<> reja n<> k<>t<EFBFBD> forum";
$lang['Rules_post_cannot'] = "Ju <b>nuk mund</b> t<> krijoni tema t<> reja n<> k<>t<EFBFBD> forum";
$lang['Rules_reply_can'] = "Ju <b>mund</b> ti p<>rgjigjeni temave t<> k<>tij forumi";
$lang['Rules_reply_cannot'] = "Ju <b>nuk mund</b> ti p<>rgjigjeni temave t<> k<>tij forumi";
$lang['Rules_edit_can'] = "Ju <b>mund</b> t<> modifikoni postimet tuaja n<> k<>t<EFBFBD> forum";
$lang['Rules_edit_cannot'] = "Ju <b>nuk mund</b> t<> modifikoni postimet tuaja n<> k<>t<EFBFBD> forum";
$lang['Rules_delete_can'] = "Ju <b>mund</b> t<> fshini postimet tuaja n<> k<>t<EFBFBD> forum";
$lang['Rules_delete_cannot'] = "Ju <b>nuk mund</b> t<> fshini postimet tuaja n<> k<>t<EFBFBD> forum";
$lang['Rules_vote_can'] = "Ju <b>mund</b> t<> votoni n<> votimet e k<>tij forumi";
$lang['Rules_vote_cannot'] = "Ju <b>nuk mund</b> t<> votoni n<> votimet e k<>tij forumi";
$lang['Rules_moderate'] = "Ju <b>mund</b> t<> %smoderoni k<>t<EFBFBD> forum%s"; // %s replaced by a href links, do not remove!
$lang['No_topics_post_one'] = "Nuk ka asnj<6E> mesazh n<> k<>t<EFBFBD> forum<br />Kliko tek <b>Hap tem<65> t<> re</b> p<>r t<> hapur nj<6E>";
//
// Viewtopic
//
$lang['View_topic'] = "Shiko tem<65>n";
$lang['Guest'] = 'Guest';
$lang['Post_subject'] = "Titulli i mesazhit";
$lang['View_next_topic'] = "Shiko tem<65>n pasuese";
$lang['View_previous_topic'] = "Shiko tem<65>n e m<>parshme";
$lang['Submit_vote'] = "Paraqit vot<6F>n";
$lang['View_results'] = "Shiko rezultatin";
$lang['No_newer_topics'] = "Nuk ka tema m<> t<> reja n<> k<>t<EFBFBD> forum";
$lang['No_older_topics'] = "Nuk ka tema m<> t<> vjetra n<> k<>t<EFBFBD> forum";
$lang['Topic_post_not_exist'] = "Tema ose mesazhi q<> k<>rkuat nuk ekziston";
$lang['No_posts_topic'] = "Nuk ka asnj<6E> mezash p<>r k<>t<EFBFBD> tem<65>";
$lang['Display_posts'] = "Shfaq mesazhe nga";
$lang['All_Posts'] = "T<EFBFBD> gjitha mesazhet";
$lang['Newest_First'] = "M<EFBFBD> i riu n<> krye";
$lang['Oldest_First'] = "M<EFBFBD> i vjetri n<> krye";
$lang['Back_to_top'] = "Mbrapsht n<> krye";
$lang['Read_profile'] = "Shiko profilin e an<61>tarit";
$lang['Send_email'] = "D<EFBFBD>rgo email";
$lang['Visit_website'] = "Vizito websitin e shkruesit";
$lang['ICQ_status'] = "Statusi n<> ICQ";
$lang['Edit_delete_post'] = "Modifiko/fshi k<>t<EFBFBD> mesazh";
$lang['View_IP'] = "Shiko IP e shkruesit";
$lang['Delete_post'] = "Fshije k<>t<EFBFBD> mesazh";
$lang['wrote'] = "shkruajti"; // proceeds the username and is followed by the quoted text
$lang['Quote'] = "Kuot<EFBFBD>"; // comes before bbcode quote output.
$lang['Code'] = "Kodi"; // comes before bbcode code output.
$lang['Edited_time_total'] = "Edituar p<>r her<65> t<> fundit nga %s n<> %s, edituar %d her<65> gjithsej"; // Last edited by me on 12 Oct 2001, edited 1 time in total
$lang['Edited_times_total'] = "Edituar p<>r her<65> t<> fundit nga %s n<> %s, edituar %d her<65> gjithsej"; // Last edited by me on 12 Oct 2001, edited 2 times in total
$lang['Lock_topic'] = "Kyce k<>t<EFBFBD> tem<65>";
$lang['Unlock_topic'] = "Shkyce k<>t<EFBFBD> tem<65>";
$lang['Move_topic'] = "Zhvendose k<>t<EFBFBD> tem<65>";
$lang['Delete_topic'] = "Fshije k<>t<EFBFBD> tem<65>";
$lang['Split_topic'] = "Ndaje k<>t<EFBFBD> tem<65>";
$lang['Stop_watching_topic'] = "Ndalo s<> v<>zhguari k<>t<EFBFBD> tem<65>";
$lang['Start_watching_topic'] = "V<EFBFBD>zhgo k<>t<EFBFBD> tem<65> p<>r p<>rgjigje";
$lang['No_longer_watching'] = "Ju nuk e v<>zhgoni m<> k<>t<EFBFBD> tem<65>";
$lang['You_are_watching'] = "Ju jeni duke e v<>zhguar k<>t<EFBFBD> tem<65>";
$lang['Total_votes'] = "Totali i votave";
//
// Posting/Replying (Not private messaging!)
//
$lang['Message_body'] = "P<EFBFBD>rmbajtja e mesazhit";
$lang['Topic_review'] = "Shqyrto tem<65>n";
$lang['No_post_mode'] = "M<EFBFBD>nyra e postimit nuk <20>sht<68> specifikuar"; // If posting.php is called without a mode (newtopic/reply/delete/etc, shouldn't be shown normaly)
$lang['Post_a_new_topic'] = "Hap nj<6E> tem<65> t<> re";
$lang['Post_a_reply'] = "P<EFBFBD>rgjigju";
$lang['Post_topic_as'] = "Hap nj<6E> tem<65> si";
$lang['Edit_Post'] = "Modifiko mesazhin";
$lang['Options'] = "Mund<EFBFBD>sit<EFBFBD>";
$lang['Post_Announcement'] = "Lajm<EFBFBD>rim";
$lang['Post_Sticky'] = "Ngjit<EFBFBD>s";
$lang['Post_Normal'] = "Normal";
$lang['Confirm_delete'] = "Jeni i sigurt<72> p<>r fshirjen e k<>tij mesazhi?";
$lang['Confirm_delete_poll'] = "Jeni i sigurt<72> p<>r fshirjen e k<>tij sondazhi?";
$lang['Flood_Error'] = "Nuk mund t<> postoni prap<61> menj<6E>her<65>";
$lang['Empty_subject'] = "Duhet t<> specifikoni nj<6E> titull kur postoni nj<6E> mesazh";
$lang['Empty_message'] = "Duhet t<> shkruani dicka kur postoni nj<6E> mesazh";
$lang['Forum_locked'] = "Forumi <20>sht<68> kycur. Postimi, modifikimi dhe fshirja e temave s'lejohet";
$lang['Topic_locked'] = "Forumi <20>sht<68> kycur. Postimi dhe modifikimi i mesazheve nuk lejohet";
$lang['No_post_id'] = "Nuk u specifikua ID e postimit";
$lang['No_topic_id'] = "Duhet t<> zgjidhni nj<6E> tem<65> p<>r tu p<>rgjigjur";
$lang['No_valid_mode'] = "Ju vet<65>m mund t<> postoni, p<>rgjigjeni, modifikoni ose kuotoni mesazhet...ju lutem provojeni prap<61>";
$lang['No_such_post'] = "Nj<EFBFBD> post i till<6C> nuk ekziston, ju lutem provoni prap<61>";
$lang['Edit_own_posts'] = "Na vjen keq po ju mund t<> editoni vet<65>m mesazhet tuaja";
$lang['Delete_own_posts'] = "Na vjen keq po ju mund t<> fshini vet<65>m mesazhet tuaja";
$lang['Cannot_delete_replied'] = "Na vjen keq po ju nuk mund t<> fshini mesazhe t<> cilat kan<61> p<>rgjigje";
$lang['Cannot_delete_poll'] = "Na vjen keq po ju nuk mund t<> fshini nj<6E> sondazh aktiv";
$lang['Empty_poll_title'] = "Duhet t<> specifikoni nj<6E> titull p<>r sondazhin tuaj";
$lang['To_few_poll_options'] = "Duhet t<> specifikoni t<> pakt<6B>n dy zgjedhje p<>r sondazhin";
$lang['To_many_poll_options'] = "Keni v<>n<EFBFBD> shum<75> zgjedhje p<>r sondazhin";
$lang['Post_has_no_poll'] = "Ky mesazh nuk ka sondazh";
$lang['Add_poll'] = "Hap nj<6E> sondazh";
$lang['Add_poll_explain'] = "Nqs nuk do t<> shtosh nj<6E> sondazh tek tema, l<>re fush<73>n bosh";
$lang['Poll_question'] = "Pyetja e sondazhit";
$lang['Poll_option'] = "Zgjedhje sondazhi";
$lang['Add_option'] = "Shto mund<6E>si";
$lang['Update'] = "Ri-fresko";
$lang['Delete'] = "Fshi";
$lang['Poll_for'] = "Vazhdo sondazhin p<>r";
$lang['Days'] = "Dit<EFBFBD>"; // This is used for the Run poll for ... Days + in admin_forums for pruning
$lang['Poll_for_explain'] = "[ Shkruaj 0 ose l<>r bosh p<>r nj<6E> sondazh q<> vazhdon gjithmon<6F> ]";
$lang['Delete_poll'] = "Fshi sondazhin";
$lang['Disable_HTML_post'] = "Disaktivizo HTML n<> k<>t<EFBFBD> mesazh";
$lang['Disable_BBCode_post'] = "Disaktivizo BBCode n<> k<>t<EFBFBD> mesazh";
$lang['Disable_Smilies_post'] = "Disaktivizo figurinat n<> k<>t<EFBFBD> mesazh";
$lang['HTML_is_ON'] = "HTML <20>sht<68> e <u>aktivizuar</u>";
$lang['HTML_is_OFF'] = "HTML <20>sht<68> e <u>disaktivizuar</u>";
$lang['BBCode_is_ON'] = "%sBBCode%s <20>sht<68> i <u>aktivizuar</u>"; // %s are replaced with URI pointing to FAQ
$lang['BBCode_is_OFF'] = "%sBBCode%s <20>sht<68> i <u>disaktivizuar</u>";
$lang['Smilies_are_ON'] = "Figurinat jan<61> <u>aktivizuar</u>";
$lang['Smilies_are_OFF'] = "Figurinat jan<61> <u>disaktivizuar</u>";
$lang['Attach_signature'] = "Bashkangjit firm<72>n (firma mund t<> modifikohet tek profili)";
$lang['Notify'] = "M<EFBFBD> njofto kur dikush p<>rgjigjet";
$lang['Delete_post'] = "Fshije k<>t<EFBFBD> mesazh";
$lang['Stored'] = "Mesazhi juaj u postua me sukses";
$lang['Deleted'] = "Mesazhi juaj u fshi me sukses";
$lang['Poll_delete'] = "Sondazhi juaj u fshi me sukses";
$lang['Vote_cast'] = "Vota juaj u regjistrua";
$lang['Topic_reply_notification'] = "Njoftim p<>r p<>rgjigje tek tema";
$lang['bbcode_b_help'] = "Bold text: [b]text[/b] (alt+b)";
$lang['bbcode_i_help'] = "Italic text: [i]text[/i] (alt+i)";
$lang['bbcode_u_help'] = "Underline text: [u]text[/u] (alt+u)";
$lang['bbcode_q_help'] = "Quote text: [quote]text[/quote] (alt+q)";
$lang['bbcode_c_help'] = "Code display: [code]code[/code] (alt+c)";
$lang['bbcode_l_help'] = "List: [list]text[/list] (alt+l)";
$lang['bbcode_o_help'] = "Ordered list: [list=]text[/list] (alt+o)";
$lang['bbcode_p_help'] = "Insert image: [img]http://image_url[/img] (alt+p)";
$lang['bbcode_w_help'] = "Insert URL: [url]http://url[/url] or [url=http://url]URL text[/url] (alt+w)";
$lang['bbcode_a_help'] = "Close all open bbCode tags";
$lang['bbcode_s_help'] = "Font color: [color=red]text[/color] Tip: you can also use color=#FF0000";
$lang['bbcode_f_help'] = "Font size: [size=x-small]small text[/size]";
$lang['Emoticons'] = "Emocionet";
$lang['More_emoticons'] = "Trego m<> shum<75> emocione";
$lang['Font_color'] = "Ngjyra e fontit";
$lang['color_default'] = "E paracaktuar";
$lang['color_dark_red'] = "E kuqe e err<72>t";
$lang['color_red'] = "E kuqe";
$lang['color_orange'] = "Portokalli";
$lang['color_brown'] = "Kafe";
$lang['color_yellow'] = "E verdh<64>";
$lang['color_green'] = "Jeshile";
$lang['color_olive'] = "Ngjyr<EFBFBD> ulliri";
$lang['color_cyan'] = "Boj<EFBFBD>qielli";
$lang['color_blue'] = "Blu";
$lang['color_dark_blue'] = "Blu e err<72>t";
$lang['color_indigo'] = "Lejla";
$lang['color_violet'] = "Vjollc<EFBFBD>";
$lang['color_white'] = "E bardh<64>";
$lang['color_black'] = "E zez<65>";
$lang['Font_size'] = "Nr. i fontit";
$lang['font_tiny'] = "i vock<63>l";
$lang['font_small'] = "i vog<6F>l";
$lang['font_normal'] = "normal";
$lang['font_large'] = "i madh";
$lang['font_huge'] = "i st<73>rmadh";
$lang['Close_Tags'] = "Close Tags";
$lang['Styles_tip'] = "Tip: Styles can be applied quickly to selected text";
//
// Private Messaging
//
$lang['Private_Messaging'] = "Mesazhim privat";
$lang['Login_check_pm'] = "Identifikohu p<>r t<> par<61> mesazhet private";
$lang['New_pms'] = "Ju keni %d mesazhe t<> reja"; // You have 2 new messages
$lang['New_pm'] = "Ju keni %d mesazh t<> ri"; // You have 1 new message
$lang['No_new_pm'] = "Ju nuk keni asnj<6E> mesazh t<> ri";
$lang['Unread_pms'] = "Ju keni %d mesazhe t<> palexuara";
$lang['Unread_pm'] = "Ju keni % mesazh t<> palexuar";
$lang['No_unread_pm'] = "Ju nuk keni mesazhe t<> palexuara";
$lang['You_new_pm'] = "Nj<EFBFBD> mesazh privat i ri ka ardhur p<>r ju tek Inbox";
$lang['You_new_pms'] = "Disa mesazhe private t<> reja kan<61> ardhur p<>r ju tek Inbox";
$lang['You_no_new_pm'] = "Asnj<EFBFBD> mesazh privat i ri n<> Inbox";
$lang['Inbox'] = "Inbox";
$lang['Outbox'] = "Outbox";
$lang['Savebox'] = "Savebox";
$lang['Sentbox'] = "Sentbox";
$lang['Flag'] = "Flag";
$lang['Subject'] = "Titulli";
$lang['From'] = "Nga";
$lang['To'] = "P<EFBFBD>r";
$lang['Date'] = "Data";
$lang['Mark'] = "Sh<EFBFBD>no";
$lang['Sent'] = "D<EFBFBD>rguar";
$lang['Saved'] = "Ruajtur";
$lang['Delete_marked'] = "Fshi t<> sh<73>nuar<61>t";
$lang['Delete_all'] = "Fshiji t<> gjith<74>";
$lang['Save_marked'] = "Ruaji t<> sh<73>nuar<61>t";
$lang['Save_message'] = "Ruaj mesazhin";
$lang['Delete_message'] = "Fshi mesazhin";
$lang['Display_messages'] = "Shfaq mesazhe nga"; // Followed by number of days/weeks/months
$lang['All_Messages'] = "T<EFBFBD> gjith<74> mesazhet";
$lang['No_messages_folder'] = "Ju nuk keni asnj<6E> mesazh n<> k<>t<EFBFBD> dosje";
$lang['PM_disabled'] = "Mesazhet private nuk lejohen n<> k<>t<EFBFBD> forum";
$lang['Cannot_send_privmsg'] = "Na vjen keq, po administratori jua ka ndaluar d<>rgimin e mesazheve private";
$lang['No_to_user'] = "Duhet t<> specifikoni nj<6E> em<65>r p<>r t<> d<>rguar k<>t<EFBFBD> mesazh";
$lang['No_such_user'] = "Na vjen keq po ky an<61>tar nuk ekziston";
$lang['Disable_HTML_pm'] = "C'aktivizo HTML n<> k<>t<EFBFBD> mesazh";
$lang['Disable_BBCode_pm'] = "C'aktivizo BBCode n<> k<>t<EFBFBD> mesazh";
$lang['Disable_Smilies_pm'] = "C'aktivizo figurinat n<> k<>t<EFBFBD> mesazh";
$lang['Message_sent'] = "Mesazhi juaj u d<>rgua";
$lang['Click_return_inbox'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek Inbox";
$lang['Click_return_index'] = "Kliko %sk<73>tu%s p<>r tu kthyer tek Indeksi";
$lang['Send_a_new_message'] = "D<EFBFBD>rgo nj<6E> mesazh t<> ri privat";
$lang['Send_a_reply'] = "P<EFBFBD>rgjigju nj<6E> mesazhi privat";
$lang['Edit_message'] = "Modifiko mesazhin privat";
$lang['Notification_subject'] = "Nj<EFBFBD> mesazh i ri privat ka ardhur";
$lang['Find_username'] = "Gjej nj<6E> an<61>tar";
$lang['Find'] = "Gjej";
$lang['No_match'] = "Nuk u gjet asnj<6E>";
$lang['No_post_id'] = "Nuk u specifikua ID e postimit";
$lang['No_such_folder'] = "Nj<EFBFBD> dosje e till<6C> nuk ekziston";
$lang['No_folder'] = "Asnj<EFBFBD> dosje nuk u specifikua";
$lang['Mark_all'] = "Sh<EFBFBD>noji t<> gjith<74>/a";
$lang['Unmark_all'] = "De-Sh<53>no t<> gjitha :)";
$lang['Confirm_delete_pm'] = "Jeni i sigurt<72> q<> doni ta fshini k<>t<EFBFBD> mesazh?";
$lang['Confirm_delete_pms'] = "Jeni i sigurt<72> q<> doni ti fshini k<>to mesazhe?";
$lang['Inbox_size'] = "Ju e keni Inbox %d%% plot"; // eg. Your Inbox is 50% full
$lang['Sentbox_size'] = "Ju e keni Sentbox %d%% plot";
$lang['Savebox_size'] = "Ju e keni Savebox %d%% plot";
$lang['Click_view_privmsg'] = "Kliko %sk<73>tu%s p<>r t<> vizituar Inbox-in tuaj";
//
// Profiles/Registration
//
$lang['Viewing_user_profile'] = "Duke par<61> profilin :: %s"; // %s is username
$lang['About_user'] = "Gjithcka mbi %s"; // %s is username
$lang['Preferences'] = "Preferencat";
$lang['Items_required'] = "Artikujt e sh<73>nuar me * jan<61> t<> domosdosh<73>m (unless stated otherwise)";
$lang['Registration_info'] = "Informacioni i regjistrimit";
$lang['Profile_info'] = "Informacioni i profilit";
$lang['Profile_info_warn'] = "Ky informacion do jet<65> i disponuesh<73>m tek publiku";
$lang['Avatar_panel'] = "Paneli i kontrollit t<> ikonave personale";
$lang['Avatar_gallery'] = "Galeria e ikonave personale";
$lang['Website'] = "Websit";
$lang['Location'] = "Vendodhja";
$lang['Contact'] = "Kontakto";
$lang['Email_address'] = "Adresa e e-mail";
$lang['Email'] = "Email";
$lang['Send_private_message'] = "D<EFBFBD>rgo mesazh privat";
$lang['Hidden_email'] = "[ I/e fshehur ]";
$lang['Search_user_posts'] = "Gjej gjith<74> mesazhet nga %s";
$lang['Interests'] = "Interesat";
$lang['Occupation'] = "Profesioni";
$lang['Poster_rank'] = "Grada e an<61>tarit";
$lang['Total_posts'] = "Nr. total i mesazheve";
$lang['User_post_pct_stats'] = "%.2f%% i totalit"; // 1.25% of total
$lang['User_post_day_stats'] = "%.2f mesazhe n<> dit<69>"; // 1.5 posts per day
$lang['Search_user_posts'] = "Gjej gjith<74> mesazhet nga %s"; // Find all posts by username
$lang['No_user_id_specified'] = "Na vjen keq po ai an<61>tar nuk ekziston";
$lang['Wrong_Profile'] = "Nuk lejohet modifiki i profilit t<> nj<6E> tjetri";
$lang['Only_one_avatar'] = "Lejohet vet<65>m nj<6E> ikon<6F> personale";
$lang['File_no_data'] = "Skedari tek URL q<> specifikuat <20>sht<68> i korruptuar";
$lang['No_connection_URL'] = "Lidhja me URL q<> specifikuat <20>sht<68> e pamundur p<>r momentin";
$lang['Incomplete_URL'] = "URL q<> specifikuat nuk ekziston";
$lang['Wrong_remote_avatar_format'] = "URL e ikon<6F>s personale nuk <20>sht<68> e sakt<6B>";
$lang['No_send_account_inactive'] = "Na vjen keq, po fjal<61>kalimi juaj nuk mund t<> nxirret nga regjistri sepse llogaria juaj nuk <20>sht<68> aktive. Kontaktoni administratorin ";
$lang['Always_smile'] = "Lejo figurinat gjithmon<6F>";
$lang['Always_html'] = "Lejo HTML gjithmon<6F>";
$lang['Always_bbcode'] = "Lejo BBCode gjithmon<6F>";
$lang['Always_add_sig'] = "Bashkangjite firm<72>n gjithmon<6F>";
$lang['Always_notify'] = "M<EFBFBD> njofto gjithmon<6F> kur ka p<>rgjigje";
$lang['Always_notify_explain'] = "D<EFBFBD>rgon nj<6E> email kur dikush shkruan n<> nj<6E> tem<65> ku keni shkruar edhe ju. Ky opsion mund t<> ndryshohet sa her<65> q<> poston";
$lang['Board_style'] = "Stili i forumit";
$lang['Board_lang'] = "Gjuha e forumit";
$lang['No_themes'] = "Asnj<EFBFBD> tem<65> n<> regjist<73>r";
$lang['Timezone'] = "Brezi orar";
$lang['Date_format'] = "Formati i koh<6F>s";
$lang['Date_format_explain'] = "Sintaksa e p<>rdorur <20>sht<68> identike me at<61> t<> funksionit <a href=\"http://www.php.net/date\" target=\"_other\">date()</a> t<> PHP";
$lang['Signature'] = "Firma";
$lang['Signature_explain'] = "Kjo <20>sht<68> nj<6E> th<74>nie ose grup fjal<61>sh q<> i bashkangjitet cdo meszhi q<> shkruani. Nj<4E> limit prej %d karakteresh ekziston";
$lang['Public_view_email'] = "Gjithmon<EFBFBD> tregoje adres<65>n time t<> e-mail";
$lang['Current_password'] = "Fjal<EFBFBD>kalimi i tanish<73>m";
$lang['New_password'] = "Fjal<EFBFBD>kalimi i ri";
$lang['Confirm_password'] = "Konfirmo fjal<61>kalimin";
$lang['Confirm_password_explain'] = "You must confirm your current password if you wish to change it or alter your email address";
$lang['password_if_changed'] = "Vendosja e nj<6E> fjal<61>kalimi <20>sht<68> e nevojshme vet<65>m n<>se doni t<> ndryshoni fjal<61>kalimin e tanish<73>m";
$lang['password_confirm_if_changed'] = "Konfirmimi i fjal<61>kalimit <20>sht<68> i nevojsh<73>m vet<65>m n<>se doni t<> ndryshoni fjal<61>kalimin e tanish<73>m";
$lang['Avatar'] = "Ikona personale";
$lang['Avatar_explain'] = "Shfaq nj<6E> imazh t<> vog<6F>l posht<68> emrit tuaj kur postoni. Vet<65>m nj<6E> imazh <20>sht<68> i lejuar dhe gjer<65>sia lejohet deri n<> %d pixel, lart<72>sia deri n<> %d pixel dhe madh<64>sia e skedarit deri n<> %d kB.";
$lang['Upload_Avatar_URL'] = "Ngarko ikon<6F>n nga interneti";
$lang['Upload_Avatar_URL_explain'] = "Shkruaj adres<65>n e ikon<6F>s, do kopjohet k<>tu";
$lang['Pick_local_Avatar'] = "Zgjidh nj<6E> ikon<6F> nga galeria";
$lang['Link_remote_Avatar'] = "Link to off-site Avatar";
$lang['Link_remote_Avatar_explain'] = "Specifiko adres<65>n e internetit (URL) t<> imazhit q<> doni t<> lidhni si ikon<6F>";
$lang['Avatar_URL'] = "URL of Avatar Image";
$lang['Select_from_gallery'] = "Select Avatar from gallery";
$lang['View_avatar_gallery'] = "Show gallery";
$lang['Select_avatar'] = "Zgjidh ikon<6F>n";
$lang['Return_profile'] = "Anulloje ikon<6F>n";
$lang['Select_category'] = "Zgjidh kategorin<69>";
$lang['Delete_Image'] = "Fshi imazhin";
$lang['Current_Image'] = "Imazhi i tanish<73>m";
$lang['Notify_on_privmsg'] = "M<EFBFBD> njofto p<>r cdo mesazh privat";
$lang['Popup_on_privmsg'] = "Hap dritare t<> re kur merr mesazh privat";
$lang['Popup_on_privmsg_explain'] = "Some templates may open a new window to inform you when new private messages arrive";
$lang['Hide_user'] = "Hide your online status";
$lang['Profile_updated'] = "Profili juaj u rifreskua";
$lang['Profile_updated_inactive'] = "Your profile has been updated, however you have changed vital details thus your account is now inactive. Check your email to find out how to reactivate your account, or if admin activation is require wait for the administrator to reactivate your account";
$lang['Password_mismatch'] = "Fjal<EFBFBD>kalimet q<> specifikuat jan<61> t<> ndrysh<73>m";
$lang['Current_password_mismatch'] = "Fjal<EFBFBD>kalimi q<> specifikuat nuk <20>sht<68> i nj<6E>jt<6A> me at<61> n<> regjistrin ton<6F>";
$lang['Password_long'] = "Fjal<EFBFBD>kalimi juaj nuk duhet t<> ket<65> m<> shum<75> se 32 karaktere";
$lang['Username_taken'] = "Na vjen keq po ky identifikim <20>sht<68> n<> p<>rdorim";
$lang['Username_invalid'] = "Na vjen keq po ky identifikim p<>rmban nj<6E> karakter invalid si psh. \"";
$lang['Username_disallowed'] = "Na vjen keq po ky identifikim nuk <20>sht<68> i lejuesh<73>m";
$lang['Email_taken'] = "Na vjen keq po ajo adres<65> poste elektronike <20>sht<68> p<>rdorur m<> par<61>";
$lang['Email_banned'] = "Na vjen keq po ajo adres<65> poste elektronike <20>sht<68> p<>rjashtuar";
$lang['Email_invalid'] = "Na vjen keq po ajo adres<65> poste elektronike <20>sht<68> invalide";
$lang['Signature_too_long'] = "Firma juaj <20>sht<68> shum<75> e gjat<61>";
$lang['Fields_empty'] = "Duhet t<> mbushni fushat e domosdoshme";
$lang['Avatar_filetype'] = "Lloji i skedarit t<> ikon<6F>s personale duhet t<> jet<65> .jpg, .gif or .png";
$lang['Avatar_filesize'] = "Madh<EFBFBD>sia e skedarit t<> ikon<6F>s personale lejohet deri n<> %d kB"; // The avatar image file size must be less than 6 kB
$lang['Avatar_imagesize'] = "Ikona personale duhet t<> jet<65> deri n<> %d pixel e gj<67>r<EFBFBD> dhe %d pixel e lart<72>";
$lang['Welcome_subject'] = "Mir<EFBFBD>sevini tek %s Forums"; // Welcome to my.com forums
$lang['New_account_subject'] = "Llogari e re p<>r an<61>tar<61>";
$lang['Account_activated_subject'] = "Llogaria u aktivizua";
$lang['Account_added'] = "Faleminderit p<>r regjistrimin, llogaria juaj u hap. Ju tashti keni mund<6E>si t<> identifikoheni. ";
$lang['Account_inactive'] = "Llogaria juaj u hap. Megjithat<61>, ky forum k<>rkon aktivizimin e llogaris<69>. Nj<4E> mesazh me cel<65>sin e aktivizimit u d<>rgua tek adresa q<> dhat<61>. Shikoni mesazhin p<>r m<> shum<75> informacion.";
$lang['Account_inactive_admin'] = "Llogaria juaj u hap. Megjithat<61>, ky forum k<>rkon aktivizimin e llogaris<69> nga administratori. Nj<4E> mesazh do ju d<>rgohet sapo llogaria juaj t<> aktivizohet.";
$lang['Account_active'] = "Llogaria juaj u aktivizua, faleminderit p<>r regjistrimin";
$lang['Account_active_admin'] = "Llogaria u aktivizua";
$lang['Reactivate'] = "Riaktivizo llogarin<69>";
$lang['COPPA'] = "Llogaria juaj u krijua por duhet t<> aprovohet nga administratori. Shikoni post<73>n elektronike p<>r detaje.";
$lang['Registration'] = "Kushtet e Regjistrimit";
$lang['Reg_agreement'] = "Megjith<EFBFBD>se administrator<6F>t dhe moderator<6F>t e k<>tij forumi do mundohen t<> fshijn<6A> ose redaktojn<6A> shkrime t<> kund<6E>rshtueshme sa m<> par<61>, <20>sht<68> e pamundur q<> t<> rishikohet cdo mesazh. Prandaj ju duhet t<> kuptoni se mesazhet e postuara n<> k<>t<EFBFBD> forum jan<61> shprehje e opinionit t<> autorit dhe jo t<> administratorit, moderator<6F>ve apo webmasterit (p<>rvec rasteve kur k<>ta t<> fundit jan<61> autor<6F> t<> shkrimeve) dhe ata nuk mund t<> mbahen p<>rgjegj<67>s. <br /><br />Ju pranoni t<> mos shkruani mesazhe abuzuese, vulgare, t<> neveritshme, urryese, k<>rc<72>nuese, shpif<69>se apo cdo lloj materiali q<> mund t<> bjer<65> ndesh me ligjet n<> p<>rdorim. Shkrime t<> tilla do cojn<6A> n<> p<>rjashtimin tuaj t<> menj<6E>hersh<73>m dhe t<> p<>rhersh<73>m (dhe njoftimin e ISP-s<> tuaj). Adresa IP p<>r cdo mesazh regjistrohet p<>r t<> b<>r<EFBFBD> t<> mundur aplikimin e k<>tyre procedurave. Ju pranoni q<> webmasteri, administratori dhe moderator<6F>t e k<>tij forumi kan<61> t<> drejt<6A> t<> fshijn<6A>, redaktojn<6A>, zhvendosin apo kycin cdo tem<65> sipas gjykimit t<> tyre. Si p<>rdorues ju pranoni q<> informacioni q<> ju dhat<61> do t<> ruhet n<> nj<6E> regjist<73>r. Megjith<74>se ky informacion nuk do i jepet askujt pa lejen tuaj webmasteri, administratori dhe moderator<6F>t nuk mund t<> mbahen p<>rgjegj<67>s nqs ky informacion vidhet.<br /><br />Ky forum p<>rdor cookies p<>r t<> ruajtur informacion n<> kompjuterin tuaj. K<>to cookies nuk p<>rmbajn<6A> asnj<6E> informacion personal, ato sh<73>rbejn<6A> vet<65>m p<>r p<>rmir<69>simin e sh<73>rbimit q<> ofrohet nga ky forum. Adresa e post<73>s elektronike p<>rdoret vet<65>m p<>r konfirmimin e regjistrimit tuaj dhe fjal<61>kalimit (dhe n<> rastet kur u d<>rgohet nj<6E> fjal<61>kalimi i ri nqs harroni at<61> q<> kishit).";
$lang['Agree_under_13'] = "I pranoj k<>to kushte dhe jam <b>n<>n</b> 13 vjec";
$lang['Agree_over_13'] = "I pranoj k<>to kushte dhe jam <b>mbi</b> 13 vjec";
$lang['Agree_not'] = "Nuk i pranoj k<>to kushte";
$lang['Wrong_activation'] = "Cel<EFBFBD>si i aktivizimit q<> dhat<61> nuk p<>rkon me asnj<6E> cel<65>s n<> regjistrin ton<6F>.";
$lang['Send_password'] = "M<EFBFBD> d<>rgo nj<6E> fjal<61>kalim t<> ri";
$lang['Password_updated'] = "Nj<EFBFBD> fjal<61>kalim i ri u krijua, shiko post<73>n elektronike p<>r detajet e aktivizimit";
$lang['No_email_match'] = "Adresa e post<73>s elektronike q<> dhat<61> nuk p<>rkon me adres<65>n e atij an<61>tari";
$lang['New_password_activation'] = "Aktivizim i fjal<61>kalimit t<> ri";
$lang['Password_activated'] = "Llogaria juaj u ri-aktivizua. Jepni fjal<61>kalimin e ri p<>r tu identifikuar";
$lang['Send_email_msg'] = "D<EFBFBD>rgo nj<6E> mesazh me post<73> elektronike";
$lang['No_user_specified'] = "Asnj<EFBFBD> an<61>tar nuk u specifikua";
$lang['User_prevent_email'] = "Ky an<61>tar nuk pranon mesazhe me post<73> elektronike. Provo ti d<>rgosh nj<6E> mesazh privat.";
$lang['User_not_exist'] = "Ai an<61>tar nuk ekziston";
$lang['CC_email'] = "D<EFBFBD>rgoi vetes nj<6E> kopje t<> mesazhit";
$lang['Email_message_desc'] = "Ky mesazh do d<>rgohet si tekst i thjesht<68>. Mos p<>rdor HTML ose BBCode. Adresa e kthimit do jet<65> adresa juaj.";
$lang['Flood_email_limit'] = "Nuk mund t<> d<>rgosh nj<6E> mesazh tashti. Provo m<> von<6F>";
$lang['Recipient'] = "Marr<EFBFBD>si";
$lang['Email_sent'] = "Mesazhi u d<>rgua";
$lang['Send_email'] = "D<EFBFBD>rgo nj<6E> mesazh";
$lang['Empty_subject_email'] = "Duhet t<> specifikoni nj<6E> subjekt p<>r k<>t<EFBFBD> mesazh";
$lang['Empty_message_email'] = "Duhet t<> shkruani dicka q<> t<> d<>rgohet ky mesazh ";
//
// Memberslist
//
$lang['Select_sort_method'] = "Zgjidh metod<6F>n e renditjes";
$lang['Sort'] = "Rendit";
$lang['Sort_Top_Ten'] = "Top Ten Posters";
$lang['Sort_Joined'] = "Data e an<61>tar<61>simit";
$lang['Sort_Username'] = "Identifikimi";
$lang['Sort_Location'] = "Vendi";
$lang['Sort_Posts'] = "Nr. total i mesazheve";
$lang['Sort_Email'] = "Adresa e post<73>s elektronike";
$lang['Sort_Website'] = "Websiti";
$lang['Sort_Ascending'] = "N<EFBFBD> ngjitje";
$lang['Sort_Descending'] = "N<EFBFBD> zbritje";
$lang['Order'] = "Rregulli";
//
// Group control panel
//
$lang['Group_Control_Panel'] = "Paneli i Kontrollit t<> Grupeve";
$lang['Group_member_details'] = "Detajet e an<61>tar<61>sis<69> s<> grupeve";
$lang['Group_member_join'] = "Futu n<> nj<6E> grup";
$lang['Group_Information'] = "Informacioni i grupit";
$lang['Group_name'] = "Emri i grupit";
$lang['Group_description'] = "P<EFBFBD>rshkrimi i grupit";
$lang['Group_membership'] = "An<EFBFBD>tar<EFBFBD>sia e grupit";
$lang['Group_Members'] = "An<EFBFBD>tar<EFBFBD>t e grupit";
$lang['Group_Moderator'] = "Moderatori i grupit";
$lang['Pending_members'] = "An<EFBFBD>tar<EFBFBD>t n<> pritje";
$lang['Group_type'] = "Lloji i grupit";
$lang['Group_open'] = "Grup i hapur";
$lang['Group_closed'] = "Grup i mbyllur";
$lang['Group_hidden'] = "Grup i fsheht<68>";
$lang['Current_memberships'] = "An<EFBFBD>tar<EFBFBD>sia aktuale";
$lang['Non_member_groups'] = "Grupet pa an<61>tar<61>";
$lang['Memberships_pending'] = "An<EFBFBD>tar<EFBFBD>sit<EFBFBD> n<> pritje";
$lang['No_groups_exist'] = "Asnj<EFBFBD> grup nuk ekziston";
$lang['Group_not_exist'] = "Ai grup nuk ekziston";
$lang['Join_group'] = "Futu n<> grup";
$lang['No_group_members'] = "Ky grup nuk ka an<61>tar<61>";
$lang['Group_hidden_members'] = "Ky grup <20>sht<68> i fsheht<68>. Nuk mund t'ja shikosh an<61>tar<61>sin<69>";
$lang['No_pending_group_members'] = "Ky grup nuk ka an<61>tar<61> n<> pritje";
$lang["Group_joined"] = "Ju jeni pajtuar tek ky grup me sukses <br /> Ju do lajm<6A>roheni me post<73> elektronike kur t<> aprovoheni nga moderatori i grupit";
$lang['Group_request'] = "Esht<EFBFBD> b<>r<EFBFBD> nj<6E> k<>rkes<65> p<>r an<61>tar<61>sim";
$lang['Group_approved'] = "K<EFBFBD>rkesa juaj u aprovua";
$lang['Group_added'] = "Ju shtuat k<>tij grupi";
$lang['Already_member_group'] = "Ju jeni an<61>tar i k<>tij grupi tashm<68>!";
$lang['User_is_member_group'] = "P<EFBFBD>rdoruesi <20>sht<68> an<61>tar i k<>tij grupi tashm<68>";
$lang['Group_type_updated'] = "Lloji i grupit u ri-freskua";
$lang['Could_not_add_user'] = "P<EFBFBD>rdoruesi q<> zgjodh<64>t nuk ekziston";
$lang['Could_not_anon_user'] = "Nuk mund ta b<>sh an<61>tar grupi p<>rdoruesin Anonymous";
$lang['Confirm_unsub'] = "Jeni i sigurt<72> p<>r anullimin e pajtimit tek ky grup?";
$lang['Confirm_unsub_pending'] = "Pajtimi juaj tek ky grup nuk <20>sht<68> aprovuar akoma, jeni i sigurt<72> q<> doni ta anulloni?";
$lang['Unsub_success'] = "Pajtimi juaj tek ky grup <20>sht<68> anulluar";
$lang['Approve_selected'] = "Aprovo t<> zgjedhurit";
$lang['Deny_selected'] = "Kund<EFBFBD>rshto t<> zgjedhurit";
$lang['Not_logged_in'] = "Duhet t<> jeni i identifikuar p<>r tu futur n<> nj<6E> grup";
$lang['Remove_selected'] = "Hiq t<> zgjedhurit";
$lang['Add_member'] = "Shto an<61>tar";
$lang['Not_group_moderator'] = "Nuk mund ta kryeni at<61> veprim sepse nuk jeni moderatori i k<>tij grupi";
$lang['Login_to_join'] = "Identifikohu p<>r tu futur n<> nj<6E> grup ose p<>r t<> menaxhuar an<61>tar<61>sit<69>";
$lang['This_open_group'] = "Ky <20>sht<68> nj<6E> grup i hapur, klikoni p<>r t<> k<>rkuar an<61>tar<61>si";
$lang['This_closed_group'] = "Ky grup <20>sht<68> mbyllur, nuk pranohen m<> an<61>tar<61>";
$lang['This_hidden_group'] = "Ky <20>sht<68> grup i fsheht<68>, nuk lejohet aplikimi automatik";
$lang['Member_this_group'] = "Ju jeni an<61>tar i k<>tij grupi";
$lang['Pending_this_group'] = "K<EFBFBD>rkesa juaj p<>r an<61>tar<61>si n<> k<>t<EFBFBD> grup nuk <20>sht<68> konfirmuar akoma";
$lang['Are_group_moderator'] = "Ju jeni moderatori i grupit";
$lang['None'] = "Asnj<EFBFBD>";
$lang['Subscribe'] = "Pajtohu";
$lang['Unsubscribe'] = "Anullo pajtimin";
$lang['View_Information'] = "Shiko informacionin";
//
// Search
//
$lang['Search_query'] = "Search Query";
$lang['Search_options'] = "Search Options";
$lang['Search_keywords'] = "Search for Keywords";
$lang['Search_keywords_explain'] = "You can use <u>AND</u> to define words which must be in the results, <u>OR</u> to define words which may be in the result and <u>NOT</u> to define words which should not be in the result. Use * as a wildcard for partial matches";
$lang['Search_author'] = "K<EFBFBD>rko p<>r autorin";
$lang['Search_author_explain'] = "Use * as a wildcard for partial matches";
$lang['Search_for_any'] = "Search for any terms or use query as entered";
$lang['Search_for_all'] = "Search for all terms";
$lang['Search_title_msg'] = "K<EFBFBD>rko titullin dhe p<>rmbajtjen mesazhit";
$lang['Search_msg_only'] = "K<EFBFBD>rko vet<65>m p<>rmbajtjen mesazhit";
$lang['Return_first'] = "Return first"; // followed by xxx characters in a select box
$lang['characters_posts'] = "characters of posts";
$lang['Search_previous'] = "Search previous"; // followed by days, weeks, months, year, all in a select box
$lang['Sort_by'] = "Rendit sipas";
$lang['Sort_Time'] = "Koh<EFBFBD>s s<> postimit";
$lang['Sort_Post_Subject'] = "Subjekit t<> mesazhit";
$lang['Sort_Topic_Title'] = "Titullit t<> tem<65>s";
$lang['Sort_Author'] = "Autorit";
$lang['Sort_Forum'] = "Forumit";
$lang['Display_results'] = "Display results as";
$lang['All_available'] = "All available";
$lang['No_searchable_forums'] = "You do not have permissions to search any forum on this site";
$lang['No_search_match'] = "No topics or posts met your search criteria";
$lang['Found_search_match'] = "Search found %d match"; // eg. Search found 1 match
$lang['Found_search_matches'] = "Search found %d matches"; // eg. Search found 24 matches
$lang['Close_window'] = "Close Window";
//
// Auth related entries
//
// Note the %s will be replaced with one of the following 'user' arrays
$lang['Sorry_auth_announce'] = "Sorry but only %s can post announcements in this forum";
$lang['Sorry_auth_sticky'] = "Sorry but only %s can post sticky messages in this forum";
$lang['Sorry_auth_read'] = "Sorry but only %s can read topics in this forum";
$lang['Sorry_auth_post'] = "Sorry but only %s can post topics in this forum";
$lang['Sorry_auth_reply'] = "Sorry but only %s can reply to posts in this forum";
$lang['Sorry_auth_edit'] = "Sorry but only %s can edit posts in this forum";
$lang['Sorry_auth_delete'] = "Sorry but only %s can delete posts in this forum";
$lang['Sorry_auth_vote'] = "Sorry but only %s can vote in polls in this forum";
// These replace the %s in the above strings
$lang['Auth_Anonymous_Users'] = "<b>p<>rdorues anonim<69></b>";
$lang['Auth_Registered_Users'] = "<b>p<>rdorues t<> regjistruar</b>";
$lang['Auth_Users_granted_access'] = "<b>users granted special access</b>";
$lang['Auth_Moderators'] = "<b>moderator<6F>t</b>";
$lang['Auth_Administrators'] = "<b>administrator<6F>t</b>";
$lang['Not_Moderator'] = "Ju nuk jeni moderator i k<>tij forumi";
$lang['Not_Authorised'] = "I pa autorizuar";
$lang['You_been_banned'] = "Ju jeni p<>rjashtuar nga ky forum <br />Kontaktoni webmasterin ose administratorin e forumit";
//
// Viewonline
//
$lang['Reg_users_zero_online'] = "Ka 0 an<61>tar<61> dhe "; // There ae 5 Registered and
$lang['Reg_users_online'] = "Ka %d an<61>tar<61> dhe "; // There ae 5 Registered and
$lang['Reg_user_online'] = "Ka %d an<61>tar dhe "; // There ae 5 Registered and
$lang['Hidden_users_zero_online'] = "0 Hidden users online"; // 6 Hidden users online
$lang['Hidden_users_online'] = "%d an<61>tar<61> sekret n<> linj<6E>"; // 6 Hidden users online
$lang['Hidden_user_online'] = "%d an<61>tar sekret n<> linj<6E>"; // 6 Hidden users online
$lang['Guest_users_online'] = "Ka %d vizitor<6F> n<> linj<6E>"; // There are 10 Guest users online
$lang['Guest_users_zero_online'] = "Ka 0 vizitor<6F> n<> linj<6E>"; // There are 10 Guest users online
$lang['Guest_user_online'] = "Ka %d vizitor n<> linj<6E>"; // There is 1 Guest user online
$lang['No_users_browsing'] = "Nuk ka asnj<6E> p<>rdorues n<> linj<6E>";
$lang['Online_explain'] = "This data is based on users active over the past five minutes";
$lang['Forum_Location'] = "Venddodhja e forumit";
$lang['Last_updated'] = "Rifreskuar m<>";
$lang['Forum_index'] = "Indeksi i forumit";
$lang['Logging_on'] = "Duke u identifikuar";
$lang['Posting_message'] = "Duke shkruar nj<6E> mesazh";
$lang['Searching_forums'] = "Duke k<>rkuar n<>p<EFBFBD>r forum";
$lang['Viewing_profile'] = "Duke par<61> profilin";
$lang['Viewing_online'] = "Duke par<61> kush <20>sht<68> n<> linj<6E>";
$lang['Viewing_member_list'] = "Duke par<61> list<73>n e an<61>tar<61>ve";
$lang['Viewing_priv_msgs'] = "Duke par<61> mesazhet private";
$lang['Viewing_FAQ'] = "Duke par<61> FAQ";
//
// Moderator Control Panel
//
$lang['Mod_CP'] = "Paneli i kontrollit p<>r moderator<6F>t";
$lang['Mod_CP_explain'] = "N<EFBFBD>p<EFBFBD>rmjet formularit t<> m<>posht<68>m mund t<> moderoni k<>t<EFBFBD> forum. Mund t<> kycni, shkycni, l<>vizni ose fshini cdo tem<65> ose nr. temash.";
$lang['Select'] = "Zgjidh";
$lang['Delete'] = "Fshi";
$lang['Move'] = "L<EFBFBD>viz";
$lang['Lock'] = "Kyc";
$lang['Unlock'] = "Shkyc";
$lang['Topics_Removed'] = "Temat e zgjedhura u hoq<6F>n me sukses nga regjistri";
$lang['Topics_Locked'] = "Temat e zgjedhura u kyc<79>n me sukses";
$lang['Topics_Moved'] = "Temat e zgjedhura u zhvendos<6F>n me sukses";
$lang['Topics_Unlocked'] = "Temat e zgjedhura u shkyc<79>n me sukses";
$lang['No_Topics_Moved'] = "Asnj<EFBFBD> tem<65> nuk u zhvendos";
$lang['Confirm_delete_topic'] = "Jeni i sigurt<72> q<> doni t<> fshini tem<65>n/at e zgjedhur/a?";
$lang['Confirm_lock_topic'] = "Jeni i sigurt<72> q<> doni t<> kycni tem<65>n/at e zgjedhur/a?";
$lang['Confirm_unlock_topic'] = "Jeni i sigurt<72> q<> doni t<> shkycni tem<65>n/at e zgjedhur/a?";
$lang['Confirm_move_topic'] = "Jeni i sigurt<72> q<> doni t<> l<>vizni tem<65>n/at e zgjedhur/a";
$lang['Move_to_forum'] = "Zhvendos tek forumi";
$lang['Leave_shadow_topic'] = "L<EFBFBD>r hijen e tem<65>s tek forumi i vjet<65>r";
$lang['Split_Topic'] = "Split Topic Control Panel";
$lang['Split_Topic_explain'] = "Using the form below you can split a topic in two, either by selecting the posts individually or by splitting at a selected post";
$lang['Split_title'] = "New topic title";
$lang['Split_forum'] = "Forum for new topic";
$lang['Split_posts'] = "Split selected posts";
$lang['Split_after'] = "Split from selected post";
$lang['Topic_split'] = "The selected topic has been split successfully";
$lang['Too_many_error'] = "You have selected too many posts. You can only select one post to split a topic after!";
$lang['None_selected'] = "You have no selected any topics to preform this operation on. Please go back and select at least one.";
$lang['New_forum'] = "New forum";
$lang['This_posts_IP'] = "IP for this post";
$lang['Other_IP_this_user'] = "Other IP's this user has posted from";
$lang['Users_this_IP'] = "Users posting from this IP";
$lang['IP_info'] = "IP Information";
$lang['Lookup_IP'] = "Look up IP";
//
// Timezones ... for display on each page
//
$lang['All_times'] = "Ora <20>sht<68> sipas %s"; // eg. All times are GMT - 12 Hours (times from next block)
$lang['-12'] = "GMT - 12 Hours";
$lang['-11'] = "GMT - 11 Hours";
$lang['-10'] = "HST (Hawaii)";
$lang['-9'] = "GMT - 9 Hours";
$lang['-8'] = "PST (U.S./Canada)";
$lang['-7'] = "MST (U.S./Canada)";
$lang['-6'] = "CST (U.S./Canada)";
$lang['-5'] = "EST (U.S./Canada)";
$lang['-4'] = "GMT - 4 Hours";
$lang['-3.5'] = "GMT - 3.5 Hours";
$lang['-3'] = "GMT - 3 Hours";
$lang['-2'] = "Mid-Atlantic";
$lang['-1'] = "GMT - 1 Hours";
$lang['0'] = "GMT";
$lang['1'] = "CET (Europe)";
$lang['2'] = "EET (Europe)";
$lang['3'] = "GMT + 3 Hours";
$lang['3.5'] = "GMT + 3.5 Hours";
$lang['4'] = "GMT + 4 Hours";
$lang['4.5'] = "GMT + 4.5 Hours";
$lang['5'] = "GMT + 5 Hours";
$lang['5.5'] = "GMT + 5.5 Hours";
$lang['6'] = "GMT + 6 Hours";
$lang['6.5'] = "GMT + 6.5 Hours";
$lang['7'] = "GMT + 7 Hours";
$lang['8'] = "WST (Australia)";
$lang['9'] = "GMT + 9 Hours";
$lang['9.5'] = "CST (Australia)";
$lang['10'] = "EST (Australia)";
$lang['11'] = "GMT + 11 Hours";
$lang['12'] = "GMT + 12 Hours";
// These are displayed in the timezone select box
$lang['tz']['-12'] = "(GMT -12:00 hours) Eniwetok, Kwajalein";
$lang['tz']['-11'] = "(GMT -11:00 hours) Midway Island, Samoa";
$lang['tz']['-10'] = "(GMT -10:00 hours) Hawaii";
$lang['tz']['-9'] = "(GMT -9:00 hours) Alaska";
$lang['tz']['-8'] = "(GMT -8:00 hours) Pacific Time (US &amp; Canada), Tijuana";
$lang['tz']['-7'] = "(GMT -7:00 hours) Mountain Time (US &amp; Canada), Arizona";
$lang['tz']['-6'] = "(GMT -6:00 hours) Central Time (US &amp; Canada), Mexico City";
$lang['tz']['-5'] = "(GMT -5:00 hours) Eastern Time (US &amp; Canada), Bogota, Lima, Quito";
$lang['tz']['-4'] = "(GMT -4:00 hours) Atlantic Time (Canada), Caracas, La Paz";
$lang['tz']['-3.5'] = "(GMT -3:30 hours) Newfoundland";
$lang['tz']['-3'] = "(GMT -3:00 hours) Brassila, Buenos Aires, Georgetown, Falkland Is";
$lang['tz']['-2'] = "(GMT -2:00 hours) Mid-Atlantic, Ascension Is., St. Helena";
$lang['tz']['-1'] = "(GMT -1:00 hours) Azores, Cape Verde Islands";
$lang['tz']['0'] = "(GMT) Casablanca, Dublin, Edinburgh, London, Lisbon, Monrovia";
$lang['tz']['1'] = "(GMT +1:00 hours) Amsterdam, Berlin, Brussels, Madrid, Paris, Rome";
$lang['tz']['2'] = "(GMT +2:00 hours) Cairo, Helsinki, Kaliningrad, South Africa, Warsaw";
$lang['tz']['3'] = "(GMT +3:00 hours) Baghdad, Riyadh, Moscow, Nairobi";
$lang['tz']['3.5'] = "(GMT +3:30 hours) Tehran";
$lang['tz']['4'] = "(GMT +4:00 hours) Abu Dhabi, Baku, Muscat, Tbilisi";
$lang['tz']['4.5'] = "(GMT +4:30 hours) Kabul";
$lang['tz']['5'] = "(GMT +5:00 hours) Ekaterinburg, Islamabad, Karachi, Tashkent";
$lang['tz']['5.5'] = "(GMT +5:30 hours) Bombay, Calcutta, Madras, New Delhi";
$lang['tz']['6'] = "(GMT +6:00 hours) Almaty, Colombo, Dhaka, Novosibirsk";
$lang['tz']['6.5'] = "(GMT +6:30 hours) Rangoon";
$lang['tz']['7'] = "(GMT +7:00 hours) Bangkok, Hanoi, Jakarta";
$lang['tz']['8'] = "(GMT +8:00 hours) Beijing, Hong Kong, Perth, Singapore, Taipei";
$lang['tz']['9'] = "(GMT +9:00 hours) Osaka, Sapporo, Seoul, Tokyo, Yakutsk";
$lang['tz']['9.5'] = "(GMT +9:30 hours) Adelaide, Darwin";
$lang['tz']['10'] = "(GMT +10:00 hours) Canberra, Guam, Melbourne, Sydney, Vladivostok";
$lang['tz']['11'] = "(GMT +11:00 hours) Magadan, New Caledonia, Solomon Islands";
$lang['tz']['12'] = "(GMT +12:00 hours) Auckland, Wellington, Fiji, Marshall Island";
$lang['datetime']['Sunday'] = "e Diel<65>";
$lang['datetime']['Monday'] = "e H<>n<EFBFBD>";
$lang['datetime']['Tuesday'] = "e Mart<72>";
$lang['datetime']['Wednesday'] = "e M<>rkur<75>";
$lang['datetime']['Thursday'] = "e Enjte";
$lang['datetime']['Friday'] = "e Premte";
$lang['datetime']['Saturday'] = "e Shtun<75>";
$lang['datetime']['Sun'] = "Sun";
$lang['datetime']['Mon'] = "Mon";
$lang['datetime']['Tue'] = "Tue";
$lang['datetime']['Wed'] = "Wed";
$lang['datetime']['Thu'] = "Thu";
$lang['datetime']['Fri'] = "Fri";
$lang['datetime']['Sat'] = "Sat";
$lang['datetime']['January'] = "Janar";
$lang['datetime']['February'] = "Shkurt";
$lang['datetime']['March'] = "Mars";
$lang['datetime']['April'] = "Prill";
$lang['datetime']['May'] = "Maj";
$lang['datetime']['June'] = "Qershor";
$lang['datetime']['July'] = "Korrik";
$lang['datetime']['August'] = "Gusht";
$lang['datetime']['September'] = "Shtator";
$lang['datetime']['October'] = "Tetor";
$lang['datetime']['November'] = "N<EFBFBD>ntor";
$lang['datetime']['December'] = "Dhjetor";
$lang['datetime']['Jan'] = "Jan";
$lang['datetime']['Feb'] = "Feb";
$lang['datetime']['Mar'] = "Mar";
$lang['datetime']['Apr'] = "Apr";
$lang['datetime']['May'] = "May";
$lang['datetime']['Jun'] = "Jun";
$lang['datetime']['Jul'] = "Jul";
$lang['datetime']['Aug'] = "Aug";
$lang['datetime']['Sep'] = "Sep";
$lang['datetime']['Oct'] = "Oct";
$lang['datetime']['Nov'] = "Nov";
$lang['datetime']['Dec'] = "Dec";
//
// Errors (not related to a
// specific failure on a page)
//
$lang['Information'] = "Informacion";
$lang['Critical_Information'] = "Informacion kritik ";
$lang['General_Error'] = "Problem i p<>rgjithsh<73>m";
$lang['Critical_Error'] = "Problem kritik";
$lang['An_error_occured'] = "Pati nj<6E> problem";
$lang['A_critical_error'] = "Pati nj<6E> problem kritik";
//
// That's all Folks!
// -------------------------------------------------
?>

View File

@@ -1,10 +0,0 @@
Subject: <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Charset: windows-1256
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "{USERNAME}" <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
{U_ACTIVATE}
{EMAIL_SIG}

View File

@@ -1,12 +0,0 @@
Charset: windows-1256
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> "{SITENAME}". <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
{BOARD_EMAIL}
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{MESSAGE}

View File

@@ -1,8 +0,0 @@
Subject: <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Charset: windows-1256
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {USERNAME},
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "{SITENAME}" <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
{EMAIL_SIG}

View File

@@ -1,19 +0,0 @@
Subject: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> {SITENAME}
Charset: windows-1256
{WELCOME_MSG}
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>:
----------------------------
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: {USERNAME}
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: {PASSWORD}
----------------------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ѡ <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
{EMAIL_SIG}

View File

@@ -1,53 +0,0 @@
Subject: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> {SITENAME}
Charset: windows-1256
{WELCOME_MSG}
In compliance with the COPPA act your account is currently inactive.
Please print this message out and have your parent or guardian sign and date it. Then fax it to:
{FAX_INFO}
OR mail it to:
{MAIL_INFO}
------------------------------ CUT HERE ------------------------------
Permission to Participate at {SITENAME}
Username: {USERNAME}
Password: {PASSWORD}
Email: {EMAIL_ADDRESS}
ICQ Number: {ICQ}
AIM Address: {AIM}
MSN Messenger: {MSN}
Yahoo Messenger: {YIM}
Web Site: {WEB_SITE}
From: {FROM}
Occupation: {OCC}
Interests: {INTERESTS}
I HAVE REVIEWED THE INFORMATION PROVIDED BY MY CHILD AND HEREBY GRANT PERMISSION TO {SITENAME} TO STORE THIS INFORMATION.
I UNDERSTAND THIS INFORMATION CAN BE CHANGED AT ANY TIME BY ENTERING A PASSWORD.
I UNDERSTAND THAT MAY REQUEST FOR THIS INFORMATION TO BE REMOVED FROM {SITENAME} AT ANY TIME.
Parent or Guardian
(print your name here): _____________________
(sign here): __________________
Date: _______________
------------------------------ CUT HERE ------------------------------
Once the administrator has recived the above form via fax or regular mail your account will be activated.
Please do not forget your password as it has been encrypted in our database and we cannot retrieve it for you. However, should you forget your password you can request a new one which will be activated in the same way as this account.
Thank you for registering.
{EMAIL_SIG}

View File

@@ -1,12 +0,0 @@
Subject: <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Charset: windows-1256
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "{GROUP_NAME}" <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {SITENAME}.
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>:
{U_GROUPCP}
{EMAIL_SIG}

View File

@@ -1,11 +0,0 @@
Subject: <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
Charset: windows-1256
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "{GROUP_NAME}" <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {SITENAME}.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
{U_GROUPCP}
{EMAIL_SIG}

View File

@@ -1,11 +0,0 @@
Subject: <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Charset: windows-1256
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F> {GROUP_MODERATOR},
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {SITENAME}.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
{U_GROUPCP}
{EMAIL_SIG}

View File

@@ -1,10 +0,0 @@
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

View File

@@ -1,12 +0,0 @@
Subject: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Charset: windows-1256
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {USERNAME},
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "{SITENAME}" <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
{U_INBOX}
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
{EMAIL_SIG}

View File

@@ -1,14 +0,0 @@
Charset: windows-1256
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {TO_USERNAME},
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {FROM_USERNAME} <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {SITENAME}. <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
{BOARD_EMAIL}
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> {FROM_USERNAME}.
<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
~~~~~~~~~~~~~~~~~~~~~~~~~~~
{MESSAGE}

Some files were not shown because too many files have changed in this diff Show More