author | Dan |
Sun, 19 Apr 2009 19:13:41 -0400 | |
changeset 942 | 18db38c70a41 |
parent 915 | 91f4da84966f |
child 953 | 323c4cd1aa37 |
permissions | -rw-r--r-- |
1 | 1 |
<?php |
2 |
||
3 |
/* |
|
4 |
* Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between |
|
801
eb8b23f11744
Two big commits in one day I know, but redid password storage to use HMAC-SHA1. Consolidated much AES processing to three core methods in session that should handle everything automagically. Installation works; upgrades should. Rebranded as 1.1.6.
Dan
parents:
800
diff
changeset
|
5 |
* Version 1.1.6 (Caoineag beta 1) |
536 | 6 |
* Copyright (C) 2006-2008 Dan Fuhry |
1 | 7 |
* |
8 |
* This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License |
|
9 |
* as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. |
|
10 |
* |
|
11 |
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied |
|
12 |
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. |
|
13 |
*/ |
|
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
14 |
|
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
15 |
/** |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
16 |
* Fetch a value from the site configuration. |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
17 |
* @param string The identifier of the value ("site_name" etc.) |
620
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
18 |
* @param string If specified, this is the "default" value for the configuration entry. Defaults to false. |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
19 |
* @return string Configuration value, or bool(false) if the value is not set |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
20 |
*/ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
21 |
|
620
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
22 |
function getConfig($n, $default = false) |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
23 |
{ |
1 | 24 |
global $enano_config; |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
25 |
if ( isset( $enano_config[ $n ] ) ) |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
26 |
{ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
27 |
return $enano_config[$n]; |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
28 |
} |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
29 |
else |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
30 |
{ |
620
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
31 |
return $default; |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
32 |
} |
1 | 33 |
} |
34 |
||
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
35 |
/** |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
36 |
* Update or change a configuration value. |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
37 |
* @param string The identifier of the value ("site_name" etc.) |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
38 |
* @param string The new value |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
39 |
* @return null |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
40 |
*/ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
41 |
|
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
42 |
function setConfig($n, $v) |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
43 |
{ |
1 | 44 |
global $enano_config, $db; |
620
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
45 |
|
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
46 |
if ( isset($enano_config[$n]) ) |
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
47 |
{ |
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
48 |
if ( $enano_config[$n] === $v ) |
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
49 |
{ |
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
50 |
// configuration already matches this value |
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
51 |
return true; |
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
52 |
} |
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
53 |
} |
58852672ff12
Added "default" option for getConfig() and made setConfig() only set if the new value is different
Dan
parents:
613
diff
changeset
|
54 |
|
1 | 55 |
$enano_config[$n] = $v; |
842
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
56 |
if ( $v === false ) |
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
57 |
unset($enano_config[$n]); |
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
58 |
|
1 | 59 |
$v = $db->escape($v); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
60 |
|
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
61 |
$e = $db->sql_query('DELETE FROM '.table_prefix.'config WHERE config_name=\''.$n.'\';'); |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
62 |
if ( !$e ) |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
63 |
{ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
64 |
$db->_die('Error during generic setConfig() call row deletion.'); |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
65 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
66 |
|
842
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
67 |
if ( $v !== false ) |
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
68 |
{ |
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
69 |
$e = $db->sql_query('INSERT INTO '.table_prefix.'config(config_name, config_value) VALUES(\''.$n.'\', \''.$v.'\')'); |
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
70 |
if ( !$e ) |
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
71 |
{ |
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
72 |
$db->_die('Error during generic setConfig() call row insertion.'); |
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
73 |
} |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
74 |
} |
1 | 75 |
} |
76 |
||
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
77 |
/** |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
78 |
* Create a URI for an internal link. |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
79 |
* @param string The full identifier of the page to link to (Special:Administration) |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
80 |
* @param string The GET query string to append |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
81 |
* @param bool If true, perform htmlspecialchars() on the return value to make it HTML-safe |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
82 |
* @return string |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
83 |
*/ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
84 |
|
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
85 |
if ( !function_exists('makeUrl') ) |
1 | 86 |
{ |
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
87 |
function makeUrl($t, $query = false, $escape = false) |
377
bb3e6c3bd4f4
Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents:
376
diff
changeset
|
88 |
{ |
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
89 |
global $db, $session, $paths, $template, $plugins; // Common objects |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
90 |
$flags = ''; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
91 |
$sep = urlSeparator; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
92 |
$t = sanitize_page_id($t); |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
93 |
if ( isset($_GET['printable'] ) ) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
94 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
95 |
$flags .= $sep . 'printable=yes'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
96 |
$sep = '&'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
97 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
98 |
if ( isset($_GET['theme'] ) ) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
99 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
100 |
$flags .= $sep . 'theme='.$session->theme; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
101 |
$sep = '&'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
102 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
103 |
if ( isset($_GET['style'] ) ) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
104 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
105 |
$flags .= $sep . 'style='.$session->style; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
106 |
$sep = '&'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
107 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
108 |
if ( isset($_GET['lang']) && preg_match('/^[a-z0-9_]+$/', @$_GET['lang']) ) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
109 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
110 |
$flags .= $sep . 'lang=' . urlencode($_GET['lang']); |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
111 |
$sep = '&'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
112 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
113 |
|
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
114 |
$url = $session->append_sid(contentPath.$t.$flags); |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
115 |
if($query) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
116 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
117 |
$sep = strstr($url, '?') ? '&' : '?'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
118 |
$url = $url . $sep . $query; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
119 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
120 |
|
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
121 |
return ($escape) ? htmlspecialchars($url) : $url; |
377
bb3e6c3bd4f4
Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents:
376
diff
changeset
|
122 |
} |
1 | 123 |
} |
124 |
||
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
125 |
/** |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
126 |
* Create a URI for an internal link, and be namespace-friendly. Watch out for this one because it's different from most other Enano functions, in that the namespace is the first parameter. |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
127 |
* @param string The namespace ID |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
128 |
* @param string The page ID |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
129 |
* @param string The GET query string to append |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
130 |
* @param bool If true, perform htmlspecialchars() on the return value to make it HTML-safe |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
131 |
* @return string |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
132 |
*/ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
133 |
|
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
134 |
if ( !function_exists('makeUrlNS') ) |
1 | 135 |
{ |
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
136 |
function makeUrlNS($n, $t, $query = false, $escape = false) |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
137 |
{ |
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
138 |
global $db, $session, $paths, $template, $plugins; // Common objects |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
139 |
$flags = ''; |
468
194a19711346
Fixed the fact that cron just didn't work at all (brain fart that day or something)
Dan
parents:
458
diff
changeset
|
140 |
|
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
141 |
if(defined('ENANO_BASE_CLASSES_INITIALIZED')) |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
142 |
{ |
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
143 |
$sep = urlSeparator; |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
144 |
} |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
145 |
else |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
146 |
{ |
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
147 |
$sep = (strstr($_SERVER['REQUEST_URI'], '?')) ? '&' : '?'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
148 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
149 |
if ( isset( $_GET['printable'] ) ) { |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
150 |
$flags .= $sep . 'printable'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
151 |
$sep = '&'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
152 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
153 |
if ( isset( $_GET['theme'] ) ) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
154 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
155 |
$flags .= $sep . 'theme='.$session->theme; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
156 |
$sep = '&'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
157 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
158 |
if ( isset( $_GET['style'] ) ) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
159 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
160 |
$flags .= $sep . 'style='.$session->style; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
161 |
$sep = '&'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
162 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
163 |
if ( isset($_GET['lang']) && preg_match('/^[a-z0-9_]+$/', @$_GET['lang']) ) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
164 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
165 |
$flags .= $sep . 'lang=' . urlencode($_GET['lang']); |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
166 |
$sep = '&'; |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
167 |
} |
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
168 |
|
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
169 |
$ns_prefix = "$n:"; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
170 |
|
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
171 |
if(defined('ENANO_BASE_CLASSES_INITIALIZED')) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
172 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
173 |
$ns_prefix = ( isset($paths->nslist[$n]) ) ? $paths->nslist[$n] : $n . substr($paths->nslist['Special'], -1); |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
174 |
$url = contentPath . $ns_prefix . $t . $flags; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
175 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
176 |
else |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
177 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
178 |
// If the path manager hasn't been initted yet, take an educated guess at what the URI should be |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
179 |
$url = contentPath . $n . ':' . $t . $flags; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
180 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
181 |
|
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
182 |
if($query) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
183 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
184 |
if(strstr($url, '?')) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
185 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
186 |
$sep = '&'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
187 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
188 |
else |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
189 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
190 |
$sep = '?'; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
191 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
192 |
$url = $url . $sep . $query . $flags; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
193 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
194 |
|
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
195 |
if(defined('ENANO_BASE_CLASSES_INITIALIZED')) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
196 |
{ |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
197 |
$url = $session->append_sid($url); |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
198 |
} |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
199 |
|
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
200 |
return ($escape) ? htmlspecialchars($url) : $url; |
1 | 201 |
} |
202 |
} |
|
203 |
||
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
204 |
/** |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
205 |
* Create a URI for an internal link, be namespace-friendly, and add http://hostname/scriptpath to the beginning if possible. Watch out for this one because it's different from most other Enano functions, in that the namespace is the first parameter. |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
206 |
* @param string The namespace ID |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
207 |
* @param string The page ID |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
208 |
* @param string The GET query string to append |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
209 |
* @param bool If true, perform htmlspecialchars() on the return value to make it HTML-safe |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
210 |
* @return string |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
211 |
*/ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
212 |
|
1 | 213 |
function makeUrlComplete($n, $t, $query = false, $escape = false) |
214 |
{ |
|
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
215 |
return get_server_url() . makeUrlNS($n, $t, $query, $escape); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
216 |
} |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
217 |
|
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
218 |
/** |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
219 |
* Returns an http:// URL for this server. |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
220 |
* @return string |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
221 |
*/ |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
222 |
|
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
223 |
function get_server_url() |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
224 |
{ |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
225 |
return 'http' . ( $GLOBALS['is_https'] ) . '://' . $_SERVER['HTTP_HOST']; |
1 | 226 |
} |
227 |
||
228 |
/** |
|
741 | 229 |
* Returns the full page ID string of the main page. |
230 |
* @return string |
|
231 |
*/ |
|
232 |
||
233 |
function get_main_page($force_logged_in = false) |
|
234 |
{ |
|
235 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
236 |
||
237 |
$logged_in = false; |
|
238 |
if ( is_object($session) && !$force_logged_in ) |
|
239 |
{ |
|
240 |
$logged_in = $session->user_logged_in; |
|
241 |
} |
|
242 |
else if ( $force_logged_in ) |
|
243 |
{ |
|
244 |
$logged_in = true; |
|
245 |
} |
|
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
246 |
return $logged_in && getConfig('main_page_alt_enable', '0') == '1' ? getConfig('main_page_alt', getConfig('main_page', 'Main_Page')) : getConfig('main_page', 'Main_Page'); |
741 | 247 |
} |
248 |
||
249 |
/** |
|
345
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
250 |
* Enano replacement for date(). Accounts for individual users' timezone preferences. |
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
251 |
* @param string Date-formatted string |
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
252 |
* @param int Optional - UNIX timestamp value to use. If omitted, the current time is used. |
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
253 |
* @return string Formatted string |
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
254 |
*/ |
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
255 |
|
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
256 |
function enano_date($string, $timestamp = false) |
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
257 |
{ |
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
258 |
if ( !is_int($timestamp) && !is_double($timestamp) && strval(intval($timestamp)) !== $timestamp ) |
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
259 |
$timestamp = time(); |
406
7468a663315f
Added some basic timezone support; DST support is still to come.
Dan
parents:
391
diff
changeset
|
260 |
|
7468a663315f
Added some basic timezone support; DST support is still to come.
Dan
parents:
391
diff
changeset
|
261 |
// perform timestamp offset |
7468a663315f
Added some basic timezone support; DST support is still to come.
Dan
parents:
391
diff
changeset
|
262 |
global $timezone; |
7468a663315f
Added some basic timezone support; DST support is still to come.
Dan
parents:
391
diff
changeset
|
263 |
// it's gonna be in minutes, so multiply by 60 to offset the unix timestamp |
7468a663315f
Added some basic timezone support; DST support is still to come.
Dan
parents:
391
diff
changeset
|
264 |
$timestamp = $timestamp + ( $timezone * 60 ); |
7468a663315f
Added some basic timezone support; DST support is still to come.
Dan
parents:
391
diff
changeset
|
265 |
|
711
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
266 |
// are we in DST? |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
267 |
global $dst_params; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
268 |
if ( check_timestamp_dst($timestamp, $dst_params[0], $dst_params[1], $dst_params[2], $dst_params[3]) ) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
269 |
{ |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
270 |
// offset for DST |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
271 |
$timestamp += ( $dst_params[4] * 60 ); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
272 |
} |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
273 |
|
406
7468a663315f
Added some basic timezone support; DST support is still to come.
Dan
parents:
391
diff
changeset
|
274 |
// Let PHP do the work for us =) |
556
63e131c38876
More work done on effective permissions API, namely reporting of page group and usergroup names
Dan
parents:
542
diff
changeset
|
275 |
return gmdate($string, $timestamp); |
345
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
276 |
} |
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
277 |
|
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
343
diff
changeset
|
278 |
/** |
711
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
279 |
* Determine if a timestamp is within DST. |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
280 |
* @param int Timestamp |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
281 |
* @param int Start month (1-12) of DST |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
282 |
* @param int Which Sunday DST starts on (*_SUNDAY constants) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
283 |
* @param int End month of DST |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
284 |
* @param int Which Sunday DST ends on |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
285 |
* @return bool |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
286 |
*/ |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
287 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
288 |
function check_timestamp_dst($time, $start_month, $start_sunday, $end_month, $end_sunday) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
289 |
{ |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
290 |
static $sundays = array(FIRST_SUNDAY, SECOND_SUNDAY, THIRD_SUNDAY, LAST_SUNDAY); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
291 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
292 |
// perform timestamp offset |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
293 |
global $timezone; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
294 |
// it's gonna be in minutes, so multiply by 60 to offset the unix timestamp |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
295 |
$time = $time + ( $timezone * 60 ); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
296 |
$year = intval(gmdate('Y', $time)); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
297 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
298 |
// one-pass validation |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
299 |
if ( !in_array($start_sunday, $sundays) || !in_array($end_sunday, $sundays) || |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
300 |
$start_month < 1 || $start_month > 12 || $end_month < 1 || $end_month > 12 ) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
301 |
return false; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
302 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
303 |
// get timestamp of the selected sunday (start) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
304 |
$dst_start = get_sunday_timestamp($start_month, $start_sunday, $year); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
305 |
$dst_end = get_sunday_timestamp($end_month, $end_sunday, $year); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
306 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
307 |
if ( $dst_start > $dst_end ) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
308 |
{ |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
309 |
// start time is past the end time, this means we're in the southern hemisphere |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
310 |
// as a result, if we're within the range, DST is NOT in progress. |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
311 |
return !( $time >= $dst_start && $time <= $dst_end ); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
312 |
} |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
313 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
314 |
return $time >= $dst_start && $time <= $dst_end; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
315 |
} |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
316 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
317 |
/** |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
318 |
* Returns a timestamp for the given *_SUNDAY index. |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
319 |
* @param int Month |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
320 |
* @param int Which Sunday (FIRST, SECOND, THIRD, or LAST) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
321 |
* @param int Year that we're doing our calculations in |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
322 |
* @return int |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
323 |
*/ |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
324 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
325 |
function get_sunday_timestamp($month, $sunday, $year) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
326 |
{ |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
327 |
$days_in_month = array( |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
328 |
1 => 31, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
329 |
2 => $year % 4 == 0 && ( $year % 100 != 0 || ( $year % 100 == 0 && $year % 400 == 0 ) ) ? 29 : 28, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
330 |
3 => 31, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
331 |
4 => 30, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
332 |
5 => 31, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
333 |
6 => 30, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
334 |
7 => 31, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
335 |
8 => 31, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
336 |
9 => 30, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
337 |
10 => 31, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
338 |
11 => 30, |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
339 |
12 => 31 |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
340 |
); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
341 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
342 |
$result = mktime(0, 0, 0, $month, 1, $year); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
343 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
344 |
// hack. allows a specific day of the month to be set instead of a sunday. not a good place to do this. |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
345 |
if ( is_string($sunday) && substr($sunday, -1) === 'd' ) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
346 |
{ |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
347 |
$result += 86400 * ( intval($sunday) - 1); |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
348 |
return $result; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
349 |
} |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
350 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
351 |
$tick = 0; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
352 |
$days_remaining = $days_in_month[$month]; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
353 |
while ( true ) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
354 |
{ |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
355 |
if ( date('D', $result) == 'Sun' ) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
356 |
{ |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
357 |
$tick++; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
358 |
if ( ( $tick == 1 && $sunday == FIRST_SUNDAY ) || |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
359 |
( $tick == 2 && $sunday == SECOND_SUNDAY ) || |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
360 |
( $tick == 3 && $sunday == THIRD_SUNDAY ) || |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
361 |
( $sunday == LAST_SUNDAY && $days_remaining < 7 ) ) |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
362 |
break; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
363 |
} |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
364 |
$days_remaining--; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
365 |
$result += 86400; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
366 |
} |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
367 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
368 |
return $result; |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
369 |
} |
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
370 |
|
f70d764aab33
Added initial support for DST. Rules are defined in constants.php and are extensible.
Dan
parents:
710
diff
changeset
|
371 |
/** |
62
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
372 |
* Tells you the title for the given page ID string |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
373 |
* @param string Page ID string (ex: Special:Administration) |
91 | 374 |
* @param bool Optional. If true, and if the namespace turns out to be something other than Article, the namespace prefix will be prepended to the return value. |
62
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
375 |
* @return string |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
376 |
*/ |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
377 |
|
91 | 378 |
function get_page_title($page_id, $show_ns = true) |
62
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
379 |
{ |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
380 |
global $db, $session, $paths, $template, $plugins; // Common objects |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
381 |
|
62
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
382 |
$idata = RenderMan::strToPageID($page_id); |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
383 |
$page_id_key = $paths->nslist[ $idata[1] ] . $idata[0]; |
91 | 384 |
$page_id_key = sanitize_page_id($page_id_key); |
473
518bc2b214f1
Added modal dialog support for page editor; added customizability for breadcrumbs (thanks to Manoj for idea)
Dan
parents:
472
diff
changeset
|
385 |
$page_data = @$paths->pages[$page_id_key]; |
91 | 386 |
$title = ( isset($page_data['name']) ) ? |
387 |
( ( $page_data['namespace'] == 'Article' || !$show_ns ) ? |
|
388 |
'' : |
|
389 |
$paths->nslist[ $idata[1] ] ) |
|
390 |
. $page_data['name'] : |
|
391 |
( $show_ns ? $paths->nslist[$idata[1]] : '' ) . str_replace('_', ' ', dirtify_page_id( $idata[0] ) ); |
|
62
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
392 |
return $title; |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
393 |
} |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
394 |
|
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
395 |
/** |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
396 |
* Tells you the title for the given page ID and namespace |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
397 |
* @param string Page ID |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
398 |
* @param string Namespace |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
399 |
* @return string |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
400 |
*/ |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
401 |
|
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
402 |
function get_page_title_ns($page_id, $namespace) |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
403 |
{ |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
404 |
global $db, $session, $paths, $template, $plugins; // Common objects |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
405 |
|
468
194a19711346
Fixed the fact that cron just didn't work at all (brain fart that day or something)
Dan
parents:
458
diff
changeset
|
406 |
$ns_prefix = ( isset($paths->nslist[ $namespace ]) ) ? $paths->nslist[ $namespace ] : $namespace . substr($paths->nslist['Special'], -1); |
194a19711346
Fixed the fact that cron just didn't work at all (brain fart that day or something)
Dan
parents:
458
diff
changeset
|
407 |
$page_id_key = $ns_prefix . $page_id; |
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
408 |
if ( isPage($page_id_key) ) |
320
112debff64bd
SURPRISE! Preliminary PostgreSQL support added. The required schema file is not present in this commit and will be included at a later date. No installer support is implemented. Also in this commit: several fixes including <!-- SYSMSG ... --> was broken in template compiler; set fixed width on included images to prevent the thumbnail box from getting huge; added a much more friendly interface to AJAX responses that are invalid JSON
Dan
parents:
317
diff
changeset
|
409 |
{ |
112debff64bd
SURPRISE! Preliminary PostgreSQL support added. The required schema file is not present in this commit and will be included at a later date. No installer support is implemented. Also in this commit: several fixes including <!-- SYSMSG ... --> was broken in template compiler; set fixed width on included images to prevent the thumbnail box from getting huge; added a much more friendly interface to AJAX responses that are invalid JSON
Dan
parents:
317
diff
changeset
|
410 |
$page_data = $paths->pages[$page_id_key]; |
112debff64bd
SURPRISE! Preliminary PostgreSQL support added. The required schema file is not present in this commit and will be included at a later date. No installer support is implemented. Also in this commit: several fixes including <!-- SYSMSG ... --> was broken in template compiler; set fixed width on included images to prevent the thumbnail box from getting huge; added a much more friendly interface to AJAX responses that are invalid JSON
Dan
parents:
317
diff
changeset
|
411 |
} |
112debff64bd
SURPRISE! Preliminary PostgreSQL support added. The required schema file is not present in this commit and will be included at a later date. No installer support is implemented. Also in this commit: several fixes including <!-- SYSMSG ... --> was broken in template compiler; set fixed width on included images to prevent the thumbnail box from getting huge; added a much more friendly interface to AJAX responses that are invalid JSON
Dan
parents:
317
diff
changeset
|
412 |
else |
112debff64bd
SURPRISE! Preliminary PostgreSQL support added. The required schema file is not present in this commit and will be included at a later date. No installer support is implemented. Also in this commit: several fixes including <!-- SYSMSG ... --> was broken in template compiler; set fixed width on included images to prevent the thumbnail box from getting huge; added a much more friendly interface to AJAX responses that are invalid JSON
Dan
parents:
317
diff
changeset
|
413 |
{ |
112debff64bd
SURPRISE! Preliminary PostgreSQL support added. The required schema file is not present in this commit and will be included at a later date. No installer support is implemented. Also in this commit: several fixes including <!-- SYSMSG ... --> was broken in template compiler; set fixed width on included images to prevent the thumbnail box from getting huge; added a much more friendly interface to AJAX responses that are invalid JSON
Dan
parents:
317
diff
changeset
|
414 |
$page_data = array(); |
112debff64bd
SURPRISE! Preliminary PostgreSQL support added. The required schema file is not present in this commit and will be included at a later date. No installer support is implemented. Also in this commit: several fixes including <!-- SYSMSG ... --> was broken in template compiler; set fixed width on included images to prevent the thumbnail box from getting huge; added a much more friendly interface to AJAX responses that are invalid JSON
Dan
parents:
317
diff
changeset
|
415 |
} |
468
194a19711346
Fixed the fact that cron just didn't work at all (brain fart that day or something)
Dan
parents:
458
diff
changeset
|
416 |
$title = ( isset($page_data['name']) ) ? $page_data['name'] : $ns_prefix . str_replace('_', ' ', dirtify_page_id( $page_id ) ); |
62
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
417 |
return $title; |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
418 |
} |
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
419 |
|
9dc4fded30e6
Redirect pages actually work stable-ish now; critical extraneous debug message removed (oops!)
Dan
parents:
48
diff
changeset
|
420 |
/** |
1 | 421 |
* Redirect the user to the specified URL. |
422 |
* @param string $url The URL, either relative or absolute. |
|
423 |
* @param string $title The title of the message |
|
424 |
* @param string $message A short message to show to the user |
|
556
63e131c38876
More work done on effective permissions API, namely reporting of page group and usergroup names
Dan
parents:
542
diff
changeset
|
425 |
* @param string $timeout Timeout, in seconds, to delay the redirect. Defaults to 3. If 0, sends a 307 Temporary Redirect. |
1 | 426 |
*/ |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
427 |
|
210
2b283402e4e4
Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
209
diff
changeset
|
428 |
function redirect($url, $title = 'etc_redirect_title', $message = 'etc_redirect_body', $timeout = 3) |
1 | 429 |
{ |
430 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
210
2b283402e4e4
Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
209
diff
changeset
|
431 |
global $lang; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
432 |
|
909
94c1ff984286
Finished core of log display interface including filter management. There is still a bit of a to-do list, especially regarding rollbacks and reuploads.
Dan
parents:
906
diff
changeset
|
433 |
// POST check added in 1.1.x because Firefox 3.0 asks us if we want to "resend the form |
343
eefe9ab7fe7c
Localized the first parts of the admin panel. As a consequence, also wrote a brand new Admin:PageManager that doesn't suck like the old one did.
Dan
parents:
335
diff
changeset
|
434 |
// data to the new location", which can be confusing for some users. |
909
94c1ff984286
Finished core of log display interface including filter management. There is still a bit of a to-do list, especially regarding rollbacks and reuploads.
Dan
parents:
906
diff
changeset
|
435 |
$is_firefox_3 = ( strstr(@$_SERVER['HTTP_USER_AGENT'], 'Firefox/3.') ) ? true : false; |
94c1ff984286
Finished core of log display interface including filter management. There is still a bit of a to-do list, especially regarding rollbacks and reuploads.
Dan
parents:
906
diff
changeset
|
436 |
if ( $timeout == 0 && ( empty($_POST) || !$is_firefox_3 ) ) |
1 | 437 |
{ |
438 |
header('Location: ' . $url); |
|
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
387
diff
changeset
|
439 |
header('Content-length: 0'); |
1 | 440 |
header('HTTP/1.1 307 Temporary Redirect'); |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
387
diff
changeset
|
441 |
|
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
387
diff
changeset
|
442 |
// with 3xx codes HTTP clients expect a response of 0 bytes, so just die here |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
387
diff
changeset
|
443 |
exit(); |
1 | 444 |
} |
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
445 |
|
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
446 |
if ( !is_object($template) ) |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
447 |
{ |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
448 |
$template = new template_nodb(); |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
449 |
$template->load_theme('oxygen', 'bleu', false); |
574 | 450 |
$template->assign_vars(array( |
451 |
'SITE_NAME' => 'Enano', |
|
452 |
'SITE_DESC' => 'This site is experiencing a critical error and cannot load.', |
|
453 |
'COPYRIGHT' => 'Powered by Enano CMS - © 2006-2008 Dan Fuhry. This program is Free Software; see the <a href="' . scriptPath . '/install.php?mode=license">GPL file</a> included with this package for details.', |
|
454 |
'PAGE_NAME' => htmlspecialchars($title) |
|
455 |
)); |
|
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
456 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
457 |
|
1 | 458 |
$template->add_header('<meta http-equiv="refresh" content="' . $timeout . '; url=' . str_replace('"', '\\"', $url) . '" />'); |
459 |
$template->add_header('<script type="text/javascript"> |
|
460 |
function __r() { |
|
461 |
// FUNCTION AUTOMATICALLY GENERATED |
|
462 |
window.location="' . str_replace('"', '\\"', $url) . '"; |
|
463 |
} |
|
464 |
setTimeout(\'__r();\', ' . $timeout . '000); |
|
465 |
</script> |
|
466 |
'); |
|
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
467 |
|
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
468 |
if ( get_class($template) == 'template_nodb' ) |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
469 |
$template->init_vars(); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
470 |
|
574 | 471 |
$template->assign_vars(array('PAGE_NAME' => $title)); |
1 | 472 |
$template->header(true); |
210
2b283402e4e4
Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
209
diff
changeset
|
473 |
echo '<p>' . $message . '</p>'; |
2b283402e4e4
Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
209
diff
changeset
|
474 |
$subst = array( |
335
67bd3121a12e
Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
parents:
334
diff
changeset
|
475 |
'timeout' => $timeout, |
210
2b283402e4e4
Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
209
diff
changeset
|
476 |
'redirect_url' => str_replace('"', '\\"', $url) |
2b283402e4e4
Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
209
diff
changeset
|
477 |
); |
2b283402e4e4
Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
209
diff
changeset
|
478 |
echo '<p>' . $lang->get('etc_redirect_timeout', $subst) . '</p>'; |
1 | 479 |
$template->footer(true); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
480 |
|
1 | 481 |
$db->close(); |
482 |
exit(0); |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
483 |
|
1 | 484 |
} |
485 |
||
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
486 |
/** |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
487 |
* Generates a confirmation form if a CSRF check fails. Will terminate execution. |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
488 |
*/ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
489 |
|
573
43e7254afdb4
Renamed some functions (that were new in this release anyway) due to compatibility broken with PunBB bridge
Dan
parents:
566
diff
changeset
|
490 |
function csrf_request_confirm() |
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
491 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
492 |
global $db, $session, $paths, $template, $plugins; // Common objects |
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
493 |
global $lang, $output; |
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
494 |
|
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
495 |
// If the token was overridden with the correct one, the user confirmed the action using this form. Continue exec. |
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
496 |
if ( isset($_POST['cstok']) || isset($_GET['cstok']) ) |
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
497 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
498 |
// using the if() check makes sure that the token isn't in a cookie, since $_REQUEST includes $_COOKIE. |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
499 |
$token_check =& $_REQUEST['cstok']; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
500 |
if ( $token_check === $session->csrf_token ) |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
501 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
502 |
// overridden token matches, continue exec |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
503 |
return true; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
504 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
505 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
506 |
|
842
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
507 |
ob_end_clean(); |
f13bb4f21890
setConfig() will now delete config values if the second parameter is explicitly set to false
Dan
parents:
832
diff
changeset
|
508 |
|
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
509 |
$output->set_title($lang->get('user_csrf_confirm_title')); |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
510 |
$output->header(); |
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
511 |
|
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
512 |
// initial info |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
513 |
echo '<p>' . $lang->get('user_csrf_confirm_body') . '</p>'; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
514 |
|
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
515 |
// start form |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
516 |
$form_method = ( empty($_POST) ) ? 'get' : 'post'; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
517 |
echo '<form action="' . htmlspecialchars($_SERVER['REQUEST_URI']) . '" method="' . $form_method . '" enctype="multipart/form-data">'; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
518 |
|
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
519 |
echo '<fieldset enano:expand="closed">'; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
520 |
echo '<legend>' . $lang->get('user_csrf_confirm_btn_viewrequest') . '</legend><div>'; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
521 |
|
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
522 |
if ( empty($_POST) ) |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
523 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
524 |
// GET request |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
525 |
echo csrf_confirm_get_recursive(); |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
526 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
527 |
else |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
528 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
529 |
// POST request |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
530 |
echo csrf_confirm_post_recursive(); |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
531 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
532 |
echo '</div></fieldset>'; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
533 |
// insert the right CSRF token |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
534 |
echo '<input type="hidden" name="cstok" value="' . $session->csrf_token . '" />'; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
535 |
echo '<p><input type="submit" value="' . $lang->get('user_csrf_confirm_btn_continue') . '" /></p>'; |
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
536 |
echo '</form><script type="text/javascript">addOnloadHook(function(){load_component(\'expander\');});</script>'; |
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
537 |
|
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
538 |
$output->footer(); |
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
539 |
|
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
540 |
exit; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
541 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
542 |
|
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
543 |
function csrf_confirm_get_recursive($_inner = false, $pfx = false, $data = false) |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
544 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
545 |
// make posted arrays work right |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
546 |
if ( !$data ) |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
547 |
( $_inner == 'post' ) ? $data =& $_POST : $data =& $_GET; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
548 |
foreach ( $data as $key => $value ) |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
549 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
550 |
$pfx_this = ( empty($pfx) ) ? $key : "{$pfx}[{$key}]"; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
551 |
if ( is_array($value) ) |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
552 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
553 |
csrf_confirm_get_recursive(true, $pfx_this, $value); |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
554 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
555 |
else if ( empty($value) ) |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
556 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
557 |
echo htmlspecialchars($pfx_this . " = <nil>") . "<br />\n"; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
558 |
echo '<input type="hidden" name="' . htmlspecialchars($pfx_this) . '" value="" />'; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
559 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
560 |
else |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
561 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
562 |
echo htmlspecialchars($pfx_this . " = " . $value) . "<br />\n"; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
563 |
echo '<input type="hidden" name="' . htmlspecialchars($pfx_this) . '" value="' . htmlspecialchars($value) . '" />'; |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
564 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
565 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
566 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
567 |
|
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
568 |
function csrf_confirm_post_recursive() |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
569 |
{ |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
570 |
csrf_confirm_get_recursive('post'); |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
571 |
} |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
572 |
|
1 | 573 |
// Removed wikiFormat() from here, replaced with RenderMan::render |
574 |
||
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
575 |
/** |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
576 |
* Tell me if the page exists or not. |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
577 |
* @param string the full page ID (Special:Administration) of the page to check for |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
578 |
* @return bool True if the page exists, false otherwise |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
579 |
*/ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
580 |
|
1 | 581 |
function isPage($p) { |
582 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
583 |
|
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
584 |
// Try the easy way first ;-) |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
585 |
if ( isset( $paths->pages[ $p ] ) ) |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
586 |
{ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
587 |
return true; |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
588 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
589 |
|
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
590 |
// Special case for Special, Template, and Admin pages that can't have slashes in their URIs |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
591 |
$ns_test = RenderMan::strToPageID( $p ); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
592 |
|
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
593 |
if($ns_test[1] != 'Special' && $ns_test[1] != 'Template' && $ns_test[1] != 'Admin') |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
594 |
{ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
595 |
return false; |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
596 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
597 |
|
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
598 |
$particles = explode('/', $p); |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
599 |
if ( isset ( $paths->pages[ $particles[ 0 ] ] ) ) |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
600 |
{ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
601 |
return true; |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
602 |
} |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
603 |
else |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
604 |
{ |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
605 |
return false; |
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
606 |
} |
1 | 607 |
} |
608 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
609 |
/** |
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
610 |
* Returns the appropriate Namespace_* object for a page. |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
611 |
* @param string Page ID |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
612 |
* @param string Namespace |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
613 |
* @param int Revision ID |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
614 |
*/ |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
615 |
|
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
616 |
function namespace_factory($page_id, $namespace, $revision_id = 0) |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
617 |
{ |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
618 |
if ( !class_exists("Namespace_$namespace") ) |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
619 |
{ |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
620 |
if ( file_exists(ENANO_ROOT . "/includes/namespaces/" . strtolower($namespace) . ".php") ) |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
621 |
{ |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
622 |
require(ENANO_ROOT . "/includes/namespaces/" . strtolower($namespace) . ".php"); |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
623 |
} |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
624 |
} |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
625 |
if ( class_exists("Namespace_$namespace") ) |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
626 |
{ |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
627 |
$class = "Namespace_$namespace"; |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
628 |
$ns = new $class($page_id, $namespace, $revision_id); |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
629 |
return $ns; |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
630 |
} |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
631 |
else |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
632 |
{ |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
633 |
$ns = new Namespace_Default($page_id, $namespace, $revision_id); |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
634 |
return $ns; |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
635 |
} |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
636 |
} |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
637 |
|
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
638 |
/** |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
639 |
* These are some old functions that were used with the Midget codebase. They are deprecated and should not be used any more. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
640 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
641 |
|
1 | 642 |
function arrayItemUp($arr, $keyname) { |
643 |
$keylist = array_keys($arr); |
|
644 |
$keyflop = array_flip($keylist); |
|
645 |
$idx = $keyflop[$keyname]; |
|
646 |
$idxm = $idx - 1; |
|
647 |
$temp = $arr[$keylist[$idxm]]; |
|
648 |
if($arr[$keylist[0]] == $arr[$keyname]) return $arr; |
|
649 |
$arr[$keylist[$idxm]] = $arr[$keylist[$idx]]; |
|
650 |
$arr[$keylist[$idx]] = $temp; |
|
651 |
return $arr; |
|
652 |
} |
|
653 |
||
654 |
function arrayItemDown($arr, $keyname) { |
|
655 |
$keylist = array_keys($arr); |
|
656 |
$keyflop = array_flip($keylist); |
|
657 |
$idx = $keyflop[$keyname]; |
|
658 |
$idxm = $idx + 1; |
|
659 |
$temp = $arr[$keylist[$idxm]]; |
|
660 |
$sz = sizeof($arr); $sz--; |
|
661 |
if($arr[$keylist[$sz]] == $arr[$keyname]) return $arr; |
|
662 |
$arr[$keylist[$idxm]] = $arr[$keylist[$idx]]; |
|
663 |
$arr[$keylist[$idx]] = $temp; |
|
664 |
return $arr; |
|
665 |
} |
|
666 |
||
667 |
function arrayItemTop($arr, $keyname) { |
|
668 |
$keylist = array_keys($arr); |
|
669 |
$keyflop = array_flip($keylist); |
|
670 |
$idx = $keyflop[$keyname]; |
|
671 |
while( $orig != $arr[$keylist[0]] ) { |
|
672 |
// echo 'Keyname: '.$keylist[$idx] . '<br />'; flush(); ob_flush(); // Debugger |
|
673 |
if($idx < 0) return $arr; |
|
674 |
if($keylist[$idx] == '' || $keylist[$idx] < 0 || !$keylist[$idx]) { |
|
675 |
return $arr; |
|
676 |
} |
|
677 |
$arr = arrayItemUp($arr, $keylist[$idx]); |
|
678 |
$idx--; |
|
679 |
} |
|
680 |
return $arr; |
|
681 |
} |
|
682 |
||
683 |
function arrayItemBottom($arr, $keyname) { |
|
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
684 |
$b = $arr[$keyname]; |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
685 |
unset($arr[$keyname]); |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
686 |
$arr[$keyname] = $b; |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
687 |
unset($b); |
1 | 688 |
return $arr; |
689 |
} |
|
690 |
||
606
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
691 |
/** |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
692 |
* Implementation of array_merge() that preserves key names. $arr2 takes precedence over $arr1. |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
693 |
* @param array $arr1 |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
694 |
* @param array $arr2 |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
695 |
* @return array |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
696 |
*/ |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
697 |
|
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
698 |
function enano_safe_array_merge($arr1, $arr2) |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
699 |
{ |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
700 |
$arr3 = $arr1; |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
701 |
foreach($arr2 as $k => $v) |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
702 |
{ |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
703 |
$arr3[$k] = $v; |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
704 |
} |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
705 |
return $arr3; |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
706 |
} |
daf8c556ada7
Moved enano_safe_array_merge() to functions.php as comment.php depends on it
Dan
parents:
599
diff
changeset
|
707 |
|
770
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
708 |
/** |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
709 |
* Looks at all values in an array and casts them to integers if they are strings with digits. Recursive. |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
710 |
* @param array Array to process |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
711 |
* @return array |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
712 |
*/ |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
713 |
|
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
714 |
function integerize_array($arr) |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
715 |
{ |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
716 |
if ( !is_array($arr) ) |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
717 |
return $arr; |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
718 |
|
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
719 |
foreach ( $arr as &$val ) |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
720 |
{ |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
721 |
if ( is_string($val) && ctype_digit($val) && strlen($val) < 10 ) |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
722 |
{ |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
723 |
$val = intval($val); |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
724 |
} |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
725 |
else if ( is_array($val) ) |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
726 |
{ |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
727 |
$val = integerize_array($val); |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
728 |
} |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
729 |
} |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
730 |
return $arr; |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
731 |
} |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
732 |
|
1 | 733 |
// Convert IP address to hex string |
734 |
// Input: 127.0.0.1 (string) |
|
735 |
// Output: 0x7f000001 (string) |
|
736 |
// Updated 12/8/06 to work with PHP4 and not use eval() (blech) |
|
737 |
function ip2hex($ip) { |
|
738 |
if ( preg_match('/^([0-9a-f:]+)$/', $ip) ) |
|
739 |
{ |
|
740 |
// this is an ipv6 address |
|
741 |
return str_replace(':', '', $ip); |
|
742 |
} |
|
743 |
$nums = explode('.', $ip); |
|
744 |
if(sizeof($nums) != 4) return false; |
|
745 |
$str = '0x'; |
|
746 |
foreach($nums as $n) |
|
747 |
{ |
|
221
e5302cb1945c
Localized a good part, if not all, of the registration page and a couple other things.
Dan
parents:
214
diff
changeset
|
748 |
$byte = (string)dechex($n); |
e5302cb1945c
Localized a good part, if not all, of the registration page and a couple other things.
Dan
parents:
214
diff
changeset
|
749 |
if ( strlen($byte) < 2 ) |
e5302cb1945c
Localized a good part, if not all, of the registration page and a couple other things.
Dan
parents:
214
diff
changeset
|
750 |
$byte = '0' . $byte; |
1 | 751 |
} |
752 |
return $str; |
|
753 |
} |
|
754 |
||
755 |
// Convert DWord to IP address |
|
756 |
// Input: 0x7f000001 |
|
757 |
// Output: 127.0.0.1 |
|
758 |
// Updated 12/8/06 to work with PHP4 and not use eval() (blech) |
|
759 |
function hex2ip($in) { |
|
760 |
if(substr($in, 0, 2) == '0x') $ip = substr($in, 2, 8); |
|
761 |
else $ip = substr($in, 0, 8); |
|
762 |
$octets = enano_str_split($ip, 2); |
|
763 |
$str = ''; |
|
764 |
$newoct = Array(); |
|
765 |
foreach($octets as $o) |
|
766 |
{ |
|
767 |
$o = (int)hexdec($o); |
|
768 |
$newoct[] = $o; |
|
769 |
} |
|
770 |
return implode('.', $newoct); |
|
771 |
} |
|
772 |
||
773 |
// Function strip_php moved to RenderMan class |
|
774 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
775 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
776 |
* Immediately brings the site to a halt with an error message. Unlike grinding_halt() this can only be called after the config has been |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
777 |
* fetched (plugin developers don't even need to worry since plugins are always loaded after the config) and shows the site name and |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
778 |
* description. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
779 |
* @param string The title of the error message |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
780 |
* @param string The body of the message, this can be HTML, and should be separated into paragraphs using the <p> tag |
479
192db6ac195b
Added $no_wrapper parameter to die_semicritical, useful for some upcoming PageProcessor tweaks.
Dan
parents:
473
diff
changeset
|
781 |
* @param bool Added in 1.1.3. If true, only the error is output. Defaults to false. |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
782 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
783 |
|
479
192db6ac195b
Added $no_wrapper parameter to die_semicritical, useful for some upcoming PageProcessor tweaks.
Dan
parents:
473
diff
changeset
|
784 |
function die_semicritical($t, $p, $no_wrapper = false) |
1 | 785 |
{ |
786 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
787 |
$db->close(); |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
788 |
|
1 | 789 |
if ( ob_get_status() ) |
790 |
ob_end_clean(); |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
791 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
792 |
// If the config hasn't been fetched yet, call grinding_halt. |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
793 |
if ( !defined('ENANO_CONFIG_FETCHED') ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
794 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
795 |
grinding_halt($t, $p); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
796 |
} |
500
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
797 |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
798 |
// also do grinding_halt() if we're in CLI mode |
500
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
799 |
if ( defined('ENANO_CLI') ) |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
800 |
{ |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
801 |
grinding_halt($t, $p); |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
802 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
803 |
|
479
192db6ac195b
Added $no_wrapper parameter to die_semicritical, useful for some upcoming PageProcessor tweaks.
Dan
parents:
473
diff
changeset
|
804 |
if ( $no_wrapper ) |
192db6ac195b
Added $no_wrapper parameter to die_semicritical, useful for some upcoming PageProcessor tweaks.
Dan
parents:
473
diff
changeset
|
805 |
{ |
192db6ac195b
Added $no_wrapper parameter to die_semicritical, useful for some upcoming PageProcessor tweaks.
Dan
parents:
473
diff
changeset
|
806 |
echo '<h2>' . htmlspecialchars($t) . '</h2>'; |
192db6ac195b
Added $no_wrapper parameter to die_semicritical, useful for some upcoming PageProcessor tweaks.
Dan
parents:
473
diff
changeset
|
807 |
echo "<p>$p</p>"; |
192db6ac195b
Added $no_wrapper parameter to die_semicritical, useful for some upcoming PageProcessor tweaks.
Dan
parents:
473
diff
changeset
|
808 |
exit; |
192db6ac195b
Added $no_wrapper parameter to die_semicritical, useful for some upcoming PageProcessor tweaks.
Dan
parents:
473
diff
changeset
|
809 |
} |
192db6ac195b
Added $no_wrapper parameter to die_semicritical, useful for some upcoming PageProcessor tweaks.
Dan
parents:
473
diff
changeset
|
810 |
|
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
811 |
$output = new Output_Safe(); |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
812 |
$output->set_title($t); |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
813 |
$output->header(); |
1 | 814 |
echo $p; |
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
815 |
$output->footer(); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
816 |
|
1 | 817 |
exit; |
818 |
} |
|
819 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
820 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
821 |
* Halts Enano execution with a message. This doesn't have to be an error message, it's sometimes used to indicate success at an operation. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
822 |
* @param string The title of the message |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
823 |
* @param string The body of the message, this can be HTML, and should be separated into paragraphs using the <p> tag |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
824 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
825 |
|
1 | 826 |
function die_friendly($t, $p) |
827 |
{ |
|
828 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
829 |
|
1 | 830 |
if ( ob_get_status() ) |
831 |
ob_end_clean(); |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
832 |
|
1 | 833 |
$paths->cpage['name'] = $t; |
834 |
$template->tpl_strings['PAGE_NAME'] = $t; |
|
835 |
$template->header(); |
|
836 |
echo $p; |
|
837 |
$template->footer(); |
|
838 |
$db->close(); |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
839 |
|
1 | 840 |
exit; |
841 |
} |
|
842 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
843 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
844 |
* Immediately brings the site to a halt with an error message, and focuses on immediately closing the database connection and shutting down Enano in the event that an attack may happen. This should only be used very early on to indicate very severe errors, or if the site may be under attack (like if the DBAL detects a malicious query). In the vast majority of cases, die_semicritical() is more appropriate. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
845 |
* @param string The title of the error message |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
846 |
* @param string The body of the message, this can be HTML, and should be separated into paragraphs using the <p> tag |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
847 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
848 |
|
1 | 849 |
function grinding_halt($t, $p) |
850 |
{ |
|
851 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
125
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
852 |
|
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
853 |
if ( !defined('scriptPath') ) |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
854 |
require( ENANO_ROOT . '/config.php' ); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
855 |
|
125
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
856 |
if ( is_object($db) ) |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
857 |
$db->close(); |
500
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
858 |
|
1 | 859 |
if ( ob_get_status() ) |
860 |
ob_end_clean(); |
|
500
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
861 |
|
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
862 |
if ( defined('ENANO_CLI') ) |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
863 |
{ |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
864 |
// set console color |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
865 |
echo "\x1B[31;1m"; |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
866 |
// error title |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
867 |
echo "Critical error in Enano runtime: "; |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
868 |
// unbold |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
869 |
echo "$t\n"; |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
870 |
// bold |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
871 |
echo "\x1B[37;1m"; |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
872 |
echo "Error: "; |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
873 |
// unbold |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
874 |
echo "\x1B[0m"; |
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
875 |
echo "$p\n"; |
662
fcab604da9a7
Made grinding_halt() exit with status 1 for POSIX compatibility; jscompress.php utility now accepts non-CDN websites
Dan
parents:
621
diff
changeset
|
876 |
exit(1); |
500
455277559782
Added basic CLI support for the Enano API. Loads automatically, just include common.php as normal. REVISION 500!!! :-D
Dan
parents:
481
diff
changeset
|
877 |
} |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
878 |
$theme = ( defined('ENANO_CONFIG_FETCHED') ) ? getConfig('theme_default') : 'oxygen'; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
879 |
$style = ( defined('ENANO_CONFIG_FETCHED') ) ? '__foo__' : 'bleu'; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
880 |
|
1 | 881 |
$tpl = new template_nodb(); |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
882 |
$tpl->load_theme($theme, $style); |
1 | 883 |
$tpl->tpl_strings['SITE_NAME'] = 'Critical error'; |
884 |
$tpl->tpl_strings['SITE_DESC'] = 'This website is experiencing a serious error and cannot load.'; |
|
885 |
$tpl->tpl_strings['COPYRIGHT'] = 'Unable to retrieve copyright information'; |
|
886 |
$tpl->tpl_strings['PAGE_NAME'] = $t; |
|
887 |
$tpl->header(); |
|
888 |
echo $p; |
|
889 |
$tpl->footer(); |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
519
diff
changeset
|
890 |
|
1 | 891 |
exit; |
892 |
} |
|
893 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
894 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
895 |
* Prints out the categorization box found on most regular pages. Doesn't take or return anything, but assumes that the page information is already set in $paths. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
896 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
897 |
|
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
898 |
function show_category_info() |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
899 |
{ |
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
900 |
throw new Exception('show_category_info() is deprecated. Use Namespace_*::display_categories().'); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
901 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
902 |
|
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
903 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
904 |
* Prints out the file information box seen on File: pages. Doesn't take or return anything, but assumes that the page information is already set in $paths, and expects $paths->namespace to be File. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
905 |
*/ |
1 | 906 |
|
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
907 |
function show_file_info($page = false) |
1 | 908 |
{ |
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
909 |
throw new Exception('show_file_info() is deprecated. Use Namespace_File::show_info().'); |
1 | 910 |
} |
911 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
912 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
913 |
* Shows header information on the current page. Currently this is only the delete-vote feature. Doesn't take or return anything, but assumes that the page information is already set in $paths. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
914 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
915 |
|
1 | 916 |
function display_page_headers() |
917 |
{ |
|
918 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
214 | 919 |
global $lang; |
1 | 920 |
if($session->get_permissions('vote_reset') && $paths->cpage['delvotes'] > 0) |
921 |
{ |
|
112
008b1c42be72
Rewrote all code related to delvote_ips column to use serialize()
Dan
parents:
91
diff
changeset
|
922 |
$delvote_ips = unserialize($paths->cpage['delvote_ips']); |
008b1c42be72
Rewrote all code related to delvote_ips column to use serialize()
Dan
parents:
91
diff
changeset
|
923 |
$hr = htmlspecialchars(implode(', ', $delvote_ips['u'])); |
214 | 924 |
|
925 |
$string_id = ( $paths->cpage['delvotes'] == 1 ) ? 'delvote_lbl_votes_one' : 'delvote_lbl_votes_plural'; |
|
926 |
$string = $lang->get($string_id, array('num_users' => $paths->cpage['delvotes'])); |
|
927 |
||
1 | 928 |
echo '<div class="info-box" style="margin-left: 0; margin-top: 5px;" id="mdgDeleteVoteNoticeBox"> |
214 | 929 |
<b>' . $lang->get('etc_lbl_notice') . '</b> ' . $string . '<br /> |
930 |
<b>' . $lang->get('delvote_lbl_users_that_voted') . '</b> ' . $hr . '<br /> |
|
931 |
<a href="'.makeUrl($paths->page, 'do=deletepage').'" onclick="ajaxDeletePage(); return false;">' . $lang->get('delvote_btn_deletepage') . '</a> | <a href="'.makeUrl($paths->page, 'do=resetvotes').'" onclick="ajaxResetDelVotes(); return false;">' . $lang->get('delvote_btn_resetvotes') . '</a> |
|
1 | 932 |
</div>'; |
933 |
} |
|
934 |
} |
|
935 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
936 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
937 |
* Displays page footer information including file and category info. This also has the send_page_footers hook. Doesn't take or return anything, but assumes that the page information is already set in $paths. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
938 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
939 |
|
1 | 940 |
function display_page_footers() |
941 |
{ |
|
942 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
943 |
|
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
944 |
if ( isset($_GET['nofooters']) ) |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
945 |
{ |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
946 |
return; |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
947 |
} |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
948 |
|
1 | 949 |
$code = $plugins->setHook('send_page_footers'); |
950 |
foreach ( $code as $cmd ) |
|
951 |
{ |
|
952 |
eval($cmd); |
|
953 |
} |
|
954 |
} |
|
955 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
956 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
957 |
* Essentially an return code reader for a socket. Don't use this unless you're writing mail code and smtp_send_email doesn't cut it. Ported from phpBB's smtp.php. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
958 |
* @param socket A socket resource |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
959 |
* @param string The expected response from the server, this needs to be exactly three characters. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
960 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
961 |
|
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
962 |
function smtp_get_response($socket, $response, $line = __LINE__) |
1 | 963 |
{ |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
964 |
$server_response = ''; |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
965 |
while (substr($server_response, 3, 1) != ' ') |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
966 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
967 |
if (!($server_response = fgets($socket, 256))) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
968 |
{ |
1 | 969 |
die_friendly('SMTP Error', "<p>Couldn't get mail server response codes</p>"); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
970 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
971 |
} |
1 | 972 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
973 |
if (!(substr($server_response, 0, 3) == $response)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
974 |
{ |
1 | 975 |
die_friendly('SMTP Error', "<p>Ran into problems sending mail. Response: $server_response</p>"); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
976 |
} |
1 | 977 |
} |
978 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
979 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
980 |
* Wrapper for smtp_send_email_core that takes the sender as the fourth parameter instead of additional headers. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
981 |
* @param string E-mail address to send to |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
982 |
* @param string Subject line |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
983 |
* @param string The body of the message |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
984 |
* @param string Address of the sender |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
985 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
986 |
|
1 | 987 |
function smtp_send_email($to, $subject, $message, $from) |
988 |
{ |
|
989 |
return smtp_send_email_core($to, $subject, $message, "From: <$from>\n"); |
|
990 |
} |
|
991 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
992 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
993 |
* Replacement or substitute for PHP's mail() builtin function. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
994 |
* @param string E-mail address to send to |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
995 |
* @param string Subject line |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
996 |
* @param string The body of the message |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
997 |
* @param string Message headers, separated by a single newline ("\n") |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
998 |
* @copyright (C) phpBB Group |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
999 |
* @license GPL |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1000 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1001 |
|
1 | 1002 |
function smtp_send_email_core($mail_to, $subject, $message, $headers = '') |
1003 |
{ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1004 |
// Fix any bare linefeeds in the message to make it RFC821 Compliant. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1005 |
$message = preg_replace("#(?<!\r)\n#si", "\r\n", $message); |
1 | 1006 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1007 |
if ($headers != '') |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1008 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1009 |
if (is_array($headers)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1010 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1011 |
if (sizeof($headers) > 1) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1012 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1013 |
$headers = join("\n", $headers); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1014 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1015 |
else |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1016 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1017 |
$headers = $headers[0]; |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1018 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1019 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1020 |
$headers = chop($headers); |
1 | 1021 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1022 |
// Make sure there are no bare linefeeds in the headers |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1023 |
$headers = preg_replace('#(?<!\r)\n#si', "\r\n", $headers); |
1 | 1024 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1025 |
// Ok this is rather confusing all things considered, |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1026 |
// but we have to grab bcc and cc headers and treat them differently |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1027 |
// Something we really didn't take into consideration originally |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1028 |
$header_array = explode("\r\n", $headers); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1029 |
@reset($header_array); |
1 | 1030 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1031 |
$headers = ''; |
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
468
diff
changeset
|
1032 |
$cc = ''; |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
468
diff
changeset
|
1033 |
$bcc = ''; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1034 |
while(list(, $header) = each($header_array)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1035 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1036 |
if (preg_match('#^cc:#si', $header)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1037 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1038 |
$cc = preg_replace('#^cc:(.*)#si', '\1', $header); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1039 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1040 |
else if (preg_match('#^bcc:#si', $header)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1041 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1042 |
$bcc = preg_replace('#^bcc:(.*)#si', '\1', $header); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1043 |
$header = ''; |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1044 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1045 |
$headers .= ($header != '') ? $header . "\r\n" : ''; |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1046 |
} |
1 | 1047 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1048 |
$headers = chop($headers); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1049 |
$cc = explode(', ', $cc); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1050 |
$bcc = explode(', ', $bcc); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1051 |
} |
1 | 1052 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1053 |
if (trim($subject) == '') |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1054 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1055 |
die_friendly(GENERAL_ERROR, "No email Subject specified"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1056 |
} |
1 | 1057 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1058 |
if (trim($message) == '') |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1059 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1060 |
die_friendly(GENERAL_ERROR, "Email message was blank"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1061 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1062 |
|
1 | 1063 |
// setup SMTP |
1064 |
$host = getConfig('smtp_server'); |
|
1065 |
if ( empty($host) ) |
|
1066 |
return 'No smtp_host in config'; |
|
1067 |
if ( strstr($host, ':' ) ) |
|
1068 |
{ |
|
1069 |
$n = explode(':', $host); |
|
1070 |
$smtp_host = $n[0]; |
|
1071 |
$port = intval($n[1]); |
|
1072 |
} |
|
1073 |
else |
|
1074 |
{ |
|
1075 |
$smtp_host = $host; |
|
1076 |
$port = 25; |
|
1077 |
} |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1078 |
|
1 | 1079 |
$smtp_user = getConfig('smtp_user'); |
1080 |
$smtp_pass = getConfig('smtp_password'); |
|
1081 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1082 |
// Ok we have error checked as much as we can to this point let's get on |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1083 |
// it already. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1084 |
if( !$socket = @fsockopen($smtp_host, $port, $errno, $errstr, 20) ) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1085 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1086 |
die_friendly(GENERAL_ERROR, "Could not connect to smtp host : $errno : $errstr"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1087 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1088 |
|
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1089 |
// Wait for reply |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1090 |
smtp_get_response($socket, "220", __LINE__); |
1 | 1091 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1092 |
// Do we want to use AUTH?, send RFC2554 EHLO, else send RFC821 HELO |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1093 |
// This improved as provided by SirSir to accomodate |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1094 |
if( !empty($smtp_user) && !empty($smtp_pass) ) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1095 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1096 |
enano_fputs($socket, "EHLO " . $smtp_host . "\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1097 |
smtp_get_response($socket, "250", __LINE__); |
1 | 1098 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1099 |
enano_fputs($socket, "AUTH LOGIN\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1100 |
smtp_get_response($socket, "334", __LINE__); |
1 | 1101 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1102 |
enano_fputs($socket, base64_encode($smtp_user) . "\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1103 |
smtp_get_response($socket, "334", __LINE__); |
1 | 1104 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1105 |
enano_fputs($socket, base64_encode($smtp_pass) . "\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1106 |
smtp_get_response($socket, "235", __LINE__); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1107 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1108 |
else |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1109 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1110 |
enano_fputs($socket, "HELO " . $smtp_host . "\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1111 |
smtp_get_response($socket, "250", __LINE__); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1112 |
} |
1 | 1113 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1114 |
// From this point onward most server response codes should be 250 |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1115 |
// Specify who the mail is from.... |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1116 |
enano_fputs($socket, "MAIL FROM: <" . getConfig('contact_email') . ">\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1117 |
smtp_get_response($socket, "250", __LINE__); |
1 | 1118 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1119 |
// Specify each user to send to and build to header. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1120 |
$to_header = ''; |
1 | 1121 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1122 |
// Add an additional bit of error checking to the To field. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1123 |
$mail_to = (trim($mail_to) == '') ? 'Undisclosed-recipients:;' : trim($mail_to); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1124 |
if (preg_match('#[^ ]+\@[^ ]+#', $mail_to)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1125 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1126 |
enano_fputs($socket, "RCPT TO: <$mail_to>\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1127 |
smtp_get_response($socket, "250", __LINE__); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1128 |
} |
1 | 1129 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1130 |
// Ok now do the CC and BCC fields... |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1131 |
@reset($bcc); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1132 |
while(list(, $bcc_address) = each($bcc)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1133 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1134 |
// Add an additional bit of error checking to bcc header... |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1135 |
$bcc_address = trim($bcc_address); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1136 |
if (preg_match('#[^ ]+\@[^ ]+#', $bcc_address)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1137 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1138 |
enano_fputs($socket, "RCPT TO: <$bcc_address>\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1139 |
smtp_get_response($socket, "250", __LINE__); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1140 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1141 |
} |
1 | 1142 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1143 |
@reset($cc); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1144 |
while(list(, $cc_address) = each($cc)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1145 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1146 |
// Add an additional bit of error checking to cc header |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1147 |
$cc_address = trim($cc_address); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1148 |
if (preg_match('#[^ ]+\@[^ ]+#', $cc_address)) |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1149 |
{ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1150 |
enano_fputs($socket, "RCPT TO: <$cc_address>\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1151 |
smtp_get_response($socket, "250", __LINE__); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1152 |
} |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1153 |
} |
1 | 1154 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1155 |
// Ok now we tell the server we are ready to start sending data |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1156 |
enano_fputs($socket, "DATA\r\n"); |
1 | 1157 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1158 |
// This is the last response code we look for until the end of the message. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1159 |
smtp_get_response($socket, "354", __LINE__); |
1 | 1160 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1161 |
// Send the Subject Line... |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1162 |
enano_fputs($socket, "Subject: $subject\r\n"); |
1 | 1163 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1164 |
// Now the To Header. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1165 |
enano_fputs($socket, "To: $mail_to\r\n"); |
1 | 1166 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1167 |
// Now any custom headers.... |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1168 |
enano_fputs($socket, "$headers\r\n\r\n"); |
1 | 1169 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1170 |
// Ok now we are ready for the message... |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1171 |
enano_fputs($socket, "$message\r\n"); |
1 | 1172 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1173 |
// Ok the all the ingredients are mixed in let's cook this puppy... |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1174 |
enano_fputs($socket, ".\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1175 |
smtp_get_response($socket, "250", __LINE__); |
1 | 1176 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1177 |
// Now tell the server we are done and close the socket... |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1178 |
enano_fputs($socket, "QUIT\r\n"); |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1179 |
fclose($socket); |
1 | 1180 |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1181 |
return TRUE; |
1 | 1182 |
} |
1183 |
||
1184 |
/** |
|
1185 |
* Tell which version of Enano we're running. |
|
1186 |
* @param bool $long if true, uses English version names (e.g. alpha, beta, release candidate). If false (default) uses abbreviations (1.0a1, 1.0b3, 1.0RC2, etc.) |
|
685
17ebe24cdf85
Rebranded as 1.1.5 (Caoineag alpha 5) and fixed a couple bugs related to CDN support in template_nodb and installerUI. Updated readme.
Dan
parents:
667
diff
changeset
|
1187 |
* @param bool If true, prevents nightly build information from being appended, useful for upgrade/versioning checks. |
1 | 1188 |
* @return string |
1189 |
*/ |
|
1190 |
||
1191 |
function enano_version($long = false, $no_nightly = false) |
|
1192 |
{ |
|
1193 |
$r = getConfig('enano_version'); |
|
1194 |
$rc = ( $long ) ? ' release candidate ' : 'RC'; |
|
1195 |
$b = ( $long ) ? ' beta ' : 'b'; |
|
1196 |
$a = ( $long ) ? ' alpha ' : 'a'; |
|
1197 |
if($v = getConfig('enano_rc_version')) $r .= $rc.$v; |
|
1198 |
if($v = getConfig('enano_beta_version')) $r .= $b.$v; |
|
1199 |
if($v = getConfig('enano_alpha_version')) $r .= $a.$v; |
|
1200 |
if ( defined('ENANO_NIGHTLY') && !$no_nightly ) |
|
1201 |
{ |
|
1202 |
$nightlytag = ENANO_NIGHTLY_MONTH . '-' . ENANO_NIGHTLY_DAY . '-' . ENANO_NIGHTLY_YEAR; |
|
1203 |
$nightlylong = ' nightly; build date: ' . ENANO_NIGHTLY_MONTH . '-' . ENANO_NIGHTLY_DAY . '-' . ENANO_NIGHTLY_YEAR; |
|
1204 |
$r = ( $long ) ? $r . $nightlylong : $r . '-nightly-' . $nightlytag; |
|
1205 |
} |
|
1206 |
return $r; |
|
1207 |
} |
|
1208 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1209 |
/** |
132
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1210 |
* Give the codename of the release of Enano being run. |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1211 |
* @return string |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1212 |
*/ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1213 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1214 |
function enano_codename() |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1215 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1216 |
$names = array( |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1217 |
'1.0RC1' => 'Leprechaun', |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1218 |
'1.0RC2' => 'Clurichaun', |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1219 |
'1.0RC3' => 'Druid', |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1220 |
'1.0' => 'Banshee', |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1221 |
'1.0.1' => 'Loch Ness', |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1222 |
'1.0.1.1'=> 'Loch Ness internal bugfix build', |
145 | 1223 |
'1.0.2b1'=> 'Coblynau unstable', |
317 | 1224 |
'1.0.2' => 'Coblynau', |
387
92664d2efab8
Rebranded source code as 1.1.1; added TinyMCE ACL rule as per Vadi's request: http://forum.enanocms.org/viewtopic.php?f=7&t=54
Dan
parents:
382
diff
changeset
|
1225 |
'1.0.3' => 'Dyrad', |
92664d2efab8
Rebranded source code as 1.1.1; added TinyMCE ACL rule as per Vadi's request: http://forum.enanocms.org/viewtopic.php?f=7&t=54
Dan
parents:
382
diff
changeset
|
1226 |
'1.1.1' => 'Caoineag alpha 1', |
411 | 1227 |
'1.1.2' => 'Caoineag alpha 2', |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
424
diff
changeset
|
1228 |
'1.1.3' => 'Caoineag alpha 3', |
536 | 1229 |
'1.1.4' => 'Caoineag alpha 4', |
685
17ebe24cdf85
Rebranded as 1.1.5 (Caoineag alpha 5) and fixed a couple bugs related to CDN support in template_nodb and installerUI. Updated readme.
Dan
parents:
667
diff
changeset
|
1230 |
'1.1.5' => 'Caoineag alpha 5', |
801
eb8b23f11744
Two big commits in one day I know, but redid password storage to use HMAC-SHA1. Consolidated much AES processing to three core methods in session that should handle everything automagically. Installation works; upgrades should. Rebranded as 1.1.6.
Dan
parents:
800
diff
changeset
|
1231 |
'1.1.6' => 'Caoineag beta 1' |
132
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1232 |
); |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1233 |
$version = enano_version(); |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1234 |
if ( isset($names[$version]) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1235 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1236 |
return $names[$version]; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1237 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1238 |
return 'Anonymous build'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1239 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1240 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
1241 |
/** |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1242 |
* Badly named function to send back eval'able Javascript code with an error message. Deprecated, use JSON instead. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1243 |
* @param string Message to send |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1244 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1245 |
|
1 | 1246 |
function _die($t) { |
1247 |
$_ob = 'document.getElementById("ajaxEditContainer").innerHTML = unescape(\'' . rawurlencode('' . $t . '') . '\')'; |
|
1248 |
die($_ob); |
|
1249 |
} |
|
1250 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1251 |
/** |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1252 |
* Same as _die(), but sends an SQL backtrace with the error message, and doesn't halt execution. |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1253 |
* @param string Message to send |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1254 |
*/ |
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1255 |
|
1 | 1256 |
function jsdie($text) { |
1257 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
1258 |
$text = rawurlencode($text . "\n\nSQL Backtrace:\n" . $db->sql_backtrace()); |
|
1259 |
echo 'document.getElementById("ajaxEditContainer").innerHTML = unescape(\''.$text.'\');'; |
|
1260 |
} |
|
1261 |
||
1262 |
/** |
|
1263 |
* Capitalizes the first letter of a string |
|
1264 |
* @param $text string the text to be transformed |
|
1265 |
* @return string |
|
1266 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1267 |
|
1 | 1268 |
function capitalize_first_letter($text) |
1269 |
{ |
|
1270 |
return strtoupper(substr($text, 0, 1)) . substr($text, 1); |
|
1271 |
} |
|
1272 |
||
1273 |
/** |
|
1274 |
* Checks if a value in a bitfield is on or off |
|
1275 |
* @param $bitfield int the bit-field value |
|
1276 |
* @param $value int the value to switch off |
|
1277 |
* @return bool |
|
1278 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1279 |
|
1 | 1280 |
function is_bit($bitfield, $value) |
1281 |
{ |
|
1282 |
return ( $bitfield & $value ) ? true : false; |
|
1283 |
} |
|
1284 |
||
1285 |
/** |
|
1286 |
* Trims spaces/newlines from the beginning and end of a string |
|
1287 |
* @param $text the text to process |
|
1288 |
* @return string |
|
1289 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1290 |
|
1 | 1291 |
function trim_spaces($text) |
1292 |
{ |
|
1293 |
$d = true; |
|
1294 |
while($d) |
|
1295 |
{ |
|
1296 |
$c = substr($text, 0, 1); |
|
1297 |
$a = substr($text, strlen($text)-1, strlen($text)); |
|
1298 |
if($c == "\n" || $c == "\r" || $c == "\t" || $c == ' ') $text = substr($text, 1, strlen($text)); |
|
1299 |
elseif($a == "\n" || $a == "\r" || $a == "\t" || $a == ' ') $text = substr($text, 0, strlen($text)-1); |
|
1300 |
else $d = false; |
|
1301 |
} |
|
1302 |
return $text; |
|
1303 |
} |
|
1304 |
||
1305 |
/** |
|
1306 |
* Enano-ese equivalent of str_split() which is only found in PHP5 |
|
1307 |
* @param $text string the text to split |
|
1308 |
* @param $inc int size of each block |
|
1309 |
* @return array |
|
1310 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1311 |
|
1 | 1312 |
function enano_str_split($text, $inc = 1) |
1313 |
{ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1314 |
if($inc < 1) |
14
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1315 |
{ |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1316 |
return false; |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1317 |
} |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1318 |
if($inc >= strlen($text)) |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1319 |
{ |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1320 |
return Array($text); |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1321 |
} |
1 | 1322 |
$len = ceil(strlen($text) / $inc); |
1323 |
$ret = Array(); |
|
14
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1324 |
for ( $i = 0; $i < strlen($text); $i = $i + $inc ) |
1 | 1325 |
{ |
1326 |
$ret[] = substr($text, $i, $inc); |
|
1327 |
} |
|
1328 |
return $ret; |
|
1329 |
} |
|
1330 |
||
1331 |
/** |
|
1332 |
* Converts a hexadecimal number to a binary string. |
|
1333 |
* @param text string hexadecimal number |
|
1334 |
* @return string |
|
1335 |
*/ |
|
1336 |
function hex2bin($text) |
|
1337 |
{ |
|
1338 |
$arr = enano_str_split($text, 2); |
|
1339 |
$ret = ''; |
|
1340 |
for ($i=0; $i<sizeof($arr); $i++) |
|
1341 |
{ |
|
1342 |
$ret .= chr(hexdec($arr[$i])); |
|
1343 |
} |
|
1344 |
return $ret; |
|
1345 |
} |
|
1346 |
||
1347 |
/** |
|
1348 |
* Generates and/or prints a human-readable backtrace |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1349 |
* @param bool $return - if true, this function returns a string, otherwise returns null and prints the backtrace |
1 | 1350 |
* @return mixed |
1351 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1352 |
|
1 | 1353 |
function enano_debug_print_backtrace($return = false) |
1354 |
{ |
|
1355 |
ob_start(); |
|
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
1356 |
if ( !$return ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
1357 |
echo '<pre>'; |
19
5d003b6c9e89
Added demo mode functionality to various parts of Enano (unlocked only with a plugin) and fixed groups table
Dan
parents:
16
diff
changeset
|
1358 |
if ( function_exists('debug_print_backtrace') ) |
5d003b6c9e89
Added demo mode functionality to various parts of Enano (unlocked only with a plugin) and fixed groups table
Dan
parents:
16
diff
changeset
|
1359 |
{ |
5d003b6c9e89
Added demo mode functionality to various parts of Enano (unlocked only with a plugin) and fixed groups table
Dan
parents:
16
diff
changeset
|
1360 |
debug_print_backtrace(); |
5d003b6c9e89
Added demo mode functionality to various parts of Enano (unlocked only with a plugin) and fixed groups table
Dan
parents:
16
diff
changeset
|
1361 |
} |
5d003b6c9e89
Added demo mode functionality to various parts of Enano (unlocked only with a plugin) and fixed groups table
Dan
parents:
16
diff
changeset
|
1362 |
else |
5d003b6c9e89
Added demo mode functionality to various parts of Enano (unlocked only with a plugin) and fixed groups table
Dan
parents:
16
diff
changeset
|
1363 |
{ |
5d003b6c9e89
Added demo mode functionality to various parts of Enano (unlocked only with a plugin) and fixed groups table
Dan
parents:
16
diff
changeset
|
1364 |
echo '<b>Warning:</b> No debug_print_backtrace() support!'; |
5d003b6c9e89
Added demo mode functionality to various parts of Enano (unlocked only with a plugin) and fixed groups table
Dan
parents:
16
diff
changeset
|
1365 |
} |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
1366 |
if ( !$return ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
1367 |
echo '</pre>'; |
1 | 1368 |
$c = ob_get_contents(); |
1369 |
ob_end_clean(); |
|
1370 |
if($return) return $c; |
|
1371 |
else echo $c; |
|
1372 |
return null; |
|
1373 |
} |
|
1374 |
||
1375 |
/** |
|
1376 |
* Like rawurlencode(), but encodes all characters |
|
1377 |
* @param string $text the text to encode |
|
1378 |
* @param optional string $prefix text before each hex character |
|
1379 |
* @param optional string $suffix text after each hex character |
|
1380 |
* @return string |
|
1381 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1382 |
|
1 | 1383 |
function hexencode($text, $prefix = '%', $suffix = '') |
1384 |
{ |
|
1385 |
$arr = enano_str_split($text); |
|
1386 |
$r = ''; |
|
1387 |
foreach($arr as $a) |
|
1388 |
{ |
|
1389 |
$nibble = (string)dechex(ord($a)); |
|
1390 |
if(strlen($nibble) == 1) $nibble = '0' . $nibble; |
|
1391 |
$r .= $prefix . $nibble . $suffix; |
|
1392 |
} |
|
1393 |
return $r; |
|
1394 |
} |
|
1395 |
||
1396 |
/** |
|
1397 |
* Enano-ese equivalent of get_magic_quotes_gpc() |
|
1398 |
* @return bool |
|
1399 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1400 |
|
1 | 1401 |
function enano_get_magic_quotes_gpc() |
1402 |
{ |
|
1403 |
if(function_exists('get_magic_quotes_gpc')) |
|
1404 |
{ |
|
1405 |
return ( get_magic_quotes_gpc() == 1 ); |
|
1406 |
} |
|
1407 |
else |
|
1408 |
{ |
|
1409 |
return ( strtolower(@ini_get('magic_quotes_gpc')) == '1' ); |
|
1410 |
} |
|
1411 |
} |
|
1412 |
||
1413 |
/** |
|
1414 |
* Recursive stripslashes() |
|
1415 |
* @param array |
|
1416 |
* @return array |
|
1417 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1418 |
|
1 | 1419 |
function stripslashes_recurse($arr) |
1420 |
{ |
|
1421 |
foreach($arr as $k => $xxxx) |
|
1422 |
{ |
|
1423 |
$val =& $arr[$k]; |
|
1424 |
if(is_string($val)) |
|
1425 |
$val = stripslashes($val); |
|
1426 |
elseif(is_array($val)) |
|
1427 |
$val = stripslashes_recurse($val); |
|
1428 |
} |
|
1429 |
return $arr; |
|
1430 |
} |
|
1431 |
||
1432 |
/** |
|
14
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1433 |
* Recursive function to remove all NUL bytes from a string |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1434 |
* @param array |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1435 |
* @return array |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1436 |
*/ |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1437 |
|
14
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1438 |
function strip_nul_chars($arr) |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1439 |
{ |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1440 |
foreach($arr as $k => $xxxx_unused) |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1441 |
{ |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1442 |
$val =& $arr[$k]; |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1443 |
if(is_string($val)) |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1444 |
$val = str_replace("\000", '', $val); |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1445 |
elseif(is_array($val)) |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1446 |
$val = strip_nul_chars($val); |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1447 |
} |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1448 |
return $arr; |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1449 |
} |
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1450 |
|
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1451 |
/** |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1452 |
* If magic_quotes_gpc is on, calls stripslashes() on everything in $_GET/$_POST/$_COOKIE. Also strips any NUL characters from incoming requests, as these are typically malicious. |
14
ce6053bb48d8
Security: NUL characters are now stripped from GPC; several code readability standards changes
Dan
parents:
1
diff
changeset
|
1453 |
* @ignore - this doesn't work too well in my tests |
1 | 1454 |
* @todo port version from the PHP manual |
1455 |
* @return void |
|
1456 |
*/ |
|
1457 |
function strip_magic_quotes_gpc() |
|
1458 |
{ |
|
1459 |
if(enano_get_magic_quotes_gpc()) |
|
1460 |
{ |
|
40
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
38
diff
changeset
|
1461 |
$_POST = stripslashes_recurse($_POST); |
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
38
diff
changeset
|
1462 |
$_GET = stripslashes_recurse($_GET); |
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
38
diff
changeset
|
1463 |
$_COOKIE = stripslashes_recurse($_COOKIE); |
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
38
diff
changeset
|
1464 |
$_REQUEST = stripslashes_recurse($_REQUEST); |
1 | 1465 |
} |
40
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
38
diff
changeset
|
1466 |
$_POST = strip_nul_chars($_POST); |
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
38
diff
changeset
|
1467 |
$_GET = strip_nul_chars($_GET); |
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
38
diff
changeset
|
1468 |
$_COOKIE = strip_nul_chars($_COOKIE); |
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
38
diff
changeset
|
1469 |
$_REQUEST = strip_nul_chars($_REQUEST); |
78
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
1470 |
$_POST = decode_unicode_array($_POST); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
1471 |
$_GET = decode_unicode_array($_GET); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
1472 |
$_COOKIE = decode_unicode_array($_COOKIE); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
1473 |
$_REQUEST = decode_unicode_array($_REQUEST); |
1 | 1474 |
} |
1475 |
||
1476 |
/** |
|
1477 |
* A very basic single-character compression algorithm for binary strings/bitfields |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1478 |
* @param string $bits the text to compress, should be only 1s and 0s |
1 | 1479 |
* @return string |
1480 |
*/ |
|
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1481 |
|
1 | 1482 |
function compress_bitfield($bits) |
1483 |
{ |
|
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1484 |
if ( !preg_match('/^[01]+$/', $bits) ) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1485 |
return false; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1486 |
|
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1487 |
$current = intval($bits{0}); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1488 |
$clen = 0; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1489 |
$out = ''; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1490 |
for ( $i = 0; $i < strlen($bits); $i++ ) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1491 |
{ |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1492 |
$cbit = intval($bits{$i}); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1493 |
if ( $cbit !== $current || $clen == 127 || $i == strlen($bits) - 1 ) |
1 | 1494 |
{ |
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1495 |
if ( $i == strlen($bits) - 1 && $cbit === $current ) |
1 | 1496 |
{ |
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1497 |
$clen++; |
1 | 1498 |
} |
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1499 |
// write chunk |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1500 |
$byte = $clen; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1501 |
if ( $current === 1 ) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1502 |
$byte |= 0x80; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1503 |
$out .= chr($byte); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1504 |
|
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1505 |
if ( $i == strlen($bits) - 1 && $cbit !== $current ) |
1 | 1506 |
{ |
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1507 |
$out .= ( $cbit === 1 ) ? chr(0x81) : chr(0x1); |
1 | 1508 |
} |
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1509 |
|
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1510 |
// reset |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1511 |
$current = intval($cbit); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1512 |
$clen = 0; |
1 | 1513 |
} |
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1514 |
$clen++; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1515 |
} |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1516 |
$crc = dechex(crc32($out)); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1517 |
while ( strlen($crc) < 8 ) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1518 |
$crc = "0$crc"; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1519 |
return "cbf2:{$crc}" . hexencode($out, '', ''); |
1 | 1520 |
} |
1521 |
||
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1522 |
// test case |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1523 |
// $bf = '0111100010000000000000000000000100000000000000001110000000000000000101100000010100001100010000000000000000000000000000111111111111111111111100100001000000000000000000000000000000000000'; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1524 |
// die('<pre>Original: ' . " $bf\nCompressed: " . compress_bitfield($bf) . "\nProcessed: ".uncompress_bitfield(compress_bitfield($bf)).'</pre>'); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1525 |
|
1 | 1526 |
/** |
1527 |
* Uncompresses a bitfield compressed with compress_bitfield() |
|
1528 |
* @param string $bits the compressed bitfield |
|
1529 |
* @return string the uncompressed, original (we hope) bitfield OR bool false on error |
|
1530 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1531 |
|
1 | 1532 |
function uncompress_bitfield($bits) |
1533 |
{ |
|
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1534 |
if ( substr($bits, 0, 4) == 'cbf:' ) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1535 |
{ |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1536 |
return uncompress_bitfield_old($bits); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1537 |
} |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1538 |
if ( substr($bits, 0, 5) != 'cbf2:' ) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1539 |
{ |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1540 |
echo __FUNCTION__.'(): ERROR: Invalid stream'; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1541 |
return false; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1542 |
} |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1543 |
$bits = substr($bits, 5); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1544 |
$crc = substr($bits, 0, 8); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1545 |
$bits = substr($bits, 8); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1546 |
$bits = hexdecode($bits); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1547 |
if ( dechex(crc32($bits)) !== $crc ) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1548 |
{ |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1549 |
echo __FUNCTION__."(): ERROR: CRC failed"; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1550 |
return false; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1551 |
} |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1552 |
$out = ''; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1553 |
for ( $i = 0; $i < strlen($bits); $i++ ) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1554 |
{ |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1555 |
$byte = ord($bits{$i}); |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1556 |
$char = $byte & 0x80 ? '1' : '0'; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1557 |
$byte &= ~0x80; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1558 |
for ( $j = 0; $j < $byte; $j++ ) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1559 |
{ |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1560 |
$out .= $char; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1561 |
} |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1562 |
} |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1563 |
return $out; |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1564 |
} |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1565 |
|
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1566 |
/** |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1567 |
* Decompressor for old-format bitfields. |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1568 |
* @param string |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1569 |
* @return string |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1570 |
* @access private |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1571 |
*/ |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1572 |
|
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1573 |
function uncompress_bitfield_old($bits) |
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
1574 |
{ |
1 | 1575 |
if(substr($bits, 0, 4) != 'cbf:') |
1576 |
{ |
|
1577 |
echo __FUNCTION__.'(): ERROR: Invalid stream'; |
|
1578 |
return false; |
|
1579 |
} |
|
1580 |
$len = intval(substr($bits, strpos($bits, 'len=')+4, strpos($bits, ';')-strpos($bits, 'len=')-4)); |
|
1581 |
$crc = substr($bits, strpos($bits, 'crc=')+4, 8); |
|
1582 |
$data = substr($bits, strpos($bits, 'data=')+5, strpos($bits, '|end')-strpos($bits, 'data=')-5); |
|
1583 |
$data = explode(',', $data); |
|
1584 |
foreach($data as $a => $b) |
|
1585 |
{ |
|
1586 |
$d =& $data[$a]; |
|
1587 |
$char = substr($d, 0, 1); |
|
1588 |
$dlen = intval(substr($d, 2, strlen($d)-1)); |
|
1589 |
$s = ''; |
|
1590 |
for($i=0;$i<$dlen;$i++,$s.=$char); |
|
1591 |
$d = $s; |
|
1592 |
unset($s, $dlen, $char); |
|
1593 |
} |
|
1594 |
$decompressed = implode('', $data); |
|
1595 |
$decompressed = substr($decompressed, 0, -1); |
|
1596 |
$dcrc = (string)dechex(crc32($decompressed)); |
|
1597 |
if($dcrc != $crc) |
|
1598 |
{ |
|
1599 |
echo __FUNCTION__.'(): ERROR: CRC check failed<br />debug info:<br />original crc: '.$crc.'<br />decomp\'ed crc: '.$dcrc.'<br />'; |
|
1600 |
return false; |
|
1601 |
} |
|
1602 |
return $decompressed; |
|
1603 |
} |
|
1604 |
||
1605 |
/** |
|
1606 |
* Exports a MySQL table into a SQL string. |
|
1607 |
* @param string $table The name of the table to export |
|
1608 |
* @param bool $structure If true, include a CREATE TABLE command |
|
1609 |
* @param bool $data If true, include the contents of the table |
|
1610 |
* @param bool $compact If true, omits newlines between parts of SQL statements, use in Enano database exporter |
|
1611 |
* @return string |
|
1612 |
*/ |
|
1613 |
||
1614 |
function export_table($table, $structure = true, $data = true, $compact = false) |
|
1615 |
{ |
|
1616 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
1617 |
$struct_keys = ''; |
|
1618 |
$divider = (!$compact) ? "\n" : "\n"; |
|
1619 |
$spacer1 = (!$compact) ? "\n" : " "; |
|
1620 |
$spacer2 = (!$compact) ? " " : " "; |
|
1621 |
$rowspacer = (!$compact) ? "\n " : " "; |
|
1622 |
$index_list = Array(); |
|
1623 |
$cols = $db->sql_query('SHOW COLUMNS IN '.$table.';'); |
|
1624 |
if(!$cols) |
|
1625 |
{ |
|
1626 |
echo 'export_table(): Error getting column list: '.$db->get_error_text().'<br />'; |
|
1627 |
return false; |
|
1628 |
} |
|
1629 |
$col = Array(); |
|
1630 |
$sqlcol = Array(); |
|
1631 |
$collist = Array(); |
|
1632 |
$pri_keys = Array(); |
|
1633 |
// Using fetchrow_num() here to compensate for MySQL l10n |
|
1634 |
while( $row = $db->fetchrow_num() ) |
|
1635 |
{ |
|
1636 |
$field =& $row[0]; |
|
1637 |
$type =& $row[1]; |
|
1638 |
$null =& $row[2]; |
|
1639 |
$key =& $row[3]; |
|
1640 |
$def =& $row[4]; |
|
1641 |
$extra =& $row[5]; |
|
1642 |
$col[] = Array( |
|
1643 |
'name'=>$field, |
|
1644 |
'type'=>$type, |
|
1645 |
'null'=>$null, |
|
1646 |
'key'=>$key, |
|
1647 |
'default'=>$def, |
|
1648 |
'extra'=>$extra, |
|
1649 |
); |
|
1650 |
$collist[] = $field; |
|
1651 |
} |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1652 |
|
1 | 1653 |
if ( $structure ) |
1654 |
{ |
|
1655 |
$db->sql_query('SET SQL_QUOTE_SHOW_CREATE = 0;'); |
|
1656 |
$struct = $db->sql_query('SHOW CREATE TABLE '.$table.';'); |
|
1657 |
if ( !$struct ) |
|
1658 |
$db->_die(); |
|
1659 |
$row = $db->fetchrow_num(); |
|
1660 |
$db->free_result(); |
|
1661 |
$struct = $row[1]; |
|
1662 |
$struct = preg_replace("/\n\) ENGINE=(.+)$/", "\n);", $struct); |
|
1663 |
unset($row); |
|
1664 |
if ( $compact ) |
|
1665 |
{ |
|
1666 |
$struct_arr = explode("\n", $struct); |
|
1667 |
foreach ( $struct_arr as $i => $leg ) |
|
1668 |
{ |
|
1669 |
if ( $i == 0 ) |
|
1670 |
continue; |
|
1671 |
$test = trim($leg); |
|
1672 |
if ( empty($test) ) |
|
1673 |
{ |
|
1674 |
unset($struct_arr[$i]); |
|
1675 |
continue; |
|
1676 |
} |
|
1677 |
$struct_arr[$i] = preg_replace('/^([\s]*)/', ' ', $leg); |
|
1678 |
} |
|
1679 |
$struct = implode("", $struct_arr); |
|
1680 |
} |
|
1681 |
} |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1682 |
|
1 | 1683 |
// Structuring complete |
1684 |
if($data) |
|
1685 |
{ |
|
1686 |
$datq = $db->sql_query('SELECT * FROM '.$table.';'); |
|
1687 |
if(!$datq) |
|
1688 |
{ |
|
1689 |
echo 'export_table(): Error getting column list: '.$db->get_error_text().'<br />'; |
|
1690 |
return false; |
|
1691 |
} |
|
1692 |
if($db->numrows() < 1) |
|
1693 |
{ |
|
1694 |
if($structure) return $struct; |
|
1695 |
else return ''; |
|
1696 |
} |
|
1697 |
$rowdata = Array(); |
|
1698 |
$dataqs = Array(); |
|
1699 |
$insert_strings = Array(); |
|
1700 |
$z = false; |
|
1701 |
while($row = $db->fetchrow_num()) |
|
1702 |
{ |
|
1703 |
$z = false; |
|
1704 |
foreach($row as $i => $cell) |
|
1705 |
{ |
|
1706 |
$str = mysql_encode_column($cell, $col[$i]['type']); |
|
1707 |
$rowdata[] = $str; |
|
1708 |
} |
|
1709 |
$dataqs2 = implode(",$rowspacer", $dataqs) . ",$rowspacer" . '( ' . implode(', ', $rowdata) . ' )'; |
|
1710 |
$ins = 'INSERT INTO '.$table.'( '.implode(',', $collist).' ) VALUES' . $dataqs2 . ";"; |
|
1711 |
if ( strlen( $ins ) > MYSQL_MAX_PACKET_SIZE ) |
|
1712 |
{ |
|
1713 |
// We've exceeded the maximum allowed packet size for MySQL - separate this into a different query |
|
1714 |
$insert_strings[] = 'INSERT INTO '.$table.'( '.implode(',', $collist).' ) VALUES' . implode(",$rowspacer", $dataqs) . ";";; |
|
1715 |
$dataqs = Array('( ' . implode(', ', $rowdata) . ' )'); |
|
1716 |
$z = true; |
|
1717 |
} |
|
1718 |
else |
|
1719 |
{ |
|
1720 |
$dataqs[] = '( ' . implode(', ', $rowdata) . ' )'; |
|
1721 |
} |
|
1722 |
$rowdata = Array(); |
|
1723 |
} |
|
1724 |
if ( !$z ) |
|
1725 |
{ |
|
1726 |
$insert_strings[] = 'INSERT INTO '.$table.'( '.implode(',', $collist).' ) VALUES' . implode(",$rowspacer", $dataqs) . ";";; |
|
1727 |
$dataqs = Array(); |
|
1728 |
} |
|
1729 |
$datstring = implode($divider, $insert_strings); |
|
1730 |
} |
|
1731 |
if($structure && !$data) return $struct; |
|
1732 |
elseif(!$structure && $data) return $datstring; |
|
1733 |
elseif($structure && $data) return $struct . $divider . $datstring; |
|
1734 |
elseif(!$structure && !$data) return ''; |
|
1735 |
} |
|
1736 |
||
1737 |
/** |
|
1738 |
* Encodes a string value for use in an INSERT statement for given column type $type. |
|
1739 |
* @access private |
|
1740 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1741 |
|
1 | 1742 |
function mysql_encode_column($input, $type) |
1743 |
{ |
|
1744 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
1745 |
// Decide whether to quote the string or not |
|
1746 |
if(substr($type, 0, 7) == 'varchar' || $type == 'datetime' || $type == 'text' || $type == 'tinytext' || $type == 'smalltext' || $type == 'longtext' || substr($type, 0, 4) == 'char') |
|
1747 |
{ |
|
1748 |
$str = "'" . $db->escape($input) . "'"; |
|
1749 |
} |
|
1750 |
elseif(in_array($type, Array('blob', 'longblob', 'mediumblob', 'smallblob')) || substr($type, 0, 6) == 'binary' || substr($type, 0, 9) == 'varbinary') |
|
1751 |
{ |
|
1752 |
$str = '0x' . hexencode($input, '', ''); |
|
1753 |
} |
|
1754 |
elseif(is_null($input)) |
|
1755 |
{ |
|
1756 |
$str = 'NULL'; |
|
1757 |
} |
|
1758 |
else |
|
1759 |
{ |
|
1760 |
$str = (string)$input; |
|
1761 |
} |
|
1762 |
return $str; |
|
1763 |
} |
|
1764 |
||
1765 |
/** |
|
1766 |
* Creates an associative array defining which file extensions are allowed and which ones aren't |
|
1767 |
* @return array keyname will be a file extension, value will be true or false |
|
1768 |
*/ |
|
1769 |
||
1770 |
function fetch_allowed_extensions() |
|
1771 |
{ |
|
1772 |
global $mime_types; |
|
1773 |
$bits = getConfig('allowed_mime_types'); |
|
1774 |
if(!$bits) return Array(false); |
|
1775 |
$bits = uncompress_bitfield($bits); |
|
1776 |
if(!$bits) return Array(false); |
|
1777 |
$bits = enano_str_split($bits, 1); |
|
1778 |
$ret = Array(); |
|
1779 |
$mt = array_keys($mime_types); |
|
1780 |
foreach($bits as $i => $b) |
|
1781 |
{ |
|
1782 |
$ret[$mt[$i]] = ( $b == '1' ) ? true : false; |
|
1783 |
} |
|
1784 |
return $ret; |
|
1785 |
} |
|
1786 |
||
1787 |
/** |
|
1788 |
* Generates a random key suitable for encryption |
|
1789 |
* @param int $len the length of the key |
|
1790 |
* @return string a BINARY key |
|
1791 |
*/ |
|
1792 |
||
1793 |
function randkey($len = 32) |
|
1794 |
{ |
|
1795 |
$key = ''; |
|
1796 |
for($i=0;$i<$len;$i++) |
|
1797 |
{ |
|
1798 |
$key .= chr(mt_rand(0, 255)); |
|
1799 |
} |
|
1800 |
return $key; |
|
1801 |
} |
|
1802 |
||
1803 |
/** |
|
1804 |
* Decodes a hex string. |
|
1805 |
* @param string $hex The hex code to decode |
|
1806 |
* @return string |
|
1807 |
*/ |
|
1808 |
||
1809 |
function hexdecode($hex) |
|
1810 |
{ |
|
1811 |
$hex = enano_str_split($hex, 2); |
|
1812 |
$bin_key = ''; |
|
1813 |
foreach($hex as $nibble) |
|
1814 |
{ |
|
1815 |
$byte = chr(hexdec($nibble)); |
|
1816 |
$bin_key .= $byte; |
|
1817 |
} |
|
1818 |
return $bin_key; |
|
1819 |
} |
|
1820 |
||
1821 |
/** |
|
1822 |
* Enano's own (almost) bulletproof HTML sanitizer. |
|
1823 |
* @param string $html The input HTML |
|
1824 |
* @return string cleaned HTML |
|
1825 |
*/ |
|
1826 |
||
1827 |
function sanitize_html($html, $filter_php = true) |
|
1828 |
{ |
|
163 | 1829 |
// Random seed for substitution |
1830 |
$rand_seed = md5( sha1(microtime()) . mt_rand() ); |
|
1831 |
||
593
4f9bec0d65c1
More optimization work. Moved special page init functions to common instead of common_post hook. Allowed paths to cache page metadata on filesystem. Phased out the redundancy in $paths->pages that paired a number with every urlname as foreach loops are allowed now (and have been for some time). Fixed missing includes for several functions. Rewrote str_replace_once to be a lot more efficient.
Dan
parents:
592
diff
changeset
|
1832 |
// We need MediaWiki |
4f9bec0d65c1
More optimization work. Moved special page init functions to common instead of common_post hook. Allowed paths to cache page metadata on filesystem. Phased out the redundancy in $paths->pages that paired a number with every urlname as foreach loops are allowed now (and have been for some time). Fixed missing includes for several functions. Rewrote str_replace_once to be a lot more efficient.
Dan
parents:
592
diff
changeset
|
1833 |
require_once(ENANO_ROOT . '/includes/wikiengine/Tables.php'); |
4f9bec0d65c1
More optimization work. Moved special page init functions to common instead of common_post hook. Allowed paths to cache page metadata on filesystem. Phased out the redundancy in $paths->pages that paired a number with every urlname as foreach loops are allowed now (and have been for some time). Fixed missing includes for several functions. Rewrote str_replace_once to be a lot more efficient.
Dan
parents:
592
diff
changeset
|
1834 |
|
163 | 1835 |
// Strip out comments that are already escaped |
1836 |
preg_match_all('/<!--(.*?)-->/', $html, $comment_match); |
|
1837 |
$i = 0; |
|
1838 |
foreach ( $comment_match[0] as $comment ) |
|
1839 |
{ |
|
1840 |
$html = str_replace_once($comment, "{HTMLCOMMENT:$i:$rand_seed}", $html); |
|
1841 |
$i++; |
|
1842 |
} |
|
1843 |
||
1844 |
// Strip out code sections that will be postprocessed by Text_Wiki |
|
1845 |
preg_match_all(';^<code(\s[^>]*)?>((?:(?R)|.)*?)\n</code>(\s|$);msi', $html, $code_match); |
|
1846 |
$i = 0; |
|
1847 |
foreach ( $code_match[0] as $code ) |
|
1848 |
{ |
|
1849 |
$html = str_replace_once($code, "{TW_CODE:$i:$rand_seed}", $html); |
|
1850 |
$i++; |
|
1851 |
} |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1852 |
|
1 | 1853 |
$html = preg_replace('#<([a-z]+)([\s]+)([^>]+?)'.htmlalternatives('javascript:').'(.+?)>(.*?)</\\1>#is', '<\\1\\2\\3javascript:\\59>\\60</\\1>', $html); |
1854 |
$html = preg_replace('#<([a-z]+)([\s]+)([^>]+?)'.htmlalternatives('javascript:').'(.+?)>#is', '<\\1\\2\\3javascript:\\59>', $html); |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1855 |
|
1 | 1856 |
if($filter_php) |
1857 |
$html = str_replace( |
|
1858 |
Array('<?php', '<?', '<%', '?>', '%>'), |
|
1859 |
Array('<?php', '<?', '<%', '?>', '%>'), |
|
1860 |
$html); |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1861 |
|
1 | 1862 |
$tag_whitelist = array_keys ( setupAttributeWhitelist() ); |
1863 |
if ( !$filter_php ) |
|
1864 |
$tag_whitelist[] = '?php'; |
|
164 | 1865 |
// allow HTML comments |
1866 |
$tag_whitelist[] = '!--'; |
|
1 | 1867 |
$len = strlen($html); |
1868 |
$in_quote = false; |
|
1869 |
$quote_char = ''; |
|
1870 |
$tag_start = 0; |
|
1871 |
$tag_name = ''; |
|
1872 |
$in_tag = false; |
|
1873 |
$trk_name = false; |
|
1874 |
for ( $i = 0; $i < $len; $i++ ) |
|
1875 |
{ |
|
1876 |
$chr = $html{$i}; |
|
1877 |
$prev = ( $i == 0 ) ? '' : $html{ $i - 1 }; |
|
1878 |
$next = ( ( $i + 1 ) == $len ) ? '' : $html { $i + 1 }; |
|
1879 |
if ( $in_quote && $in_tag ) |
|
1880 |
{ |
|
1881 |
if ( $quote_char == $chr && $prev != '\\' ) |
|
1882 |
$in_quote = false; |
|
1883 |
} |
|
1884 |
elseif ( ( $chr == '"' || $chr == "'" ) && $prev != '\\' && $in_tag ) |
|
1885 |
{ |
|
1886 |
$in_quote = true; |
|
1887 |
$quote_char = $chr; |
|
1888 |
} |
|
1889 |
if ( $chr == '<' && !$in_tag && $next != '/' ) |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1890 |
{ |
1 | 1891 |
// start of a tag |
1892 |
$tag_start = $i; |
|
1893 |
$in_tag = true; |
|
1894 |
$trk_name = true; |
|
1895 |
} |
|
1896 |
elseif ( !$in_quote && $in_tag && $chr == '>' ) |
|
1897 |
{ |
|
1898 |
$full_tag = substr($html, $tag_start, ( $i - $tag_start ) + 1 ); |
|
1899 |
$l = strlen($tag_name) + 2; |
|
1900 |
$attribs_only = trim( substr($full_tag, $l, ( strlen($full_tag) - $l - 1 ) ) ); |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1901 |
|
1 | 1902 |
// Debugging message |
1903 |
// echo htmlspecialchars($full_tag) . '<br />'; |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1904 |
|
450
35f9d6c93eec
Fixed case where HTML comments were getting stripped when opening tag not followed by whitespace (<!--foo--> was stripped, <!-- foo --> was not, neither is stripped now)
Dan
parents:
325
diff
changeset
|
1905 |
if ( !in_array($tag_name, $tag_whitelist) && substr($tag_name, 0, 3) != '!--' ) |
1 | 1906 |
{ |
1907 |
// Illegal tag |
|
1908 |
//echo $tag_name . ' '; |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1909 |
|
1 | 1910 |
$s = ( empty($attribs_only) ) ? '' : ' '; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1911 |
|
1 | 1912 |
$sanitized = '<' . $tag_name . $s . $attribs_only . '>'; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1913 |
|
1 | 1914 |
$html = substr($html, 0, $tag_start) . $sanitized . substr($html, $i + 1); |
1915 |
$html = str_replace('</' . $tag_name . '>', '</' . $tag_name . '>', $html); |
|
1916 |
$new_i = $tag_start + strlen($sanitized); |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1917 |
|
1 | 1918 |
$len = strlen($html); |
1919 |
$i = $new_i; |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1920 |
|
1 | 1921 |
$in_tag = false; |
1922 |
$tag_name = ''; |
|
1923 |
continue; |
|
1924 |
} |
|
1925 |
else |
|
1926 |
{ |
|
164 | 1927 |
// If not filtering PHP, don't bother to strip |
1 | 1928 |
if ( $tag_name == '?php' && !$filter_php ) |
1929 |
continue; |
|
164 | 1930 |
// If this is a comment, likewise skip this "tag" |
1931 |
if ( $tag_name == '!--' ) |
|
1932 |
continue; |
|
1 | 1933 |
$f = fixTagAttributes( $attribs_only, $tag_name ); |
1934 |
$s = ( empty($f) ) ? '' : ' '; |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1935 |
|
1 | 1936 |
$sanitized = '<' . $tag_name . $f . '>'; |
1937 |
$new_i = $tag_start + strlen($sanitized); |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1938 |
|
1 | 1939 |
$html = substr($html, 0, $tag_start) . $sanitized . substr($html, $i + 1); |
1940 |
$len = strlen($html); |
|
1941 |
$i = $new_i; |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1942 |
|
1 | 1943 |
$in_tag = false; |
1944 |
$tag_name = ''; |
|
1945 |
continue; |
|
1946 |
} |
|
1947 |
} |
|
1948 |
elseif ( $in_tag && $trk_name ) |
|
1949 |
{ |
|
21
663fcf528726
Updated all version numbers back to Banshee; a few preliminary steps towards full UTF-8 support in page URLs
Dan
parents:
19
diff
changeset
|
1950 |
$is_alphabetical = ( strtolower($chr) != strtoupper($chr) || in_array($chr, array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')) || $chr == '?' || $chr == '!' || $chr == '-' ); |
1 | 1951 |
if ( $is_alphabetical ) |
1952 |
$tag_name .= $chr; |
|
1953 |
else |
|
1954 |
{ |
|
1955 |
$trk_name = false; |
|
1956 |
} |
|
1957 |
} |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1958 |
|
1 | 1959 |
} |
164 | 1960 |
|
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
1961 |
// Vulnerability from ha.ckers.org/xss.html: |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
1962 |
// <script src="http://foo.com/xss.js" |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
1963 |
// < |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
1964 |
// The rule is so specific because everything else will have been filtered by now |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
1965 |
$html = preg_replace('/<(script|iframe)(.+?)src=([^>]*)</i', '<\\1\\2src=\\3<', $html); |
817
880c4b7eb658
SECURITY: Fix XSS under IE in closing tags (shared sanitizer)
Dan
parents:
801
diff
changeset
|
1966 |
|
880c4b7eb658
SECURITY: Fix XSS under IE in closing tags (shared sanitizer)
Dan
parents:
801
diff
changeset
|
1967 |
// Vulnerability reported by fuzion from nukeit.org: |
880c4b7eb658
SECURITY: Fix XSS under IE in closing tags (shared sanitizer)
Dan
parents:
801
diff
changeset
|
1968 |
// XSS in closing HTML tag style attribute |
880c4b7eb658
SECURITY: Fix XSS under IE in closing tags (shared sanitizer)
Dan
parents:
801
diff
changeset
|
1969 |
// Fix: escape all closing tags with non-whitelisted characters |
880c4b7eb658
SECURITY: Fix XSS under IE in closing tags (shared sanitizer)
Dan
parents:
801
diff
changeset
|
1970 |
$html = preg_replace('!</((?:.*)([^a-z0-9-_:]+)(?:.*))>!', '</\\1>', $html); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1971 |
|
163 | 1972 |
// Restore stripped comments |
1973 |
$i = 0; |
|
1974 |
foreach ( $comment_match[0] as $comment ) |
|
1975 |
{ |
|
1976 |
$html = str_replace_once("{HTMLCOMMENT:$i:$rand_seed}", $comment, $html); |
|
1977 |
$i++; |
|
1978 |
} |
|
1979 |
||
1980 |
// Restore stripped code |
|
1981 |
$i = 0; |
|
1982 |
foreach ( $code_match[0] as $code ) |
|
1983 |
{ |
|
1984 |
$html = str_replace_once("{TW_CODE:$i:$rand_seed}", $code, $html); |
|
1985 |
$i++; |
|
1986 |
} |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1987 |
|
1 | 1988 |
return $html; |
1989 |
} |
|
1990 |
||
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
1991 |
/** |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
1992 |
* Using the same parsing code as sanitize_html(), this function adds <litewiki> tags around certain block-level elements |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
1993 |
* @param string $html The input HTML |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
1994 |
* @return string formatted HTML |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
1995 |
*/ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
1996 |
|
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
1997 |
function wikiformat_process_block($html) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
1998 |
{ |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
1999 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2000 |
$tok1 = "<litewiki>"; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2001 |
$tok2 = "</litewiki>"; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2002 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2003 |
$block_tags = array('div', 'p', 'table', 'blockquote', 'pre'); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2004 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2005 |
$len = strlen($html); |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2006 |
$in_quote = false; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2007 |
$quote_char = ''; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2008 |
$tag_start = 0; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2009 |
$tag_name = ''; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2010 |
$in_tag = false; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2011 |
$trk_name = false; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2012 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2013 |
$diag = 0; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2014 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2015 |
$block_tagname = ''; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2016 |
$in_blocksec = 0; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2017 |
$block_start = 0; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2018 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2019 |
for ( $i = 0; $i < $len; $i++ ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2020 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2021 |
$chr = $html{$i}; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2022 |
$prev = ( $i == 0 ) ? '' : $html{ $i - 1 }; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2023 |
$next = ( ( $i + 1 ) == $len ) ? '' : $html { $i + 1 }; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2024 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2025 |
// Are we inside of a quoted section? |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2026 |
if ( $in_quote && $in_tag ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2027 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2028 |
if ( $quote_char == $chr && $prev != '\\' ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2029 |
$in_quote = false; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2030 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2031 |
elseif ( ( $chr == '"' || $chr == "'" ) && $prev != '\\' && $in_tag ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2032 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2033 |
$in_quote = true; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2034 |
$quote_char = $chr; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2035 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2036 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2037 |
if ( $chr == '<' && !$in_tag && $next == '/' ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2038 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2039 |
// Iterate through until we've got a tag name |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2040 |
$tag_name = ''; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2041 |
$i++; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2042 |
while(true) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2043 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2044 |
$i++; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2045 |
// echo $i . ' '; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2046 |
$chr = $html{$i}; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2047 |
$prev = ( $i == 0 ) ? '' : $html{ $i - 1 }; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2048 |
$next = ( ( $i + 1 ) == $len ) ? '' : $html { $i + 1 }; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2049 |
$tag_name .= $chr; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2050 |
if ( $next == '>' ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2051 |
break; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2052 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2053 |
// echo '<br />'; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2054 |
if ( in_array($tag_name, $block_tags) ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2055 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2056 |
if ( $block_tagname == $tag_name ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2057 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2058 |
$in_blocksec -= 1; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2059 |
if ( $in_blocksec == 0 ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2060 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2061 |
$block_tagname = ''; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2062 |
$i += 2; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2063 |
// echo 'Finished wiki litewiki wraparound calc at pos: ' . $i; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2064 |
$full_litewiki = substr($html, $block_start, ( $i - $block_start )); |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2065 |
$new_text = "{$tok1}{$full_litewiki}{$tok2}"; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2066 |
$html = substr($html, 0, $block_start) . $new_text . substr($html, $i); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2067 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2068 |
$i += ( strlen($tok1) + strlen($tok2) ) - 1; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2069 |
$len = strlen($html); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2070 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2071 |
//die('<pre>' . htmlspecialchars($html) . '</pre>'); |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2072 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2073 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2074 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2075 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2076 |
$in_tag = false; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2077 |
$in_quote = false; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2078 |
$tag_name = ''; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2079 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2080 |
continue; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2081 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2082 |
else if ( $chr == '<' && !$in_tag && $next != '/' ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2083 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2084 |
// start of a tag |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2085 |
$tag_start = $i; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2086 |
$in_tag = true; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2087 |
$trk_name = true; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2088 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2089 |
else if ( !$in_quote && $in_tag && $chr == '>' ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2090 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2091 |
if ( !in_array($tag_name, $block_tags) ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2092 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2093 |
// Inline tag - reset and go to the next one |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2094 |
// echo '<inline ' . $tag_name . '> '; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2095 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2096 |
$in_tag = false; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2097 |
$tag_name = ''; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2098 |
continue; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2099 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2100 |
else |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2101 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2102 |
// echo '<block: ' . $tag_name . ' @ ' . $i . '><br/>'; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2103 |
if ( $in_blocksec == 0 ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2104 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2105 |
//die('Found a starting tag for a block element: ' . $tag_name . ' at pos ' . $tag_start); |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2106 |
$block_tagname = $tag_name; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2107 |
$block_start = $tag_start; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2108 |
$in_blocksec++; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2109 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2110 |
else if ( $block_tagname == $tag_name ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2111 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2112 |
$in_blocksec++; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2113 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2114 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2115 |
$in_tag = false; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2116 |
$tag_name = ''; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2117 |
continue; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2118 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2119 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2120 |
elseif ( $in_tag && $trk_name ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2121 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2122 |
$is_alphabetical = ( strtolower($chr) != strtoupper($chr) || in_array($chr, array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')) || $chr == '?' || $chr == '!' || $chr == '-' ); |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2123 |
if ( $is_alphabetical ) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2124 |
$tag_name .= $chr; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2125 |
else |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2126 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2127 |
$trk_name = false; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2128 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2129 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2130 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2131 |
// Tokenization complete |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2132 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2133 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2134 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2135 |
$regex = '/' . str_replace('/', '\\/', preg_quote($tok2)) . '([\s]*)' . preg_quote($tok1) . '/is'; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2136 |
// die(htmlspecialchars($regex)); |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2137 |
$html = preg_replace($regex, '\\1', $html); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2138 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2139 |
return $html; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2140 |
|
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2141 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2142 |
|
1 | 2143 |
function htmlalternatives($string) |
2144 |
{ |
|
2145 |
$ret = ''; |
|
2146 |
for ( $i = 0; $i < strlen($string); $i++ ) |
|
2147 |
{ |
|
2148 |
$chr = $string{$i}; |
|
2149 |
$ch1 = ord($chr); |
|
2150 |
$ch2 = dechex($ch1); |
|
2151 |
$byte = '(&\\#([0]*){0,7}' . $ch1 . ';|\\\\([0]*){0,7}' . $ch1 . ';|\\\\([0]*){0,7}' . $ch2 . ';|&\\#x([0]*){0,7}' . $ch2 . ';|%([0]*){0,7}' . $ch2 . '|' . preg_quote($chr) . ')'; |
|
2152 |
$ret .= $byte; |
|
2153 |
$ret .= '([\s]){0,2}'; |
|
2154 |
} |
|
2155 |
return $ret; |
|
2156 |
} |
|
2157 |
||
2158 |
/** |
|
906
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2159 |
* Generate HTML for a sprite image. |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2160 |
* @param string Path to sprite image |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2161 |
* @param int Width of resulting image |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2162 |
* @param int Height of resulting image |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2163 |
* @param int X offset |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2164 |
* @param int Y offset |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2165 |
* @return object HTMLImageElement |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2166 |
*/ |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2167 |
|
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2168 |
function gen_sprite($path, $width, $height, $xpos, $ypos) |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2169 |
{ |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2170 |
$html = '<img src="' . scriptPath . '/images/spacer.gif" width="' . $width . '" height="' . $height . '" '; |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2171 |
$xpos = ( $xpos == 0 ) ? '0' : '-' . strval($xpos); |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2172 |
$ypos = ( $ypos == 0 ) ? '0' : '-' . strval($ypos); |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2173 |
$html .= 'style="background-image: url(' . $path . '); background-repeat: no-repeat; background-position: ' . $ypos . 'px ' . $xpos . 'px;"'; |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2174 |
$html .= ' />'; |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2175 |
|
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2176 |
return $html; |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2177 |
} |
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2178 |
|
c949e82b8f49
New page protection UI. Both miniPrompt and failsafe HTML.
Dan
parents:
898
diff
changeset
|
2179 |
/** |
825
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2180 |
* Portal function allowing spam-filtering plugins. |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2181 |
* Hooking guide: |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2182 |
* - Attach to spam_check |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2183 |
* - Return either true or false - true if the message is spam-free, false if it fails your test |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2184 |
* @example |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2185 |
<code> |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2186 |
$plugins->attachHook('spam_check', 'return my_spam_check($string);'); |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2187 |
function my_spam_check($string) |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2188 |
{ |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2189 |
if ( stristr($string, 'viagra') ) |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2190 |
return false; |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2191 |
|
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2192 |
return true; |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2193 |
} |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2194 |
</code> |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2195 |
* @param string String to check for spam |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2196 |
* @param string Author name |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2197 |
* @param string Author e-mail |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2198 |
* @param string Author website |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2199 |
* @param string Author IP |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2200 |
* @return bool |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2201 |
*/ |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2202 |
|
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2203 |
function spamalyze($string, $name = false, $email = false, $url = false, $ip = false) |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2204 |
{ |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2205 |
global $db, $session, $paths, $template, $plugins; // Common objects |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2206 |
if ( !$ip ) |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2207 |
$ip =& $_SERVER['REMOTE_ADDR']; |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2208 |
|
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2209 |
$code = $plugins->setHook('spam_check'); |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2210 |
foreach ( $code as $cmd ) |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2211 |
{ |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2212 |
$result = eval($cmd); |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2213 |
if ( !$result ) |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2214 |
return false; |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2215 |
} |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2216 |
return true; |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2217 |
} |
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2218 |
|
9d5c04c1414f
Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
Dan
parents:
817
diff
changeset
|
2219 |
/** |
875
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2220 |
* Generates the HTML of a pagination control. |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2221 |
* @param int Current page |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2222 |
* @param int Number of pages |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2223 |
* @param string sprintf()-style formatting URL for pages |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2224 |
* @param int Multiplier for start offset, defaults to 1 |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2225 |
* @param int Add to each $i for addition to result urls, usually either 0 or 1 (depends on whether you want your ?page= to start with 0 ro 1) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2226 |
* @return string HTML |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2227 |
*/ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2228 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2229 |
function generate_paginator($current_page, $num_pages, $result_url, $start_mult = 1, $start_add = 1) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2230 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2231 |
global $db, $session, $paths, $template, $plugins; // Common objects |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2232 |
global $lang; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2233 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2234 |
$out = ''; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2235 |
$i = 0; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2236 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2237 |
// Build paginator |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2238 |
$pg_css = ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ) ? |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2239 |
// IE-specific hack |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2240 |
'display: block; width: 1px;': |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2241 |
// Other browsers |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2242 |
'display: table; margin: 10px 0 0 auto;'; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2243 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2244 |
$begin = '<div class="tblholder" style="'. $pg_css . '"> |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2245 |
<table border="0" cellspacing="1" cellpadding="4"> |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2246 |
<tr><th>' . $lang->get('paginate_lbl_page') . '</th>'; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2247 |
$block = '<td class="row1" style="text-align: center;">{LINK}</td>'; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2248 |
$end = '</tr></table></div>'; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2249 |
$blk = $template->makeParserText($block); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2250 |
$inner = ''; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2251 |
$cls = 'row2'; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2252 |
if ( $num_pages < 5 ) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2253 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2254 |
for ( $i = 0; $i < $num_pages; $i++ ) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2255 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2256 |
$cls = ( $cls == 'row1' ) ? 'row2' : 'row1'; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2257 |
$offset = strval(($i * $start_mult) + $start_add); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2258 |
$url = htmlspecialchars(sprintf($result_url, $offset)); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2259 |
$j = $i + 1; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2260 |
$link = ( $i == $current_page ) ? "<b>$j</b>" : "<a href=".'"'."$url".'"'." style='text-decoration: none;'>$j</a>"; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2261 |
$blk->assign_vars(array( |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2262 |
'CLASS'=>$cls, |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2263 |
'LINK'=>$link |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2264 |
)); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2265 |
$inner .= $blk->run(); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2266 |
} |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2267 |
} |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2268 |
else |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2269 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2270 |
if ( $current_page + 5 > $num_pages ) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2271 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2272 |
$list = Array(); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2273 |
$tp = $current_page; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2274 |
if ( $current_page + 0 == $num_pages ) $tp = $tp - 3; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2275 |
if ( $current_page + 1 == $num_pages ) $tp = $tp - 2; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2276 |
if ( $current_page + 2 == $num_pages ) $tp = $tp - 1; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2277 |
for ( $i = $tp - 1; $i <= $tp + 1; $i++ ) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2278 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2279 |
$list[] = $i; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2280 |
} |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2281 |
} |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2282 |
else |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2283 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2284 |
$list = Array(); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2285 |
$current = $current_page; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2286 |
$lower = ( $current < 3 ) ? 1 : $current - 1; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2287 |
for ( $i = 0; $i < 3; $i++ ) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2288 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2289 |
$list[] = $lower + $i; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2290 |
} |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2291 |
} |
909
94c1ff984286
Finished core of log display interface including filter management. There is still a bit of a to-do list, especially regarding rollbacks and reuploads.
Dan
parents:
906
diff
changeset
|
2292 |
$url = sprintf($result_url, $start_add); |
875
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2293 |
$link = ( 0 == $current_page ) ? "<b>" . $lang->get('paginate_btn_first') . "</b>" : "<a href=".'"'."$url".'"'." style='text-decoration: none;'>« " . $lang->get('paginate_btn_first') . "</a>"; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2294 |
$blk->assign_vars(array( |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2295 |
'CLASS'=>$cls, |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2296 |
'LINK'=>$link |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2297 |
)); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2298 |
$inner .= $blk->run(); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2299 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2300 |
foreach ( $list as $i ) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2301 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2302 |
if ( $i == $num_pages ) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2303 |
break; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2304 |
$cls = ( $cls == 'row1' ) ? 'row2' : 'row1'; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2305 |
$offset = strval(($i * $start_mult) + $start_add); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2306 |
$url = sprintf($result_url, $offset); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2307 |
$j = $i + 1; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2308 |
$link = ( $i == $current_page ) ? "<b>$j</b>" : "<a href=".'"'."$url".'"'." style='text-decoration: none;'>$j</a>"; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2309 |
$blk->assign_vars(array( |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2310 |
'CLASS'=>$cls, |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2311 |
'LINK'=>$link |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2312 |
)); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2313 |
$inner .= $blk->run(); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2314 |
} |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2315 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2316 |
// "Last" button |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2317 |
$total = (($num_pages - 1) * $start_mult) + $start_add; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2318 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2319 |
if ( $current_page < $num_pages ) |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2320 |
{ |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2321 |
$cls = ( $cls == 'row1' ) ? 'row2' : 'row1'; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2322 |
$offset = strval($total); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2323 |
$url = sprintf($result_url, $offset); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2324 |
$link = ( $num_pages - 1 == $current_page ) ? "<b>" . $lang->get('paginate_btn_last') . "</b>" : "<a href=".'"'."$url".'"'." style='text-decoration: none;'>" . $lang->get('paginate_btn_last') . " »</a>"; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2325 |
$blk->assign_vars(array( |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2326 |
'CLASS'=>$cls, |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2327 |
'LINK'=>$link |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2328 |
)); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2329 |
$inner .= $blk->run(); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2330 |
} |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2331 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2332 |
} |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2333 |
|
909
94c1ff984286
Finished core of log display interface including filter management. There is still a bit of a to-do list, especially regarding rollbacks and reuploads.
Dan
parents:
906
diff
changeset
|
2334 |
$inner .= '<td class="row2" style="cursor: pointer;" onclick="paginator_goto(this, '.$current_page.', '.$num_pages.', '.$start_mult.', '.$start_add.', unescape(\'' . rawurlencode($result_url) . '\'));">↓</td>'; |
875
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2335 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2336 |
$paginator = "\n$begin$inner$end\n"; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2337 |
return $paginator; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2338 |
} |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2339 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2340 |
/** |
1 | 2341 |
* Paginates (breaks into multiple pages) a MySQL result resource, which is treated as unbuffered. |
2342 |
* @param resource The MySQL result resource. This should preferably be an unbuffered query. |
|
2343 |
* @param string A template, with variables being named after the column name |
|
2344 |
* @param int The number of total results. This should be determined by a second query. |
|
2345 |
* @param string sprintf-style formatting string for URLs for result pages. First parameter will be start offset. |
|
2346 |
* @param int Optional. Start offset in individual results. Defaults to 0. |
|
2347 |
* @param int Optional. The number of results per page. Defualts to 10. |
|
2348 |
* @param int Optional. An associative array of functions to call, with key names being column names, and values being function names. Values can also be an array with key 0 being either an object or a string(class name) and key 1 being a [static] method. |
|
2349 |
* @param string Optional. The text to be sent before the result list, only if there are any results. Possibly the start of a table. |
|
2350 |
* @param string Optional. The text to be sent after the result list, only if there are any results. Possibly the end of a table. |
|
2351 |
* @return string |
|
2352 |
*/ |
|
2353 |
||
2354 |
function paginate($q, $tpl_text, $num_results, $result_url, $start = 0, $perpage = 10, $callers = Array(), $header = '', $footer = '') |
|
2355 |
{ |
|
2356 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
359 | 2357 |
|
1 | 2358 |
$parser = $template->makeParserText($tpl_text); |
875
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2359 |
|
1 | 2360 |
$num_pages = ceil ( $num_results / $perpage ); |
2361 |
$out = ''; |
|
875
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2362 |
$this_page = ceil ( $start / $perpage ); |
1 | 2363 |
$i = 0; |
875
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2364 |
|
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2365 |
$paginator = generate_paginator($this_page, $num_pages, $result_url, $perpage, 0); |
1 | 2366 |
$out .= $paginator; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2367 |
|
1 | 2368 |
$cls = 'row2'; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2369 |
|
1 | 2370 |
if ( $row = $db->fetchrow($q) ) |
2371 |
{ |
|
2372 |
$i = 0; |
|
2373 |
$out .= $header; |
|
2374 |
do { |
|
2375 |
$i++; |
|
2376 |
if ( $i <= $start ) |
|
2377 |
{ |
|
2378 |
continue; |
|
2379 |
} |
|
2380 |
if ( ( $i - $start ) > $perpage ) |
|
2381 |
{ |
|
2382 |
break; |
|
2383 |
} |
|
2384 |
$cls = ( $cls == 'row1' ) ? 'row2' : 'row1'; |
|
2385 |
foreach ( $row as $j => $val ) |
|
2386 |
{ |
|
2387 |
if ( isset($callers[$j]) ) |
|
2388 |
{ |
|
74
68469a95658d
Various bugfixes and cleanups, too much to remember... see the diffs for what got changed :-)
Dan
parents:
73
diff
changeset
|
2389 |
$tmp = ( is_callable($callers[$j]) ) ? @call_user_func($callers[$j], $val, $row) : $val; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2390 |
|
575
9c1ab9c74662
Fixed two bugs in paginator: noisy warning when rows run out and empty strings not being treated as valid from formatting functions
Dan
parents:
574
diff
changeset
|
2391 |
if ( is_string($tmp) ) |
1 | 2392 |
{ |
2393 |
$row[$j] = $tmp; |
|
2394 |
} |
|
2395 |
} |
|
2396 |
} |
|
2397 |
$parser->assign_vars($row); |
|
2398 |
$parser->assign_vars(array('_css_class' => $cls)); |
|
2399 |
$out .= $parser->run(); |
|
575
9c1ab9c74662
Fixed two bugs in paginator: noisy warning when rows run out and empty strings not being treated as valid from formatting functions
Dan
parents:
574
diff
changeset
|
2400 |
} while ( $row = @$db->fetchrow($q) ); |
1 | 2401 |
$out .= $footer; |
2402 |
} |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2403 |
|
1 | 2404 |
$out .= $paginator; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2405 |
|
1 | 2406 |
return $out; |
2407 |
} |
|
2408 |
||
2409 |
/** |
|
2410 |
* This is the same as paginate(), but it processes an array instead of a MySQL result resource. |
|
2411 |
* @param array The results. Each value is simply echoed. |
|
2412 |
* @param int The number of total results. This should be determined by a second query. |
|
2413 |
* @param string sprintf-style formatting string for URLs for result pages. First parameter will be start offset. |
|
2414 |
* @param int Optional. Start offset in individual results. Defaults to 0. |
|
2415 |
* @param int Optional. The number of results per page. Defualts to 10. |
|
2416 |
* @param string Optional. The text to be sent before the result list, only if there are any results. Possibly the start of a table. |
|
2417 |
* @param string Optional. The text to be sent after the result list, only if there are any results. Possibly the end of a table. |
|
2418 |
* @return string |
|
2419 |
*/ |
|
2420 |
||
2421 |
function paginate_array($q, $num_results, $result_url, $start = 0, $perpage = 10, $header = '', $footer = '') |
|
2422 |
{ |
|
2423 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
362
02d315d1cc58
Started localization on User CP. Localized pagination, password strength, and various other small widgets. Fixed bug in path manager causing return of fullpage from get_page_id_from_url() even when namespace is Special.
Dan
parents:
359
diff
changeset
|
2424 |
global $lang; |
02d315d1cc58
Started localization on User CP. Localized pagination, password strength, and various other small widgets. Fixed bug in path manager causing return of fullpage from get_page_id_from_url() even when namespace is Special.
Dan
parents:
359
diff
changeset
|
2425 |
|
1 | 2426 |
$num_pages = ceil ( $num_results / $perpage ); |
2427 |
$out = ''; |
|
2428 |
$i = 0; |
|
2429 |
$this_page = ceil ( $start / $perpage ); |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2430 |
|
875
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2431 |
$paginator = generate_paginator($this_page, $num_pages, $result_url, $perpage, 0); |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2432 |
$out .= $paginator; |
0c3dd4c166c0
Some fixes to paginator (pagination control code moved to separate function)
Dan
parents:
857
diff
changeset
|
2433 |
|
1 | 2434 |
if ( $total > 1 ) |
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
2435 |
{ |
1 | 2436 |
$out .= $paginator; |
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
270
diff
changeset
|
2437 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2438 |
|
1 | 2439 |
$cls = 'row2'; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2440 |
|
1 | 2441 |
if ( sizeof($q) > 0 ) |
2442 |
{ |
|
2443 |
$i = 0; |
|
2444 |
$out .= $header; |
|
2445 |
foreach ( $q as $val ) { |
|
2446 |
$i++; |
|
2447 |
if ( $i <= $start ) |
|
2448 |
{ |
|
2449 |
continue; |
|
2450 |
} |
|
2451 |
if ( ( $i - $start ) > $perpage ) |
|
2452 |
{ |
|
2453 |
break; |
|
2454 |
} |
|
2455 |
$out .= $val; |
|
2456 |
} |
|
2457 |
$out .= $footer; |
|
2458 |
} |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2459 |
|
1 | 2460 |
if ( $total > 1 ) |
2461 |
$out .= $paginator; |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2462 |
|
1 | 2463 |
return $out; |
2464 |
} |
|
2465 |
||
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2466 |
/** |
1 | 2467 |
* Enano version of fputs for debugging |
2468 |
*/ |
|
2469 |
||
2470 |
function enano_fputs($socket, $data) |
|
2471 |
{ |
|
2472 |
// echo '<pre>' . htmlspecialchars($data) . '</pre>'; |
|
2473 |
// flush(); |
|
2474 |
// ob_flush(); |
|
2475 |
// ob_end_flush(); |
|
2476 |
return fputs($socket, $data); |
|
2477 |
} |
|
2478 |
||
2479 |
/** |
|
2480 |
* Sanitizes a page URL string so that it can safely be stored in the database. |
|
2481 |
* @param string Page ID to sanitize |
|
2482 |
* @return string Cleaned text |
|
2483 |
*/ |
|
2484 |
||
2485 |
function sanitize_page_id($page_id) |
|
2486 |
{ |
|
325
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2487 |
global $db, $session, $paths, $template, $plugins; // Common objects |
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2488 |
|
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2489 |
if ( isset($paths->nslist['User']) ) |
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2490 |
{ |
377
bb3e6c3bd4f4
Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents:
376
diff
changeset
|
2491 |
if ( preg_match('/^' . str_replace('/', '\\/', preg_quote($paths->nslist['User'])) . '/', $page_id) ) |
325
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2492 |
{ |
377
bb3e6c3bd4f4
Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents:
376
diff
changeset
|
2493 |
$ip = preg_replace('/^' . str_replace('/', '\\/', preg_quote($paths->nslist['User'])) . '/', '', $page_id); |
325
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2494 |
if ( is_valid_ip($ip) ) |
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2495 |
{ |
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2496 |
return $page_id; |
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2497 |
} |
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2498 |
} |
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2499 |
} |
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2500 |
|
685
17ebe24cdf85
Rebranded as 1.1.5 (Caoineag alpha 5) and fixed a couple bugs related to CDN support in template_nodb and installerUI. Updated readme.
Dan
parents:
667
diff
changeset
|
2501 |
if ( empty($page_id) ) |
17ebe24cdf85
Rebranded as 1.1.5 (Caoineag alpha 5) and fixed a couple bugs related to CDN support in template_nodb and installerUI. Updated readme.
Dan
parents:
667
diff
changeset
|
2502 |
return ''; |
17ebe24cdf85
Rebranded as 1.1.5 (Caoineag alpha 5) and fixed a couple bugs related to CDN support in template_nodb and installerUI. Updated readme.
Dan
parents:
667
diff
changeset
|
2503 |
|
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2504 |
// Remove character escapes |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2505 |
$page_id = dirtify_page_id($page_id); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2506 |
|
21
663fcf528726
Updated all version numbers back to Banshee; a few preliminary steps towards full UTF-8 support in page URLs
Dan
parents:
19
diff
changeset
|
2507 |
$pid_clean = preg_replace('/[\w\.\/:;\(\)@\[\]_-]/', 'X', $page_id); |
1 | 2508 |
$pid_dirty = enano_str_split($pid_clean, 1); |
685
17ebe24cdf85
Rebranded as 1.1.5 (Caoineag alpha 5) and fixed a couple bugs related to CDN support in template_nodb and installerUI. Updated readme.
Dan
parents:
667
diff
changeset
|
2509 |
|
1 | 2510 |
foreach ( $pid_dirty as $id => $char ) |
2511 |
{ |
|
2512 |
if ( $char == 'X' ) |
|
2513 |
continue; |
|
2514 |
$cid = ord($char); |
|
2515 |
$cid = dechex($cid); |
|
2516 |
$cid = strval($cid); |
|
2517 |
if ( strlen($cid) < 2 ) |
|
2518 |
{ |
|
2519 |
$cid = strtoupper("0$cid"); |
|
2520 |
} |
|
2521 |
$pid_dirty[$id] = ".$cid"; |
|
2522 |
} |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2523 |
|
1 | 2524 |
$pid_chars = enano_str_split($page_id, 1); |
2525 |
$page_id_cleaned = ''; |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2526 |
|
1 | 2527 |
foreach ( $pid_chars as $id => $char ) |
2528 |
{ |
|
2529 |
if ( $pid_dirty[$id] == 'X' ) |
|
2530 |
$page_id_cleaned .= $char; |
|
2531 |
else |
|
2532 |
$page_id_cleaned .= $pid_dirty[$id]; |
|
2533 |
} |
|
325
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2534 |
|
21
663fcf528726
Updated all version numbers back to Banshee; a few preliminary steps towards full UTF-8 support in page URLs
Dan
parents:
19
diff
changeset
|
2535 |
// global $mime_types; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2536 |
|
21
663fcf528726
Updated all version numbers back to Banshee; a few preliminary steps towards full UTF-8 support in page URLs
Dan
parents:
19
diff
changeset
|
2537 |
// $exts = array_keys($mime_types); |
663fcf528726
Updated all version numbers back to Banshee; a few preliminary steps towards full UTF-8 support in page URLs
Dan
parents:
19
diff
changeset
|
2538 |
// $exts = '(' . implode('|', $exts) . ')'; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2539 |
|
21
663fcf528726
Updated all version numbers back to Banshee; a few preliminary steps towards full UTF-8 support in page URLs
Dan
parents:
19
diff
changeset
|
2540 |
// $page_id_cleaned = preg_replace('/\.2e' . $exts . '$/', '.\\1', $page_id_cleaned); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2541 |
|
1 | 2542 |
return $page_id_cleaned; |
2543 |
} |
|
2544 |
||
2545 |
/** |
|
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2546 |
* Removes character escapes in a page ID string |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2547 |
* @param string Page ID string to dirty up |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2548 |
* @return string |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2549 |
*/ |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2550 |
|
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2551 |
function dirtify_page_id($page_id) |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2552 |
{ |
38 | 2553 |
global $db, $session, $paths, $template, $plugins; // Common objects |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2554 |
// First, replace spaces with underscores |
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2555 |
$page_id = str_replace(' ', '_', $page_id); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2556 |
|
38 | 2557 |
// Exception for userpages for IP addresses |
770
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
2558 |
$pid_ip_check = ( is_object($paths) ) ? preg_replace('+^' . preg_quote($paths->nslist['User']) . '+', '', $page_id) : $page_id; |
62fed244fa1c
Fixed timezone preference setting not fully implemented; added ability for users to select their own rank from a list of possible ranks based on group membership and user level
Dan
parents:
766
diff
changeset
|
2559 |
if ( is_valid_ip($pid_ip_check) ) |
38 | 2560 |
{ |
325
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2561 |
return $page_id; |
38 | 2562 |
} |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2563 |
|
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2564 |
preg_match_all('/\.[A-Fa-f0-9][A-Fa-f0-9]/', $page_id, $matches); |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2565 |
|
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2566 |
foreach ( $matches[0] as $id => $char ) |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2567 |
{ |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2568 |
$char = substr($char, 1); |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2569 |
$char = strtolower($char); |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2570 |
$char = intval(hexdec($char)); |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2571 |
$char = chr($char); |
800
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
2572 |
if ( preg_match('/^[\w\.\/:;\(\)@\[\]_-]$/', $char) ) |
9cdfe82c56cd
Major underlying changes to namespace handling. Each namespace is handled by its own class which extends Namespace_Default. Much greater customization/pluggability potential, at the possible expense of some code reusing (though code reusing has been avoided thus far). Also a bit better handling of page passwords [SECURITY].
Dan
parents:
798
diff
changeset
|
2573 |
continue; |
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2574 |
$page_id = str_replace($matches[0][$id], $char, $page_id); |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2575 |
} |
325
e17cc42d77cf
Fixed: $paths->page_id not set when the page doesn't exist; finally fixed garbled page names for IP addresses
Dan
parents:
322
diff
changeset
|
2576 |
|
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2577 |
return $page_id; |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2578 |
} |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2579 |
|
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
14
diff
changeset
|
2580 |
/** |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2581 |
* Inserts commas into a number to make it more human-readable. Floating point-safe and doesn't flirt with the number like number_format() does. |
1 | 2582 |
* @param int The number to process |
2583 |
* @return string Input number with commas added |
|
2584 |
*/ |
|
2585 |
||
2586 |
function commatize($num) |
|
2587 |
{ |
|
2588 |
$num = (string)$num; |
|
2589 |
if ( strpos($num, '.') ) |
|
2590 |
{ |
|
2591 |
$whole = explode('.', $num); |
|
2592 |
$num = $whole[0]; |
|
2593 |
$dec = $whole[1]; |
|
2594 |
} |
|
2595 |
else |
|
2596 |
{ |
|
2597 |
$whole = $num; |
|
2598 |
} |
|
2599 |
$offset = ( strlen($num) ) % 3; |
|
2600 |
$len = strlen($num); |
|
2601 |
$offset = ( $offset == 0 ) |
|
2602 |
? 3 |
|
2603 |
: $offset; |
|
2604 |
for ( $i = $offset; $i < $len; $i=$i+3 ) |
|
2605 |
{ |
|
2606 |
$num = substr($num, 0, $i) . ',' . substr($num, $i, $len); |
|
2607 |
$len = strlen($num); |
|
2608 |
$i++; |
|
2609 |
} |
|
2610 |
if ( isset($dec) ) |
|
2611 |
{ |
|
2612 |
return $num . '.' . $dec; |
|
2613 |
} |
|
2614 |
else |
|
2615 |
{ |
|
2616 |
return $num; |
|
2617 |
} |
|
2618 |
} |
|
2619 |
||
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2620 |
/** |
915
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2621 |
* Converts a number to a human file size. |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2622 |
* @param int File size |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2623 |
* @return string |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2624 |
*/ |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2625 |
|
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2626 |
function humanize_filesize($size) |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2627 |
{ |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2628 |
global $lang; |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2629 |
|
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2630 |
if ( $size > ( 1099511627776 * 0.9 ) ) |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2631 |
{ |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2632 |
return number_format($size / 1099511627776, 1) . $lang->get('etc_unit_terabytes_short'); |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2633 |
} |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2634 |
if ( $size > ( 1073741824 * 0.9 ) ) |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2635 |
{ |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2636 |
return number_format($size / 1073741824, 1) . $lang->get('etc_unit_gigabytes_short'); |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2637 |
} |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2638 |
if ( $size > ( 1048576 * 0.9 ) ) |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2639 |
{ |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2640 |
return number_format($size / 1048576, 1) . $lang->get('etc_unit_megabytes_short'); |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2641 |
} |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2642 |
if ( $size > ( 1024 * 0.9 ) ) |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2643 |
{ |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2644 |
return number_format($size / 1024, 1) . $lang->get('etc_unit_kilobytes_short'); |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2645 |
} |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2646 |
return "$size " . $lang->get('etc_unit_bytes'); |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2647 |
} |
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2648 |
|
91f4da84966f
New, beautiful, rethought Admin:Home. No, really, you'll like it.
Dan
parents:
909
diff
changeset
|
2649 |
/** |
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2650 |
* Injects a string into another string at the specified position. |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2651 |
* @param string The haystack |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2652 |
* @param string The needle |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2653 |
* @param int Position at which to insert the needle |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2654 |
*/ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2655 |
|
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2656 |
function inject_substr($haystack, $needle, $pos) |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2657 |
{ |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2658 |
$str1 = substr($haystack, 0, $pos); |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2659 |
$pos++; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2660 |
$str2 = substr($haystack, $pos); |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2661 |
return "{$str1}{$needle}{$str2}"; |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2662 |
} |
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
parents:
22
diff
changeset
|
2663 |
|
38 | 2664 |
/** |
2665 |
* Tells if a given IP address is valid. |
|
2666 |
* @param string suspected IP address |
|
2667 |
* @return bool true if valid, false otherwise |
|
2668 |
*/ |
|
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2669 |
|
38 | 2670 |
function is_valid_ip($ip) |
2671 |
{ |
|
710
1fbce408813c
Fixed IPv6 address match (the one from phpBB3 did not work)
Dan
parents:
685
diff
changeset
|
2672 |
// This next one came from phpBB3. |
38 | 2673 |
$ipv4 = '(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])'; |
710
1fbce408813c
Fixed IPv6 address match (the one from phpBB3 did not work)
Dan
parents:
685
diff
changeset
|
2674 |
$ipv6 = '(?:[a-f0-9]{0,4}):(?:[a-f0-9]{0,4}):(?:[a-f0-9]{0,4}:|:)?(?:[a-f0-9]{0,4}:|:)?(?:[a-f0-9]{0,4}:|:)?(?:[a-f0-9]{0,4}:|:)?(?:[a-f0-9]{0,4}:|:)?(?:[a-f0-9]{1,4})'; |
76
608dee512bf0
Work started on page tags, still aways to go, but syncing to Nighthawk
Dan
parents:
74
diff
changeset
|
2675 |
|
38 | 2676 |
if ( preg_match("/^{$ipv4}$/", $ip) || preg_match("/^{$ipv6}$/", $ip) ) |
2677 |
return true; |
|
2678 |
else |
|
2679 |
return false; |
|
2680 |
} |
|
2681 |
||
48
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2682 |
/** |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2683 |
* Replaces the FIRST given occurrence of needle within haystack with thread |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2684 |
* @param string Needle |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2685 |
* @param string Thread |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2686 |
* @param string Haystack |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2687 |
*/ |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2688 |
|
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2689 |
function str_replace_once($needle, $thread, $haystack) |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2690 |
{ |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2691 |
$needle_len = strlen($needle); |
593
4f9bec0d65c1
More optimization work. Moved special page init functions to common instead of common_post hook. Allowed paths to cache page metadata on filesystem. Phased out the redundancy in $paths->pages that paired a number with every urlname as foreach loops are allowed now (and have been for some time). Fixed missing includes for several functions. Rewrote str_replace_once to be a lot more efficient.
Dan
parents:
592
diff
changeset
|
2692 |
if ( $pos = strstr($haystack, $needle) ) |
48
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2693 |
{ |
593
4f9bec0d65c1
More optimization work. Moved special page init functions to common instead of common_post hook. Allowed paths to cache page metadata on filesystem. Phased out the redundancy in $paths->pages that paired a number with every urlname as foreach loops are allowed now (and have been for some time). Fixed missing includes for several functions. Rewrote str_replace_once to be a lot more efficient.
Dan
parents:
592
diff
changeset
|
2694 |
$upto = substr($haystack, 0, ( strlen($haystack) - strlen($pos) )); |
4f9bec0d65c1
More optimization work. Moved special page init functions to common instead of common_post hook. Allowed paths to cache page metadata on filesystem. Phased out the redundancy in $paths->pages that paired a number with every urlname as foreach loops are allowed now (and have been for some time). Fixed missing includes for several functions. Rewrote str_replace_once to be a lot more efficient.
Dan
parents:
592
diff
changeset
|
2695 |
$from = substr($pos, $needle_len); |
4f9bec0d65c1
More optimization work. Moved special page init functions to common instead of common_post hook. Allowed paths to cache page metadata on filesystem. Phased out the redundancy in $paths->pages that paired a number with every urlname as foreach loops are allowed now (and have been for some time). Fixed missing includes for several functions. Rewrote str_replace_once to be a lot more efficient.
Dan
parents:
592
diff
changeset
|
2696 |
return "{$upto}{$thread}{$from}"; |
48
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2697 |
} |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2698 |
return $haystack; |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2699 |
} |
fc9762553a3c
E-mail address mask engine non-Javascript fallback now picks random substitutions for @ and . to make address more unreadable by bots
Dan
parents:
40
diff
changeset
|
2700 |
|
78
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2701 |
/** |
581
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2702 |
* Replaces all given occurences of needle in haystack, case insensitively. |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2703 |
* @param string Needle |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2704 |
* @param string Thread |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2705 |
* @param string Haystack |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2706 |
* @return string |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2707 |
*/ |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2708 |
|
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2709 |
function str_replace_i($needle, $thread, $haystack) |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2710 |
{ |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2711 |
$needle_len = strlen($needle); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2712 |
$haystack_len = strlen($haystack); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2713 |
for ( $i = 0; $i < $haystack_len; $i++ ) |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2714 |
{ |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2715 |
$test = substr($haystack, $i, $needle_len); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2716 |
if ( strtolower($test) == strtolower($needle) ) |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2717 |
{ |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2718 |
// Got it! |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2719 |
$upto = substr($haystack, 0, $i); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2720 |
$from = substr($haystack, ( $i + $needle_len )); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2721 |
$haystack = "{$upto}{$thread}{$from}"; |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2722 |
$haystack_len = strlen($haystack); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2723 |
$i = $i + strlen($thread); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2724 |
} |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2725 |
} |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2726 |
return $haystack; |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2727 |
} |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2728 |
|
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2729 |
/** |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2730 |
* Highlights a term in a string. |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2731 |
* @param string Needle (term to highlight) |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2732 |
* @param string Haystack (search string) |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2733 |
* @param string Starting tag (<b>) |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2734 |
* @param string Ending tag (</b>) |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2735 |
* @return string |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2736 |
*/ |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2737 |
|
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2738 |
function highlight_term($needle, $haystack, $start_tag = '<b>', $end_tag = '</b>') |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2739 |
{ |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2740 |
$needle_len = strlen($needle); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2741 |
$haystack_len = strlen($haystack); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2742 |
for ( $i = 0; $i < $haystack_len; $i++ ) |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2743 |
{ |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2744 |
$test = substr($haystack, $i, $needle_len); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2745 |
if ( strtolower($test) == strtolower($needle) ) |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2746 |
{ |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2747 |
// Got it! |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2748 |
$upto = substr($haystack, 0, $i); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2749 |
$from = substr($haystack, ( $i + $needle_len )); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2750 |
$haystack = "{$upto}{$start_tag}{$test}{$end_tag}{$from}"; |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2751 |
$haystack_len = strlen($haystack); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2752 |
$i = $i + strlen($needle) + strlen($start_tag) + strlen($end_tag); |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2753 |
} |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2754 |
} |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2755 |
return $haystack; |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2756 |
} |
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2757 |
|
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
575
diff
changeset
|
2758 |
/** |
756
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2759 |
* Registers a new type of search result. Because this is so tricky to do but keep clean, this function takes an associative array as its |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2760 |
* only parameter. This array configures the function. The required keys are: |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2761 |
* - table: the database table to search |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2762 |
* - titlecolumn: the column that will be used as the title of the search result. This will have a weight of 1.5 |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2763 |
* - uniqueid: a TPL-format string, variables being column names, that will be unique for every result. This should contain a string that |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2764 |
* will be specific to your *type* of search result in addition to a primary key or other unique identifier. |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2765 |
* - linkformat: an array with the keys page_id and namespace which are where your result will link, plus the following additional options: |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2766 |
* - append: added to the full generated URL |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2767 |
* - query: query string without initial "?" |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2768 |
* Additional options: |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2769 |
* - datacolumn |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2770 |
* - additionalcolumns: additional data to select if you want to use a custom formatting callback |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2771 |
* - formatcallback: a callback or TPL string. If a callback, it will be called with the parameters being the current result row and an |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2772 |
* array of words in case you want to highlight anything; the callback will be expected to return a string containing |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2773 |
* a fully formatted and sanitized blob of HTML. If formatcallback is a TPL string, variables will be named after table |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2774 |
* columns. |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2775 |
* - additionalwhere: additional SQL to inject into WHERE clause, in the format of "AND foo = bar" |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2776 |
* @example Working example of adding users to search results: |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2777 |
<code> |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2778 |
register_search_handler(array( |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2779 |
'table' => 'users', |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2780 |
'titlecolumn' => 'username', |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2781 |
'uniqueid' => 'ns=User;cid={username}', |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2782 |
'additionalcolumns' => array('user_id'), |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2783 |
'resultnote' => '[Member]', |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2784 |
'linkformat' => array( |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2785 |
'page_id' => '{username}', |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2786 |
'namespace' => 'User' |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2787 |
), |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2788 |
'formatcallback' => 'format_user_search_result', |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2789 |
)); |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2790 |
|
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2791 |
function format_user_search_result($row) |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2792 |
{ |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2793 |
global $session, $lang; |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2794 |
$rankdata = $session->get_user_rank(intval($row['user_id'])); |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2795 |
$rankspan = '<span style="' . $rankdata['rank_style'] . '">' . $lang->get($rankdata['rank_title']) . '</span>'; |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2796 |
if ( empty($rankdata['user_title']) ) |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2797 |
{ |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2798 |
return $rankspan; |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2799 |
} |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2800 |
else |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2801 |
{ |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2802 |
return '"' . htmlspecialchars($rankdata['user_title']) . "\" (<b>$rankspan</b>)"; |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2803 |
} |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2804 |
} |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2805 |
</code> |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2806 |
* @param array Options array - see function documentation |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2807 |
* @return null |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2808 |
*/ |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2809 |
|
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2810 |
global $search_handlers; |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2811 |
$search_handlers = array(); |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2812 |
|
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2813 |
function register_search_handler($options) |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2814 |
{ |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2815 |
global $search_handlers; |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2816 |
|
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2817 |
$required = array('table', 'titlecolumn', 'uniqueid', 'linkformat'); |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2818 |
foreach ( $required as $key ) |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2819 |
{ |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2820 |
if ( !isset($options[$key]) ) |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2821 |
{ |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2822 |
throw new Exception("Required search handler option '$key' is missing"); |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2823 |
} |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2824 |
} |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2825 |
$search_handlers[] = $options; |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2826 |
return null; |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2827 |
} |
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2828 |
|
e8cf18383425
Added a new search API that allows much easier registration of search results. Basically you give the engine a table, a few columns to look at, and tell it how to format the results and you're done.
Dan
parents:
741
diff
changeset
|
2829 |
/** |
78
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2830 |
* From http://us2.php.net/urldecode - decode %uXXXX |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2831 |
* @param string The urlencoded string |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2832 |
* @return string |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2833 |
*/ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2834 |
|
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2835 |
function decode_unicode_url($str) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2836 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2837 |
$res = ''; |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2838 |
|
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2839 |
$i = 0; |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2840 |
$max = strlen($str) - 6; |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2841 |
while ($i <= $max) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2842 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2843 |
$character = $str[$i]; |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2844 |
if ($character == '%' && $str[$i + 1] == 'u') |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2845 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2846 |
$value = hexdec(substr($str, $i + 2, 4)); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2847 |
$i += 6; |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2848 |
|
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2849 |
if ($value < 0x0080) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2850 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2851 |
// 1 byte: 0xxxxxxx |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2852 |
$character = chr($value); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2853 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2854 |
else if ($value < 0x0800) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2855 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2856 |
// 2 bytes: 110xxxxx 10xxxxxx |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2857 |
$character = |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2858 |
chr((($value & 0x07c0) >> 6) | 0xc0) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2859 |
. chr(($value & 0x3f) | 0x80); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2860 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2861 |
else |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2862 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2863 |
// 3 bytes: 1110xxxx 10xxxxxx 10xxxxxx |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2864 |
$character = |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2865 |
chr((($value & 0xf000) >> 12) | 0xe0) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2866 |
. chr((($value & 0x0fc0) >> 6) | 0x80) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2867 |
. chr(($value & 0x3f) | 0x80); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2868 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2869 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2870 |
else |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2871 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2872 |
$i++; |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2873 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2874 |
|
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2875 |
$res .= $character; |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2876 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2877 |
|
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2878 |
return $res . substr($str, $i); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2879 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2880 |
|
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2881 |
/** |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2882 |
* Recursively decodes an array with UTF-8 characters in its strings |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2883 |
* @param array Can be multi-depth |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2884 |
* @return array |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2885 |
*/ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2886 |
|
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2887 |
function decode_unicode_array($array) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2888 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2889 |
foreach ( $array as $i => $val ) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2890 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2891 |
if ( is_string($val) ) |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2892 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2893 |
$array[$i] = decode_unicode_url($val); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2894 |
} |
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
2895 |
else if ( is_array($val) ) |
78
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2896 |
{ |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2897 |
$array[$i] = decode_unicode_array($val); |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2898 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2899 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2900 |
return $array; |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2901 |
} |
4df25dfdde63
Modified Text_Wiki parser to fully support UTF-8 strings; several other UTF-8 fixes, international characters seem to work reasonably well now
Dan
parents:
76
diff
changeset
|
2902 |
|
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2903 |
/** |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2904 |
* Sanitizes a page tag. |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2905 |
* @param string |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2906 |
* @return string |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2907 |
*/ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2908 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2909 |
function sanitize_tag($tag) |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2910 |
{ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2911 |
$tag = strtolower($tag); |
315
f49e3c8b638c
Fixed focus of AJAX login form fields in IE; removed stale/unused call to $template->makeParserText() in paginate_array(); added hook page_create_request to possibly help control creation of pages of certain namespaces from plugins; fixed critical bug in user CP that prevented plugins from adding custom CP modules
Dan
parents:
311
diff
changeset
|
2912 |
$tag = preg_replace('/[^\w @\$%\^&-]+/', '', $tag); |
f49e3c8b638c
Fixed focus of AJAX login form fields in IE; removed stale/unused call to $template->makeParserText() in paginate_array(); added hook page_create_request to possibly help control creation of pages of certain namespaces from plugins; fixed critical bug in user CP that prevented plugins from adding custom CP modules
Dan
parents:
311
diff
changeset
|
2913 |
$tag = str_replace('_', ' ', $tag); |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2914 |
$tag = trim($tag); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2915 |
return $tag; |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2916 |
} |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2917 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
2918 |
/** |
610
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2919 |
* Replacement for gzencode() which doesn't always work. |
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2920 |
* @param string Data to compress |
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2921 |
* @param int Compression level - 0 (no compression) to 9 (maximum compression) |
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2922 |
* @param string Filename to encode into the compressed data - defaults to blank |
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2923 |
* @param string Comment for archive - defaults to blank |
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2924 |
* @return string Compressed data |
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2925 |
*/ |
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2926 |
|
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2927 |
function enano_gzencode($data = "", $level = 6, $filename = "", $comments = "") |
610
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2928 |
{ |
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2929 |
$flags = (empty($comment)? 0 : 16) + (empty($filename)? 0 : 8); |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2930 |
$mtime = time(); |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2931 |
|
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2932 |
if ( !function_exists('gzdeflate') ) |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2933 |
return false; |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2934 |
|
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2935 |
return (pack("C1C1C1C1VC1C1", 0x1f, 0x8b, 8, $flags, $mtime, 2, 0xFF) . |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2936 |
(empty($filename) ? "" : $filename . "\0") . |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2937 |
(empty($comment) ? "" : $comment . "\0") . |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2938 |
gzdeflate($data, $level) . |
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
2939 |
pack("VV", crc32($data), strlen($data))); |
610
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2940 |
} |
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
2941 |
|
798
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2942 |
$php_errors = array(); |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2943 |
|
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2944 |
/** |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2945 |
* Enano's PHP error handler. |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2946 |
* handler ( int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2947 |
* @access private |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2948 |
*/ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2949 |
|
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2950 |
function enano_handle_error($errno, $errstr, $errfile, $errline) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2951 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2952 |
global $db, $session, $paths, $template, $plugins; // Common objects |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2953 |
|
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2954 |
$er = error_reporting(); |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2955 |
if ( ! $er & $errno || $er == 0 ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2956 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2957 |
return true; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2958 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2959 |
global $do_gzip, $php_errors; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2960 |
|
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2961 |
if ( defined('ENANO_DEBUG') ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2962 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2963 |
// turn off gzip and echo out error immediately for debug installs |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2964 |
$do_gzip = false; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2965 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2966 |
|
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2967 |
$error_type = 'error'; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2968 |
if ( in_array($errno, array(E_WARNING, E_USER_WARNING)) ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2969 |
$error_type = 'warning'; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2970 |
else if ( in_array($errno, array(E_NOTICE, E_USER_NOTICE)) ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2971 |
$error_type = 'notice'; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2972 |
|
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2973 |
if ( @is_object(@$plugins) ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2974 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2975 |
$code = $plugins->setHook('php_error'); |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2976 |
foreach ( $code as $cmd ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2977 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2978 |
eval($cmd); |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2979 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2980 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2981 |
|
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2982 |
// bypass errors in date() and mktime() (Enano has its own code for this anyway) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2983 |
if ( strstr($errstr, "It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.") ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2984 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2985 |
return true; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2986 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2987 |
|
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2988 |
if ( $do_gzip ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2989 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2990 |
$php_errors[] = array( |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2991 |
'num' => $errno, |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2992 |
'type' => $error_type, |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2993 |
'error' => $errstr, |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2994 |
'file' => $errfile, |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2995 |
'line' => $errline |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2996 |
); |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2997 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2998 |
else |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
2999 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3000 |
echo "[ <b>PHP $error_type:</b> $errstr in <b>$errfile</b>:<b>$errline</b> ]<br />"; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3001 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3002 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3003 |
|
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3004 |
set_error_handler('enano_handle_error'); |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3005 |
|
610
de33b0d26741
Fixed gzip output - no longer depends on ob_gzhandler(), uses gzencode() now with a failsafe available if gzencode() is not available. Public function gzip_output() remains unchanged.
Dan
parents:
606
diff
changeset
|
3006 |
/** |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3007 |
* Gzips the output buffer. |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3008 |
*/ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3009 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3010 |
function gzip_output() |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3011 |
{ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3012 |
global $do_gzip; |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3013 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3014 |
// |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3015 |
// Compress buffered output if required and send to browser |
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
3016 |
// Sorry, doesn't work in IE. What else is new? |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3017 |
// |
720
e2762777b170
Fixed attempt at gzip compression after headers sent; hopefully safely escape args to scale_image() instead of erroring out
Dan
parents:
711
diff
changeset
|
3018 |
if ( $do_gzip && function_exists('gzdeflate') && !strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') && !headers_sent() ) |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3019 |
{ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3020 |
$gzip_contents = ob_get_contents(); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3021 |
ob_end_clean(); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3022 |
|
798
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3023 |
global $php_errors; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3024 |
if ( !empty($php_errors) ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3025 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3026 |
$errors = ''; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3027 |
foreach ( $php_errors as $error ) |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3028 |
{ |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3029 |
$errors .= "[ <b>PHP {$error['type']}:</b> {$error['error']} in <b>{$error['file']}</b>:<b>{$error['line']}</b> ]<br />"; |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3030 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3031 |
$gzip_contents = str_replace("</body>", "$errors</body>", $gzip_contents); |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3032 |
} |
ddfc1b554a08
Redid error handler (it was causing some problems with gzip enabled)
Dan
parents:
770
diff
changeset
|
3033 |
|
667
72818d2bf336
Fixed improperly set up gzencode() replacement; fixed bad regexp in scale_image() security check
Dan
parents:
662
diff
changeset
|
3034 |
$return = @enano_gzencode($gzip_contents); |
81
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3035 |
if ( $return ) |
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3036 |
{ |
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3037 |
header('Content-encoding: gzip'); |
542
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3038 |
echo $return; |
81
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3039 |
} |
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3040 |
else |
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3041 |
{ |
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3042 |
echo $gzip_contents; |
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3043 |
} |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3044 |
} |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3045 |
} |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3046 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3047 |
/** |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3048 |
* Aggressively and hopefully non-destructively optimizes a blob of HTML. |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3049 |
* @param string HTML to process |
294
4ab30e8dd168
Nothing special. ksort()ing list of allowed filetypes in the admin panel to make editing the list marginally easier
Dan
parents:
276
diff
changeset
|
3050 |
* @return string much smaller HTML |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3051 |
*/ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3052 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3053 |
function aggressive_optimize_html($html) |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3054 |
{ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3055 |
$size_before = strlen($html); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3056 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3057 |
// kill carriage returns |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3058 |
$html = str_replace("\r", "", $html); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3059 |
|
125
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3060 |
// Which tags to strip for JAVASCRIPT PROCESSING ONLY - you can change this if needed |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3061 |
$strip_tags = Array('enano:no-opt'); |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3062 |
$strip_tags = implode('|', $strip_tags); |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3063 |
|
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3064 |
// Strip out the tags and replace with placeholders |
183
91127e62f38f
Fixed some regular expressions in HTML optimization algorithm; regex page groups can be edited now (oops)
Dan
parents:
174
diff
changeset
|
3065 |
preg_match_all("#<($strip_tags)([ ]+.*?)?>(.*?)</($strip_tags)>#is", $html, $matches); |
125
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3066 |
$seed = md5(microtime() . mt_rand()); // Random value used for placeholders |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3067 |
for ($i = 0;$i < sizeof($matches[1]); $i++) |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3068 |
{ |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3069 |
$html = str_replace($matches[0][$i], "{DONT_STRIP_ME_NAKED:$seed:$i}", $html); |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3070 |
} |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3071 |
|
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3072 |
// Optimize (but don't obfuscate) Javascript |
184
d74ff822acc9
Replaced autocompleting username with a much more efficient algorithm and caching system
Dan
parents:
183
diff
changeset
|
3073 |
preg_match_all('/<script([ ]+.*?)?>(.*?)(\]\]>)?<\/script>/is', $html, $jscript); |
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
3074 |
require_once(ENANO_ROOT . '/includes/js-compressor.php'); |
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
3075 |
$jsc = new JavascriptCompressor(); |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3076 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3077 |
// list of Javascript reserved words - from about.com |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3078 |
$reserved_words = array('abstract', 'as', 'boolean', 'break', 'byte', 'case', 'catch', 'char', 'class', 'continue', 'const', 'debugger', 'default', 'delete', 'do', |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3079 |
'double', 'else', 'enum', 'export', 'extends', 'false', 'final', 'finally', 'float', 'for', 'function', 'goto', 'if', 'implements', 'import', |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3080 |
'in', 'instanceof', 'int', 'interface', 'is', 'long', 'namespace', 'native', 'new', 'null', 'package', 'private', 'protected', 'public', |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3081 |
'return', 'short', 'static', 'super', 'switch', 'synchronized', 'this', 'throw', 'throws', 'transient', 'true', 'try', 'typeof', 'use', 'var', |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3082 |
'void', 'volatile', 'while', 'with'); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3083 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3084 |
$reserved_words = '(' . implode('|', $reserved_words) . ')'; |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3085 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3086 |
for ( $i = 0; $i < count($jscript[0]); $i++ ) |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3087 |
{ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3088 |
$js =& $jscript[2][$i]; |
582
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
3089 |
if ( empty($js) ) |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
3090 |
continue; |
183
91127e62f38f
Fixed some regular expressions in HTML optimization algorithm; regex page groups can be edited now (oops)
Dan
parents:
174
diff
changeset
|
3091 |
|
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
3092 |
$js = $jsc->getClean($js); |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3093 |
|
81
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3094 |
$replacement = "<script{$jscript[1][$i]}>/* <![CDATA[ */ $js /* ]]> */</script>"; |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3095 |
// apply changes |
81
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3096 |
$html = str_replace($jscript[0][$i], $replacement, $html); |
562
75df0b2c596c
Got initial CSRF token framework implemented and sample implementation added in Special:Logout; removing Javascript compression engine from aggressive_optimize_html() and instead calling JavascriptCompressor class from js-compressor.php
Dan
parents:
556
diff
changeset
|
3097 |
|
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3098 |
} |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3099 |
|
125
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3100 |
// Re-insert untouchable tags |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3101 |
for ($i = 0;$i < sizeof($matches[1]); $i++) |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3102 |
{ |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3103 |
$html = str_replace("{DONT_STRIP_ME_NAKED:$seed:$i}", "<{$matches[1][$i]}{$matches[2][$i]}>{$matches[3][$i]}</{$matches[4][$i]}>", $html); |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3104 |
} |
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
112
diff
changeset
|
3105 |
|
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3106 |
// Which tags to strip - you can change this if needed |
137
3bce0c320e80
Fix: textarea tags got stripped naked by the HTML optimizer, now no longer
Dan
parents:
132
diff
changeset
|
3107 |
$strip_tags = Array('pre', 'script', 'style', 'enano:no-opt', 'textarea'); |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3108 |
$strip_tags = implode('|', $strip_tags); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3109 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3110 |
// Strip out the tags and replace with placeholders |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3111 |
preg_match_all("#<($strip_tags)(.*?)>(.*?)</($strip_tags)>#is", $html, $matches); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3112 |
$seed = md5(microtime() . mt_rand()); // Random value used for placeholders |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3113 |
for ($i = 0;$i < sizeof($matches[1]); $i++) |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3114 |
{ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3115 |
$html = str_replace($matches[0][$i], "{DONT_STRIP_ME_NAKED:$seed:$i}", $html); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3116 |
} |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3117 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3118 |
// Finally, process the HTML |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3119 |
$html = preg_replace("#\n([ ]*)#", " ", $html); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3120 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3121 |
// Remove annoying spaces between tags |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3122 |
$html = preg_replace("#>([ ][ ]+)<#", "> <", $html); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3123 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3124 |
// Re-insert untouchable tags |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3125 |
for ($i = 0;$i < sizeof($matches[1]); $i++) |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3126 |
{ |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3127 |
$html = str_replace("{DONT_STRIP_ME_NAKED:$seed:$i}", "<{$matches[1][$i]}{$matches[2][$i]}>{$matches[3][$i]}</{$matches[4][$i]}>", $html); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3128 |
} |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3129 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3130 |
// Remove <enano:no-opt> blocks (can be used by themes that don't want their HTML optimized) |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3131 |
$html = preg_replace('#<(\/|)enano:no-opt(.*?)>#', '', $html); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3132 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3133 |
$size_after = strlen($html); |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3134 |
|
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3135 |
// Tell snoopish users what's going on |
81
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3136 |
$html = str_replace('<html', "\n".'<!-- NOTE: Enano has performed an HTML optimization routine on the HTML you see here. This is to enhance page loading speeds. |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3137 |
To view the uncompressed source of this page, add the "nocompress" parameter to the URI of this page: index.php?title=Main_Page&nocompress or Main_Page?nocompress'." |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3138 |
Size before compression: $size_before bytes |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3139 |
Size after compression: $size_after bytes |
81
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
parents:
80
diff
changeset
|
3140 |
-->\n<html", $html); |
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3141 |
return $html; |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3142 |
} |
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
parents:
78
diff
changeset
|
3143 |
|
128
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3144 |
/** |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3145 |
* For an input range of numbers (like 25-256) returns an array filled with all numbers in the range, inclusive. |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3146 |
* @param string |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3147 |
* @return array |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3148 |
*/ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3149 |
|
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3150 |
function int_range($range) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3151 |
{ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3152 |
if ( strval(intval($range)) == $range ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3153 |
return $range; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3154 |
if ( !preg_match('/^[0-9]+(-[0-9]+)?$/', $range) ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3155 |
return false; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3156 |
$ends = explode('-', $range); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3157 |
if ( count($ends) != 2 ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3158 |
return $range; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3159 |
$ret = array(); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3160 |
if ( $ends[1] < $ends[0] ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3161 |
$ends = array($ends[1], $ends[0]); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3162 |
else if ( $ends[0] == $ends[1] ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3163 |
return array($ends[0]); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3164 |
for ( $i = $ends[0]; $i <= $ends[1]; $i++ ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3165 |
{ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3166 |
$ret[] = $i; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3167 |
} |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3168 |
return $ret; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3169 |
} |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3170 |
|
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3171 |
/** |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3172 |
* Parses a range or series of IP addresses, and returns the raw addresses. Only parses ranges in the last two octets to prevent DOSing. |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3173 |
* Syntax for ranges: x.x.x.x; x|y.x.x.x; x.x.x-z.x; x.x.x-z|p.q|y |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3174 |
* @param string IP address range string |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3175 |
* @return array |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3176 |
*/ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3177 |
|
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3178 |
function parse_ip_range($range) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3179 |
{ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3180 |
$octets = explode('.', $range); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3181 |
if ( count($octets) != 4 ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3182 |
// invalid range |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3183 |
return $range; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3184 |
$i = 0; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3185 |
$possibilities = array( 0 => array(), 1 => array(), 2 => array(), 3 => array() ); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3186 |
foreach ( $octets as $octet ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3187 |
{ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3188 |
$existing =& $possibilities[$i]; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3189 |
$inner = explode('|', $octet); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3190 |
foreach ( $inner as $bit ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3191 |
{ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3192 |
if ( $i >= 2 ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3193 |
{ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3194 |
$bits = int_range($bit); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3195 |
if ( $bits === false ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3196 |
return false; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3197 |
else if ( !is_array($bits) ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3198 |
$existing[] = intval($bits); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3199 |
else |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3200 |
$existing = array_merge($existing, $bits); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3201 |
} |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3202 |
else |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3203 |
{ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3204 |
$bit = intval($bit); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3205 |
$existing[] = $bit; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3206 |
} |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3207 |
} |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3208 |
$existing = array_unique($existing); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3209 |
$i++; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3210 |
} |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3211 |
$ips = array(); |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3212 |
|
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3213 |
// The only way to combine all those possibilities. ;-) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3214 |
foreach ( $possibilities[0] as $oc1 ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3215 |
foreach ( $possibilities[1] as $oc2 ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3216 |
foreach ( $possibilities[2] as $oc3 ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3217 |
foreach ( $possibilities[3] as $oc4 ) |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3218 |
$ips[] = "$oc1.$oc2.$oc3.$oc4"; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3219 |
|
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3220 |
return $ips; |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3221 |
} |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
3222 |
|
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3223 |
/** |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3224 |
* Parses a valid IP address range into a regular expression. |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3225 |
* @param string IP range string |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3226 |
* @return string |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3227 |
*/ |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3228 |
|
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3229 |
function parse_ip_range_regex($range) |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3230 |
{ |
766 | 3231 |
if ( strstr($range, ':') ) |
3232 |
{ |
|
3233 |
return parse_ipv6_range_regex($range); |
|
3234 |
} |
|
3235 |
else |
|
3236 |
{ |
|
3237 |
return parse_ipv4_range_regex($range); |
|
3238 |
} |
|
3239 |
} |
|
3240 |
||
3241 |
/** |
|
3242 |
* Parses a valid IPv4 address range into a regular expression. |
|
3243 |
* @param string IP range string |
|
3244 |
* @return string |
|
3245 |
*/ |
|
3246 |
||
3247 |
function parse_ipv4_range_regex($range) |
|
3248 |
{ |
|
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3249 |
// Regular expression to test the range string for validity |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3250 |
$regex = '/^(([0-9]+(-[0-9]+)?)(\|([0-9]+(-[0-9]+)?))*)\.' |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3251 |
. '(([0-9]+(-[0-9]+)?)(\|([0-9]+(-[0-9]+)?))*)\.' |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3252 |
. '(([0-9]+(-[0-9]+)?)(\|([0-9]+(-[0-9]+)?))*)\.' |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3253 |
. '(([0-9]+(-[0-9]+)?)(\|([0-9]+(-[0-9]+)?))*)$/'; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3254 |
if ( !preg_match($regex, $range) ) |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3255 |
{ |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3256 |
return false; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3257 |
} |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3258 |
$octets = array(0 => array(), 1 => array(), 2 => array(), 3 => array()); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3259 |
list($octets[0], $octets[1], $octets[2], $octets[3]) = explode('.', $range); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3260 |
$return = '^'; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3261 |
foreach ( $octets as $octet ) |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3262 |
{ |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3263 |
// alternatives array |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3264 |
$alts = array(); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3265 |
if ( strpos($octet, '|') ) |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3266 |
{ |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3267 |
$particles = explode('|', $octet); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3268 |
} |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3269 |
else |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3270 |
{ |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3271 |
$particles = array($octet); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3272 |
} |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3273 |
foreach ( $particles as $atom ) |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3274 |
{ |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3275 |
// each $atom will be either |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3276 |
if ( strval(intval($atom)) == $atom ) |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3277 |
{ |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3278 |
$alts[] = $atom; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3279 |
continue; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3280 |
} |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3281 |
else |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3282 |
{ |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3283 |
// it's a range - parse it out |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3284 |
$alt2 = int_range($atom); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3285 |
if ( !$alt2 ) |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3286 |
return false; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3287 |
foreach ( $alt2 as $neutrino ) |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3288 |
$alts[] = $neutrino; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3289 |
} |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3290 |
} |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3291 |
$alts = array_unique($alts); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3292 |
$alts = '|' . implode('|', $alts) . '|'; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3293 |
// we can further optimize/compress this by weaseling our way into using some character ranges |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3294 |
for ( $i = 1; $i <= 25; $i++ ) |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3295 |
{ |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3296 |
$alts = str_replace("|{$i}0|{$i}1|{$i}2|{$i}3|{$i}4|{$i}5|{$i}6|{$i}7|{$i}8|{$i}9|", "|{$i}[0-9]|", $alts); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3297 |
} |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3298 |
$alts = str_replace("|1|2|3|4|5|6|7|8|9|", "|[1-9]|", $alts); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3299 |
$alts = '(' . substr($alts, 1, -1) . ')'; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3300 |
$return .= $alts . '\.'; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3301 |
} |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3302 |
$return = substr($return, 0, -2); |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3303 |
$return .= '$'; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3304 |
return $return; |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3305 |
} |
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
parents:
256
diff
changeset
|
3306 |
|
504
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3307 |
/** |
766 | 3308 |
* Parses a valid IPv6 address range into a regular expression. |
3309 |
* @param string IP range string |
|
3310 |
* @return string |
|
3311 |
*/ |
|
3312 |
||
3313 |
function parse_ipv6_range_regex($range) |
|
3314 |
{ |
|
3315 |
$range = strtolower(trim($range)); |
|
3316 |
$valid = '/^'; |
|
3317 |
$valid .= '(?:[0-9a-f]{0,4}|[0-9a-f]{1,4}-[0-9a-f]{1,4}):'; |
|
3318 |
$valid .= '(?:[0-9a-f]{0,4}|[0-9a-f]{1,4}-[0-9a-f]{1,4}):'; |
|
3319 |
$valid .= '(?:[0-9a-f]{0,4}|[0-9a-f]{1,4}-[0-9a-f]{1,4}:|:)?'; |
|
3320 |
$valid .= '(?:[0-9a-f]{0,4}|[0-9a-f]{1,4}-[0-9a-f]{1,4}:|:)?'; |
|
3321 |
$valid .= '(?:[0-9a-f]{0,4}|[0-9a-f]{1,4}-[0-9a-f]{1,4}:|:)?'; |
|
3322 |
$valid .= '(?:[0-9a-f]{0,4}|[0-9a-f]{1,4}-[0-9a-f]{1,4}:|:)?'; |
|
3323 |
$valid .= '(?:[0-9a-f]{0,4}|[0-9a-f]{1,4}-[0-9a-f]{1,4}:|:)?'; |
|
3324 |
$valid .= '(?:[0-9a-f]{0,4}|[0-9a-f]{1,4}-[0-9a-f]{1,4})$/'; |
|
3325 |
if ( !preg_match($valid, $range) ) |
|
3326 |
return false; |
|
3327 |
||
3328 |
// expand address range. |
|
3329 |
// this takes short ranges like: |
|
3330 |
// 2001:470-471:054-b02b::5-bb |
|
3331 |
// up to: |
|
3332 |
// 2001:0470-0471:0054-b02b:0000:0000:0000:0005-00bb |
|
3333 |
$range = explode(':', $range); |
|
3334 |
$expanded = ''; |
|
3335 |
$size = count($range); |
|
3336 |
foreach ( $range as $byteset ) |
|
3337 |
{ |
|
3338 |
if ( empty($byteset) ) |
|
3339 |
{ |
|
3340 |
// :: |
|
3341 |
while ( $size < 9 ) |
|
3342 |
{ |
|
3343 |
$expanded .= '0000:'; |
|
3344 |
$size++; |
|
3345 |
} |
|
3346 |
} |
|
3347 |
else |
|
3348 |
{ |
|
3349 |
if ( strstr($byteset, '-') ) |
|
3350 |
{ |
|
3351 |
// this is a range |
|
3352 |
$sides = explode('-', $byteset); |
|
3353 |
foreach ( $sides as &$bytepair ) |
|
3354 |
{ |
|
3355 |
while ( strlen($bytepair) < 4 ) |
|
3356 |
{ |
|
3357 |
$bytepair = "0$bytepair"; |
|
3358 |
} |
|
3359 |
} |
|
3360 |
$byteset = implode('-', $sides); |
|
3361 |
} |
|
3362 |
else |
|
3363 |
{ |
|
3364 |
while ( strlen($byteset) < 4 ) |
|
3365 |
{ |
|
3366 |
$byteset = "0$byteset"; |
|
3367 |
} |
|
3368 |
} |
|
3369 |
$expanded .= "$byteset:"; |
|
3370 |
} |
|
3371 |
} |
|
3372 |
$expanded = explode(':', rtrim($expanded, ':')); |
|
3373 |
||
3374 |
// ready to dive in and start generating range regexes. |
|
3375 |
// this has to be pretty optimized... we want to end up with regexes like: |
|
3376 |
// range: 54-b12b |
|
3377 |
/* |
|
3378 |
/005[4-9a-f]| |
|
3379 |
00[6-9a-f][0-9a-f]| |
|
3380 |
0[1-9a-f][0-9a-f][0-9a-f]| |
|
3381 |
[1-9a][0-9a-f][0-9a-f][0-9a-f]| |
|
3382 |
b[0-0][0-1][0-9a-f]| |
|
3383 |
b0[0-1][0-9a-f]| |
|
3384 |
b02[0-9a-b]/x |
|
3385 |
*/ |
|
3386 |
foreach ( $expanded as &$word ) |
|
3387 |
{ |
|
3388 |
if ( strstr($word, '-') ) |
|
3389 |
{ |
|
3390 |
// oh... damn. |
|
3391 |
$word = '(?:' . generate_hex_numeral_range($word) . ')'; |
|
3392 |
} |
|
3393 |
} |
|
3394 |
||
3395 |
// return print_r($expanded, true); |
|
3396 |
return '^' . implode(':', $expanded) . '$'; |
|
3397 |
} |
|
3398 |
||
3399 |
/** |
|
3400 |
* Take a hex numeral range and parse it in to a PCRE. |
|
3401 |
* @param string |
|
3402 |
* @return string |
|
3403 |
* @access private |
|
3404 |
*/ |
|
3405 |
||
3406 |
function generate_hex_numeral_range($word) |
|
3407 |
{ |
|
3408 |
list($low, $high) = explode('-', $word); |
|
3409 |
||
3410 |
if ( hexdec($low) > hexdec($high) ) |
|
3411 |
{ |
|
3412 |
$_ = $low; |
|
3413 |
$low = $high; |
|
3414 |
$high = $_; |
|
3415 |
unset($_); |
|
3416 |
} |
|
3417 |
||
3418 |
while ( strlen($low) < strlen($high) ) |
|
3419 |
{ |
|
3420 |
$low = "0$low"; |
|
3421 |
} |
|
3422 |
||
3423 |
// trim off everything that's the same |
|
3424 |
$trimmed = ''; |
|
3425 |
$len = strlen($low); |
|
3426 |
for ( $i = 0; $i < $len; $i++ ) |
|
3427 |
{ |
|
3428 |
if ( $low{0} === $high{0} ) |
|
3429 |
{ |
|
3430 |
$trimmed .= $low{0}; |
|
3431 |
$low = substr($low, 1); |
|
3432 |
$high = substr($high, 1); |
|
3433 |
} |
|
3434 |
else |
|
3435 |
{ |
|
3436 |
break; |
|
3437 |
} |
|
3438 |
} |
|
3439 |
||
3440 |
$len = strlen($high); |
|
3441 |
if ( $len == 1 ) |
|
3442 |
{ |
|
3443 |
// this does happen sometimes, so we can save a bit of CPU power here. |
|
3444 |
return $trimmed . __hexdigitrange($low, $high); |
|
3445 |
} |
|
3446 |
||
3447 |
$return = ''; |
|
3448 |
// lower half |
|
3449 |
for ( $i = $len - 1; $i > 0; $i-- ) |
|
3450 |
{ |
|
3451 |
if ( $low{$i} == 'f' ) |
|
3452 |
continue; |
|
3453 |
$return .= $trimmed; |
|
3454 |
for ( $j = 0; $j < $len; $j++ ) |
|
3455 |
{ |
|
3456 |
if ( $j < $i ) |
|
3457 |
{ |
|
3458 |
$return .= $low{$j}; |
|
3459 |
} |
|
3460 |
else if ( $j == $i && ( $i == $len - 1 || $low{$j} == 'f' ) ) |
|
3461 |
{ |
|
3462 |
$return .= __hexdigitrange($low{$j}, 'f'); |
|
3463 |
} |
|
3464 |
else if ( $j == $i && $i != $len - 1 ) |
|
3465 |
{ |
|
3466 |
$return .= __hexdigitrange(dechex(hexdec($low{$j}) + 1), 'f'); |
|
3467 |
} |
|
3468 |
else |
|
3469 |
{ |
|
3470 |
$return .= __hexdigitrange('0', 'f'); |
|
3471 |
} |
|
3472 |
} |
|
3473 |
$return .= '|'; |
|
3474 |
} |
|
3475 |
// middle block |
|
3476 |
if ( hexdec($low{0}) + 1 < hexdec($high{0}) ) |
|
3477 |
{ |
|
3478 |
if ( hexdec($low{0}) + 1 < hexdec($high{0}) - 1 ) |
|
3479 |
$return .= $trimmed . __hexdigitrange(dechex(hexdec($low{0}) + 1), dechex(hexdec($high{0}) - 1)); |
|
3480 |
else |
|
3481 |
$return .= $trimmed . __hexdigitrange($low{0}, $high{0}); |
|
3482 |
if ( $len - 1 > 0 ) |
|
3483 |
$return .= '[0-9a-f]{' . ( $len - 1 ) . '}|'; |
|
3484 |
} |
|
3485 |
// higher half |
|
3486 |
for ( $i = 1; $i < $len; $i++ ) |
|
3487 |
{ |
|
3488 |
if ( $high{$i} == '0' ) |
|
3489 |
continue; |
|
3490 |
$return .= $trimmed; |
|
3491 |
for ( $j = 0; $j < $len; $j++ ) |
|
3492 |
{ |
|
3493 |
if ( $j < $i ) |
|
3494 |
{ |
|
3495 |
$return .= $high{$j}; |
|
3496 |
} |
|
3497 |
else if ( $j == $i && ( $i == $len - 1 || $high{$j} == '0' ) ) |
|
3498 |
{ |
|
3499 |
$return .= __hexdigitrange('0', $high{$j}); |
|
3500 |
} |
|
3501 |
else if ( $j == $i && $i != $len - 1 ) |
|
3502 |
{ |
|
3503 |
$return .= __hexdigitrange('0', dechex(hexdec($high{$j}) - 1)); |
|
3504 |
} |
|
3505 |
else if ( $j > $i ) |
|
3506 |
{ |
|
3507 |
$return .= __hexdigitrange('0', 'f'); |
|
3508 |
} |
|
3509 |
else |
|
3510 |
{ |
|
3511 |
die("I don't know what to do! i $i j $j"); |
|
3512 |
} |
|
3513 |
} |
|
3514 |
$return .= '|'; |
|
3515 |
} |
|
3516 |
||
3517 |
return rtrim($return, '|'); |
|
3518 |
} |
|
3519 |
||
3520 |
function __hexdigitrange($low, $high) |
|
3521 |
{ |
|
3522 |
if ( $low == $high ) |
|
3523 |
return $low; |
|
3524 |
if ( empty($low) ) |
|
3525 |
$low = '0'; |
|
3526 |
||
3527 |
$low_type = ( preg_match('/[0-9]/', $low) ) ? 'num' : 'alph'; |
|
3528 |
$high_type = ( preg_match('/[0-9]/', $high) ) ? 'num' : 'alph'; |
|
3529 |
if ( ( $low_type == 'num' && $high_type == 'num') || ( $low_type == 'alph' && $high_type == 'alph' ) ) |
|
3530 |
{ |
|
3531 |
return "[$low-$high]"; |
|
3532 |
} |
|
3533 |
else if ( $low_type == 'num' && $high_type == 'alph' ) |
|
3534 |
{ |
|
3535 |
$ret = '['; |
|
3536 |
||
3537 |
if ( $low == '9' ) |
|
3538 |
$ret .= '9'; |
|
3539 |
else |
|
3540 |
$ret .= "$low-9"; |
|
3541 |
if ( $high == 'a' ) |
|
3542 |
$ret .= 'a'; |
|
3543 |
else |
|
3544 |
$ret .= "a-$high"; |
|
3545 |
||
3546 |
$ret .= "]"; |
|
3547 |
return $ret; |
|
3548 |
} |
|
3549 |
else if ( $low_type == 'alph' && $high_type == 'num' ) |
|
3550 |
{ |
|
3551 |
// ???? this should never happen |
|
3552 |
return __hexdigitrange($high, $low); |
|
3553 |
} |
|
3554 |
} |
|
3555 |
||
3556 |
/** |
|
504
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3557 |
* Validates an e-mail address. Uses a compacted version of the regular expression generated by the scripts at <http://examples.oreilly.com/regex/>. |
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3558 |
* @param string E-mail address |
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3559 |
* @return bool |
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3560 |
*/ |
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3561 |
|
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3562 |
function check_email_address($email) |
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3563 |
{ |
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3564 |
static $regexp = '(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*(?:(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*)*<[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*(?:,[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*)*:[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*>)'; |
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3565 |
return ( preg_match("/^$regexp$/", $email) ) ? true : false; |
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3566 |
} |
bc8e0e9ee01d
Added support for embedding language data into plugins; updated all version numbers on plugin files
Dan
parents:
500
diff
changeset
|
3567 |
|
132
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3568 |
function password_score_len($password) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3569 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3570 |
if ( !is_string($password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3571 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3572 |
return -10; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3573 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3574 |
$len = strlen($password); |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3575 |
$score = $len - 7; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3576 |
return $score; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3577 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3578 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3579 |
/** |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3580 |
* Give a numerical score for how strong a password is. This is an open-ended scale based on a score added to or subtracted |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3581 |
* from based on certain complexity rules. Anything less than about 1 or 0 is weak, 3-4 is strong, and 10 is not to be easily cracked. |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3582 |
* Based on the Javascript function of the same name. |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3583 |
* @param string Password to test |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3584 |
* @param null Will be filled with an array of debugging info |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3585 |
* @return int |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3586 |
*/ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3587 |
|
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
468
diff
changeset
|
3588 |
function password_score($password, &$debug = false) |
132
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3589 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3590 |
if ( !is_string($password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3591 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3592 |
return -10; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3593 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3594 |
$score = 0; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3595 |
$debug = array(); |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3596 |
// length check |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3597 |
$lenscore = password_score_len($password); |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3598 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3599 |
$debug[] = "<b>How this score was calculated</b>\nYour score was tallied up based on an extensive algorithm which outputted\nthe following scores based on traits of your password. Above you can see the\ncomposite score; your individual scores based on certain tests are below.\n\nThe scale is open-ended, with a minimum score of -10. 10 is very strong, 4\nis strong, 1 is good and -3 is fair. Below -3 scores \"Weak.\"\n"; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3600 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3601 |
$debug[] = 'Adding '.$lenscore.' points for length'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3602 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3603 |
$score += $lenscore; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3604 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3605 |
$has_upper_lower = false; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3606 |
$has_symbols = false; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3607 |
$has_numbers = false; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3608 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3609 |
// contains uppercase and lowercase |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3610 |
if ( preg_match('/[A-z]+/', $password) && strtolower($password) != $password ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3611 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3612 |
$score += 1; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3613 |
$has_upper_lower = true; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3614 |
$debug[] = 'Adding 1 point for having uppercase and lowercase'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3615 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3616 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3617 |
// contains symbols |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3618 |
if ( preg_match('/[^A-z0-9]+/', $password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3619 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3620 |
$score += 1; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3621 |
$has_symbols = true; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3622 |
$debug[] = 'Adding 1 point for having nonalphanumeric characters (matching /[^A-z0-9]+/)'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3623 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3624 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3625 |
// contains numbers |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3626 |
if ( preg_match('/[0-9]+/', $password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3627 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3628 |
$score += 1; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3629 |
$has_numbers = true; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3630 |
$debug[] = 'Adding 1 point for having numbers'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3631 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3632 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3633 |
if ( $has_upper_lower && $has_symbols && $has_numbers && strlen($password) >= 9 ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3634 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3635 |
// if it has uppercase and lowercase letters, symbols, and numbers, and is of considerable length, add some serious points |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3636 |
$score += 4; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3637 |
$debug[] = 'Adding 4 points for having uppercase and lowercase, numbers, and nonalphanumeric and being more than 8 characters'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3638 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3639 |
else if ( $has_upper_lower && $has_symbols && $has_numbers ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3640 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3641 |
// still give some points for passing complexity check |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3642 |
$score += 2; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3643 |
$debug[] = 'Adding 2 points for having uppercase and lowercase, numbers, and nonalphanumeric'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3644 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3645 |
else if ( ( $has_upper_lower && $has_symbols ) || |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3646 |
( $has_upper_lower && $has_numbers ) || |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3647 |
( $has_symbols && $has_numbers ) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3648 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3649 |
// if 2 of the three main complexity checks passed, add a point |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3650 |
$score += 1; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3651 |
$debug[] = 'Adding 1 point for having 2 of 3 complexity checks'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3652 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3653 |
else if ( preg_match('/^[0-9]*?([a-z]+)[0-9]?$/', $password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3654 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3655 |
// password is something like magnum1 which will be cracked in seconds |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3656 |
$score += -4; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3657 |
$debug[] = 'Adding -4 points for being of the form [number][word][number]'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3658 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3659 |
else if ( ( !$has_upper_lower && !$has_numbers && $has_symbols ) || |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3660 |
( !$has_upper_lower && !$has_symbols && $has_numbers ) || |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3661 |
( !$has_numbers && !$has_symbols && $has_upper_lower ) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3662 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3663 |
$score += -2; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3664 |
$debug[] = 'Adding -2 points for only meeting 1 complexity check'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3665 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3666 |
else if ( !$has_upper_lower && !$has_numbers && !$has_symbols ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3667 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3668 |
$debug[] = 'Adding -3 points for not meeting any complexity checks'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3669 |
$score += -3; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3670 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3671 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3672 |
// |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3673 |
// Repetition |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3674 |
// Example: foobar12345 should be deducted points, where f1o2o3b4a5r should be given points |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3675 |
// |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3676 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3677 |
if ( preg_match('/([A-Z][A-Z][A-Z][A-Z]|[a-z][a-z][a-z][a-z])/', $password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3678 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3679 |
$debug[] = 'Adding -2 points for having more than 4 letters of the same case in a row'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3680 |
$score += -2; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3681 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3682 |
else if ( preg_match('/([A-Z][A-Z][A-Z]|[a-z][a-z][a-z])/', $password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3683 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3684 |
$debug[] = 'Adding -1 points for having more than 3 letters of the same case in a row'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3685 |
$score += -1; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3686 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3687 |
else if ( preg_match('/[A-z]/', $password) && !preg_match('/([A-Z][A-Z][A-Z]|[a-z][a-z][a-z])/', $password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3688 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3689 |
$debug[] = 'Adding 1 point for never having more than 2 letters of the same case in a row'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3690 |
$score += 1; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3691 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3692 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3693 |
if ( preg_match('/[0-9][0-9][0-9][0-9]/', $password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3694 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3695 |
$debug[] = 'Adding -2 points for having 4 or more numbers in a row'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3696 |
$score += -2; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3697 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3698 |
else if ( preg_match('/[0-9][0-9][0-9]/', $password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3699 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3700 |
$debug[] = 'Adding -1 points for having 3 or more numbers in a row'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3701 |
$score += -1; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3702 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3703 |
else if ( $has_numbers && !preg_match('/[0-9][0-9][0-9]/', $password) ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3704 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3705 |
$debug[] = 'Adding 1 point for never more than 2 numbers in a row'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3706 |
$score += -1; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3707 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3708 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3709 |
// make passwords like fooooooooooooooooooooooooooooooooooooo totally die by subtracting a point for each character repeated at least 3 times in a row |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3710 |
$prev_char = ''; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3711 |
$warn = false; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3712 |
$loss = 0; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3713 |
for ( $i = 0; $i < strlen($password); $i++ ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3714 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3715 |
$chr = $password{$i}; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3716 |
if ( $chr == $prev_char && $warn ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3717 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3718 |
$loss += -1; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3719 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3720 |
else if ( $chr == $prev_char && !$warn ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3721 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3722 |
$warn = true; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3723 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3724 |
else if ( $chr != $prev_char && $warn ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3725 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3726 |
$warn = false; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3727 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3728 |
$prev_char = $chr; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3729 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3730 |
if ( $loss < 0 ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3731 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3732 |
$debug[] = 'Adding '.$loss.' points for immediate character repetition'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3733 |
$score += $loss; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3734 |
// this can bring the score below -10 sometimes |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3735 |
if ( $score < -10 ) |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3736 |
{ |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3737 |
$debug[] = 'Setting score to -10 because it went below ('.$score.')'; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3738 |
$score = -10; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3739 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3740 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3741 |
|
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3742 |
return $score; |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3743 |
} |
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
parents:
129
diff
changeset
|
3744 |
|
191
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3745 |
/** |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3746 |
* Registers a task that will be run every X hours. Scheduled tasks should always be scheduled at runtime - they are not stored in the DB. |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3747 |
* @param string Function name to call, or array(object, string method) |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3748 |
* @param int Interval between runs, in hours. Defaults to 24. |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3749 |
*/ |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3750 |
|
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3751 |
function register_cron_task($func, $hour_interval = 24) |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3752 |
{ |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3753 |
global $cron_tasks; |
541
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
3754 |
$hour_interval = strval($hour_interval); |
191
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3755 |
if ( !isset($cron_tasks[$hour_interval]) ) |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3756 |
$cron_tasks[$hour_interval] = array(); |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3757 |
$cron_tasks[$hour_interval][] = $func; |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3758 |
} |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3759 |
|
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3760 |
/** |
542
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3761 |
* Gets the timestamp for the next estimated cron run. |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3762 |
* @return int |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3763 |
*/ |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3764 |
|
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3765 |
function get_cron_next_run() |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3766 |
{ |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3767 |
global $cron_tasks; |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3768 |
$lowest_ivl = min(array_keys($cron_tasks)); |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3769 |
$last_run = intval(getConfig("cron_lastrun_ivl_$lowest_ivl")); |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3770 |
return intval($last_run + ( 3600 * $lowest_ivl )) - 30; |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3771 |
} |
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3772 |
|
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
parents:
541
diff
changeset
|
3773 |
/** |
209 | 3774 |
* Installs a language. |
3775 |
* @param string The ISO-639-3 identifier for the language. Maximum of 6 characters, usually 3. |
|
3776 |
* @param string The name of the language in English (Spanish) |
|
3777 |
* @param string The name of the language natively (Español) |
|
3778 |
* @param string The path to the file containing the language's strings. Optional. |
|
191
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3779 |
*/ |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3780 |
|
209 | 3781 |
function install_language($lang_code, $lang_name_neutral, $lang_name_local, $lang_file = false) |
191
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3782 |
{ |
209 | 3783 |
global $db, $session, $paths, $template, $plugins; // Common objects |
3784 |
||
371
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3785 |
$q = $db->sql_query('SELECT 1 FROM '.table_prefix.'language WHERE lang_code = \'' . $db->escape($lang_code) . '\';'); |
209 | 3786 |
if ( !$q ) |
3787 |
$db->_die('functions.php - checking for language existence'); |
|
3788 |
||
3789 |
if ( $db->numrows() > 0 ) |
|
3790 |
// Language already exists |
|
3791 |
return false; |
|
3792 |
||
3793 |
$q = $db->sql_query('INSERT INTO ' . table_prefix . 'language(lang_code, lang_name_default, lang_name_native) |
|
3794 |
VALUES( |
|
371
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3795 |
\'' . $db->escape($lang_code) . '\', |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3796 |
\'' . $db->escape($lang_name_neutral) . '\', |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3797 |
\'' . $db->escape($lang_name_local) . '\' |
209 | 3798 |
);'); |
3799 |
if ( !$q ) |
|
3800 |
$db->_die('functions.php - installing language'); |
|
3801 |
||
371
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3802 |
if ( ENANO_DBLAYER == 'PGSQL' ) |
241
c671f3bb8aed
Trying to get lang import to work in the installer; it's not working ATM - cache file is generated with lang_id = 0. Syncing to Nighthawk.
Dan
parents:
238
diff
changeset
|
3803 |
{ |
371
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3804 |
// exception for Postgres, which doesn't support insert IDs |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3805 |
// This will cause the Language class to just load by lang code |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3806 |
// instead of by numeric ID |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3807 |
$lang_id = $lang_code; |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3808 |
} |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3809 |
else |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3810 |
{ |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3811 |
$lang_id = $db->insert_id(); |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3812 |
if ( empty($lang_id) || $lang_id == 0 ) |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3813 |
{ |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3814 |
$db->_die('functions.php - invalid returned lang_id'); |
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
362
diff
changeset
|
3815 |
} |
241
c671f3bb8aed
Trying to get lang import to work in the installer; it's not working ATM - cache file is generated with lang_id = 0. Syncing to Nighthawk.
Dan
parents:
238
diff
changeset
|
3816 |
} |
209 | 3817 |
|
3818 |
// Do we also need to install a language file? |
|
3819 |
if ( is_string($lang_file) && file_exists($lang_file) ) |
|
3820 |
{ |
|
3821 |
$lang = new Language($lang_id); |
|
3822 |
$lang->import($lang_file); |
|
3823 |
} |
|
3824 |
else if ( is_string($lang_file) && !file_exists($lang_file) ) |
|
3825 |
{ |
|
3826 |
echo '<b>Notice:</b> Can\'t load language file, so the specified language wasn\'t fully installed.<br />'; |
|
3827 |
return false; |
|
3828 |
} |
|
3829 |
return true; |
|
191
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3830 |
} |
3dbe848431b0
Added a cron framework. Currently tasks will not be run; will implement into templates in next commit
Dan
parents:
184
diff
changeset
|
3831 |
|
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3832 |
/** |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3833 |
* Lists available languages. |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3834 |
* @return array Multi-depth. Associative, with children associative containing keys name, name_eng, and dir. |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3835 |
*/ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3836 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3837 |
function list_available_languages() |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3838 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3839 |
// Pulled from install/includes/common.php |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3840 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3841 |
// Build a list of available languages |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3842 |
$dir = @opendir( ENANO_ROOT . '/language' ); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3843 |
if ( !$dir ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3844 |
die('CRITICAL: could not open language directory'); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3845 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3846 |
$languages = array(); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3847 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3848 |
while ( $dh = @readdir($dir) ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3849 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3850 |
if ( $dh == '.' || $dh == '..' ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3851 |
continue; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3852 |
if ( file_exists( ENANO_ROOT . "/language/$dh/meta.json" ) ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3853 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3854 |
// Found a language directory, determine metadata |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3855 |
$meta = @file_get_contents( ENANO_ROOT . "/language/$dh/meta.json" ); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3856 |
if ( empty($meta) ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3857 |
// Could not read metadata file, continue silently |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3858 |
continue; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3859 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3860 |
// Do some syntax correction on the metadata |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3861 |
$meta = enano_clean_json($meta); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3862 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3863 |
$meta = enano_json_decode($meta); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3864 |
if ( isset($meta['lang_name_english']) && isset($meta['lang_name_native']) && isset($meta['lang_code']) ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3865 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3866 |
$languages[$meta['lang_code']] = array( |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3867 |
'name' => $meta['lang_name_native'], |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3868 |
'name_eng' => $meta['lang_name_english'], |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3869 |
'dir' => $dh |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3870 |
); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3871 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3872 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3873 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3874 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3875 |
return $languages; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3876 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3877 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
3878 |
/** |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3879 |
* Scales an image to the specified width and height, and writes the output to the specified |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3880 |
* file. Will use ImageMagick if present, but if not will attempt to scale with GD. This will |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3881 |
* always scale images proportionally. |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3882 |
* @param string Path to image file |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3883 |
* @param string Path to output file |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3884 |
* @param int Image width, in pixels |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3885 |
* @param int Image height, in pixels |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3886 |
* @param bool If true, the output file will be deleted if it exists before it is written |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3887 |
* @return bool True on success, false on failure |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3888 |
*/ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3889 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3890 |
function scale_image($in_file, $out_file, $width = 225, $height = 225, $unlink = false) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3891 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3892 |
global $db, $session, $paths, $template, $plugins; // Common objects |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3893 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3894 |
if ( !is_int($width) || !is_int($height) ) |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3895 |
throw new Exception('Invalid height or width.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3896 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3897 |
if ( !file_exists($in_file) ) |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3898 |
throw new Exception('Input file does not exist'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3899 |
|
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3900 |
$in_file_sh = escapeshellarg($in_file); |
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3901 |
$out_file_sh = escapeshellarg($out_file); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3902 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3903 |
if ( file_exists($out_file) && !$unlink ) |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3904 |
throw new Exception('Refusing to write output file as it already exists and $unlink was not specified.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3905 |
else if ( file_exists($out_file) && $unlink ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3906 |
@unlink($out_file); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3907 |
if ( file_exists($out_file) ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3908 |
// couldn't unlink (delete) the output file |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3909 |
throw new Exception('Failed to delete existing output file.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3910 |
|
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3911 |
$file_ext = strtolower(substr($in_file, ( strrpos($in_file, '.') + 1))); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3912 |
switch($file_ext) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3913 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3914 |
case 'png': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3915 |
$func = 'imagecreatefrompng'; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3916 |
break; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3917 |
case 'jpg': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3918 |
case 'jpeg': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3919 |
$func = 'imagecreatefromjpeg'; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3920 |
break; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3921 |
case 'gif': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3922 |
$func = 'imagecreatefromgif'; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3923 |
break; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3924 |
case 'xpm': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3925 |
$func = 'imagecreatefromxpm'; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3926 |
break; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3927 |
default: |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3928 |
throw new Exception('Invalid extension of input file.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3929 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3930 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3931 |
$magick_path = getConfig('imagemagick_path'); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3932 |
$can_use_magick = ( |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3933 |
getConfig('enable_imagemagick') == '1' && |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3934 |
file_exists($magick_path) && |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3935 |
is_executable($magick_path) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3936 |
); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3937 |
$can_use_gd = ( |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3938 |
function_exists('getimagesize') && |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3939 |
function_exists('imagecreatetruecolor') && |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3940 |
function_exists('imagecopyresampled') && |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3941 |
function_exists($func) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3942 |
); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3943 |
if ( $can_use_magick ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3944 |
{ |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3945 |
if ( !preg_match('/^([\/A-z0-9:\. _-]+)$/', $magick_path) ) |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3946 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3947 |
die('SECURITY: ImageMagick path is screwy'); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3948 |
} |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3949 |
$cmdline = "$magick_path $in_file_sh -resize \"{$width}x{$height}>\" $out_file_sh"; |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3950 |
system($cmdline, $return); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3951 |
if ( !file_exists($out_file) ) |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3952 |
throw new Exception('ImageMagick: did not produce output image file.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3953 |
return true; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3954 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3955 |
else if ( $can_use_gd ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3956 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3957 |
@list($width_orig, $height_orig) = @getimagesize($in_file); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3958 |
if ( !$width_orig || !$height_orig ) |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3959 |
throw new Exception('GD: Could not get height and width of input file.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3960 |
// calculate new width and height |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3961 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3962 |
$ratio = $width_orig / $height_orig; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3963 |
if ( $ratio > 1 ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3964 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3965 |
// orig. width is greater that height |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3966 |
$new_width = $width; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3967 |
$new_height = round( $width / $ratio ); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3968 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3969 |
else if ( $ratio < 1 ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3970 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3971 |
// orig. height is greater than width |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3972 |
$new_width = round( $height / $ratio ); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3973 |
$new_height = $height; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3974 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3975 |
else if ( $ratio == 1 ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3976 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3977 |
$new_width = $width; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3978 |
$new_height = $width; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3979 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3980 |
if ( $new_width > $width_orig || $new_height > $height_orig ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3981 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3982 |
// Too big for our britches here; set it to only convert the file |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3983 |
$new_width = $width_orig; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3984 |
$new_height = $height_orig; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3985 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3986 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3987 |
$newimage = @imagecreatetruecolor($new_width, $new_height); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3988 |
if ( !$newimage ) |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3989 |
throw new Exception('GD: Request to create new truecolor image refused.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3990 |
$oldimage = @$func($in_file); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3991 |
if ( !$oldimage ) |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3992 |
throw new Exception('GD: Request to load input image file failed.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3993 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3994 |
// Perform scaling |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3995 |
imagecopyresampled($newimage, $oldimage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3996 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3997 |
// Get output format |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
3998 |
$out_ext = strtolower(substr($out_file, ( strrpos($out_file, '.') + 1))); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
3999 |
switch($out_ext) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4000 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4001 |
case 'png': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4002 |
$outfunc = 'imagepng'; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4003 |
break; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4004 |
case 'jpg': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4005 |
case 'jpeg': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4006 |
$outfunc = 'imagejpeg'; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4007 |
break; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4008 |
case 'gif': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4009 |
$outfunc = 'imagegif'; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4010 |
break; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4011 |
case 'xpm': |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4012 |
$outfunc = 'imagexpm'; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4013 |
break; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4014 |
default: |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4015 |
imagedestroy($newimage); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4016 |
imagedestroy($oldimage); |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
4017 |
throw new Exception('GD: Invalid extension of output file.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4018 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4019 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4020 |
// Write output |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4021 |
$outfunc($newimage, $out_file); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4022 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4023 |
// clean up |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4024 |
imagedestroy($newimage); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4025 |
imagedestroy($oldimage); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4026 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4027 |
// done! |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4028 |
return true; |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4029 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4030 |
// Neither scaling method worked; we'll let plugins try to scale it, and then if the file still doesn't exist, die |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4031 |
$code = $plugins->setHook('scale_image_failure'); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4032 |
foreach ( $code as $cmd ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4033 |
{ |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4034 |
eval($cmd); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4035 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4036 |
if ( file_exists($out_file) ) |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4037 |
return true; |
898
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
4038 |
|
c75754f5b1da
When changing namespace of a File: page, associated files are now deleted. Also fixed some issues with image scaling.
Dan
parents:
875
diff
changeset
|
4039 |
throw new Exception('Failed to find an appropriate method for scaling.'); |
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4040 |
} |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
191
diff
changeset
|
4041 |
|
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4042 |
/** |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4043 |
* Determines whether a GIF file is animated or not. Credit goes to ZeBadger from <http://www.php.net/imagecreatefromgif>. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4044 |
* Modified to conform to Enano coding standards. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4045 |
* @param string Path to GIF file |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4046 |
* @return bool If animated, returns true |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4047 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4048 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4049 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4050 |
function is_gif_animated($filename) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4051 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4052 |
$filecontents = @file_get_contents($filename); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4053 |
if ( empty($filecontents) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4054 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4055 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4056 |
$str_loc = 0; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4057 |
$count = 0; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4058 |
while ( $count < 2 ) // There is no point in continuing after we find a 2nd frame |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4059 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4060 |
$where1 = strpos($filecontents,"\x00\x21\xF9\x04", $str_loc); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4061 |
if ( $where1 === false ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4062 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4063 |
break; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4064 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4065 |
else |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4066 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4067 |
$str_loc = $where1 + 1; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4068 |
$where2 = strpos($filecontents,"\x00\x2C", $str_loc); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4069 |
if ( $where2 === false ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4070 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4071 |
break; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4072 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4073 |
else |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4074 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4075 |
if ( $where1 + 8 == $where2 ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4076 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4077 |
$count++; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4078 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4079 |
$str_loc = $where2 + 1; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4080 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4081 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4082 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4083 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4084 |
return ( $count > 1 ) ? true : false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4085 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4086 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4087 |
/** |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4088 |
* Retrieves the dimensions of a GIF image. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4089 |
* @param string The path to the GIF file. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4090 |
* @return array Key 0 is width, key 1 is height |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4091 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4092 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4093 |
function gif_get_dimensions($filename) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4094 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4095 |
$filecontents = @file_get_contents($filename); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4096 |
if ( empty($filecontents) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4097 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4098 |
if ( strlen($filecontents) < 10 ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4099 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4100 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4101 |
$width = substr($filecontents, 6, 2); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4102 |
$height = substr($filecontents, 8, 2); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4103 |
$width = unpack('v', $width); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4104 |
$height = unpack('v', $height); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4105 |
return array($width[1], $height[1]); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4106 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4107 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4108 |
/** |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4109 |
* Determines whether a PNG image is animated or not. Based on some specification information from <http://wiki.mozilla.org/APNG_Specification>. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4110 |
* @param string Path to PNG file. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4111 |
* @return bool If animated, returns true |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4112 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4113 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4114 |
function is_png_animated($filename) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4115 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4116 |
$filecontents = @file_get_contents($filename); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4117 |
if ( empty($filecontents) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4118 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4119 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4120 |
$parsed = parse_png($filecontents); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4121 |
if ( !$parsed ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4122 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4123 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4124 |
if ( !isset($parsed['fdAT']) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4125 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4126 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4127 |
if ( count($parsed['fdAT']) > 1 ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4128 |
return true; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4129 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4130 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4131 |
/** |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4132 |
* Gets the dimensions of a PNG image. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4133 |
* @param string Path to PNG file |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4134 |
* @return array Key 0 is width, key 1 is length. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4135 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4136 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4137 |
function png_get_dimensions($filename) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4138 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4139 |
$filecontents = @file_get_contents($filename); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4140 |
if ( empty($filecontents) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4141 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4142 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4143 |
$parsed = parse_png($filecontents); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4144 |
if ( !$parsed ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4145 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4146 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4147 |
$ihdr_stream = $parsed['IHDR'][0]; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4148 |
$width = substr($ihdr_stream, 0, 4); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4149 |
$height = substr($ihdr_stream, 4, 4); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4150 |
$width = unpack('N', $width); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4151 |
$height = unpack('N', $height); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4152 |
$x = $width[1]; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4153 |
$y = $height[1]; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4154 |
return array($x, $y); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4155 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4156 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4157 |
/** |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4158 |
* Internal function to parse out the streams of a PNG file. Based on the W3 PNG spec: http://www.w3.org/TR/PNG/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4159 |
* @param string The contents of the PNG |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4160 |
* @return array Associative array containing the streams |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4161 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4162 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4163 |
function parse_png($data) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4164 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4165 |
// Trim off first 8 bytes to check for PNG header |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4166 |
$header = substr($data, 0, 8); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4167 |
if ( $header != "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a" ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4168 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4169 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4170 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4171 |
$return = array(); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4172 |
$data = substr($data, 8); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4173 |
while ( strlen($data) > 0 ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4174 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4175 |
$chunklen_bin = substr($data, 0, 4); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4176 |
$chunk_type = substr($data, 4, 4); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4177 |
$chunklen = unpack('N', $chunklen_bin); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4178 |
$chunklen = $chunklen[1]; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4179 |
$chunk_data = substr($data, 8, $chunklen); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4180 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4181 |
// If the chunk type is not valid, this may be a malicious PNG with bad offsets. Break out of the loop. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4182 |
if ( !preg_match('/^[A-z]{4}$/', $chunk_type) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4183 |
break; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4184 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4185 |
if ( !isset($return[$chunk_type]) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4186 |
$return[$chunk_type] = array(); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4187 |
$return[$chunk_type][] = $chunk_data; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4188 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4189 |
$offset_next = 4 // Length |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4190 |
+ 4 // Type |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4191 |
+ $chunklen // Data |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4192 |
+ 4; // CRC |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4193 |
$data = substr($data, $offset_next); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4194 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4195 |
return $return; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4196 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4197 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4198 |
/** |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4199 |
* Retreives information about the intrinsic characteristics of the jpeg image, such as Bits per Component, Height and Width. This function is from the PHP JPEG Metadata Toolkit. Licensed under the GPLv2 or later. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4200 |
* @param array The JPEG header data, as retrieved from the get_jpeg_header_data function |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4201 |
* @return array An array containing the intrinsic JPEG values FALSE - if the comment segment couldnt be found |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4202 |
* @license GNU General Public License |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4203 |
* @copyright Copyright Evan Hunter 2004 |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4204 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4205 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4206 |
function get_jpeg_intrinsic_values( $jpeg_header_data ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4207 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4208 |
// Create a blank array for the output |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4209 |
$Outputarray = array( ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4210 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4211 |
//Cycle through the header segments until Start Of Frame (SOF) is found or we run out of segments |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4212 |
$i = 0; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4213 |
while ( ( $i < count( $jpeg_header_data) ) && ( substr( $jpeg_header_data[$i]['SegName'], 0, 3 ) != "SOF" ) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4214 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4215 |
$i++; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4216 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4217 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4218 |
// Check if a SOF segment has been found |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4219 |
if ( substr( $jpeg_header_data[$i]['SegName'], 0, 3 ) == "SOF" ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4220 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4221 |
// SOF segment was found, extract the information |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4222 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4223 |
$data = $jpeg_header_data[$i]['SegData']; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4224 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4225 |
// First byte is Bits per component |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4226 |
$Outputarray['Bits per Component'] = ord( $data{0} ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4227 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4228 |
// Second and third bytes are Image Height |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4229 |
$Outputarray['Image Height'] = ord( $data{ 1 } ) * 256 + ord( $data{ 2 } ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4230 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4231 |
// Forth and fifth bytes are Image Width |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4232 |
$Outputarray['Image Width'] = ord( $data{ 3 } ) * 256 + ord( $data{ 4 } ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4233 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4234 |
// Sixth byte is number of components |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4235 |
$numcomponents = ord( $data{ 5 } ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4236 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4237 |
// Following this is a table containing information about the components |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4238 |
for( $i = 0; $i < $numcomponents; $i++ ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4239 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4240 |
$Outputarray['Components'][] = array ( 'Component Identifier' => ord( $data{ 6 + $i * 3 } ), |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4241 |
'Horizontal Sampling Factor' => ( ord( $data{ 7 + $i * 3 } ) & 0xF0 ) / 16, |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4242 |
'Vertical Sampling Factor' => ( ord( $data{ 7 + $i * 3 } ) & 0x0F ), |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4243 |
'Quantization table destination selector' => ord( $data{ 8 + $i * 3 } ) ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4244 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4245 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4246 |
else |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4247 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4248 |
// Couldn't find Start Of Frame segment, hence can't retrieve info |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4249 |
return FALSE; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4250 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4251 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4252 |
return $Outputarray; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4253 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4254 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4255 |
/** |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4256 |
* Reads all the JPEG header segments from an JPEG image file into an array. This function is from the PHP JPEG Metadata Toolkit. Licensed under the GPLv2 or later. Modified slightly for Enano coding standards and to remove unneeded capability. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4257 |
* @param string the filename of the file to JPEG file to read |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4258 |
* @return string Array of JPEG header segments, or FALSE - if headers could not be read |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4259 |
* @license GNU General Public License |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4260 |
* @copyright Copyright Evan Hunter 2004 |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4261 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4262 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4263 |
function get_jpeg_header_data( $filename ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4264 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4265 |
// Attempt to open the jpeg file - the at symbol supresses the error message about |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4266 |
// not being able to open files. The file_exists would have been used, but it |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4267 |
// does not work with files fetched over http or ftp. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4268 |
$filehnd = @fopen($filename, 'rb'); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4269 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4270 |
// Check if the file opened successfully |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4271 |
if ( ! $filehnd ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4272 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4273 |
// Could't open the file - exit |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4274 |
return FALSE; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4275 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4276 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4277 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4278 |
// Read the first two characters |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4279 |
$data = fread( $filehnd, 2 ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4280 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4281 |
// Check that the first two characters are 0xFF 0xDA (SOI - Start of image) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4282 |
if ( $data != "\xFF\xD8" ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4283 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4284 |
// No SOI (FF D8) at start of file - This probably isn't a JPEG file - close file and return; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4285 |
fclose($filehnd); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4286 |
return FALSE; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4287 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4288 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4289 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4290 |
// Read the third character |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4291 |
$data = fread( $filehnd, 2 ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4292 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4293 |
// Check that the third character is 0xFF (Start of first segment header) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4294 |
if ( $data{0} != "\xFF" ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4295 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4296 |
// NO FF found - close file and return - JPEG is probably corrupted |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4297 |
fclose($filehnd); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4298 |
return FALSE; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4299 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4300 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4301 |
// Flag that we havent yet hit the compressed image data |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4302 |
$hit_compressed_image_data = FALSE; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4303 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4304 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4305 |
// Cycle through the file until, one of: 1) an EOI (End of image) marker is hit, |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4306 |
// 2) we have hit the compressed image data (no more headers are allowed after data) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4307 |
// 3) or end of file is hit |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4308 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4309 |
while ( ( $data{1} != "\xD9" ) && (! $hit_compressed_image_data) && ( ! feof( $filehnd ) )) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4310 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4311 |
// Found a segment to look at. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4312 |
// Check that the segment marker is not a Restart marker - restart markers don't have size or data after them |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4313 |
if ( ( ord($data{1}) < 0xD0 ) || ( ord($data{1}) > 0xD7 ) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4314 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4315 |
// Segment isn't a Restart marker |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4316 |
// Read the next two bytes (size) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4317 |
$sizestr = fread( $filehnd, 2 ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4318 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4319 |
// convert the size bytes to an integer |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4320 |
$decodedsize = unpack ("nsize", $sizestr); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4321 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4322 |
// Save the start position of the data |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4323 |
$segdatastart = ftell( $filehnd ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4324 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4325 |
// Read the segment data with length indicated by the previously read size |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4326 |
$segdata = fread( $filehnd, $decodedsize['size'] - 2 ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4327 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4328 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4329 |
// Store the segment information in the output array |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4330 |
$headerdata[] = array( "SegType" => ord($data{1}), |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4331 |
"SegName" => $GLOBALS[ "JPEG_Segment_Names" ][ ord($data{1}) ], |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4332 |
"SegDataStart" => $segdatastart, |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4333 |
"SegData" => $segdata ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4334 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4335 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4336 |
// If this is a SOS (Start Of Scan) segment, then there is no more header data - the compressed image data follows |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4337 |
if ( $data{1} == "\xDA" ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4338 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4339 |
// Flag that we have hit the compressed image data - exit loop as no more headers available. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4340 |
$hit_compressed_image_data = TRUE; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4341 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4342 |
else |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4343 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4344 |
// Not an SOS - Read the next two bytes - should be the segment marker for the next segment |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4345 |
$data = fread( $filehnd, 2 ); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4346 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4347 |
// Check that the first byte of the two is 0xFF as it should be for a marker |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4348 |
if ( $data{0} != "\xFF" ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4349 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4350 |
// NO FF found - close file and return - JPEG is probably corrupted |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4351 |
fclose($filehnd); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4352 |
return FALSE; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4353 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4354 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4355 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4356 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4357 |
// Close File |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4358 |
fclose($filehnd); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4359 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4360 |
// Return the header data retrieved |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4361 |
return $headerdata; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4362 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4363 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4364 |
/** |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4365 |
* Returns the dimensions of a JPEG image in the same format as {php,gif}_get_dimensions(). |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4366 |
* @param string JPEG file to check |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4367 |
* @return array Key 0 is width, key 1 is height |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4368 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4369 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4370 |
function jpg_get_dimensions($filename) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4371 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4372 |
if ( !file_exists($filename) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4373 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4374 |
echo "Doesn't exist<br />"; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4375 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4376 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4377 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4378 |
$headers = get_jpeg_header_data($filename); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4379 |
if ( !$headers ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4380 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4381 |
echo "Bad headers<br />"; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4382 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4383 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4384 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4385 |
$metadata = get_jpeg_intrinsic_values($headers); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4386 |
if ( !$metadata ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4387 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4388 |
echo "Bad metadata: <pre>" . print_r($metadata, true) . "</pre><br />"; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4389 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4390 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4391 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4392 |
if ( !isset($metadata['Image Width']) || !isset($metadata['Image Height']) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4393 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4394 |
echo "No metadata<br />"; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4395 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4396 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4397 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4398 |
return array($metadata['Image Width'], $metadata['Image Height']); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4399 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4400 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4401 |
/** |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4402 |
* Generates a URL for the avatar for the given user ID and avatar type. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4403 |
* @param int User ID |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4404 |
* @param string Image type - must be one of jpg, png, or gif. |
621
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4405 |
* @param string User's e-mail address, makes Special:Avatar redirect if not specified |
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4406 |
* @return string |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4407 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4408 |
|
621
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4409 |
function make_avatar_url($user_id, $avi_type, $user_email = false) |
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4410 |
{ |
541
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4411 |
static $img_types = array( |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4412 |
'png' => IMAGE_TYPE_PNG, |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4413 |
'gif' => IMAGE_TYPE_GIF, |
621
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4414 |
'jpg' => IMAGE_TYPE_JPG, |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4415 |
'grv' => IMAGE_TYPE_GRV |
541
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4416 |
); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4417 |
|
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4418 |
if ( !is_int($user_id) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4419 |
return false; |
541
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4420 |
if ( !isset($img_types[$avi_type]) ) |
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4421 |
return false; |
621
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4422 |
|
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4423 |
if ( $avi_type == 'grv' ) |
541
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4424 |
{ |
621
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4425 |
if ( $user_email ) |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4426 |
{ |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4427 |
return make_gravatar_url($user_email); |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4428 |
} |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4429 |
} |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4430 |
else |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4431 |
{ |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4432 |
$avi_relative_path = '/' . getConfig('avatar_directory') . '/' . $user_id . '.' . $avi_type; |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4433 |
if ( !file_exists(ENANO_ROOT . $avi_relative_path) ) |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4434 |
{ |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4435 |
return ''; |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4436 |
} |
541
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4437 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4438 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4439 |
$img_type = $img_types[$avi_type]; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4440 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4441 |
$dateline = @filemtime(ENANO_ROOT . $avi_relative_path); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4442 |
$avi_id = pack('VVv', $dateline, $user_id, $img_type); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4443 |
$avi_id = hexencode($avi_id, '', ''); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4444 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4445 |
// return scriptPath . $avi_relative_path; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4446 |
return makeUrlNS('Special', "Avatar/$avi_id"); |
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4447 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4448 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4449 |
/** |
621
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4450 |
* Generates a URL to the Gravatar for a user based on his/her e-mail address. |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4451 |
* @param string E-mail address |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4452 |
* @param int Size - defaults to site-wide limits |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4453 |
* @return string URL |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4454 |
*/ |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4455 |
|
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4456 |
function make_gravatar_url($email, $size = false) |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4457 |
{ |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4458 |
$email = md5($email); |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4459 |
|
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4460 |
// gravatar parameters |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4461 |
if ( $size ) |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4462 |
{ |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4463 |
$max_size = intval($size); |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4464 |
} |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4465 |
else |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4466 |
{ |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4467 |
$max_x = intval(getConfig('avatar_max_width', '150')); |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4468 |
$max_y = intval(getConfig('avatar_max_height', '150')); |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4469 |
// ?s= |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4470 |
$max_size = ( $max_x > $max_y ) ? $max_y : $max_x; |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4471 |
} |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4472 |
|
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4473 |
// ?r= |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4474 |
$rating = getConfig('gravatar_rating', 'g'); |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4475 |
|
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4476 |
// final URL |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4477 |
$url = "http://www.gravatar.com/avatar/$email?r=$rating&s=$max_size"; |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4478 |
|
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4479 |
return $url; |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4480 |
} |
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4481 |
|
68f8a9cc0a18
Added Gravatar support! And it's really configurable too.
Dan
parents:
620
diff
changeset
|
4482 |
/** |
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4483 |
* Determines an image's filetype based on its signature. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4484 |
* @param string Path to image file |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4485 |
* @return string One of gif, png, or jpg, or false if none of these. |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4486 |
*/ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4487 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4488 |
function get_image_filetype($filename) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4489 |
{ |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4490 |
$filecontents = @file_get_contents($filename); |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4491 |
if ( empty($filecontents) ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4492 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4493 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4494 |
if ( substr($filecontents, 0, 8) == "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a" ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4495 |
return 'png'; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4496 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4497 |
if ( substr($filecontents, 0, 6) == 'GIF87a' || substr($filecontents, 0, 6) == 'GIF89a' ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4498 |
return 'gif'; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4499 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4500 |
if ( substr($filecontents, 0, 2) == "\xFF\xD8" ) |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4501 |
return 'jpg'; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4502 |
|
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4503 |
return false; |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4504 |
} |
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
parents:
326
diff
changeset
|
4505 |
|
334
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4506 |
/** |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4507 |
* Generates a JSON encoder/decoder singleton. |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4508 |
* @return object |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4509 |
*/ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4510 |
|
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4511 |
function enano_json_singleton() |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4512 |
{ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4513 |
static $json_obj; |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4514 |
if ( !is_object($json_obj) ) |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4515 |
$json_obj = new Services_JSON(SERVICES_JSON_LOOSE_TYPE | SERVICES_JSON_SUPPRESS_ERRORS); |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4516 |
|
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4517 |
return $json_obj; |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4518 |
} |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4519 |
|
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4520 |
/** |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4521 |
* Wrapper for JSON encoding. |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4522 |
* @param mixed Variable to encode |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4523 |
* @return string JSON-encoded string |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4524 |
*/ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4525 |
|
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4526 |
function enano_json_encode($data) |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4527 |
{ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4528 |
/* |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4529 |
if ( function_exists('json_encode') ) |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4530 |
{ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4531 |
// using PHP5 with JSON support |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4532 |
return json_encode($data); |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4533 |
} |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4534 |
*/ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4535 |
|
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4536 |
return Zend_Json::encode($data, true); |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4537 |
} |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4538 |
|
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4539 |
/** |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4540 |
* Wrapper for JSON decoding. |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4541 |
* @param string JSON-encoded string |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4542 |
* @return mixed Decoded value |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4543 |
*/ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4544 |
|
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4545 |
function enano_json_decode($data) |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4546 |
{ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4547 |
/* |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4548 |
if ( function_exists('json_decode') ) |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4549 |
{ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4550 |
// using PHP5 with JSON support |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4551 |
return json_decode($data); |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4552 |
} |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4553 |
*/ |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4554 |
|
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4555 |
return Zend_Json::decode($data, Zend_Json::TYPE_ARRAY); |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4556 |
} |
c72b545f1304
More localization work. Resolved major issue with JSON parser not parsing files over ~50KB. Switched JSON parser to the one from the Zend Framework (BSD licensed). Forced to split enano.json into five different files.
Dan
parents:
328
diff
changeset
|
4557 |
|
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4558 |
/** |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4559 |
* Cleans a snippet of JSON for closer standards compliance (shuts up the picky Zend parser) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4560 |
* @param string Dirty JSON |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4561 |
* @return string Clean JSON |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4562 |
*/ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4563 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4564 |
function enano_clean_json($json) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4565 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4566 |
// eliminate comments |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4567 |
$json = preg_replace(array( |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4568 |
// eliminate single line comments in '// ...' form |
832
7152ca0a0ce9
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
Dan
parents:
825
diff
changeset
|
4569 |
'#^\s*//(.*)$#m', |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4570 |
// eliminate multi-line comments in '/* ... */' form, at start of string |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4571 |
'#^\s*/\*(.+)\*/#Us', |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4572 |
// eliminate multi-line comments in '/* ... */' form, at end of string |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4573 |
'#/\*(.+)\*/\s*$#Us' |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4574 |
), '', $json); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4575 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4576 |
$json = preg_replace('/([,\{\[])([\s]*?)([a-z0-9_]+)([\s]*?):/', '\\1\\2"\\3" :', $json); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4577 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4578 |
return $json; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4579 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4580 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4581 |
/** |
519
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4582 |
* Trims a snippet of text to the first and last curly braces. Useful for JSON. |
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4583 |
* @param string Text to trim |
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4584 |
* @return string |
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4585 |
*/ |
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4586 |
|
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4587 |
function enano_trim_json($json) |
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4588 |
{ |
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4589 |
return preg_replace('/^([^{]+)\{/', '{', preg_replace('/\}([^}]+)$/', '}', $json)); |
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4590 |
} |
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4591 |
|
94214ec0871c
Started work on the new plugin manager and associated management code. Very incomplete at this point and not usable.
Dan
parents:
507
diff
changeset
|
4592 |
/** |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4593 |
* Starts the profiler. |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4594 |
*/ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4595 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4596 |
function profiler_start() |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4597 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4598 |
global $_profiler; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4599 |
$_profiler = array(); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4600 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4601 |
if ( !defined('ENANO_DEBUG') ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4602 |
return false; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4603 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4604 |
$_profiler[] = array( |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4605 |
'point' => 'Profiling started', |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4606 |
'time' => microtime_float(), |
424
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4607 |
'backtrace' => false, |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4608 |
'mem' => false |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4609 |
); |
424
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4610 |
if ( function_exists('memory_get_usage') ) |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4611 |
{ |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4612 |
$_profiler[ count($_profiler) - 1 ]['mem'] = memory_get_usage(); |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4613 |
} |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4614 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4615 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4616 |
/** |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4617 |
* Logs something in the profiler. |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4618 |
* @param string Point name or message |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4619 |
* @param bool Optional. If true (default), a backtrace will be generated and added to the profiler data. False disables this, often for security reasons. |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4620 |
*/ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4621 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4622 |
function profiler_log($point, $allow_backtrace = true) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4623 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4624 |
if ( !defined('ENANO_DEBUG') ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4625 |
return false; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4626 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4627 |
global $_profiler; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4628 |
$backtrace = false; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4629 |
if ( $allow_backtrace && function_exists('debug_print_backtrace') ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4630 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4631 |
list(, $backtrace) = explode("\n", enano_debug_print_backtrace(true)); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4632 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4633 |
$_profiler[] = array( |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4634 |
'point' => $point, |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4635 |
'time' => microtime_float(), |
424
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4636 |
'backtrace' => $backtrace, |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4637 |
'mem' => false |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4638 |
); |
424
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4639 |
if ( function_exists('memory_get_usage') ) |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4640 |
{ |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4641 |
$_profiler[ count($_profiler) - 1 ]['mem'] = memory_get_usage(); |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4642 |
} |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
562
diff
changeset
|
4643 |
return true; |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4644 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4645 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4646 |
/** |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4647 |
* Returns the profiler's data (so far). |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4648 |
* @return array |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4649 |
*/ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4650 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4651 |
function profiler_dump() |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4652 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4653 |
return $GLOBALS['_profiler']; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4654 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4655 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4656 |
/** |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4657 |
* Generates an HTML version of the performance profile. Not localized because only used as a debugging tool. |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4658 |
* @return string |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4659 |
*/ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4660 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4661 |
function profiler_make_html() |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4662 |
{ |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4663 |
if ( !defined('ENANO_DEBUG') ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4664 |
return ''; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4665 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4666 |
$profile = profiler_dump(); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4667 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4668 |
$html = '<div class="tblholder">'; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4669 |
$html .= '<table border="0" cellspacing="1" cellpadding="4">'; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4670 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4671 |
$time_start = $time_last = $profile[0]['time']; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4672 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4673 |
foreach ( $profile as $i => $entry ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4674 |
{ |
592 | 4675 |
// $time_since_last = $entry['time'] - $time_last; |
4676 |
// if ( $time_since_last < 0.01 ) |
|
4677 |
// continue; |
|
4678 |
||
382
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4679 |
$html .= "<!-- ########################################################## -->\n<tr>\n <th colspan=\"2\">Event $i</th>\n</tr>"; |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4680 |
|
382
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4681 |
$html .= '<tr>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4682 |
$html .= ' <td class="row2">Event:</td>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4683 |
$html .= ' <td class="row1">' . htmlspecialchars($entry['point']) . '</td>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4684 |
$html .= '</tr>' . "\n"; |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4685 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4686 |
$time = $entry['time'] - $time_start; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4687 |
|
382
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4688 |
$html .= '<tr>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4689 |
$html .= ' <td class="row2">Time since start:</td>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4690 |
$html .= ' <td class="row1">' . $time . 's</td>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4691 |
$html .= '</tr>' . "\n"; |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4692 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4693 |
$time = $entry['time'] - $time_last; |
382
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4694 |
if ( $time < 0.0001 ) |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4695 |
$time = 'Marginal'; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4696 |
else |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4697 |
$time = "{$time}s"; |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4698 |
|
382
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4699 |
$html .= '<tr>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4700 |
$html .= ' <td class="row2">Time since last event:</td>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4701 |
$html .= ' <td class="row1">' . $time . '</td>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4702 |
$html .= '</tr>' . "\n"; |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4703 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4704 |
if ( $entry['backtrace'] ) |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4705 |
{ |
382
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4706 |
$html .= '<tr>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4707 |
$html .= ' <td class="row2">Called from:</td>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4708 |
$html .= ' <td class="row1">' . htmlspecialchars($entry['backtrace']) . '</td>' . "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4709 |
$html .= '</tr>' . "\n"; |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4710 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4711 |
|
424
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4712 |
if ( $entry['mem'] ) |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4713 |
{ |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4714 |
$html .= '<tr>' . "\n"; |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4715 |
$html .= ' <td class="row2">Total mem usage:</td>' . "\n"; |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4716 |
$html .= ' <td class="row1">' . htmlspecialchars($entry['mem']) . ' (bytes)</td>' . "\n"; |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4717 |
$html .= '</tr>' . "\n"; |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4718 |
} |
f58e0b6e9c22
Some memory usage improvements, I think. PHP is being weird to me.
Dan
parents:
411
diff
changeset
|
4719 |
|
382
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4720 |
$html .= "\n"; |
2ccb55995aef
Profiling enabled for RenderMan's wikiformat routine; [minor] made HTML from profiler more pretty
Dan
parents:
381
diff
changeset
|
4721 |
|
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4722 |
$time_last = $entry['time']; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4723 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4724 |
$html .= '</table></div>'; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4725 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4726 |
return $html; |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4727 |
} |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4728 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4729 |
// Might as well start the profiler, it has no external dependencies except from this file. |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4730 |
profiler_start(); |
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
4731 |
|
376 | 4732 |
/** |
4733 |
* Returns the number of times a character occurs in a given string. |
|
4734 |
* @param string Haystack |
|
4735 |
* @param string Needle |
|
4736 |
* @return int |
|
4737 |
*/ |
|
4738 |
||
4739 |
function get_char_count($string, $char) |
|
4740 |
{ |
|
4741 |
$char = substr($char, 0, 1); |
|
4742 |
$count = 0; |
|
4743 |
for ( $i = 0; $i < strlen($string); $i++ ) |
|
4744 |
{ |
|
4745 |
if ( $string{$i} == $char ) |
|
4746 |
$count++; |
|
4747 |
} |
|
4748 |
return $count; |
|
4749 |
} |
|
4750 |
||
4751 |
/** |
|
4752 |
* Returns the number of lines in a string. |
|
4753 |
* @param string String to check |
|
4754 |
* @return int |
|
4755 |
*/ |
|
4756 |
||
4757 |
function get_line_count($string) |
|
4758 |
{ |
|
4759 |
return ( get_char_count($string, "\n") ) + 1; |
|
4760 |
} |
|
4761 |
||
481
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4762 |
if ( !function_exists('sys_get_temp_dir') ) |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4763 |
{ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4764 |
// Based on http://www.phpit.net/ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4765 |
// article/creating-zip-tar-archives-dynamically-php/2/ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4766 |
/** |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4767 |
* Attempt to get the system's temp directory. |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4768 |
* @return string or bool false on failure |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4769 |
*/ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4770 |
|
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4771 |
function sys_get_temp_dir() |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4772 |
{ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4773 |
// Try to get from environment variable |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4774 |
if ( !empty($_ENV['TMP']) ) |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4775 |
{ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4776 |
return realpath( $_ENV['TMP'] ); |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4777 |
} |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4778 |
else if ( !empty($_ENV['TMPDIR']) ) |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4779 |
{ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4780 |
return realpath( $_ENV['TMPDIR'] ); |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4781 |
} |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4782 |
else if ( !empty($_ENV['TEMP']) ) |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4783 |
{ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4784 |
return realpath( $_ENV['TEMP'] ); |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4785 |
} |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4786 |
|
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4787 |
// Detect by creating a temporary file |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4788 |
else |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4789 |
{ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4790 |
// Try to use system's temporary directory |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4791 |
// as random name shouldn't exist |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4792 |
$temp_file = tempnam( md5(uniqid(rand(), TRUE)), '' ); |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4793 |
if ( $temp_file ) |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4794 |
{ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4795 |
$temp_dir = realpath( dirname($temp_file) ); |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4796 |
unlink( $temp_file ); |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4797 |
return $temp_dir; |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4798 |
} |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4799 |
else |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4800 |
{ |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4801 |
return FALSE; |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4802 |
} |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4803 |
} |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4804 |
} |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4805 |
} |
07bf15b066bc
Hopefully completed rewrite and localization of rollback backend and interface
Dan
parents:
479
diff
changeset
|
4806 |
|
541
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4807 |
/** |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4808 |
* Grabs and processes all rank information directly from the database. |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4809 |
*/ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4810 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4811 |
function fetch_rank_data() |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4812 |
{ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4813 |
global $db, $session, $paths, $template, $plugins; // Common objects |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4814 |
global $lang; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4815 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4816 |
$sql = $session->generate_rank_sql(); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4817 |
$q = $db->sql_query($sql); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4818 |
if ( !$q ) |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4819 |
$db->_die(); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4820 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4821 |
$GLOBALS['user_ranks'] = array(); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4822 |
global $user_ranks; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4823 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4824 |
while ( $row = $db->fetchrow($q) ) |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4825 |
{ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4826 |
$user_id = $row['user_id']; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4827 |
$username = $row['username']; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4828 |
$row = $session->calculate_user_rank($row); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4829 |
$user_ranks[$username] = $row; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4830 |
$user_ranks[$user_id] =& $user_ranks[$username]; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4831 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4832 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4833 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4834 |
/** |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4835 |
* Caches the computed user rank information. |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4836 |
*/ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4837 |
|
573
43e7254afdb4
Renamed some functions (that were new in this release anyway) due to compatibility broken with PunBB bridge
Dan
parents:
566
diff
changeset
|
4838 |
function generate_cache_userranks() |
541
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4839 |
{ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4840 |
global $db, $session, $paths, $template, $plugins; // Common objects |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4841 |
global $lang; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4842 |
global $user_ranks; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4843 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4844 |
fetch_rank_data(); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4845 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4846 |
$user_ranks_stripped = array(); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4847 |
foreach ( $user_ranks as $key => $value ) |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4848 |
{ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4849 |
if ( is_int($key) ) |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4850 |
$user_ranks_stripped[$key] = $value; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4851 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4852 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4853 |
$ranks_exported = "<?php\n\n// Automatically generated user rank cache.\nglobal \$user_ranks;\n" . '$user_ranks = ' . $lang->var_export_string($user_ranks_stripped) . ';'; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4854 |
$uid_map = array(); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4855 |
foreach ( $user_ranks as $id => $row ) |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4856 |
{ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4857 |
if ( !is_int($id) ) |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4858 |
{ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4859 |
$username = $id; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4860 |
continue; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4861 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4862 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4863 |
$un_san = addslashes($username); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4864 |
$ranks_exported .= "\n\$user_ranks['$un_san'] =& \$user_ranks[{$row['user_id']}];"; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4865 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4866 |
$ranks_exported .= "\n\ndefine('ENANO_RANKS_CACHE_LOADED', 1); \n?>"; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4867 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4868 |
// open ranks cache file |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4869 |
$fh = @fopen( ENANO_ROOT . '/cache/cache_ranks.php', 'w' ); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4870 |
if ( !$fh ) |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4871 |
return false; |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4872 |
fwrite($fh, $ranks_exported); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4873 |
fclose($fh); |
613 | 4874 |
|
4875 |
return true; |
|
541
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4876 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4877 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4878 |
/** |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4879 |
* Loads the rank data, first attempting the cache file and then the database. |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4880 |
*/ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4881 |
|
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4882 |
function load_rank_data() |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4883 |
{ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4884 |
if ( file_exists( ENANO_ROOT . '/cache/cache_ranks.php' ) ) |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4885 |
{ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4886 |
@include(ENANO_ROOT . '/cache/cache_ranks.php'); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4887 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4888 |
if ( !defined('ENANO_RANKS_CACHE_LOADED') ) |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4889 |
{ |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4890 |
fetch_rank_data(); |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4891 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4892 |
} |
acb7e23b6ffa
Massive commit with various changes. Added user ranks system (no admin interface yet) and ability for users to have custom user titles. Made cron framework accept fractions of hours through floating-point intervals. Modifed ACL editor to use miniPrompt framework for close confirmation box. Made avatar system use a special page as opposed to fetching the files directly for caching reasons.
Dan
parents:
536
diff
changeset
|
4893 |
|
599
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4894 |
/** |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4895 |
* Function to purge all caches used in Enano. Useful for upgrades, maintenance, backing the site up, etc. |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4896 |
*/ |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4897 |
|
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4898 |
function purge_all_caches() |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4899 |
{ |
613 | 4900 |
global $cache; |
599
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4901 |
if ( $dh = opendir(ENANO_ROOT . '/cache') ) |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4902 |
{ |
613 | 4903 |
$cache->purge('page_meta'); |
4904 |
$cache->purge('anon_sidebar'); |
|
4905 |
$cache->purge('plugins'); |
|
4906 |
||
599
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4907 |
$data_files = array( |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4908 |
'aes_decrypt.php', |
613 | 4909 |
// ranks cache is stored using a custom engine (not enano's default cache) |
599
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4910 |
'cache_ranks.php' |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4911 |
); |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4912 |
while ( $file = @readdir($dh) ) |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4913 |
{ |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4914 |
$fullpath = ENANO_ROOT . "/cache/$file"; |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4915 |
// we don't want to mess with directories |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4916 |
if ( !is_file($fullpath) ) |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4917 |
continue; |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4918 |
|
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4919 |
// data files |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4920 |
if ( in_array($file, $data_files) ) |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4921 |
unlink($fullpath); |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4922 |
// template files |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4923 |
else if ( preg_match('/\.(?:tpl|css)\.php$/', $file) ) |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4924 |
unlink($fullpath); |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4925 |
// compressed javascript |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4926 |
else if ( preg_match('/^jsres_(?:[A-z0-9_-]+)\.js\.json$/', $file) ) |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4927 |
unlink($fullpath); |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4928 |
// tinymce stuff |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4929 |
else if ( preg_match('/^tiny_mce_(?:[a-f0-9]+)\.gz$/', $file) ) |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4930 |
unlink($fullpath); |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4931 |
// language files |
613 | 4932 |
else if ( preg_match('/^lang_json_(?:[a-f0-9]+?)\.php$/', $file) || preg_match('/^(?:cache_)?lang_(?:[0-9]+?)\.php$/', $file) ) |
599
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4933 |
unlink($fullpath); |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4934 |
} |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4935 |
return true; |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4936 |
} |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4937 |
return false; |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4938 |
} |
52bffa6c499f
Added purge_all_caches() routine to functions.php. Temporary, will be discarded once the new cache code is implemented
Dan
parents:
593
diff
changeset
|
4939 |
|
851
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4940 |
/** |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4941 |
* Implementation of the "which" command in native PHP. |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4942 |
* @param string command |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4943 |
* @return string path to executable, or false on failure |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4944 |
*/ |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4945 |
|
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4946 |
function which($executable) |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4947 |
{ |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4948 |
$path = ( isset($_ENV['PATH']) ) ? $_ENV['PATH'] : ( isset($_SERVER['PATH']) ? $_SERVER['PATH'] : false ); |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4949 |
if ( !$path ) |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4950 |
// couldn't get OS's PATH |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4951 |
return false; |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4952 |
|
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4953 |
$win32 = ( PHP_OS == 'WINNT' || PHP_OS == 'WIN32' ); |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4954 |
$extensions = $win32 ? array('.exe', '.com', '.bat') : array(''); |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4955 |
$separator = $win32 ? ';' : ':'; |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4956 |
$paths = explode($separator, $path); |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4957 |
foreach ( $paths as $dir ) |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4958 |
{ |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4959 |
foreach ( $extensions as $ext ) |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4960 |
{ |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4961 |
$fullpath = "$dir/{$executable}{$ext}"; |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4962 |
if ( file_exists($fullpath) && is_executable($fullpath) ) |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4963 |
{ |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4964 |
return $fullpath; |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4965 |
} |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4966 |
} |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4967 |
} |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4968 |
return false; |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4969 |
} |
b98798f6572d
Redesigned installer sysreqs page to cover more features, be more comprehensive, and look better
Dan
parents:
842
diff
changeset
|
4970 |
|
857
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4971 |
/** |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4972 |
* Properly test a file or directory for writability. Used in various places around installer. |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4973 |
* @param string File or directory to test |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4974 |
* @return bool |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4975 |
*/ |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4976 |
|
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4977 |
function write_test($filename) |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4978 |
{ |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4979 |
// We need to actually _open_ the file to make sure it can be written, because sometimes this fails even when is_writable() returns |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4980 |
// true on Windows/IIS servers. Don't ask me why. |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4981 |
|
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4982 |
$file = ENANO_ROOT . '/' . $filename; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4983 |
if ( is_dir($file) ) |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4984 |
{ |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4985 |
$file = rtrim($file, '/') . '/' . 'enanoinstalltest.txt'; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4986 |
if ( file_exists($file) ) |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4987 |
{ |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4988 |
$fp = @fopen($file, 'a+'); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4989 |
if ( !$fp ) |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4990 |
return false; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4991 |
fclose($fp); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4992 |
unlink($file); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4993 |
return true; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4994 |
} |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4995 |
else |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4996 |
{ |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4997 |
$fp = @fopen($file, 'w'); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4998 |
if ( !$fp ) |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
4999 |
return false; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5000 |
fclose($fp); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5001 |
unlink($file); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5002 |
return true; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5003 |
} |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5004 |
} |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5005 |
else |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5006 |
{ |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5007 |
if ( file_exists($file) ) |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5008 |
{ |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5009 |
$fp = @fopen($file, 'a+'); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5010 |
if ( !$fp ) |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5011 |
return false; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5012 |
fclose($fp); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5013 |
return true; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5014 |
} |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5015 |
else |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5016 |
{ |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5017 |
$fp = @fopen($file, 'w'); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5018 |
if ( !$fp ) |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5019 |
return false; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5020 |
fclose($fp); |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5021 |
return true; |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5022 |
} |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5023 |
} |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5024 |
} |
f3a5a276208c
Added support for alternate port numbers on database servers. Also in install-cli, merged in new sysreqs functionality.
Dan
parents:
851
diff
changeset
|
5025 |