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

Last change on this file since 3203 was 3203, checked in by patdenice, 15 years ago

Move template class inclusion to common.inc.php.
Add forum link in upgrade page.
Install and upgrade try to configure PHP5.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
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
31set_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/mysql.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');
95
96if(isset($conf['show_php_errors']) && !empty($conf['show_php_errors']))
97{
98  @ini_set('error_reporting', $conf['show_php_errors']);
99  @ini_set('display_errors', true);
100}
101
102include(PHPWG_ROOT_PATH . 'include/constants.php');
103include(PHPWG_ROOT_PATH . 'include/functions.inc.php');
104include( PHPWG_ROOT_PATH .'include/template.class.php');
105
106// Database connection
107@mysql_connect( $cfgHote, $cfgUser, $cfgPassword ) or my_error( 'mysql_connect', true );
108@mysql_select_db( $cfgBase ) or my_error( 'mysql_select_db', true );
109
110defined('PWG_CHARSET') and defined('DB_CHARSET')
111  or fatal_error('PWG_CHARSET and/or DB_CHARSET is not defined');
112if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') )
113{
114  if (DB_CHARSET!='')
115  {
116    pwg_query('SET NAMES "'.DB_CHARSET.'"');
117  }
118}
119elseif ( strtolower(PWG_CHARSET)!='iso-8859-1' )
120{
121  fatal_error('PWG supports only iso-8859-1 charset on MySql version '.mysql_get_server_info());
122}
123
124load_conf_from_db();
125load_plugins();
126
127include(PHPWG_ROOT_PATH.'include/user.inc.php');
128
129if ('fr_FR' == $user['language']) {
130  define('PHPWG_DOMAIN', 'fr.piwigo.org');
131}
132else {
133  define('PHPWG_DOMAIN', 'piwigo.org');
134}
135define('PHPWG_URL', 'http://'.PHPWG_DOMAIN);
136define('PEM_URL', 'http://'.PHPWG_DOMAIN.'/ext');
137
138
139// language files
140load_language('common.lang');
141if ( is_admin() || (defined('IN_ADMIN') and IN_ADMIN) )
142{
143  load_language('admin.lang');
144}
145trigger_action('loading_lang');
146load_language('local.lang', '', array('no_fallback'=>true) );
147
148// only now we can set the localized username of the guest user (and not in
149// include/user.inc.php)
150if (is_a_guest())
151{
152  $user['username'] = l10n('guest');
153}
154
155// template instance
156if ( defined('IN_ADMIN') and IN_ADMIN )
157{// Admin template
158  list($user['admin_template'], $user['admin_theme']) =
159    explode ('/', $conf['admin_layout']);
160  $template = new Template(PHPWG_ROOT_PATH.'admin/template/'
161    . $user['admin_template'], $user['admin_theme'] );
162}
163else
164{ // Classic template
165  $template = new Template(PHPWG_ROOT_PATH.'template/'
166    . $user['template'], $user['theme'] );
167}
168
169if (isset($user['internal_status']['guest_must_be_guest'])
170    and
171    $user['internal_status']['guest_must_be_guest'] === true)
172{
173  $header_msgs[] = l10n('guest_must_be_guest');
174}
175
176if ($conf['gallery_locked'])
177{
178  $header_msgs[] = l10n('gallery_locked_message');
179
180  if ( script_basename() != 'identification' and !is_admin() )
181  {
182    set_status_header(503, 'Service Unavailable');
183    @header('Retry-After: 900');
184    echo l10n('gallery_locked_message')
185      .'<a href="'.get_absolute_root_url(false).'identification.php">.</a>';
186    echo str_repeat( ' ', 512); //IE6 doesn't error output if below a size
187    exit();
188  }
189}
190
191if ($conf['check_upgrade_feed'])
192{
193  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upgrade.php');
194  if (check_upgrade_feed())
195  {
196    $header_msgs[] = 'Some database upgrades are missing, '
197      .'<a href="'.get_absolute_root_url(false).'upgrade_feed.php">upgrade now</a>';
198  }
199}
200
201if (is_adviser())
202{
203  $header_msgs[] = l10n('adviser_mode_enabled');
204}
205
206if (count($header_msgs) > 0)
207{
208  $template->assign('header_msgs', $header_msgs);
209  $header_msgs=array();
210}
211
212if (!empty($conf['filter_pages']) and get_filter_page_value('used'))
213{
214  include(PHPWG_ROOT_PATH.'include/filter.inc.php');
215}
216else
217{
218  $filter['enabled'] = false;
219}
220
221if (isset($conf['header_notes']))
222{
223  $header_notes = array_merge($header_notes, $conf['header_notes']);
224}
225
226// default event handlers
227add_event_handler('render_category_literal_description', 'render_category_literal_description');
228if ( !$conf['allow_html_descriptions'] )
229{
230  add_event_handler('render_category_description', 'nl2br');
231}
232add_event_handler('render_comment_content', 'htmlspecialchars');
233add_event_handler('render_comment_content', 'parse_comment_content');
234add_event_handler('render_comment_author', 'strip_tags');
235add_event_handler('blockmanager_register_blocks', 'register_default_menubar_blocks', EVENT_HANDLER_PRIORITY_NEUTRAL-1);
236trigger_action('init');
237?>
Note: See TracBrowser for help on using the repository browser.