study

やっぱり、書くだけ。
もうなんのコードだかわかりません。



require_once ("ini.php");
require_once ("log.inc");
require_once ("dbmethods.inc");
require_once ("util.inc");
require_once ("XML/Unserializer.php");

class CCacheDb
{
const TYPE_1DAY = "1DAY";
const TYPE_20DAY = "20DAY";

var $TYPE_DAYS = array(
CCacheDB::TYPE_1DAY => 86400
,CCacheDB::TYPE_20DAY => 1728000
);
var $pdo;
var $key;
var $type;

public function CCacheDB ( $pdo, $key, $type ) {
$this->pdo = $pdo;
$this->key = $key;
$this->type = $type;

}

public function getXmlUnserializedData ( $value ) {
$unserializer =& new XML_Unserializer();
$unserializer->setOption("parseAttributes", TRUE);
$success = $unserializer->unserialize($value);
if (PEAR::isError($success)) {
throw new Exception( "PEAR::isError XML_Unserializer->unserialize" );

}

return $unserializer->getUnserializedData();
}

public function getXmlValue () {
$value = $this->getValue ();
if ( $value ) {
$value = $this->getXmlUnserializedData( $value );

}

return $value;
}

public function getValue () {
$retVal = null;

$tblname = "T_CACHE";
$selfields = array( 'V_VALUE'
,'C_UPDATE_DATETIME'
,'C_UPDATE_DATE'
,'C_UPDATE_TIME'
);

$where = array( array( 'FIELD' => 'V_TYPE', 'COMPARE' => '=', 'VALUE' => $this->type)
,array( 'FIELD' => 'V_KEY', 'COMPARE' => '=', 'AO' => 'AND' ,'VALUE' => $this->key) );
$result = CDbMethods::select( $pdo, $tblname, $selfields, $where, null, false );

if ( count( $result ) >= 0 ) {
$yyyy = intval( substr( $result[0]['C_UPDATE_DATETIME'], 0, 4 ) );
$mm = intval( substr( $result[0]['C_UPDATE_DATETIME'], 5, 2 ) );
$dd = intval( substr( $result[0]['C_UPDATE_DATETIME'], 8, 2 ) );
$hh = intval( substr( $result[0]['C_UPDATE_DATETIME'],10, 2 ) );
$nn = intval( substr( $result[0]['C_UPDATE_DATETIME'],13, 2 ) );
$ss = intval( substr( $result[0]['C_UPDATE_DATETIME'],16, 2 ) );

$dayLimit = CUtil::addDate( $yyyy, $mm, $dd, $hh, $mm, $ss, $this->TYPE_DAYS[$this->type], "YmdHis" );
$dayNow = date("YmdHis");

if ( bccomp( $dayLimit, $dayNow ) == -1 ) {
//limit after
CDbMethods::delete( $pdo, $tblname, $where );

} else {
$retVal = $result[0]['V_VALUE'];

}

}

return $retVal;
}

public function setValue ( $value ) {

try {
$tblname = "T_CACHE";
$ymd = CDBMethods::getDateStr01();
$hms = CDBMethods::getTimeStr01();
$insfields = array (
'V_TYPE' => $this->type
,'V_KEY' => $this->key
,'V_VALUE' => $value
,'C_UPDATE_DATETIME' => $ymd . $hms
,'C_INSERT_DATE' => $ymd
,'C_INSERT_TIME' => $hms
,'C_UPDATE_DATE' => $ymd
,'C_UPDATE_TIME' => $hms
);
CDbMethods::insert( $pdo, $tblname, $insfields );

} catch ( Exception $e ) {
CLog::error( $e );
CLog::errorTrace( $e );
////throw $e;

}

}

}

動かした後は、元のコードは跡形もない。まあ勉強中なので?