From 438ef8fb1fc9c7a05d9333fc562edf999b522736 Mon Sep 17 00:00:00 2001 From: "glix08@gmail.com" Date: Mon, 20 Jan 2014 21:03:46 +0000 Subject: [PATCH] r564 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Очистка от неиспользуемого мусора в репозитарии; попытки начать рефакторинг движка на примере ajax.php git-svn-id: https://torrentpier2.googlecode.com/svn/trunk@564 a8ac35ab-4ca4-ca47-4c2d-a49a94f06293 --- upload/ajax.php | 252 ++++++++---------- upload/config.php | 4 +- upload/develop/source/Date_DeltaRussian.rar | Bin 1250 -> 0 bytes upload/develop/source/Globals.zip | Bin 3175 -> 0 bytes upload/develop/source/benchmark.rar | Bin 4841 -> 0 bytes .../javascript_browser_detection_basic.rar | Bin 1882 -> 0 bytes upload/develop/source/js-sprintf.rar | Bin 4248 -> 0 bytes upload/develop/source/profiler.zip | Bin 3658 -> 0 bytes 8 files changed, 118 insertions(+), 138 deletions(-) delete mode 100644 upload/develop/source/Date_DeltaRussian.rar delete mode 100644 upload/develop/source/Globals.zip delete mode 100644 upload/develop/source/benchmark.rar delete mode 100644 upload/develop/source/javascript_browser_detection_basic.rar delete mode 100644 upload/develop/source/js-sprintf.rar delete mode 100644 upload/develop/source/profiler.zip diff --git a/upload/ajax.php b/upload/ajax.php index 7b5a5f223..994edae67 100644 --- a/upload/ajax.php +++ b/upload/ajax.php @@ -1,6 +1,8 @@ init(); // Handle "board disabled via ON/OFF trigger" -if (file_exists(BB_DISABLED)) -{ +if (file_exists(BB_DISABLED)) { $ajax->ajax_die($bb_cfg['board_disabled_msg']); } // Load actions required modules -switch ($ajax->action) -{ +switch ($ajax->action) { case 'view_post': - require(INC_DIR .'bbcode.php'); - break; + require(INC_DIR . 'bbcode.php'); + break; case 'posts': case 'post_mod_comment': - require(INC_DIR .'bbcode.php'); - require(INC_DIR .'functions_post.php'); - require(INC_DIR .'functions_admin.php'); - break; + require(INC_DIR . 'bbcode.php'); + require(INC_DIR . 'functions_post.php'); + require(INC_DIR . 'functions_admin.php'); + break; case 'view_torrent': case 'mod_action': case 'change_tor_status': case 'gen_passkey'; - require(BB_ROOT .'attach_mod/attachment_mod.php'); - require(INC_DIR .'functions_torrent.php'); - break; + require(BB_ROOT . 'attach_mod/attachment_mod.php'); + require(INC_DIR . 'functions_torrent.php'); + break; case 'change_torrent': - require(BB_ROOT .'attach_mod/attachment_mod.php'); - require(INC_DIR .'functions_torrent.php'); - break; + require(BB_ROOT . 'attach_mod/attachment_mod.php'); + require(INC_DIR . 'functions_torrent.php'); + break; case 'user_register': - require(INC_DIR .'functions_validate.php'); - break; + require(INC_DIR . 'functions_validate.php'); + break; case 'manage_user': - require(INC_DIR .'functions_admin.php'); - break; + require(INC_DIR . 'functions_admin.php'); + break; case 'group_membership': - require(INC_DIR .'functions_group.php'); - break; + require(INC_DIR . 'functions_group.php'); + break; } // position in $ajax->valid_actions['xxx'] -define('AJAX_AUTH', 0); // 'guest', 'user', 'mod', 'admin', 'super_admin' +define('AJAX_AUTH', 0); // 'guest', 'user', 'mod', 'admin', 'super_admin' $user->session_start(); $ajax->exec(); @@ -64,11 +64,11 @@ $ajax->exec(); // class ajax_common { - var $request = array(); + var $request = array(); var $response = array(); var $valid_actions = array( - // ACTION NAME AJAX_AUTH + // ACTION NAME AJAX_AUTH 'edit_user_profile' => array('admin'), 'change_user_rank' => array('admin'), 'change_user_opt' => array('admin'), @@ -89,85 +89,76 @@ class ajax_common 'user_register' => array('guest'), 'posts' => array('guest'), 'index_data' => array('guest'), -); + ); var $action = null; /** - * Constructor - */ - function ajax_common () + * Constructor + */ + function ajax_common() { ob_start(array(&$this, 'ob_handler')); header('Content-Type: text/plain'); } /** - * Perform action - */ - function exec () + * Perform action + */ + function exec() { global $lang; // Exit if we already have errors - if (!empty($this->response['error_code'])) - { + if (!empty($this->response['error_code'])) { $this->send(); } // Check that requested action is valid $action = $this->action; - if (!$action || !is_string($action)) - { + if (!$action || !is_string($action)) { $this->ajax_die('no action specified'); - } - elseif (!$action_params =& $this->valid_actions[$action]) - { - $this->ajax_die('invalid action: '. $action); + } elseif (!$action_params =& $this->valid_actions[$action]) { + $this->ajax_die('invalid action: ' . $action); } // Auth check - switch ($action_params[AJAX_AUTH]) - { + switch ($action_params[AJAX_AUTH]) { // GUEST case 'guest': - break; + break; // USER case 'user': - if (IS_GUEST) - { + if (IS_GUEST) { $this->ajax_die($lang['NEED_TO_LOGIN_FIRST']); } - break; + break; // MOD case 'mod': - if (!IS_AM) - { + if (!IS_AM) { $this->ajax_die($lang['ONLY_FOR_MOD']); } $this->check_admin_session(); - break; + break; // ADMIN case 'admin': - if (!IS_ADMIN) - { + if (!IS_ADMIN) { $this->ajax_die($lang['ONLY_FOR_ADMIN']); } $this->check_admin_session(); - break; + break; // SUPER_ADMIN case 'super_admin': - if (!IS_SUPER_ADMIN) - { + if (!IS_SUPER_ADMIN) { $this->ajax_die($lang['ONLY_FOR_SUPER_ADMIN']); } $this->check_admin_session(); - break; + break; default: trigger_error("invalid auth type for $action", E_USER_ERROR); @@ -181,9 +172,9 @@ class ajax_common } /** - * Exit on error - */ - function ajax_die ($error_msg, $error_code = E_AJAX_GENERAL_ERROR) + * Exit on error + */ + function ajax_die($error_msg, $error_code = E_AJAX_GENERAL_ERROR) { $this->response['error_code'] = $error_code; $this->response['error_msg'] = $error_msg; @@ -192,23 +183,22 @@ class ajax_common } /** - * Initialization - */ - function init () + * Initialization + */ + function init() { $this->request = $_POST; - $this->action =& $this->request['action']; + $this->action =& $this->request['action']; } /** - * Send data - */ - function send () + * Send data + */ + function send() { $this->response['action'] = $this->action; - if (DBG_USER && SQL_DEBUG && !empty($_COOKIE['sql_log'])) - { + if (DBG_USER && SQL_DEBUG && !empty($_COOKIE['sql_log'])) { $this->response['sql_log'] = get_sql_log(); } @@ -217,24 +207,20 @@ class ajax_common } /** - * OB Handler - */ - function ob_handler ($contents) + * OB Handler + */ + function ob_handler($contents) { - if (DBG_USER) - { - if ($contents) - { + if (DBG_USER) { + if ($contents) { $this->response['raw_output'] = $contents; } } $response_js = bb_json_encode($this->response); - if (GZIP_OUTPUT_ALLOWED && !defined('NO_GZIP')) - { - if (UA_GZIP_SUPPORTED && strlen($response_js) > 2000) - { + if (GZIP_OUTPUT_ALLOWED && !defined('NO_GZIP')) { + if (UA_GZIP_SUPPORTED && strlen($response_js) > 2000) { header('Content-Encoding: gzip'); $response_js = gzencode($response_js, 1); } @@ -244,26 +230,21 @@ class ajax_common } /** - * Admin session - */ - function check_admin_session () + * Admin session + */ + function check_admin_session() { global $user; - if (!$user->data['session_admin']) - { - if (empty($this->request['user_password'])) - { + if (!$user->data['session_admin']) { + if (empty($this->request['user_password'])) { $this->prompt_for_password(); - } - else - { + } else { $login_args = array( 'login_username' => $user->data['username'], 'login_password' => $_POST['user_password'], ); - if (!$user->login($login_args, true)) - { + if (!$user->login($login_args, true)) { $this->ajax_die('Wrong password'); } } @@ -271,20 +252,20 @@ class ajax_common } /** - * Prompt for password - */ - function prompt_for_password () + * Prompt for password + */ + function prompt_for_password() { $this->response['prompt_password'] = 1; $this->send(); } /** - * Prompt for confirmation - */ - function prompt_for_confirm ($confirm_msg) + * Prompt for confirmation + */ + function prompt_for_confirm($confirm_msg) { - if(empty($confirm_msg)) $this->ajax_die('false'); + if (empty($confirm_msg)) $this->ajax_die('false'); $this->response['prompt_confirm'] = 1; $this->response['confirm_msg'] = $confirm_msg; @@ -292,102 +273,101 @@ class ajax_common } /** - * Verify mod rights - */ - function verify_mod_rights ($forum_id) + * Verify mod rights + */ + function verify_mod_rights($forum_id) { global $userdata, $lang; $is_auth = auth(AUTH_MOD, $forum_id, $userdata); - if (!$is_auth['auth_mod']) - { + if (!$is_auth['auth_mod']) { $this->ajax_die($lang['ONLY_FOR_MOD']); } } - function edit_user_profile () + function edit_user_profile() { - require(AJAX_DIR .'edit_user_profile.php'); + require(AJAX_DIR . 'edit_user_profile.php'); } - function change_user_rank () + function change_user_rank() { - require(AJAX_DIR .'change_user_rank.php'); + require(AJAX_DIR . 'change_user_rank.php'); } - function change_user_opt () + function change_user_opt() { - require(AJAX_DIR .'change_user_opt.php'); + require(AJAX_DIR . 'change_user_opt.php'); } - function gen_passkey () + function gen_passkey() { - require(AJAX_DIR .'gen_passkey.php'); + require(AJAX_DIR . 'gen_passkey.php'); } - function group_membership () + function group_membership() { - require(AJAX_DIR .'group_membership.php'); + require(AJAX_DIR . 'group_membership.php'); } - function post_mod_comment () + function post_mod_comment() { - require(AJAX_DIR .'post_mod_comment.php'); + require(AJAX_DIR . 'post_mod_comment.php'); } - function view_post () + function view_post() { - require(AJAX_DIR .'view_post.php'); + require(AJAX_DIR . 'view_post.php'); } - function change_tor_status () + function change_tor_status() { - require(AJAX_DIR .'change_tor_status.php'); + require(AJAX_DIR . 'change_tor_status.php'); } - function change_torrent () + function change_torrent() { - require(AJAX_DIR .'change_torrent.php'); + require(AJAX_DIR . 'change_torrent.php'); } - function view_torrent () + function view_torrent() { - require(AJAX_DIR .'view_torrent.php'); + require(AJAX_DIR . 'view_torrent.php'); } - function user_register () + function user_register() { - require(AJAX_DIR .'user_register.php'); + require(AJAX_DIR . 'user_register.php'); } - function mod_action () + function mod_action() { - require(AJAX_DIR .'mod_action.php'); + require(AJAX_DIR . 'mod_action.php'); } - function posts () + function posts() { - require(AJAX_DIR .'posts.php'); + require(AJAX_DIR . 'posts.php'); } - function manage_user () + function manage_user() { - require(AJAX_DIR .'manage_user.php'); + require(AJAX_DIR . 'manage_user.php'); } - function topic_tpl () + function topic_tpl() { - require(AJAX_DIR .'topic_tpl.php'); + require(AJAX_DIR . 'topic_tpl.php'); } - function index_data () + function index_data() { - require(AJAX_DIR .'index_data.php'); + require(AJAX_DIR . 'index_data.php'); } - function view_profile () + function view_profile() { - require(AJAX_DIR .'view_profile.php'); + require(AJAX_DIR . 'view_profile.php'); } } \ No newline at end of file diff --git a/upload/config.php b/upload/config.php index ff96ef7b3..271094fcf 100644 --- a/upload/config.php +++ b/upload/config.php @@ -55,8 +55,8 @@ $domain_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $do // Increase number of revision after update $bb_cfg['tp_version'] = '2.5 (unstable)'; -$bb_cfg['tp_release_date'] = '19-01-2014'; -$bb_cfg['tp_release_state'] = 'R563'; +$bb_cfg['tp_release_date'] = '21-01-2014'; +$bb_cfg['tp_release_state'] = 'R564'; // Database $charset = 'utf8'; diff --git a/upload/develop/source/Date_DeltaRussian.rar b/upload/develop/source/Date_DeltaRussian.rar deleted file mode 100644 index 8ebac0b3ef8630ff37e443ba375807b9b652d628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1250 zcmV<81ReWQVR9iF2LL{!IAkyL+|O2&B(k zG+5-v2*RFpg@?W5l34!36`t?rHt2`1L_ryEEvD=U4bo($@g8)gJ0POK6PT7b#p$$IUl2sNF-sG4`S;dZgxj{$?#`aQpEs!{OmJhfVZC z9RCINMyF;HYDVUo3Rb3a4@7ka*qX(OAN^JI6P%c^WdLJ=``QlSsuXnJpGzJ_Qzw=> zn$7&-eiW{-;vtHien2#LmYUXX4{^K`BrTA_?}#@#{vVCUN&r`O{Hc^_?7%ieq6MRd zovQ3MQNE?w>kf?aZ=%oF2wm13FLppZbmhJaqf5#Ex(^h^4G*Kmjn17UIs1<5EKvm) z9?6_tO9&zJjRp$SlZk0uX4t`vix}G>;Ptj4-4cPG;=c`C>$F%&KF5KEBV5{K%+7Sc z&-GbL+{i15z}?748!EGk5n7HjQ6W31fi)KGkG+68J*M8cfU)6$ZRlbY`Kl}2Rv%o# zD&0vjGOm*0WU%g6?N^RN07ZEhiW zpw=Z^zpt6Gj_IkjEfs&$i|&do>u$k)DK!gQ{>t=Fa62J( zG0x1zD9Fyr^vGHM%7kq>s6gR0%1$3I-qB%hmB7OvAb2>jtU8P7>%J6%j2=2O@Ee6i zAyT3|0(xee2GJ(B;t6pV7*bF;PsE?BR$W@9dOJ2jx2a%tZ*6q!QFck$DhkS+a6V0y zLl6zc+9Q@SSL}S8a?UNdUi)br%Y^C=ZXYLz7N7Tp z<&k|-7Je>9H(_))D)%9pO-T^#W1=omjO64lK=n! diff --git a/upload/develop/source/Globals.zip b/upload/develop/source/Globals.zip deleted file mode 100644 index ff39836d4690409a48f86233c3f9550eb427659a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3175 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 U0002Lh-dbx|J1}idjLQO0C_%?-~a#s diff --git a/upload/develop/source/js-sprintf.rar b/upload/develop/source/js-sprintf.rar deleted file mode 100644 index f7f86f3ed29d87f8f06437b3e5745bd32363d79e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4248 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 y695W;&|mpe|NYDT$N9g~<^LT*e