Skip to content

Commit f28d330

Browse files
refactor: improve checking if session is available
1 parent 73376c2 commit f28d330

File tree

3 files changed

+18
-14
lines changed

3 files changed

+18
-14
lines changed

Common.php

+7-5
Original file line numberDiff line numberDiff line change
@@ -197,13 +197,15 @@ public static function setBufferValue($key, $value, $expiration = false) {
197197
*/
198198
public static function getBufferValue($key) {
199199
// Clean up the buffer once per session
200-
$session = Yii::$app->session;
201-
if (Yii::$app->request->isConsoleRequest || !$session || !$session->get('_jfw_cleaned_buffer')) {
200+
if (Yii::$app->has('session')) { //skip cleaning when no session available (most often means running in CLI)
201+
$session = Yii::$app->session;
202+
if (Yii::$app->request->isConsoleRequest || !$session || !$session->get('_jfw_cleaned_buffer')) {
202203

203-
\Yii::$app->db->createCommand("DELETE FROM `buffer` WHERE tmpd_date_expire IS NOT NULL AND tmpd_date_expire < UTC_TIMESTAMP()")->execute();
204+
\Yii::$app->db->createCommand("DELETE FROM `buffer` WHERE tmpd_date_expire IS NOT NULL AND tmpd_date_expire < UTC_TIMESTAMP()")->execute();
204205

205-
if ($session) {
206-
$session->set('_jfw_cleaned_buffer', true);
206+
if ($session) {
207+
$session->set('_jfw_cleaned_buffer', true);
208+
}
207209
}
208210
}
209211

UserException.php

+10-8
Original file line numberDiff line numberDiff line change
@@ -278,15 +278,17 @@ function __construct($msg, $arrayInternalInfo = [], $options = []) {
278278
$fileLog = 'All details registered in database with error code '. $this->errorCode .' (errorID '. $errorID .').';
279279

280280
// Delete expired errors once per session
281-
$session = Yii::$app->session;
282-
if ($session && !Yii::$app->request->isConsoleRequest && !Yii::$app->response->isSent) { //will get message if run in CLI: "session_set_cookie_params(): Cannot change session cookie parameters when headers already sent"
283-
try {
284-
if (!$session->get('wsErrorsCleared')) {
285-
$dbConn->createCommand("DELETE FROM `". $databaseTable ."` WHERE err_expire_days IS NOT NULL AND TO_DAYS(err_timestamp) + err_expire_days < TO_DAYS(NOW())")->execute();
286-
$session->set('wsErrorsCleared', 1);
281+
if (Yii::$app->has('session')) {
282+
$session = Yii::$app->session;
283+
if ($session && !Yii::$app->request->isConsoleRequest && !Yii::$app->response->isSent) { //will get message if run in CLI: "session_set_cookie_params(): Cannot change session cookie parameters when headers already sent"
284+
try {
285+
if (!$session->get('wsErrorsCleared')) {
286+
$dbConn->createCommand("DELETE FROM `". $databaseTable ."` WHERE err_expire_days IS NOT NULL AND TO_DAYS(err_timestamp) + err_expire_days < TO_DAYS(NOW())")->execute();
287+
$session->set('wsErrorsCleared', 1);
288+
}
289+
} catch (\Exception $e) {
290+
throw $e;
287291
}
288-
} catch (\Exception $e) {
289-
throw $e;
290292
}
291293
}
292294
} else {

generators/crud2/default/search.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public function searchable() {
123123
public function search($params) {
124124
// Handle memorizing the last used search parameters
125125
$shortModelName = \yii\helpers\StringHelper::basename(__CLASS__);
126-
if (Yii::$app->session && !Yii::$app->request->isConsoleRequest) {
126+
if (Yii::$app->has('session') && !Yii::$app->request->isConsoleRequest) {
127127
Yii::$app->session->open();
128128
if (empty($params[$shortModelName])) {
129129
if (!empty($_SESSION['cache'][__CLASS__]['searchParams'])) {

0 commit comments

Comments
 (0)