X-Git-Url: https://git.p6c8.net/jirafeau.git/blobdiff_plain/3cf8b39b331dd5f80c4ac674d13a6387d01d49b9..328280882da0834d8dfce9af98bac69ba37610c9:/lib/functions.php diff --git a/lib/functions.php b/lib/functions.php index bb49079..10e9868 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -99,9 +99,9 @@ jirafeau_delete ($link) if (!file_exists ( VAR_LINKS . $link)) return; - $content = file ( VAR_LINKS . $link); + $content = file (VAR_LINKS . $link); $md5 = trim ($content[5]); - unlink ( VAR_LINKS . $link); + unlink (VAR_LINKS . $link); $counter = 1; if (file_exists ( VAR_FILES . $md5. '_count')) @@ -125,6 +125,36 @@ jirafeau_delete ($link) } } +/** + * Delete a file and it's links. + */ +function +jirafeau_delete_file ($md5) +{ + $count = 0; + $links_dir = scandir (VAR_LINKS); + + foreach ($links_dir as $link) + { + if (strcmp ($link, '.') == 0 || strcmp ($link, '..') == 0) + continue; + /* Read link informations. */ + $l = jirafeau_get_link ($link); + if ($l['md5'] == $md5) + { + $count++; + jirafeau_delete ($link); + } + } + + if (file_exists (VAR_FILES . $md5 . '_count')) + unlink (VAR_FILES . $md5. '_count'); + if (file_exists (VAR_FILES . $md5)) + unlink (VAR_FILES . $md5); + + return $count; +} + /** * handles an uploaded file * @param $file the file struct given by $_FILE[] @@ -302,4 +332,137 @@ show_errors () } } +/** + * Read link informations + * @return array containing informations. + */ +function +jirafeau_get_link ($hash) +{ + $out = array (); + $link = VAR_LINKS . $hash; + + if (!file_exists ($link)) + return $out; + + $c = file ($link); + $out['file_name'] = trim ($c[0]); + $out['mime_type'] = trim ($c[1]); + $out['file_size'] = trim ($c[2]); + $out['key'] = trim ($c[3], NL); + $out['time'] = trim ($c[4]); + $out['md5'] = trim ($c[5]); + $out['onetime'] = trim ($c[6]); + $out['upload_date'] = trim ($c[7]); + $out['ip'] = trim ($c[8]); + $out['link_code'] = trim ($c[9]); + + return $out; +} + +function +jirafeau_human_size ($octets) +{ + $u = array ('B', 'KB', 'MB', 'GB', 'TB'); + $o = max ($octets, 0); + $p = min (floor (($o ? log ($o) : 0) / log (1024)), count ($u) - 1); + $o /= pow (1024, $p); + return round ($o, 1) . $u[$p]; +} + +/** + * List files in admin interface. + */ +function +jirafeau_admin_list ($name, $file_hash, $link_hash) +{ + $links_dir = scandir (VAR_LINKS); + echo '
'; +} + +/** + * Clean expired files. + * @return number of cleaned files. + */ +function +jirafeau_admin_clean () +{ + $c = 0; + $links_dir = scandir (VAR_LINKS); + + foreach ($links_dir as $link) + { + if (strcmp ($link, '.') == 0 || strcmp ($link, '..') == 0) + continue; + /* Read link informations. */ + $l = jirafeau_get_link ($link); + if ($l['time'] > 0 && $l['time'] < time ()) + { + echo 'HAAAA' . $l['time'] . '-->' . time (); + jirafeau_delete ($link); + $c++; + } + } + return $c; +} ?>