PageRenderTime 25ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/system/application/cron/files_cron.php

http://xtraupload.googlecode.com/
PHP | 25 lines | 21 code | 3 blank | 1 comment | 23 complexity | f7def40e9787502af7590c2a0f15970e MD5 | raw file
Possible License(s): Apache-2.0
  1. <?php /** * XtraUpload * * A turn-key open source web 2.0 PHP file uploading package requiring PHP v5 * * @package XtraUpload * @author Matthew Glinski * @copyright Copyright (c) 2006, XtraFile.com * @license http://xtrafile.com/docs/license * @link http://xtrafile.com * @since Version 2.0 * @filesource */ // ------------------------------------------------------------------------ /** * XtraUpload Cron Item * * @package XtraUpload * @subpackage Controllers * @category Controllers * @author Matthew Glinski * @link http://xtrafile.com/docs/cron */ // ------------------------------------------------------------------------ class Files_cron { private $server = false; private $CI = '';
  2. private $debug = false;
  3. public function Files_cron($server) { if(!defined('IN_CRON')) { return false; }
  4. $this->CI = &get_instance();
  5. if(defined('XU_DEBUG'))
  6. {
  7. $this->debug = true;
  8. }
  9. $this->server = $server; $this->_runCron(); } function _runCron() {
  10. if(!defined('IN_CRON')) { return false; }
  11. // delete file without a DB entry, IE: deleted or baned $this->_pruneDatabaseFiles(); // Delete database entries without files, edge case $this->_pruneDatabaseFiles(); // delete files that have expired $this->_pruneExpiredFiles(); // delete file without a DB entry, IE: deleted or baned $this->_pruneFolderFiles('./filestore'); // clear temp folder $this->_clearTemp(); } private function _pruneFolderFiles($dir) { $fh = @opendir($dir); while ($file = @readdir($fh)) { if (($file != '..' && $file != '.' && $file != 'index.php' && $file != 'index.html' && $file != '.DS_Store' && $file != '.htaccess')) { if(is_dir($dir . '/' . $file) and $file != '.svn') { $this->_pruneFolderFiles($dir.'/'.$file); } else { $q = $this->CI->db->join('files', 'refrence.link_id = files.id')->get_where('refrence', array('filename' => str_replace('./', '', $dir.'/'.$file), 'server' => $this->server), 1, 0); $num = $q->num_rows(); if($num == '0' and $file != '.svn') { $file_obj = $q->row(); if(!empty($file_obj->thumb)) { unlink($file_obj->thumb); }
  12. if($this->debug)
  13. { echo "DELETE DEBUG _pruneFolderFiles -> ".$dir . '/' . $file."<br />\n";
  14. }
  15. unlink($dir.'/'.$file); } } } } closedir ($fh); } private function _pruneDatabaseFiles() { $files = $this->CI->db->get_where('files', array('server' => $this->server)); foreach($files->result() as $file) { if(!file_exists($file->filename)) { $this->CI->db->delete('refrence', array('link_id' => $file->id)); if($this->CI->db->get_where('refrence', array('link_id' => $file->id))->num_rows() == 0) { $this->CI->db->delete('files', array('id' => $file->id)); }
  16. if($this->debug)
  17. { echo "DELETE DEBUG _pruneDatabaseFiles -> ".'./filestore/'.$file->prefix.'/'.$file->filename."<br />\n";
  18. } } } } private function _pruneExpiredFiles() { $files = $this->CI->db->join('files', 'refrence.link_id = files.id')->get_where('refrence', array('server' => $this->server)); foreach($files->result() as $file) { if($file->user == 0) { $group = 1; } else { $group = $this->CI->db->select('group')->get_where('users', array('id' => $file->user))->row()->group; } $group = $this->CI->db->get_where('groups', array('id' => $group))->row(); if(($file->last_download < (time() - (3600 * 24 * $group->file_expire))) and $group->file_expire != 0) {
  19. if($this->debug)
  20. { echo "DELETE DEBUG _pruneExpiredFiles -> ".$file->last_download." < ".(time() - (3600 * 24 * $group->file_expire))." -> ".'./filestore/'.$file->prefix.'/'.$file->filename."<br />\n";
  21. }
  22. $this->CI->files_db->deleteFile($file->file_id, $file->secid, $file->link_name); } } } private function _clearTemp() { $temp = @opendir('./temp/'); while ($file = @readdir($temp)) { if (($file != 'index.php' && $file != 'index.html' && $file != '.DS_Store' && $file != '.htaccess' && !is_dir('./temp/' . $file))) { unlink('./temp/'.$file); } } @closedir ($temp); } } ?>