source: branches/2.2/include/common.inc.php @ 10131

Last change on this file since 10131 was 10131, checked in by patdenice, 13 years ago

merge r10098,r10100,r10101,r10113,r10128,r10129 from trunk to branch 2.2
feature:2250
Incompatible plugins and obsolete plugins may not be activated.
Deactivate and uninstall obsolete plugins.
Add warning icon and tiptip
Add languages keys.
Add expire parameter.
Clean code.
Remove useless query for delete.

  • Property svn:eol-style set to LF
File size: 7.7 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based photo gallery                                    |
4// +-----------------------------------------------------------------------+
5// | Copyright(C) 2008-2011 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$t1 = explode( ' ', microtime() );
28$t2 = explode( '.', $t1[0] );
29$t2 = $t1[1].'.'.$t2[1];
30
31@set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
32
33//
34// addslashes to vars if magic_quotes_gpc is off this is a security
35// precaution to prevent someone trying to break out of a SQL statement.
36//
37if( !@get_magic_quotes_gpc() )
38{
39  function sanitize_mysql_kv(&$v, $k)
40  {
41    $v = addslashes($v);
42  }
43  if( is_array( $_GET ) )
44  {
45    array_walk_recursive( $_GET, 'sanitize_mysql_kv' );
46  }
47  if( is_array( $_POST ) )
48  {
49    array_walk_recursive( $_POST, 'sanitize_mysql_kv' );
50  }
51  if( is_array( $_COOKIE ) )
52  {
53    array_walk_recursive( $_COOKIE, 'sanitize_mysql_kv' );
54  }
55}
56if ( !empty($_SERVER["PATH_INFO"]) )
57{
58  $_SERVER["PATH_INFO"] = addslashes($_SERVER["PATH_INFO"]);
59}
60
61//
62// Define some basic configuration arrays this also prevents malicious
63// rewriting of language and otherarray values via URI params
64//
65$conf = array();
66$page = array();
67$user = array();
68$lang = array();
69$header_msgs = array();
70$header_notes = array();
71$filter = array();
72
73if (is_file(PHPWG_ROOT_PATH .'local/config/multisite.inc.php'))
74{
75  include(PHPWG_ROOT_PATH .'local/config/multisite.inc.php');
76  define('PWG_LOCAL_DIR', $conf['local_dir_site']);
77}
78else
79{
80  define('PWG_LOCAL_DIR', 'local/');
81}
82
83@include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php');
84if (!defined('PHPWG_INSTALLED'))
85{
86  header('Location: install.php');
87  exit;
88}
89
90foreach( array(
91  'array_intersect_key', //PHP 5 >= 5.1.0RC1
92  'hash_hmac', //(hash) - enabled by default as of PHP 5.1.2
93  'preg_last_error', // PHP 5 >= 5.2.0
94  'json_encode', // PHP 5 >= 5.2.0
95  ) as $func)
96{
97  if (!function_exists($func))
98  {
99    include_once(PHPWG_ROOT_PATH . 'include/php_compat/'.$func.'.php');
100  }
101}
102
103include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
104@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
105if (isset($conf['local_dir_site']))
106{
107  @include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR. 'config/config.inc.php');
108}
109include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php');
110
111if(isset($conf['show_php_errors']) && !empty($conf['show_php_errors']))
112{
113  @ini_set('error_reporting', $conf['show_php_errors']);
114  @ini_set('display_errors', true);
115}
116
117include(PHPWG_ROOT_PATH . 'include/constants.php');
118include(PHPWG_ROOT_PATH . 'include/functions.inc.php');
119include( PHPWG_ROOT_PATH .'include/template.class.php');
120
121// Database connection
122try
123{
124  $pwg_db_link = pwg_db_connect($conf['db_host'], $conf['db_user'],
125                                $conf['db_password'], $conf['db_base']);
126}
127catch (Exception $e)
128{
129  my_error(l10n($e->getMessage()), true);
130}
131
132pwg_db_check_charset();
133
134load_conf_from_db();
135load_plugins();
136
137include(PHPWG_ROOT_PATH.'include/user.inc.php');
138
139if (in_array( substr($user['language'],0,2), array('fr','it','de','es','pl','hu','ru','nl') ) )
140{
141  define('PHPWG_DOMAIN', substr($user['language'],0,2).'.piwigo.org');
142}
143elseif ('zh_CN' == $user['language']) {
144  define('PHPWG_DOMAIN', 'cn.piwigo.org');
145}
146else {
147  define('PHPWG_DOMAIN', 'piwigo.org');
148}
149define('PHPWG_URL', 'http://'.PHPWG_DOMAIN);
150
151if(isset($conf['alternative_pem_url']) and $conf['alternative_pem_url']!='')
152{
153  define('PEM_URL', $conf['alternative_pem_url']);
154}
155else
156{
157  define('PEM_URL', 'http://'.PHPWG_DOMAIN.'/ext');
158}
159
160// language files
161load_language('common.lang');
162if ( is_admin() || (defined('IN_ADMIN') and IN_ADMIN) )
163{
164  load_language('admin.lang');
165}
166trigger_action('loading_lang');
167load_language('lang', PHPWG_ROOT_PATH.PWG_LOCAL_DIR, array('no_fallback'=>true, 'local'=>true) );
168
169// only now we can set the localized username of the guest user (and not in
170// include/user.inc.php)
171if (is_a_guest())
172{
173  $user['username'] = l10n('guest');
174}
175
176// template instance
177if (defined('IN_ADMIN') and IN_ADMIN )
178{// Admin template
179  $template = new Template(PHPWG_ROOT_PATH.'admin/themes', $conf['admin_theme']);
180}
181else
182{ // Classic template
183  $template = new Template(PHPWG_ROOT_PATH.'themes', $user['theme'] );
184}
185
186if ( !isset($conf['no_photo_yet']) )
187{
188  include(PHPWG_ROOT_PATH.'include/no_photo_yet.inc.php');
189}
190
191if (isset($user['internal_status']['guest_must_be_guest'])
192    and
193    $user['internal_status']['guest_must_be_guest'] === true)
194{
195  $header_msgs[] = l10n('Bad status for user "guest", using default status. Please notify the webmaster.');
196}
197
198if ($conf['gallery_locked'])
199{
200  $header_msgs[] = l10n('The gallery is locked for maintenance. Please, come back later.');
201
202  if ( script_basename() != 'identification' and !is_admin() )
203  {
204    set_status_header(503, 'Service Unavailable');
205    @header('Retry-After: 900');
206    header('Content-Type: text/html; charset='.get_pwg_charset());
207    echo '<a href="'.get_absolute_root_url(false).'identification.php">'.l10n('The gallery is locked for maintenance. Please, come back later.').'</a>';
208    echo str_repeat( ' ', 512); //IE6 doesn't error output if below a size
209    exit();
210  }
211}
212
213if ($conf['check_upgrade_feed'])
214{
215  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upgrade.php');
216  if (check_upgrade_feed())
217  {
218    $header_msgs[] = 'Some database upgrades are missing, '
219      .'<a href="'.get_absolute_root_url(false).'upgrade_feed.php">upgrade now</a>';
220  }
221}
222
223if (count($header_msgs) > 0)
224{
225  $template->assign('header_msgs', $header_msgs);
226  $header_msgs=array();
227}
228
229if (!empty($conf['filter_pages']) and get_filter_page_value('used'))
230{
231  include(PHPWG_ROOT_PATH.'include/filter.inc.php');
232}
233else
234{
235  $filter['enabled'] = false;
236}
237
238if (isset($conf['header_notes']))
239{
240  $header_notes = array_merge($header_notes, $conf['header_notes']);
241}
242
243// default event handlers
244add_event_handler('render_category_literal_description', 'render_category_literal_description');
245if ( !$conf['allow_html_descriptions'] )
246{
247  add_event_handler('render_category_description', 'nl2br');
248}
249add_event_handler('render_comment_content', 'render_comment_content');
250add_event_handler('render_comment_author', 'strip_tags');
251add_event_handler('blockmanager_register_blocks', 'register_default_menubar_blocks', EVENT_HANDLER_PRIORITY_NEUTRAL-1);
252trigger_action('init');
253?>
Note: See TracBrowser for help on using the repository browser.