<?php // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ // | Copyright(C) 2008-2013 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ // | This program is free software; you can redistribute it and/or modify | // | it under the terms of the GNU General Public License as published by | // | the Free Software Foundation | // | | // | This program is distributed in the hope that it will be useful, but | // | WITHOUT ANY WARRANTY; without even the implied warranty of | // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | // | General Public License for more details. | // | | // | You should have received a copy of the GNU General Public License | // | along with this program; if not, write to the Free Software | // | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | // | USA. | // +-----------------------------------------------------------------------+ class c13y_internal { function c13y_internal() { add_event_handler('list_check_integrity', array(&$this, 'c13y_version')); add_event_handler('list_check_integrity', array(&$this, 'c13y_exif')); add_event_handler('list_check_integrity', array(&$this, 'c13y_user')); } /** * Check version * * @param c13y object * @return void */ function c13y_version($c13y) { global $conf; $check_list = array(); $check_list[] = array('type' => 'PHP', 'current' => phpversion(), 'required' => REQUIRED_PHP_VERSION); $db_version = pwg_get_db_version(); $check_list[] = array('type' => $conf['dblayer'], 'current' => $db_version, 'required' => constant('REQUIRED_'.str_replace('-', '_', strtoupper($conf['dblayer'])).'_VERSION') ); foreach ($check_list as $elem) { if (version_compare($elem['current'], $elem['required'], '<')) { $c13y->add_anomaly( sprintf(l10n('The version of %s [%s] installed is not compatible with the version required [%s]'), $elem['type'], $elem['current'], $elem['required']), null, null, l10n('You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all') .'<br>'. $c13y->get_htlm_links_more_info()); } } } /** * Check exif * * @param c13y object * @return void */ function c13y_exif($c13y) { global $conf; foreach (array('show_exif', 'use_exif') as $value) { if (($conf[$value]) and (!function_exists('read_exif_data'))) { $c13y->add_anomaly( sprintf(l10n('%s value is not correct file because exif are not supported'), '$conf[\''.$value.'\']'), null, null, sprintf(l10n('%s must be to set to false in your local/config/config.inc.php file'), '$conf[\''.$value.'\']') .'<br>'. $c13y->get_htlm_links_more_info()); } } } /** * Check user * * @param c13y object * @return void */ function c13y_user($c13y) { global $conf; $c13y_users = array(); $c13y_users[$conf['guest_id']] = array( 'status' => 'guest', 'l10n_non_existent' => 'Main "guest" user does not exist', 'l10n_bad_status' => 'Main "guest" user status is incorrect'); if ($conf['guest_id'] != $conf['default_user_id']) { $c13y_users[$conf['default_user_id']] = array( 'password' => null, 'l10n_non_existent' => 'Default user does not exist'); } $c13y_users[$conf['webmaster_id']] = array( 'status' => 'webmaster', 'l10n_non_existent' => 'Main "webmaster" user does not exist', 'l10n_bad_status' => 'Main "webmaster" user status is incorrect'); $query = ' select u.'.$conf['user_fields']['id'].' as id, ui.status from '.USERS_TABLE.' as u left join '.USER_INFOS_TABLE.' as ui on u.'.$conf['user_fields']['id'].' = ui.user_id where u.'.$conf['user_fields']['id'].' in ('.implode(',', array_keys($c13y_users)).') ;'; $status = array(); $result = pwg_query($query); while ($row = pwg_db_fetch_assoc($result)) { $status[$row['id']] = $row['status']; } foreach ($c13y_users as $id => $data) { if (!array_key_exists($id, $status)) { $c13y->add_anomaly(l10n($data['l10n_non_existent']), 'c13y_correction_user', array('id' => $id, 'action' => 'creation')); } else if (!empty($data['status']) and $status[$id] != $data['status']) { $c13y->add_anomaly(l10n($data['l10n_bad_status']), 'c13y_correction_user', array('id' => $id, 'action' => 'status')); } } } /** * Do correction user * * @param user_id, action * @return boolean true if ok else false */ function c13y_correction_user($id, $action) { global $conf, $page; $result = false; if (!empty($id)) { switch ($action) { case 'creation': if ($id == $conf['guest_id']) { $name = 'guest'; $password = null; } else if ($id == $conf['default_user_id']) { $name = 'guest'; $password = null; } else if ($id == $conf['webmaster_id']) { $name = 'webmaster'; $password = generate_key(6); } if (isset($name)) { $name_ok = false; while (!$name_ok) { $name_ok = (get_userid($name) === false); if (!$name_ok) { $name .= generate_key(1); } } $inserts = array( array( 'id' => $id, 'username' => addslashes($name), 'password' => $password ), ); mass_inserts(USERS_TABLE, array_keys($inserts[0]), $inserts); create_user_infos($id); $page['infos'][] = sprintf(l10n('User "%s" created with "%s" like password'), $name, $password); $result = true; } break; case 'status': if ($id == $conf['guest_id']) { $status = 'guest'; } else if ($id == $conf['default_user_id']) { $status = 'guest'; } else if ($id == $conf['webmaster_id']) { $status = 'webmaster'; } if (isset($status)) { $updates = array( array( 'user_id' => $id, 'status' => $status ), ); mass_updates(USER_INFOS_TABLE, array('primary' => array('user_id'),'update' => array('status')), $updates); $page['infos'][] = sprintf(l10n('Status of user "%s" updated'), get_username($id)); $result = true; } break; } } return $result; } } ?>