<Website>

getID3

PHK Home

File: /lib/extension.cache.sqlite3.php

Size:3954
Storage flags:strip

<?php


























































































class getID3_cached_sqlite3 extends getID3 {






public function 
__construct($table='getid3_cache'$hide=false) {
$this->table $table
 
$file dirname(__FILE__).'/'.basename(__FILE__'php').'sqlite';
if (
$hide) {
$file dirname(__FILE__).'/.ht.'.basename(__FILE__'php').'sqlite';
}
$this->db = new SQLite3($file);
$db $this->db;
$this->create_table(); 
 
$version '';
$sql $this->version_check;
$stmt $db->prepare($sql);
$stmt->bindValue(':filename'getID3::VERSIONSQLITE3_TEXT);
$result $stmt->execute();
list(
$version) = $result->fetchArray();
if (
$version != getID3::VERSION) { 
 
$this->clear_cache();
}
return 
parent::__construct();
}




public function 
__destruct() {
$db=$this->db;
$db->close();
}





private 
$db;





private 
$table;






private function 
clear_cache() {
$db $this->db;
$sql $this->delete_cache;
$db->exec($sql);
$sql $this->set_version;
$stmt $db->prepare($sql);
$stmt->bindValue(':filename'getID3::VERSIONSQLITE3_TEXT);
$stmt->bindValue(':dirname'getID3::VERSIONSQLITE3_TEXT);
$stmt->bindValue(':val'getID3::VERSIONSQLITE3_TEXT);
return 
$stmt->execute();
}






public function 
analyze($filename) {
if (!
file_exists($filename)) {
return 
false;
}

 
$filetime filemtime($filename);
$filesize filesize($filename);

 
 
$dirname dirname($filename);

 
$db $this->db;
$sql $this->get_id3_data;
$stmt $db->prepare($sql);
$stmt->bindValue(':filename'$filenameSQLITE3_TEXT);
$stmt->bindValue(':filesize'$filesizeSQLITE3_INTEGER);
$stmt->bindValue(':filetime'$filetimeSQLITE3_INTEGER);
$res $stmt->execute();
list(
$result) = $res->fetchArray();
if (
count($result) > ) {
return 
unserialize(base64_decode($result));
}

 
$analysis parent::analyze($filename);

 
$sql $this->cache_file;
$stmt $db->prepare($sql);
$stmt->bindValue(':filename'$filenameSQLITE3_TEXT);
$stmt->bindValue(':dirname'$dirnameSQLITE3_TEXT);
$stmt->bindValue(':filesize'$filesizeSQLITE3_INTEGER);
$stmt->bindValue(':filetime'$filetimeSQLITE3_INTEGER);
$stmt->bindValue(':atime'time(), SQLITE3_INTEGER);
$stmt->bindValue(':val'base64_encode(serialize($analysis)), SQLITE3_TEXT);
$res $stmt->execute();
return 
$analysis;
}






private function 
create_table() {
$db $this->db;
$sql $this->make_table;
return 
$db->exec($sql);
}











public function 
get_cached_dir($dir) {
$db $this->db;
$rows = array();
$sql $this->get_cached_dir;
$stmt $db->prepare($sql);
$stmt->bindValue(':dirname'$dirSQLITE3_TEXT);
$res $stmt->execute();
while (
$row=$res->fetchArray()) {
$rows[] = unserialize(base64_decode($row));
}
return 
$rows;
}






public function 
__get($name) {
switch(
$name) {
case 
'version_check':
return 
"SELECT val FROM $this->table WHERE filename = :filename AND filesize = '-1' AND filetime = '-1' AND analyzetime = '-1'";
break;
case 
'delete_cache':
return 
"DELETE FROM $this->table";
break;
case 
'set_version':
return 
"INSERT INTO $this->table (filename, dirname, filesize, filetime, analyzetime, val) VALUES (:filename, :dirname, -1, -1, -1, :val)";
break;
case 
'get_id3_data':
return 
"SELECT val FROM $this->table WHERE filename = :filename AND filesize = :filesize AND filetime = :filetime";
break;
case 
'cache_file':
return 
"INSERT INTO $this->table (filename, dirname, filesize, filetime, analyzetime, val) VALUES (:filename, :dirname, :filesize, :filetime, :atime, :val)";
break;
case 
'make_table':
return 
"CREATE TABLE IF NOT EXISTS $this->table (filename VARCHAR(255) NOT NULL DEFAULT '', dirname VARCHAR(255) NOT NULL DEFAULT '', filesize INT(11) NOT NULL DEFAULT '0', filetime INT(11) NOT NULL DEFAULT '0', analyzetime INT(11) NOT NULL DEFAULT '0', val text not null, PRIMARY KEY (filename, filesize, filetime))";
break;
case 
'get_cached_dir':
return 
"SELECT val FROM $this->table WHERE dirname = :dirname";
break;
}
return 
null;
}

}

For more information about the PHK package format: http://phk.tekwire.net