HEX
Server: Apache
System: Linux 4485441ca2e2 6.8.0-1039-aws #41~22.04.1-Ubuntu SMP Thu Sep 11 11:03:07 UTC 2025 aarch64
User: (1000)
PHP: 8.2.24
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/ganryu_shop/model/Session.php
<?php

require_once dirname(__FILE__).'/Abstract.php';

class ganryu_shop_model_Session extends ganryu_shop_model_Abstract{
	
	function setSession($key, $data, $expire){
		$expire = (int)$expire;
		$tbl = $this->tablename('session');
		
		$sql = "
			select
				id
			from
				$tbl
			where
				session_key = :key
		";
		$bind = array('key'=>$key);
		$res = $this->selectRow($sql, $bind);
		if ($res === false){
			return false;
		}
		$updid = 0;
		$updss = false;
		if ($res){
			$updid = $res['id'];
		}	
		
		if (!$updid){
			$sql = "
				select
					id
				from
					$tbl
				where
					expire_date < now()
				order by expire_date
				limit 1
			";
			$res = $this->selectRow($sql);
			if ($res === false){
				return false;
			}
			if ($res){
				$updid = $res['id'];
				$updss = true;
			}
		}
		if (!$updid){
			$sql = "
				insert into $tbl(
					session_key,
					session_value,
					update_date,
					expire_date
				)
				values(
					:key,
					:data,
					now(),
					adddate(now(), interval $expire second)
				)
			";
			$bind = array(
				'key'=>$key,
				'data'=>json_encode($data),
			);
			$res = $this->query($sql, $bind);
			if ($res === false){
				return false;
			}
		}
		else{
			$withkey = "";
			$b = array();
			if ($updss){
				$withkey = "session_key = :key,";
				$b['key'] = $key;
			}
			$sql = "
				update $tbl set
					$withkey
					session_value = :data,
					update_date = now(),
					expire_date = adddate(now(), interval $expire second)
				where
					id = :id
			";
			$bind = array('id'=>$updid, 'data'=>json_encode($data));
			$bind = array_merge($bind, $b);
			$res = $this->query($sql, $bind);
			if (!$res){
				return false;
			}
		}
		
		return true;
	}

	function getSession($key){
		$tbl = $this->tablename('session');
		
		$sql = "
			select
				session_value
			from
				$tbl
			where
				session_key = :key
			and
				expire_date >= now()
		";
		$bind = array('key'=>$key);
		$res = $this->selectRow($sql, $bind);
		if ($res === false){
			return false;
		}
		if (!$res){
			return null;
		}
		if (!$res['session_value']){
			return null;
		}
		return json_decode($res['session_value'], true);
	}
	
	function deleteSession($key){
		$tbl = $this->tablename('session');
		$sql = "
			select
				id
			from
				$tbl
			where
				session_key = :key
		";
		$bind = array('key'=>$key);
		$res = $this->selectRow($sql, $bind);
		if ($res === false){
			return false;
		}
		
		if ($res){
			$updid = $res['id'];
			
			$sql = "
				update $tbl set
					session_value = null,
					update_date = now(),
					expire_date = adddate(now(), interval -1 second)
				where
					id = :id
			";
			$bind = array('id'=>$updid);
			$res = $this->query($sql, $bind);
			if (!$res){
				return false;
			}
		}
		
		return true;
		
	}

}