]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - g
Update LICENSE
[SourceForge/phpwiki.git] / g
1 <?php
2 /*
3  * Copyright (C) 2008-2012 Alcatel-Lucent
4  *
5  * This file is part of PhpWiki.
6  *
7  * PhpWiki is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * PhpWiki is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with PhpWiki; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  */
21
22 /*
23  * Standard Alcatel-Lucent disclaimer for contributing to open source
24  *
25  * "The Configuration File ("Contribution") has not been tested and/or
26  * validated for release as or in products, combinations with products or
27  * other commercial use. Any use of the Contribution is entirely made at
28  * the user's own responsibility and the user can not rely on any features,
29  * functionalities or performances Alcatel-Lucent has attributed to the
30  * Contribution.
31  *
32  * THE CONTRIBUTION BY ALCATEL-LUCENT IS PROVIDED AS IS, WITHOUT WARRANTY
33  * OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
34  * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, COMPLIANCE,
35  * NON-INTERFERENCE AND/OR INTERWORKING WITH THE SOFTWARE TO WHICH THE
36  * CONTRIBUTION HAS BEEN MADE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL
37  * ALCATEL-LUCENT BE LIABLE FOR ANY DAMAGES OR OTHER LIABLITY, WHETHER IN
38  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
39  * CONTRIBUTION OR THE USE OR OTHER DEALINGS IN THE CONTRIBUTION, WHETHER
40  * TOGETHER WITH THE SOFTWARE TO WHICH THE CONTRIBUTION RELATES OR ON A STAND
41  * ALONE BASIS."
42  */
43
44 ini_set("memory_limit", "256M");
45 ini_set('pcre.backtrack_limit', 100000000);
46
47 // Disable compression, seems needed to get all the messages.
48 $no_gz_buffer=true;
49
50 if (defined('WIKI_SOAP')) {
51     require_once 'include/env.inc.php';
52 } else {
53     require_once '../../../common/include/env.inc.php';
54 }
55 require_once $gfcommon.'include/pre.php';
56 require_once $gfplugins.'wiki/common/wikiconfig.class.php';
57
58 html_use_jquery();
59 if (forge_get_config('use_jquery_form_navigate')) {
60     use_javascript('/scripts/jquery-formnavigate/jquery.FormNavigate-min.js');
61     define('ENABLE_EDIT_TOOLBAR', true);
62 } else {
63     // Disable Toolbar for tests
64     define('ENABLE_EDIT_TOOLBAR', false);
65 }
66
67 if (defined('WIKI_SOAP')) {
68     $group_id = 6;
69 }
70
71 if (isset($group_id) && $group_id) {
72     if (! isset($project) || ! $project) {
73         $project = group_get_object($group_id);
74     }
75 } elseif(isset($project) && is_object($project)) {
76     $group_id = $project->getID();
77 }
78
79 if (! isset($group_id) || ! isset($project)) {
80     exit_no_group();
81 } else if (!($project->usesPlugin("wiki"))) {
82     // We should test whether the wiki plugin is disabled globally
83     // in the Forge or by the current project.
84     // exit_disabled('home');
85     exit_project_disabled('home');
86 } else {
87
88     global $robots;
89
90     $robots = "noindex,nofollow";
91
92     $group_name = $project->getUnixName();
93     $group_public_name = $project->getPublicName();
94
95     $is_external = method_exists($project, 'getIsExternal') && $project->getIsExternal();
96
97     $wc = new WikiConfig($group_id);
98
99     define('VIRTUAL_PATH', '/wiki/g/'.$group_name);
100     global $page_prefix;
101     $page_prefix = '_g'.$group_id.'_';
102
103     // We have to use a smaller value than Phpwiki due to page prefix
104     define('MAX_PAGENAME_LENGTH', 92);
105
106     define('THEME', 'fusionforge');
107
108     // For FusionForge, we create some specific pages, located in the theme
109     // except for given project
110     if ($group_name == forge_get_config('wiki_help_project', 'wiki')) {
111         define('WIKI_PGSRC', 'pgsrc');
112     } else {
113         define('WIKI_PGSRC', 'themes/fusionforge/pgsrc');
114     }
115
116     define('FUSIONFORGE', true);
117
118     define('PATH_INFO_PREFIX', '/'.$group_name . '/');
119     define('USE_PATH_INFO', true);
120
121     define('WIKI_NAME', $group_name);
122
123     define('ALLOWED_PROTOCOLS', "http|https|mailto|ftp|ftps|news|nntp|ssh|gopher");
124
125     define('DISABLE_MARKUP_WIKIWORD', $wc->getWikiConfig('DISABLE_MARKUP_WIKIWORD'));
126
127     define('NUM_SPAM_LINKS', 20 * ($wc->getWikiConfig('NUM_SPAM_LINKS')));
128
129     define('ENABLE_RATEIT', $wc->getWikiConfig('ENABLE_RATEIT'));
130
131     define('UPLOAD_FILE_PATH', forge_get_config('groupdir_prefix').'/'.WIKI_NAME.'/www/uploads/');
132     // define('UPLOAD_DATA_PATH', SERVER_URL . '/www/'.WIKI_NAME.'/uploads/');
133     if ($project->isPublic()) {
134         define('UPLOAD_DATA_PATH', '/www/'.WIKI_NAME.'/uploads/');
135     } else {
136         define('UPLOAD_DATA_PATH', '/wiki/view.php/'.WIKI_NAME.'/uploads/');
137     }
138
139     // Do not use a directory per user but only one (per project)
140     define('UPLOAD_USERDIR', false);
141
142     // Use black list of extensions instead of white list
143     define('DISABLE_UPLOAD_ONLY_ALLOWED_EXTENSIONS', true);
144
145     // Get the maximum upload filesize from PHP config
146     define('MAX_UPLOAD_SIZE', octets(ini_get('upload_max_filesize')));
147
148     // Disable access log (already in Apache & FusionForge).
149     define('ACCESS_LOG_SQL', 0);
150
151     define('DEBUG', (forge_get_config('installation_environment') != 'production'));
152
153     // Postgresql
154     define('DATABASE_TYPE', 'SQL');
155     // Dummy value (to avoid warning in SystemInfo plugin)
156     define('DATABASE_DSN', 'pgsql://localhost/user_phpwiki');
157
158     // Disable VACUUM (they are performed every night)
159     define('DATABASE_OPTIMISE_FREQUENCY', 0);
160
161     // TBD: the name should be taken from FusionForge
162     // define('ADMIN_USER', 'ACOS Forge Administrator');
163     define('ADMIN_USER', 'The PhpWiki programming team');
164     // Dummy value
165     define('ADMIN_PASSWD', 'xxx');
166
167     // Allow ".svg" and ".swf" as extensions
168     define('INLINE_IMAGES', 'png|jpg|jpeg|gif|svg|swf');
169
170     // Allow <div> and <span> in wiki code
171     define('ENABLE_MARKUP_DIVSPAN', true);
172
173     define('ENABLE_AJAX', false);
174
175     define('TOOLBAR_PAGELINK_PULLDOWN', false);
176     define('TOOLBAR_TEMPLATE_PULLDOWN', false);
177     define('TOOLBAR_IMAGE_PULLDOWN', true);
178
179     // Enable external pages
180     define('ENABLE_EXTERNAL_PAGES', $is_external);
181
182     // Let all revisions be stored. Default since 1.3.11
183     define('MAJOR_MIN_KEEP', 2147483647);
184     define('MINOR_MIN_KEEP', 2147483647);
185     define('MAJOR_MAX_AGE', 2147483647);
186     define('MAJOR_KEEP', 2147483647);
187     define('MINOR_MAX_AGE', 2147483647);
188     define('MINOR_KEEP', 2147483647);
189     define('AUTHOR_MAX_AGE', 2147483647);
190     define('AUTHOR_KEEP', 2147483647);
191     define('AUTHOR_MIN_AGE', 2147483647);
192     define('AUTHOR_MAX_KEEP', 2147483647);
193
194     //
195     // Define access rights for the wiki.
196     //
197
198     // Do not allow anon users to edit pages
199     define('ALLOW_ANON_EDIT', false);
200
201     // Do not allow fake user
202     define('ALLOW_BOGO_LOGIN', false);
203
204     // A dedicated auth has been created to get auth from FusionForge
205     $USER_AUTH_ORDER = array("FusionForge");
206     define('USER_AUTH_ORDER', 'FusionForge');
207     define('USER_AUTH_POLICY', 'strict');
208
209     define('EXTERNAL_LINK_TARGET', '_top');
210
211     // Override the default configuration for CONSTANTS before index.php
212     $LC_ALL = language_name_to_locale_code(choose_language_from_context());
213     $LANG   = preg_replace('/_.*/', '', $LC_ALL);
214
215     // We use a local interwiki map file
216     define('INTERWIKI_MAP_FILE', 'themes/fusionforge/interwiki.map');
217
218     define('DEFAULT_WIKI_PAGES', "");
219
220     define('DBAUTH_AUTH_CHECK', "SELECT IF(passwd='\$password',1,0) as ok FROM plugin_wiki_pref WHERE userid='\$userid'");
221     define('DBAUTH_AUTH_USER_EXISTS', "SELECT userid FROM plugin_wiki_pref WHERE userid='\$userid'");
222     define('DBAUTH_AUTH_CREATE', "INSERT INTO plugin_wiki_pref (passwd,userid) VALUES ('\$password','\$userid')");
223     define('DBAUTH_PREF_SELECT', "SELECT prefs FROM plugin_wiki_pref WHERE userid='\$userid'");
224     define('DBAUTH_PREF_UPDATE', "UPDATE plugin_wiki_pref SET prefs='\$pref_blob' WHERE userid='\$userid'");
225     define('DBAUTH_PREF_INSERT', "INSERT INTO plugin_wiki_pref (prefs,userid) VALUES ('\$pref_blob','\$userid')");
226     define('DBAUTH_IS_MEMBER', "SELECT userid FROM plugin_wiki_pref WHERE userid='\$userid' AND groupname='\$groupname'");
227     define('DBAUTH_GROUP_MEMBERS', "SELECT userid FROM plugin_wiki_pref WHERE groupname='\$groupname'");
228     define('DBAUTH_USER_GROUPS', "SELECT groupname FROM plugin_wiki_pref WHERE userid='\$userid'");
229
230     define('USE_DB_SESSION', true);
231
232     define('USE_BYTEA', true);
233
234     define('ENABLE_REVERSE_DNS', false);
235
236     // Web DAV location
237     define('DEFAULT_DUMP_DIR', forge_get_config('groupdir_prefix').'/'.$group_name."/wikidump/");
238     define('HTML_DUMP_DIR', forge_get_config('groupdir_prefix').'/'.$group_name."/wikidumphtml/");
239
240     define('COMPRESS_OUTPUT', false);
241
242     define('CACHE_CONTROL', "NO_CACHE");
243
244     $lg = language_name_to_locale_code(forge_get_config('default_language'));
245     $lg = preg_replace('/_.*/', '', $lg);
246     define('DEFAULT_LANGUAGE', $lg);
247
248     define('DISABLE_GETIMAGESIZE', true);
249
250     // If the user is logged in, let the Wiki know
251     if (session_loggedin()) {
252         $user = session_get_user();
253         if ($user && is_object($user) && !$user->isError() && $user->isActive()) {
254             $user_name = $user->getRealName();
255             $_SESSION['user_id'] = $user_name;
256             $_SERVER['PHP_AUTH_USER'] = $user_name;
257         }
258     } else {
259         // clear out the globals, just in case...
260     }
261
262     // Load the default configuration.
263     require_once(dirname(__FILE__).'/lib/prepend.php');
264     require_once(dirname(__FILE__).'/lib/IniConfig.php');
265     IniConfig(dirname(__FILE__)."/config/config-default.ini");
266
267     // Override the default configuration for VARIABLES after index.php:
268     // E.g. Use another DB:
269     $DBParams['dbtype'] = 'SQL';
270     $DBParams['dsn']    = 'ffpgsql://' . forge_get_config('database_user') . ':' .
271         forge_get_config('database_password') . '@' . forge_get_config('database_host') .'/' . forge_get_config('database_name');
272
273     $DBParams['prefix'] = "plugin_wiki_";
274
275     // Start the wiki
276     include dirname(__FILE__).'/lib/main.php';
277 }
278
279 /**
280  * Return a number of octets from a string like "300M"
281  */
282 function octets($val) {
283     $val = trim($val);
284     $last = strtolower($val[strlen($val)-1]);
285     switch($last) {
286         // The 'G' modifier is available since PHP 5.1.0
287         case 'g':
288             $val *= 1024;
289         case 'm':
290             $val *= 1024;
291         case 'k':
292             $val *= 1024;
293     }
294     return $val;
295 }