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;
}
}