source: trunk/include/common.inc.php @ 20384

Last change on this file since 20384 was 19703, checked in by plg, 11 years ago

update Piwigo headers to 2013 (the end of the world didn't occur as expected on r12922)

  • Property svn:eol-style set to LF
File size: 8.1 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based photo gallery                                    |
4// +-----------------------------------------------------------------------+
5// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
6// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
7// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
8// +-----------------------------------------------------------------------+
9// | This program is free software; you can redistribute it and/or modify  |
10// | it under the terms of the GNU General Public License as published by  |
11// | the Free Software Foundation                                          |
12// |                                                                       |
13// | This program is distributed in the hope that it will be useful, but   |
14// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
15// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
16// | General Public License for more details.                              |
17// |                                                                       |
18// | You should have received a copy of the GNU General Public License     |
19// | along with this program; if not, write to the Free Software           |
20// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
21// | USA.                                                                  |
22// +-----------------------------------------------------------------------+
23
24defined('PHPWG_ROOT_PATH') or trigger_error('Hacking attempt!', E_USER_ERROR);
25
26// determine the initial instant to indicate the generation time of this page
27$t2 = microtime(true);
28
29@set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
30
31//
32// addslashes to vars if magic_quotes_gpc is off this is a security
33// precaution to prevent someone trying to break out of a SQL statement.
34//
35if( !@get_magic_quotes_gpc() )
36{
37  function sanitize_mysql_kv(&$v, $k)
38  {
39    $v = addslashes($v);
40  }
41  if( is_array( $_GET ) )
42  {
43    array_walk_recursive( $_GET, 'sanitize_mysql_kv' );
44  }
45  if( is_array( $_POST ) )
46  {
47    array_walk_recursive( $_POST, 'sanitize_mysql_kv' );
48  }
49  if( is_array( $_COOKIE ) )
50  {
51    array_walk_recursive( $_COOKIE, 'sanitize_mysql_kv' );
52  }
53}
54if ( !empty($_SERVER["PATH_INFO"]) )
55{
56  $_SERVER["PATH_INFO"] = addslashes($_SERVER["PATH_INFO"]);
57}
58
59//
60// Define some basic configuration arrays this also prevents malicious
61// rewriting of language and otherarray values via URI params
62//
63$conf = array();
64$page = array(
65  'infos' => array(),
66  'errors' => array(),
67  'warnings' => array(),
68  );
69$user = array();
70$lang = array();
71$header_msgs = array();
72$header_notes = array();
73$filter = array();
74
75foreach( array(
76  'array_intersect_key', //PHP 5 >= 5.1.0RC1
77  'hash_hmac', //(hash) - enabled by default as of PHP 5.1.2
78  'preg_last_error', // PHP 5 >= 5.2.0
79  'json_encode', // PHP 5 >= 5.2.0
80  ) as $func)
81{
82  if (!function_exists($func))
83  {
84    include_once(PHPWG_ROOT_PATH . 'include/php_compat/'.$func.'.php');
85  }
86}
87
88include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
89@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
90
91defined('PWG_LOCAL_DIR') or define('PWG_LOCAL_DIR', 'local/');
92
93@include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php');
94if (!defined('PHPWG_INSTALLED'))
95{
96  header('Location: install.php');
97  exit;
98}
99include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php');
100
101if(isset($conf['show_php_errors']) && !empty($conf['show_php_errors']))
102{
103  @ini_set('error_reporting', $conf['show_php_errors']);
104  @ini_set('display_errors', true);
105}
106
107include(PHPWG_ROOT_PATH . 'include/constants.php');
108include(PHPWG_ROOT_PATH . 'include/functions.inc.php');
109
110
111// Database connection
112try
113{
114  $pwg_db_link = pwg_db_connect($conf['db_host'], $conf['db_user'],
115                                $conf['db_password'], $conf['db_base']);
116}
117catch (Exception $e)
118{
119  my_error(l10n($e->getMessage()), true);
120}
121
122pwg_db_check_charset();
123
124load_conf_from_db();
125
126if (!$conf['check_upgrade_feed'])
127{
128  if (!isset($conf['piwigo_db_version']) or $conf['piwigo_db_version'] != get_branch_from_version(PHPWG_VERSION))
129  {
130    redirect(get_root_url().'upgrade.php');
131  }
132}
133
134ImageStdParams::load_from_db();
135
136load_plugins();
137
138// users can have defined a custom order pattern, incompatible with GUI form
139if (isset($conf['order_by_custom']))
140{
141  $conf['order_by'] = $conf['order_by_custom'];
142}
143if (isset($conf['order_by_inside_category_custom']))
144{
145  $conf['order_by_inside_category'] = $conf['order_by_inside_category_custom'];
146}
147
148include(PHPWG_ROOT_PATH.'include/user.inc.php');
149
150if (in_array( substr($user['language'],0,2), array('fr','it','de','es','pl','hu','ru','nl') ) )
151{
152  define('PHPWG_DOMAIN', substr($user['language'],0,2).'.piwigo.org');
153}
154elseif ('zh_CN' == $user['language']) {
155  define('PHPWG_DOMAIN', 'cn.piwigo.org');
156}
157else {
158  define('PHPWG_DOMAIN', 'piwigo.org');
159}
160define('PHPWG_URL', 'http://'.PHPWG_DOMAIN);
161
162if(isset($conf['alternative_pem_url']) and $conf['alternative_pem_url']!='')
163{
164  define('PEM_URL', $conf['alternative_pem_url']);
165}
166else
167{
168  define('PEM_URL', 'http://'.PHPWG_DOMAIN.'/ext');
169}
170
171// language files
172load_language('common.lang');
173if ( is_admin() || (defined('IN_ADMIN') and IN_ADMIN) )
174{
175  load_language('admin.lang');
176}
177trigger_action('loading_lang');
178load_language('lang', PHPWG_ROOT_PATH.PWG_LOCAL_DIR, array('no_fallback'=>true, 'local'=>true) );
179
180// only now we can set the localized username of the guest user (and not in
181// include/user.inc.php)
182if (is_a_guest())
183{
184  $user['username'] = l10n('guest');
185}
186
187// template instance
188if (defined('IN_ADMIN') and IN_ADMIN )
189{// Admin template
190  $template = new Template(PHPWG_ROOT_PATH.'admin/themes', $conf['admin_theme']);
191}
192else
193{ // Classic template
194  $theme = $user['theme'];
195  if (script_basename() != 'ws' and mobile_theme())
196  {
197    $theme = $conf['mobile_theme'];
198  }
199  $template = new Template(PHPWG_ROOT_PATH.'themes', $theme );
200}
201
202if ( !isset($conf['no_photo_yet']) )
203{
204  include(PHPWG_ROOT_PATH.'include/no_photo_yet.inc.php');
205}
206
207if (isset($user['internal_status']['guest_must_be_guest'])
208    and
209    $user['internal_status']['guest_must_be_guest'] === true)
210{
211  $header_msgs[] = l10n('Bad status for user "guest", using default status. Please notify the webmaster.');
212}
213
214if ($conf['gallery_locked'])
215{
216  $header_msgs[] = l10n('The gallery is locked for maintenance. Please, come back later.');
217
218  if ( script_basename() != 'identification' and !is_admin() )
219  {
220    set_status_header(503, 'Service Unavailable');
221    @header('Retry-After: 900');
222    header('Content-Type: text/html; charset='.get_pwg_charset());
223    echo '<a href="'.get_absolute_root_url(false).'identification.php">'.l10n('The gallery is locked for maintenance. Please, come back later.').'</a>';
224    echo str_repeat( ' ', 512); //IE6 doesn't error output if below a size
225    exit();
226  }
227}
228
229if ($conf['check_upgrade_feed'])
230{
231  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upgrade.php');
232  if (check_upgrade_feed())
233  {
234    $header_msgs[] = 'Some database upgrades are missing, '
235      .'<a href="'.get_absolute_root_url(false).'upgrade_feed.php">upgrade now</a>';
236  }
237}
238
239if (count($header_msgs) > 0)
240{
241  $template->assign('header_msgs', $header_msgs);
242  $header_msgs=array();
243}
244
245if (!empty($conf['filter_pages']) and get_filter_page_value('used'))
246{
247  include(PHPWG_ROOT_PATH.'include/filter.inc.php');
248}
249else
250{
251  $filter['enabled'] = false;
252}
253
254if (isset($conf['header_notes']))
255{
256  $header_notes = array_merge($header_notes, $conf['header_notes']);
257}
258
259// default event handlers
260add_event_handler('render_category_literal_description', 'render_category_literal_description');
261if ( !$conf['allow_html_descriptions'] )
262{
263  add_event_handler('render_category_description', 'nl2br');
264}
265add_event_handler('render_comment_content', 'render_comment_content');
266add_event_handler('render_comment_author', 'strip_tags');
267add_event_handler('render_tag_url', 'str2url');
268add_event_handler('blockmanager_register_blocks', 'register_default_menubar_blocks', EVENT_HANDLER_PRIORITY_NEUTRAL-1);
269trigger_action('init');
270?>
Note: See TracBrowser for help on using the repository browser.