function _update_media_record($id, $tmp_file_path, $file_name, $mime_type)
 {
     if (!file_exists($tmp_file_path)) {
         debug::write_error('file doesnt exist', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, array('tmp' => $tmp_file_path));
         return false;
     }
     if (function_exists('md5_file')) {
         $etag = md5_file($tmp_file_path);
     } else {
         $fd = fopen($data['tmp_name'], 'rb');
         $contents = fread($fd, filesize($tmp_file_path));
         fclose($fd);
         $etag = md5($contents);
     }
     if (!is_dir(MEDIA_DIR)) {
         dir::mkdir(MEDIA_DIR, 777, true);
     }
     if (!copy($tmp_file_path, MEDIA_DIR . $id . '.media')) {
         debug::write_error('temporary file copy failed', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, array('src' => $tmp_file_path, 'dst' => MEDIA_DIR . $id . '.media'));
         return false;
     }
     $media_db_table = db_table_factory::instance('media');
     $media_db_table->update_by_id($id, array('file_name' => $file_name, 'mime_type' => $mime_type, 'size' => filesize($tmp_file_path), 'etag' => $etag));
     return true;
 }
예제 #2
0
 function write($log_file_data, $string)
 {
     $log_dir = $log_file_data[0];
     $log_name = $log_file_data[1];
     $file_name = $log_dir . $log_name;
     if (!is_dir($log_dir)) {
         dir::mkdir($log_dir, 0775, true);
     }
     $oldumask = @umask(0);
     $file_existed = @file_exists($file_name);
     $log_file = @fopen($file_name, 'a');
     if ($log_file) {
         $time = strftime("%b %d %Y %H:%M:%S", strtotime('now'));
         $notice = '[ ' . $time . " ]\n";
         if ($user_id = user::get_id()) {
             $notice .= '[ ' . $user_id . ' ] [ ' . user::get_login() . ' ] [ ' . user::get_email() . ' ] ';
         }
         $notice .= '[' . sys::client_ip() . '] [' . (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '') . "]\n" . $string . "\n\n";
         @fwrite($log_file, $notice);
         @fclose($log_file);
         if (!$file_existed) {
             @chmod($file_name, 0664);
         }
         @umask($oldumask);
         $result = true;
     } else {
         @umask($oldumask);
         $result = false;
         debug::write_error("Cannot open log file '{$file_name}' for writing\n" . "The web server must be allowed to modify the file.\n" . "File logging for '{$file_name}' is disabled.", __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, false);
     }
     return $result;
 }
예제 #3
0
 function test_mkdir_windows()
 {
     if (sys::os_type() != 'win32') {
         return;
     }
     dir::mkdir(VAR_DIR . '/./tmp\\../tmp/wow////hey/', 0777, true);
     $this->assertTrue(is_dir(VAR_DIR . '/tmp/wow/hey/'));
 }
예제 #4
0
 function cp($src, $dest)
 {
     dir::mkdir($dest, 0777);
     $arr = dir::ls($src);
     $separator = dir::separator();
     foreach ($arr as $fn) {
         if ($fn) {
             $fl = "{$src}{$separator}{$fn}";
             $flto = "{$dest}{$separator}{$fn}";
             if (is_dir($fl)) {
                 dir::cp($fl, $flto);
             } else {
                 copy($fl, $flto);
             }
         }
     }
 }
