From 4a1f617473c982af4c25fe23a42ea544d5e95c78 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Tue, 5 May 2015 01:50:10 +0300 Subject: [PATCH 01/12] [ticket/13817] Add core.update_session event Add core.update_session event in \phpbb\session.php PHPBB3-13817 --- phpBB/phpbb/session.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index bedd581725..1a15e171c4 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -1541,12 +1541,23 @@ class session */ public function update_session($session_data, $session_id = null) { - global $db; + global $db, $phpbb_dispatcher; $session_id = ($session_id) ? $session_id : $this->session_id; $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $session_data) . " WHERE session_id = '" . $db->sql_escape($session_id) . "'"; $db->sql_query($sql); + + /** + * Event to send session information to extension + * + * @event core.update_session + * @var array session_data Associative array of session keys to be updated + * @var array session_id current user's session_id + * @since 3.1.4 + */ + $vars = array('session_data', 'session_id'); + extract($phpbb_dispatcher->trigger_event('core.update_session', compact($vars))); } } From 798490bf1d4d4e204d3458e86a6f8a0a8cd150c2 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Fri, 29 May 2015 04:28:36 +0300 Subject: [PATCH 02/12] [ticket/13817] Change since As requested by nickvergessen PHPBB3-13817 --- phpBB/phpbb/session.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index 1a15e171c4..f611b0900c 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -1555,7 +1555,7 @@ class session * @event core.update_session * @var array session_data Associative array of session keys to be updated * @var array session_id current user's session_id - * @since 3.1.4 + * @since 3.1.5-RC1 */ $vars = array('session_data', 'session_id'); extract($phpbb_dispatcher->trigger_event('core.update_session', compact($vars))); From bbbf122d05ef77a2b03f2e092f6a0ebc2ca58ee1 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Sun, 31 May 2015 15:05:13 +0300 Subject: [PATCH 03/12] [ticket/13817] Add session_kill and session_gc Ticket was changed to add few more session related events core.session_kill - send user_id and session_id core.session_gc - just triger event PHPBB3-13817 --- phpBB/phpbb/session.php | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index f611b0900c..dab75666ac 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -913,6 +913,19 @@ class session AND session_user_id = " . (int) $this->data['user_id']; $db->sql_query($sql); + /** + * Event to send session kill information to extension + * + * @event core.session_kill + * @var int user_id user_id of the session user. + * @var string session_id current user's session_id + * @since 3.1.5-RC1 + */ + $user_id = (int) $this->data['user_id']; + $session_id = $this->session_id; + $vars = array('user_id', 'session_id'); + extract($phpbb_dispatcher->trigger_event('core.session_kill', compact($vars))); + // Allow connecting logout with external auth method logout $provider_collection = $phpbb_container->get('auth.provider_collection'); $provider = $provider_collection->get_provider(); @@ -1048,6 +1061,15 @@ class session $db->sql_query($sql); } + /** + * Event to trigger extension on session_gc + * + * @event core.session_gc + * @since 3.1.5-RC1 + */ + $vars = array(); + extract($phpbb_dispatcher->trigger_event('core.session_gc', compact($vars))); + return; } @@ -1550,11 +1572,11 @@ class session $db->sql_query($sql); /** - * Event to send session information to extension + * Event to send update session information to extension * * @event core.update_session * @var array session_data Associative array of session keys to be updated - * @var array session_id current user's session_id + * @var string session_id current user's session_id * @since 3.1.5-RC1 */ $vars = array('session_data', 'session_id'); From 76f7175fc485f75eda89e8f2cc01a7c5da2b52bf Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Sun, 31 May 2015 19:20:45 +0300 Subject: [PATCH 04/12] [ticket/13817] Fix missing phpbb_dispatcher Fix missing phpbb_dispatcher and add event to session_create PHPBB3-13817 --- phpBB/phpbb/session.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index dab75666ac..93070dae09 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -519,7 +519,7 @@ class session */ function session_create($user_id = false, $set_admin = false, $persist_login = false, $viewonline = true) { - global $SID, $_SID, $db, $config, $cache, $phpbb_root_path, $phpEx, $phpbb_container; + global $SID, $_SID, $db, $config, $cache, $phpbb_root_path, $phpEx, $phpbb_container, $phpbb_dispatcher; $this->data = array(); @@ -851,6 +851,18 @@ class session $_SID = $this->session_id; $this->data = array_merge($this->data, $sql_ary); + /** + * Event to send new session data to extension + * + * @event core.session_create + * @var array session_data Associative array of session keys to be updated + * @since 3.1.5-RC1 + */ + $session_data = $this->data; + $vars = array('session_data'); + extract($phpbb_dispatcher->trigger_event('core.session_create', compact($vars))); + unset($session_data); + if (!$bot) { $cookie_expire = $this->time_now + (($config['max_autologin_time']) ? 86400 * (int) $config['max_autologin_time'] : 31536000); @@ -906,7 +918,7 @@ class session */ function session_kill($new_session = true) { - global $SID, $_SID, $db, $config, $phpbb_root_path, $phpEx, $phpbb_container; + global $SID, $_SID, $db, $config, $phpbb_root_path, $phpEx, $phpbb_container, $phpbb_dispatcher; $sql = 'DELETE FROM ' . SESSIONS_TABLE . " WHERE session_id = '" . $db->sql_escape($this->session_id) . "' @@ -925,6 +937,8 @@ class session $session_id = $this->session_id; $vars = array('user_id', 'session_id'); extract($phpbb_dispatcher->trigger_event('core.session_kill', compact($vars))); + unset($user_id); + unset($session_id); // Allow connecting logout with external auth method logout $provider_collection = $phpbb_container->get('auth.provider_collection'); @@ -993,7 +1007,7 @@ class session */ function session_gc() { - global $db, $config, $phpbb_root_path, $phpEx, $phpbb_container; + global $db, $config, $phpbb_root_path, $phpEx, $phpbb_container, $phpbb_dispatcher; $batch_size = 10; From af7f62505e848098f702107c680bdfac73cdc134 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Sun, 31 May 2015 19:53:09 +0300 Subject: [PATCH 05/12] [ticket/13817] Fix empty vars array PHPBB3-13817 --- phpBB/phpbb/session.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index 93070dae09..b8a28ae164 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -1081,8 +1081,7 @@ class session * @event core.session_gc * @since 3.1.5-RC1 */ - $vars = array(); - extract($phpbb_dispatcher->trigger_event('core.session_gc', compact($vars))); + extract($phpbb_dispatcher->trigger_event('core.session_gc')); return; } From 57fa7435ada8e2437c9015f74cb5f156a8f8dbc4 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Sun, 31 May 2015 22:59:33 +0300 Subject: [PATCH 06/12] [ticket/13817] Fix empty event Try adding event with no parameters PHPBB3-13817 --- phpBB/phpbb/session.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index b8a28ae164..4d0ab44ae6 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -1081,7 +1081,7 @@ class session * @event core.session_gc * @since 3.1.5-RC1 */ - extract($phpbb_dispatcher->trigger_event('core.session_gc')); + $phpbb_dispatcher->trigger_event('core.session_gc'); return; } From afa4c07a13c43d9e4c9fd6b4a56e6f53d3540b71 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Sun, 31 May 2015 23:11:32 +0300 Subject: [PATCH 07/12] [ticket/13817] Change trgger_event to dispatch Fix no event parameters PHPBB3-13817 --- phpBB/phpbb/session.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index 4d0ab44ae6..de9bd808b4 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -1081,7 +1081,7 @@ class session * @event core.session_gc * @since 3.1.5-RC1 */ - $phpbb_dispatcher->trigger_event('core.session_gc'); + $phpbb_dispatcher->dispatch('core.session_gc'); return; } From 7d24510d68338e10f670cea1ea64131602d05e57 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Thu, 4 Jun 2015 19:57:45 +0300 Subject: [PATCH 08/12] [ticket/13817] Add _after As requested events are named *_after core.session_start_after is moved after USERS_TABLE update to prevent returning session data from extensions PHPBB3-13817 --- phpBB/phpbb/session.php | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index de9bd808b4..5bd56ca0ec 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -851,18 +851,6 @@ class session $_SID = $this->session_id; $this->data = array_merge($this->data, $sql_ary); - /** - * Event to send new session data to extension - * - * @event core.session_create - * @var array session_data Associative array of session keys to be updated - * @since 3.1.5-RC1 - */ - $session_data = $this->data; - $vars = array('session_data'); - extract($phpbb_dispatcher->trigger_event('core.session_create', compact($vars))); - unset($session_data); - if (!$bot) { $cookie_expire = $this->time_now + (($config['max_autologin_time']) ? 86400 * (int) $config['max_autologin_time'] : 31536000); @@ -905,6 +893,18 @@ class session $_SID = ''; } + $session_data = $this->data; + /** + * Event to send new session data to extension + * + * @event core.session_create_after + * @var array session_data Associative array of session keys to be updated + * @since 3.1.5-RC1 + */ + $vars = array('session_data'); + extract($phpbb_dispatcher->trigger_event('core.session_create_after', compact($vars))); + unset($session_data); + return true; } @@ -925,18 +925,18 @@ class session AND session_user_id = " . (int) $this->data['user_id']; $db->sql_query($sql); + $user_id = (int) $this->data['user_id']; + $session_id = $this->session_id; /** * Event to send session kill information to extension * - * @event core.session_kill + * @event core.session_kill_after * @var int user_id user_id of the session user. * @var string session_id current user's session_id * @since 3.1.5-RC1 */ - $user_id = (int) $this->data['user_id']; - $session_id = $this->session_id; - $vars = array('user_id', 'session_id'); - extract($phpbb_dispatcher->trigger_event('core.session_kill', compact($vars))); + $vars = array('user_id', 'session_id', 'new_session'); + extract($phpbb_dispatcher->trigger_event('core.session_kill_after', compact($vars))); unset($user_id); unset($session_id); @@ -1078,10 +1078,10 @@ class session /** * Event to trigger extension on session_gc * - * @event core.session_gc + * @event core.session_gc_after * @since 3.1.5-RC1 */ - $phpbb_dispatcher->dispatch('core.session_gc'); + $phpbb_dispatcher->dispatch('core.session_gc_after'); return; } From de947d31f61792209e7a6178ea1814033fb88d84 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Thu, 4 Jun 2015 23:07:58 +0300 Subject: [PATCH 09/12] [ticket/13817] Fix missing var names Var names in doc block PHPBB3-13817 --- phpBB/phpbb/session.php | 1 + 1 file changed, 1 insertion(+) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index 5bd56ca0ec..81054663ea 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -933,6 +933,7 @@ class session * @event core.session_kill_after * @var int user_id user_id of the session user. * @var string session_id current user's session_id + * @var bool new_session should we create new session for user * @since 3.1.5-RC1 */ $vars = array('user_id', 'session_id', 'new_session'); From c0449d31d6650936979e58ddb86f19e819903c46 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Mon, 8 Jun 2015 19:55:59 +0300 Subject: [PATCH 10/12] [ticket/13817] Add read-only notes to events PHPBB3-13817 --- phpBB/phpbb/session.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index 81054663ea..f5318c7f7f 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -896,6 +896,7 @@ class session $session_data = $this->data; /** * Event to send new session data to extension + * Read-only event * * @event core.session_create_after * @var array session_data Associative array of session keys to be updated @@ -929,6 +930,7 @@ class session $session_id = $this->session_id; /** * Event to send session kill information to extension + * Read-only event * * @event core.session_kill_after * @var int user_id user_id of the session user. @@ -1587,6 +1589,7 @@ class session /** * Event to send update session information to extension + * Read-only event * * @event core.update_session * @var array session_data Associative array of session keys to be updated From 82bc9baa24f4d2e482218699d12fb3ea90fb42bd Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Wed, 24 Jun 2015 04:34:34 +0300 Subject: [PATCH 11/12] [ticket/13817] fix after for session_update Fix wrong variables passed to create session event PHPBB3-13817 --- phpBB/phpbb/session.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index f5318c7f7f..3dc4dfd429 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -893,7 +893,7 @@ class session $_SID = ''; } - $session_data = $this->data; + $session_data = $sql_ary; /** * Event to send new session data to extension * Read-only event @@ -1591,12 +1591,12 @@ class session * Event to send update session information to extension * Read-only event * - * @event core.update_session + * @event core.update_session_after * @var array session_data Associative array of session keys to be updated * @var string session_id current user's session_id * @since 3.1.5-RC1 */ $vars = array('session_data', 'session_id'); - extract($phpbb_dispatcher->trigger_event('core.update_session', compact($vars))); + extract($phpbb_dispatcher->trigger_event('core.update_session_after', compact($vars))); } } From 0d7f8ba8afdbc7d46d585d37f35497a1098f9033 Mon Sep 17 00:00:00 2001 From: Stanislav Atanasov Date: Sun, 12 Jul 2015 19:28:45 +0300 Subject: [PATCH 12/12] [ticket/13817] Fix target version PHPBB3-13817 --- phpBB/phpbb/session.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index 3dc4dfd429..a5c8f264e0 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -900,7 +900,7 @@ class session * * @event core.session_create_after * @var array session_data Associative array of session keys to be updated - * @since 3.1.5-RC1 + * @since 3.1.6-RC1 */ $vars = array('session_data'); extract($phpbb_dispatcher->trigger_event('core.session_create_after', compact($vars))); @@ -936,7 +936,7 @@ class session * @var int user_id user_id of the session user. * @var string session_id current user's session_id * @var bool new_session should we create new session for user - * @since 3.1.5-RC1 + * @since 3.1.6-RC1 */ $vars = array('user_id', 'session_id', 'new_session'); extract($phpbb_dispatcher->trigger_event('core.session_kill_after', compact($vars))); @@ -1082,7 +1082,7 @@ class session * Event to trigger extension on session_gc * * @event core.session_gc_after - * @since 3.1.5-RC1 + * @since 3.1.6-RC1 */ $phpbb_dispatcher->dispatch('core.session_gc_after'); @@ -1594,7 +1594,7 @@ class session * @event core.update_session_after * @var array session_data Associative array of session keys to be updated * @var string session_id current user's session_id - * @since 3.1.5-RC1 + * @since 3.1.6-RC1 */ $vars = array('session_data', 'session_id'); extract($phpbb_dispatcher->trigger_event('core.update_session_after', compact($vars)));