From f54877ca04e9e99e67b94f7c486229d4c6543a8a Mon Sep 17 00:00:00 2001 From: rub Date: Sat, 1 Mar 2008 13:23:51 +0000 Subject: 0000809: Use more php classes implementation Use class for c13y git-svn-id: http://piwigo.org/svn/trunk@2232 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/include/c13y_internal.class.php | 221 ++++++++++ admin/include/check_integrity.class.php | 359 ++++++++++++++++ admin/include/functions_check_integrity.inc.php | 533 ------------------------ 3 files changed, 580 insertions(+), 533 deletions(-) create mode 100644 admin/include/c13y_internal.class.php create mode 100644 admin/include/check_integrity.class.php delete mode 100644 admin/include/functions_check_integrity.inc.php (limited to 'admin/include') diff --git a/admin/include/c13y_internal.class.php b/admin/include/c13y_internal.class.php new file mode 100644 index 000000000..64c5d4d9f --- /dev/null +++ b/admin/include/c13y_internal.class.php @@ -0,0 +1,221 @@ +add_anomaly( + sprintf(l10n('c13y_exif_anomaly'), '$conf[\''.$value.'\']'), + null, + null, + sprintf(l10n('c13y_exif_correction'), '$conf[\''.$value.'\']') + .'
'. + $c13y->get_htlm_links_more_info()); + } + } + } + + /** + * Check user + * + * @param void + * @return void + */ + function c13y_user($c13y) + { + global $conf; + + $c13y_users = array(); + $c13y_users[$conf['guest_id']] = array( + 'status' => 'guest', + 'l10n_non_existent' => 'c13y_guest_non_existent', + 'l10n_bad_status' => 'c13y_bad_guest_status'); + + if ($conf['guest_id'] != $conf['default_user_id']) + { + $c13y_users[$conf['default_user_id']] = array( + 'password' => null, + 'l10n_non_existent' => 'c13y_default_non_existent'); + } + + $c13y_users[$conf['webmaster_id']] = array( + 'status' => 'webmaster', + 'l10n_non_existent' => 'c13y_webmaster_non_existent', + 'l10n_bad_status' => 'c13y_bad_webmaster_status'); + + $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 = mysql_fetch_array($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' => $name, + 'password' => $password + ), + ); + mass_inserts(USERS_TABLE, array_keys($inserts[0]), $inserts); + + create_user_infos($id); + + $page['infos'][] = sprintf(l10n('c13y_user_created'), $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('c13y_user_status_updated'), get_username($id)); + + $result = true; + } + break; + } + } + + return $result; + } +} + +?> diff --git a/admin/include/check_integrity.class.php b/admin/include/check_integrity.class.php new file mode 100644 index 000000000..8398d5d9c --- /dev/null +++ b/admin/include/check_integrity.class.php @@ -0,0 +1,359 @@ +ignore_list = array(); + $this->retrieve_list = array(); + $this->build_ignore_list = array(); + } + + /** + * Check integrities + * + * @param void + * @return void + */ + function check() + { + global $page, $header_notes, $conf; + + // Ignore list + $conf_c13y_ignore = unserialize($conf['c13y_ignore']); + if ( + is_array($conf_c13y_ignore) and + isset($conf_c13y_ignore['version']) and + ($conf_c13y_ignore['version'] == PHPWG_VERSION) and + is_array($conf_c13y_ignore['list']) + ) + { + $ignore_list_changed = false; + $this->ignore_list = $conf_c13y_ignore['list']; + } + else + { + $ignore_list_changed = true; + $this->ignore_list = array(); + } + + // Retrieve list + $this->retrieve_list = array(); + $this->build_ignore_list = array(); + + trigger_action('list_check_integrity', &$this); + + // Information + if (count($this->retrieve_list) > 0) + { + $header_notes[] = + l10n_dec('c13y_anomaly_count', 'c13y_anomalies_count', + count($this->retrieve_list)); + } + + // Treatments + if (!is_adviser()) + { + if (isset($_POST['c13y_submit_correction']) and isset($_POST['c13y_selection'])) + { + $corrected_count = 0; + $not_corrected_count = 0; + + foreach ($this->retrieve_list as $i => $c13y) + { + if (!empty($c13y['correction_fct']) and + $c13y['is_callable'] and + in_array($c13y['id'], $_POST['c13y_selection'])) + { + if (is_array($c13y['correction_fct_args'])) + { + $args = $c13y['correction_fct_args']; + } + else + if (!is_null($c13y['correction_fct_args'])) + { + $args = array($c13y['correction_fct_args']); + } + else + { + $args = array(); + } + $this->retrieve_list[$i]['corrected'] = call_user_func_array($c13y['correction_fct'], $args); + + if ($this->retrieve_list[$i]['corrected']) + { + $corrected_count += 1; + } + else + { + $not_corrected_count += 1; + } + } + } + + if ($corrected_count > 0) + { + $page['infos'][] = + l10n_dec('c13y_anomaly_corrected_count', 'c13y_anomalies_corrected_count', + $corrected_count); + } + if ($not_corrected_count > 0) + { + $page['errors'][] = + l10n_dec('c13y_anomaly_not_corrected_count', 'c13y_anomalies_not_corrected_count', + $not_corrected_count); + } + } + else + { + if (isset($_POST['c13y_submit_ignore']) and isset($_POST['c13y_selection'])) + { + $ignored_count = 0; + + foreach ($this->retrieve_list as $i => $c13y) + { + if (in_array($c13y['id'], $_POST['c13y_selection'])) + { + $this->build_ignore_list[] = $c13y['id']; + $this->retrieve_list[$i]['ignored'] = true; + $ignored_count += 1; + } + } + + if ($ignored_count > 0) + { + $page['infos'][] = + l10n_dec('c13y_anomaly_ignored_count', 'c13y_anomalies_ignored_count', + $ignored_count); + } + } + } + } + + $ignore_list_changed = + ( + ($ignore_list_changed) or + (count(array_diff($this->ignore_list, $this->build_ignore_list)) > 0) or + (count(array_diff($this->build_ignore_list, $this->ignore_list)) > 0) + ); + + if ($ignore_list_changed) + { + $this->update_conf($this->build_ignore_list); + } + } + + /** + * Display anomalies list + * + * @param void + * @return void + */ + function display() + { + global $template; + + $check_automatic_correction = false; + $submit_automatic_correction = false; + $submit_ignore = false; + + if (isset($this->retrieve_list) and count($this->retrieve_list) > 0) + { + $template->set_filenames(array('check_integrity' => 'admin/check_integrity.tpl')); + + foreach ($this->retrieve_list as $i => $c13y) + { + $can_select = false; + + $template->assign_block_vars('c13y', + array( + 'CLASS' => ($i % 2 == 1) ? 'row2' : 'row1', + 'ID' => $c13y['id'], + 'ANOMALY' => $c13y['anomaly'] + )); + + + if (isset($c13y['ignored'])) + { + if ($c13y['ignored']) + { + $template->assign_block_vars('c13y.ignore_msg', array()); + } + else + { + die('$c13y[\'ignored\'] cannot be false'); + } + } + else + { + if (!empty($c13y['correction_fct'])) + { + if (isset($c13y['corrected'])) + { + if ($c13y['corrected']) + { + $template->assign_block_vars('c13y.correction_success_fct', array()); + } + else + { + $template->assign_block_vars('c13y.correction_error_fct', + array('WIKI_FOROM_LINKS' => $this->get_htlm_links_more_info())); + } + } + else if ($c13y['is_callable']) + { + $template->assign_block_vars('c13y.correction_fct', array()); + $template->assign_block_vars('c13y_link_check_automatic_correction.c13y_do_check', array('ID' => $c13y['id'])); + $submit_automatic_correction = true; + $can_select = true; + } + else + { + $template->assign_block_vars('c13y.correction_bad_fct', array()); + $can_select = true; + } + } + else + { + $can_select = true; + } + + if (!empty($c13y['correction_fct']) and !empty($c13y['correction_msg'])) + { + $template->assign_block_vars('c13y.br', array()); + } + + if (!empty($c13y['correction_msg']) and !isset($c13y['corrected'])) + { + $template->assign_block_vars('c13y.correction_msg', + array( + 'DATA' => nl2br($c13y['correction_msg']) + )); + } + } + + if ($can_select) + { + $template->assign_block_vars('c13y.can_select', array()); + $submit_ignore = true; + } + } + + if ($submit_automatic_correction) + { + $template->assign_block_vars('c13y_submit_automatic_correction', array()); + } + + if ($submit_ignore) + { + $template->assign_block_vars('c13y_link_check_uncheck', array()); + $template->assign_block_vars('c13y_submit_ignore', array()); + } + + $template->concat_var('ADMIN_CONTENT', $template->parse('check_integrity', true) ); + } + } + + /** + * Add anomaly data + * + * @param anomaly arguments + * @return void + */ + function add_anomaly($anomaly, $correction_fct = null, $correction_fct_args = null, $correction_msg = null) + { + $id = md5($anomaly.$correction_fct.serialize($correction_fct_args).$correction_msg); + + if (in_array($id, $this->ignore_list)) + { + $this->build_ignore_list[] = $id; + } + else + { + $this->retrieve_list[] = + array( + 'id' => $id, + 'anomaly' => $anomaly, + 'correction_fct' => $correction_fct, + 'correction_fct_args' => $correction_fct_args, + 'correction_msg' => $correction_msg, + 'is_callable' => is_callable($correction_fct)); + } + } + + /** + * Update table config + * + * @param ignore list array + * @return void + */ + function update_conf($conf_ignore_list = array()) + { + $conf_c13y_ignore = array(); + $conf_c13y_ignore['version'] = PHPWG_VERSION; + $conf_c13y_ignore['list'] = $conf_ignore_list; + $query = 'update '.CONFIG_TABLE.' set value =\''.serialize($conf_c13y_ignore).'\'where param = \'c13y_ignore\';'; + pwg_query($query); + } + + /** + * Apply maintenance + * + * @param void + * @return void + */ + function maintenance() + { + $this->update_conf(); + } + + /** + * Returns links more informations + * + * @param void + * @return html links + */ + function get_htlm_links_more_info() + { + $pwg_links = pwg_URL(); + $link_fmt = '%s'; + return + sprintf + ( + l10n('c13y_more_info'), + sprintf($link_fmt, $pwg_links['FORUM'], l10n('c13y_more_info_forum')), + sprintf($link_fmt, $pwg_links['WIKI'], l10n('c13y_more_info_wiki')) + ); + } + +} + +?> diff --git a/admin/include/functions_check_integrity.inc.php b/admin/include/functions_check_integrity.inc.php deleted file mode 100644 index 5f409cf84..000000000 --- a/admin/include/functions_check_integrity.inc.php +++ /dev/null @@ -1,533 +0,0 @@ - 0) - { - $header_notes[] = - l10n_dec('c13y_anomaly_count', 'c13y_anomalies_count', - count($page['check_integrity']['list'])); - } - - // Treatments - if (!is_adviser()) - { - if (isset($_POST['c13y_submit_correction']) and isset($_POST['c13y_selection'])) - { - $corrected_count = 0; - $not_corrected_count = 0; - - foreach ($page['check_integrity']['list'] as $i => $c13y) - { - if (!empty($c13y['correction_fct']) and - $c13y['is_callable'] and - in_array($c13y['id'], $_POST['c13y_selection'])) - { - if (is_array($c13y['correction_fct_args'])) - { - $args = $c13y['correction_fct_args']; - } - else - if (!is_null($c13y['correction_fct_args'])) - { - $args = array($c13y['correction_fct_args']); - } - else - { - $args = array(); - } - $page['check_integrity']['list'][$i]['corrected'] = call_user_func_array($c13y['correction_fct'], $args); - - if ($page['check_integrity']['list'][$i]['corrected']) - { - $corrected_count += 1; - } - else - { - $not_corrected_count += 1; - } - } - } - - if ($corrected_count > 0) - { - $page['infos'][] = - l10n_dec('c13y_anomaly_corrected_count', 'c13y_anomalies_corrected_count', - $corrected_count); - } - if ($not_corrected_count > 0) - { - $page['errors'][] = - l10n_dec('c13y_anomaly_not_corrected_count', 'c13y_anomalies_not_corrected_count', - $not_corrected_count); - } - } - else - { - if (isset($_POST['c13y_submit_ignore']) and isset($_POST['c13y_selection'])) - { - $ignored_count = 0; - - foreach ($page['check_integrity']['list'] as $i => $c13y) - { - if (in_array($c13y['id'], $_POST['c13y_selection'])) - { - $page['check_integrity']['build_ignore_list'][] = $c13y['id']; - $page['check_integrity']['list'][$i]['ignored'] = true; - $ignored_count += 1; - } - } - - if ($ignored_count > 0) - { - $page['infos'][] = - l10n_dec('c13y_anomaly_ignored_count', 'c13y_anomalies_ignored_count', - $ignored_count); - } - } - } - } - - $ignore_list_changed = - ( - ($ignore_list_changed) or - (count(array_diff($page['check_integrity']['ignore_list'], $page['check_integrity']['build_ignore_list'])) > 0) or - (count(array_diff($page['check_integrity']['build_ignore_list'], $page['check_integrity']['ignore_list'])) > 0) - ); - - if ($ignore_list_changed) - { - c13y_update_conf($page['check_integrity']['build_ignore_list']); - } -} - -/** - * Display anomalies list - * - * @param void - * @return void - */ -function display_check_integrity() -{ - global $template, $page; - - $check_automatic_correction = false; - $submit_automatic_correction = false; - $submit_ignore = false; - - if (isset($page['check_integrity']['list']) and count($page['check_integrity']['list']) > 0) - { - $template->set_filenames(array('check_integrity' => 'admin/check_integrity.tpl')); - - foreach ($page['check_integrity']['list'] as $i => $c13y) - { - $can_select = false; - - $template->assign_block_vars('c13y', - array( - 'CLASS' => ($i % 2 == 1) ? 'row2' : 'row1', - 'ID' => $c13y['id'], - 'ANOMALY' => $c13y['anomaly'] - )); - - - if (isset($c13y['ignored'])) - { - if ($c13y['ignored']) - { - $template->assign_block_vars('c13y.ignore_msg', array()); - } - else - { - die('$c13y[\'ignored\'] cannot be false'); - } - } - else - { - if (!empty($c13y['correction_fct'])) - { - if (isset($c13y['corrected'])) - { - if ($c13y['corrected']) - { - $template->assign_block_vars('c13y.correction_success_fct', array()); - } - else - { - $template->assign_block_vars('c13y.correction_error_fct', - array('WIKI_FOROM_LINKS' => get_htlm_links_more_info())); - } - } - else if ($c13y['is_callable']) - { - $template->assign_block_vars('c13y.correction_fct', array()); - $template->assign_block_vars('c13y_link_check_automatic_correction.c13y_do_check', array('ID' => $c13y['id'])); - $submit_automatic_correction = true; - $can_select = true; - } - else - { - $template->assign_block_vars('c13y.correction_bad_fct', array()); - $can_select = true; - } - } - else - { - $can_select = true; - } - - if (!empty($c13y['correction_fct']) and !empty($c13y['correction_msg'])) - { - $template->assign_block_vars('c13y.br', array()); - } - - if (!empty($c13y['correction_msg']) and !isset($c13y['corrected'])) - { - $template->assign_block_vars('c13y.correction_msg', - array( - 'DATA' => nl2br($c13y['correction_msg']) - )); - } - } - - if ($can_select) - { - $template->assign_block_vars('c13y.can_select', array()); - $submit_ignore = true; - } - } - - if ($submit_automatic_correction) - { - $template->assign_block_vars('c13y_submit_automatic_correction', array()); - } - - if ($submit_ignore) - { - $template->assign_block_vars('c13y_link_check_uncheck', array()); - $template->assign_block_vars('c13y_submit_ignore', array()); - } - - $template->concat_var('ADMIN_CONTENT', $template->parse('check_integrity', true) ); - } -} - -/** - * Returns structured anomaly data - * - * @param anomaly arguments - * @return c13y anomaly array - */ -function add_c13y($anomaly, $correction_fct = null, $correction_fct_args = null, $correction_msg = null) -{ - global $page; - - $id = md5($anomaly.$correction_fct.serialize($correction_fct_args).$correction_msg); - - if (in_array($id, $page['check_integrity']['ignore_list'])) - { - $page['check_integrity']['build_ignore_list'][] = $id; - } - else - { - $page['check_integrity']['list'][] = - array( - 'id' => $id, - 'anomaly' => $anomaly, - 'correction_fct' => $correction_fct, - 'correction_fct_args' => $correction_fct_args, - 'correction_msg' => $correction_msg, - 'is_callable' => is_callable($correction_fct)); - } -} - -/** - * Update table config - * - * @param ignore list array - * @return void - */ -function c13y_update_conf($ignore_list = array()) -{ - $conf_c13y_ignore = array(); - $conf_c13y_ignore['version'] = PHPWG_VERSION; - $conf_c13y_ignore['list'] = $ignore_list; - $query = 'update '.CONFIG_TABLE.' set value =\''.serialize($conf_c13y_ignore).'\'where param = \'c13y_ignore\';'; - pwg_query($query); -} - -/** - * Apply maintenance - * - * @param void - * @return void - */ -function c13y_maintenance() -{ - c13y_update_conf(); -} - -/** - * Returns links more informations - * - * @param void - * @return html links - */ -function get_htlm_links_more_info() -{ - $pwg_links = pwg_URL(); - $link_fmt = '%s'; - return - sprintf - ( - l10n('c13y_more_info'), - sprintf($link_fmt, $pwg_links['FORUM'], l10n('c13y_more_info_forum')), - sprintf($link_fmt, $pwg_links['WIKI'], l10n('c13y_more_info_wiki')) - ); -} - -/** - * Check exif - * - * @param void - * @return void - */ -function c13y_exif() -{ - global $conf; - - foreach (array('show_exif', 'use_exif') as $value) - { - if (($conf[$value]) and (!function_exists('read_exif_data'))) - { - add_c13y( - sprintf(l10n('c13y_exif_anomaly'), '$conf[\''.$value.'\']'), - null, - null, - sprintf(l10n('c13y_exif_correction'), '$conf[\''.$value.'\']') - .'
'. - get_htlm_links_more_info()); - } - } -} - -/** - * Check user - * - * @param void - * @return void - */ -function c13y_user() -{ - global $conf; - - $c13y_users = array(); - $c13y_users[$conf['guest_id']] = array( - 'status' => 'guest', - 'l10n_non_existent' => 'c13y_guest_non_existent', - 'l10n_bad_status' => 'c13y_bad_guest_status'); - - if ($conf['guest_id'] != $conf['default_user_id']) - { - $c13y_users[$conf['default_user_id']] = array( - 'password' => null, - 'l10n_non_existent' => 'c13y_default_non_existent'); - } - - $c13y_users[$conf['webmaster_id']] = array( - 'status' => 'webmaster', - 'l10n_non_existent' => 'c13y_webmaster_non_existent', - 'l10n_bad_status' => 'c13y_bad_webmaster_status'); - - $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 = mysql_fetch_array($result)) - { - $status[$row['id']] = $row['status']; - } - - foreach ($c13y_users as $id => $data) - { - if (!array_key_exists($id, $status)) - { - add_c13y(l10n($data['l10n_non_existent']), 'c13y_correction_user', - array('id' => $id, 'action' => 'creation')); - } - else - if (!empty($data['status']) and $status[$id] != $data['status']) - { - add_c13y(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' => $name, - 'password' => $password - ), - ); - mass_inserts(USERS_TABLE, array_keys($inserts[0]), $inserts); - - create_user_infos($id); - - $page['infos'][] = sprintf(l10n('c13y_user_created'), $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('c13y_user_status_updated'), get_username($id)); - - $result = true; - } - break; - } - } - - return $result; -} - -?> -- cgit v1.2.3