예제 #5
0
 function _load_cache($reset = true)
 {
     if ($reset) {
         $this->reset();
     }
     $cached_dir = $this->cached_dir;
     if (!is_dir($cached_dir)) {
         if (!dir::mkdir($cached_dir, 0777, true)) {
             debug::write_error("Couldn't create cache directory {$cached_dir}, perhaps wrong permissions", __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
         }
     }
     $input_files = array();
     $ini_file = '';
     $this->find_input_files($input_files, $ini_file);
     if (count($input_files) == 0) {
         return false;
     }
     $md5_files = array();
     foreach ($input_files as $input_file) {
         $md5_files[] = $input_file;
     }
     $md5_input = implode("\n", $md5_files);
     $file_name = md5($md5_input) . '.php';
     $cached_file = $cached_dir . $file_name;
     $this->cache_file = $cached_file;
     $input_time = false;
     // check for modifications
     foreach ($input_files as $input_file) {
         $file_time = filemtime($input_file);
         if ($input_time === false || $file_time > $input_time) {
             $input_time = $file_time;
         }
     }
     $load_cache = false;
     $cache_time = false;
     if (file_exists($cached_file)) {
         $cache_time = filemtime($cached_file);
         $load_cache = true;
         if ($cache_time < $input_time) {
             $load_cache = false;
         }
     }
     $use_cache = false;
     if ($load_cache) {
         $use_cache = true;
         $charset = null;
         $block_values = array();
         include $cached_file;
         if (!isset($ini_cache_code_date) or $ini_cache_code_date != INI_CACHE_CODE_DATE) {
             $this->reset();
             $use_cache = false;
         } else {
             $this->charset = $charset;
             $this->block_values = $block_values;
             $this->modified_block_values = array();
             unset($block_values);
         }
     }
     if (!$use_cache) {
         $this->_parse($input_files, $ini_file, false);
         $this->save_cache($cached_file);
     }
 }
예제 #6
0
 function test_mkdir_relative_path_no_trailing_slash()
 { 
 	dir :: rm(TEST_DIR_RELATIVE_PATH . '/tmp/');
 	
 	$this->assertFalse(is_dir(TEST_DIR_RELATIVE_PATH . '/tmp/wow/hey/'));
 	
 	dir :: mkdir(TEST_DIR_RELATIVE_PATH . '/./tmp\../tmp/wow////hey');
 	
 	$this->assertTrue(is_dir(TEST_DIR_RELATIVE_PATH . '/tmp/wow/hey/'));
 }
예제 #7
0
 function cp($src, $dest, $as_child = false, $exclude_regex = '', $include_hidden = false)
 {
     $src = dir::clean_path($src);
     $dest = dir::clean_path($dest);
     if (!is_dir($src)) {
         debug::write_error('no such a directory', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, array('dir' => $src));
         return false;
     }
     if (!dir::mkdir($dest)) {
         return false;
     }
     $separator = dir::separator();
     if ($as_child) {
         $separator_regex = preg_quote($separator);
         if (preg_match("#^.+{$separator_regex}([^{$separator_regex}]+)\$#", $src, $matches)) {
             dir::_do_mkdir($dest . $separator . $matches[1], 0777);
             $dest .= $separator . $matches[1];
         } else {
             return false;
         }
         //???
     }
     $items = dir::find_subitems($src, 'df', $exclude_regex, false, $include_hidden);
     $total_items = $items;
     while (count($items) > 0) {
         $current_items = $items;
         $items = array();
         foreach ($current_items as $item) {
             $full_path = $src . $separator . $item;
             if (is_file($full_path)) {
                 copy($full_path, $dest . $separator . $item);
             } elseif (is_dir($full_path)) {
                 dir::_do_mkdir($dest . $separator . $item, 0777);
                 $new_items = dir::find_subitems($full_path, 'df', $exclude_regex, $item, $include_hidden);
                 $items = array_merge($items, $new_items);
                 $total_items = array_merge($total_items, $new_items);
                 unset($new_items);
             }
         }
     }
     if ($total_items) {
         clearstatcache();
     }
     return $total_items;
 }
/**
* Writes a compiled template file
* 
* @param string $ filename
* @param string $ content to write to the file
* @return void 
* @access protected 
*/
function write_template_file($file, $data)
{
    if (!is_dir(dirname($file))) {
        dir::mkdir(dirname($file), 0777, true);
    }
    $fp = fopen($file, "wb");
    if (fwrite($fp, $data, strlen($data))) {
        fclose($fp);
    }
}
 /**
  * Constructor
  * 
  * $attributes is an assoc. Available attributes are :
  * 
  * @param array $attributes attributes
  * @access public 
  */
 function cache_lite($attributes = array(null))
 {
     $this->import_attributes($attributes);
     if (!is_dir(CACHE_DIR)) {
         dir::mkdir(CACHE_DIR, 0777, true);
     }
 }