path($id);
if (!file_exists($path)) {
$torrent_id = $id[0];
$log_id = $id[1];
$save = $this->db->get_query_id();
$this->db->prepared_query('
SELECT Log FROM torrents_logs WHERE TorrentID = ? AND LogID = ?
', $torrent_id, $log_id
);
if (!$this->db->has_results()) {
return null;
}
list($file) = $this->db->next_record();
$this->put($file, $id);
$this->db->set_query_id($save);
// PHASE 2: DELETE FROM torrents_logs
}
return file_get_contents($path);
}
public function put ($source, $id) {
$out = fopen($this->path($id), 'wb');
fwrite($out, $source);
fclose($out);
return true;
}
public function remove ($id) {
$torrent_id = $id[0];
$log_id = $id[1];
if (is_null($log_id)) {
$htmlfiles = glob($this->path($torrent_id, '*'));
foreach ($htmlfiles as $path) {
if (preg_match('/(\d+)\.log/', $path, $match)) {
$log_id = $match[1];
$this->remove([$torrent_id, $log_id]);
}
}
}
$path = $this->path($id);
if (file_exists($path)) {
unlink($path);
}
// PHASE 3: remove this
$this->db->prepared_query('
DELETE FROM torrents_logs WHERE TorrentID = ? AND LogID = ?
', $torrent_id, $log_id
);
// PHASE 2 end
return true;
}
public function path ($id) {
$torrent_id = $id[0];
$log_id = $id[1];
$key = strrev(sprintf('%04d', $torrent_id));
return sprintf('%s/%02d/%02d', self::STORAGE, substr($key, 0, 2), substr($key, 2, 2))
. '/' . $torrent_id . '_' . $log_id . '.html';
}
}