46 lines
1.0 KiB
PHP
46 lines
1.0 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace WoWPress\Database;
|
||
|
|
||
|
use Wenprise\Eloquent\Model;
|
||
|
|
||
|
class Cache extends Model{
|
||
|
|
||
|
protected $table = "wowpress_cache";
|
||
|
public $timestamps = false;
|
||
|
protected $primaryKey = 'ID';
|
||
|
protected $guarded = [ 'ID' ];
|
||
|
|
||
|
|
||
|
public static function buildKey(array $key_parts){
|
||
|
return md5(implode(";",$key_parts));
|
||
|
}
|
||
|
|
||
|
|
||
|
public function isExpired($expiration){
|
||
|
return ((time() - $this->expiration) / 60) >= $expiration;
|
||
|
}
|
||
|
|
||
|
|
||
|
public function getValueAttribute(){
|
||
|
$value = base64_decode($this->p_value);
|
||
|
$value = preg_replace('/[[:cntrl:]]/', '', $value);
|
||
|
$value = json_decode($value,true);
|
||
|
return $value;
|
||
|
}
|
||
|
|
||
|
|
||
|
public static function upsert($p_key,$p_value){
|
||
|
if(!\json_validate($p_value)){
|
||
|
$p_value = json_encode($p_value);
|
||
|
}
|
||
|
$p_value = base64_encode($p_value);
|
||
|
$c = new Cache();
|
||
|
$c->p_key = $p_key;
|
||
|
$c->p_value = $p_value;
|
||
|
$c->expiration = time();
|
||
|
$c->save();
|
||
|
return $c;
|
||
|
}
|
||
|
|
||
|
}
|