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

Last change on this file since 4325 was 4325, checked in by nikrou, 14 years ago

Feature 1244 resolved
Replace all mysql functions in core code by ones independant of database engine

Fix small php code synxtax : hash must be accessed with [ ] and not { }.

  • Property svn:eol-style set to LF
File size: 7.2 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based picture gallery                                  |
4// +-----------------------------------------------------------------------+
5// | Copyright(C) 2008-2009 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
73@include(PHPWG_ROOT_PATH .'include/config_database.inc.php');
74if (!defined('PHPWG_INSTALLED'))
75{
76  header('Location: install.php');
77  exit;
78}
79
80foreach( array(
81  'array_intersect_key', //PHP 5 >= 5.1.0RC1
82  'hash_hmac', //(hash) - enabled by default as of PHP 5.1.2
83  'preg_last_error', // PHP 5 >= 5.2.0
84  'file_put_contents', //PHP5
85  ) as $func)
86{
87  if (!function_exists($func))
88  {
89    include_once(PHPWG_ROOT_PATH . 'include/php_compat/'.$func.'.php');
90  }
91}
92
93include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
94@include(PHPWG_ROOT_PATH. 'include/config_local.inc.php');
95include(PHPWG_ROOT_PATH .'include/dblayer/functions_mysql.inc.php');
96
97if(isset($conf['show_php_errors']) && !empty($conf['show_php_errors']))
98{
99  @ini_set('error_reporting', $conf['show_php_errors']);
100  @ini_set('display_errors', true);
101}
102
103include(PHPWG_ROOT_PATH . 'include/constants.php');
104include(PHPWG_ROOT_PATH . 'include/functions.inc.php');
105include( PHPWG_ROOT_PATH .'include/template.class.php');
106
107// Database connection
108$pwg_db_link = pwg_db_connect($conf['db_host'], $conf['db_user'], 
109                              $conf['db_password'], $conf['db_base']) 
110  or my_error('pwg_db_connect', true);
111
112pwg_db_check_charset();
113
114load_conf_from_db();
115load_plugins();
116
117include(PHPWG_ROOT_PATH.'include/user.inc.php');
118
119if ('fr_FR' == $user['language']) {
120  define('PHPWG_DOMAIN', 'fr.piwigo.org');
121}
122else if ('de_DE' == $user['language']) {
123  define('PHPWG_DOMAIN', 'de.piwigo.org');
124}
125else if ('es_ES' == $user['language']) {
126  define('PHPWG_DOMAIN', 'es.piwigo.org');
127}
128else {
129  define('PHPWG_DOMAIN', 'piwigo.org');
130}
131define('PHPWG_URL', 'http://'.PHPWG_DOMAIN);
132define('PEM_URL', 'http://'.PHPWG_DOMAIN.'/ext');
133
134
135// language files
136load_language('common.lang');
137if ( is_admin() || (defined('IN_ADMIN') and IN_ADMIN) )
138{
139  load_language('admin.lang');
140}
141trigger_action('loading_lang');
142load_language('local.lang', '', array('no_fallback'=>true) );
143
144// only now we can set the localized username of the guest user (and not in
145// include/user.inc.php)
146if (is_a_guest())
147{
148  $user['username'] = l10n('guest');
149}
150
151// template instance
152if ( defined('IN_ADMIN') and IN_ADMIN )
153{// Admin template
154  list($user['admin_template'], $user['admin_theme']) =
155    explode ('/', $conf['admin_layout']);
156  $template = new Template(PHPWG_ROOT_PATH.'admin/template/'
157    . $user['admin_template'], $user['admin_theme'] );
158}
159else
160{ // Classic template
161  $template = new Template(PHPWG_ROOT_PATH.'template/'
162    . $user['template'], $user['theme'] );
163}
164
165if (isset($user['internal_status']['guest_must_be_guest'])
166    and
167    $user['internal_status']['guest_must_be_guest'] === true)
168{
169  $header_msgs[] = l10n('guest_must_be_guest');
170}
171
172if ($conf['gallery_locked'])
173{
174  $header_msgs[] = l10n('gallery_locked_message');
175
176  if ( script_basename() != 'identification' and !is_admin() )
177  {
178    set_status_header(503, 'Service Unavailable');
179    @header('Retry-After: 900');
180    header('Content-Type: text/html; charset='.get_pwg_charset());
181    echo '<a href="'.get_absolute_root_url(false).'identification.php">'.l10n('gallery_locked_message').'</a>';
182    echo str_repeat( ' ', 512); //IE6 doesn't error output if below a size
183    exit();
184  }
185}
186
187if ($conf['check_upgrade_feed'])
188{
189  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upgrade.php');
190  if (check_upgrade_feed())
191  {
192    $header_msgs[] = 'Some database upgrades are missing, '
193      .'<a href="'.get_absolute_root_url(false).'upgrade_feed.php">upgrade now</a>';
194  }
195}
196
197if (is_adviser())
198{
199  $header_msgs[] = l10n('adviser_mode_enabled');
200}
201
202if (count($header_msgs) > 0)
203{
204  $template->assign('header_msgs', $header_msgs);
205  $header_msgs=array();
206}
207
208if (!empty($conf['filter_pages']) and get_filter_page_value('used'))
209{
210  include(PHPWG_ROOT_PATH.'include/filter.inc.php');
211}
212else
213{
214  $filter['enabled'] = false;
215}
216
217if (isset($conf['header_notes']))
218{
219  $header_notes = array_merge($header_notes, $conf['header_notes']);
220}
221
222// default event handlers
223add_event_handler('render_category_literal_description', 'render_category_literal_description');
224if ( !$conf['allow_html_descriptions'] )
225{
226  add_event_handler('render_category_description', 'nl2br');
227}
228add_event_handler('render_comment_content', 'htmlspecialchars');
229add_event_handler('render_comment_content', 'parse_comment_content');
230add_event_handler('render_comment_author', 'strip_tags');
231add_event_handler('blockmanager_register_blocks', 'register_default_menubar_blocks', EVENT_HANDLER_PRIORITY_NEUTRAL-1);
232trigger_action('init');
233?>
Note: See TracBrowser for help on using the repository browser.