1: <?php
  2: 
  3: if($_SESSION['RF']["verify"] !== "RESPONSIVEfilemanager") die('forbiden');
  4: 
  5: function deleteDir($dir) {
  6:     if (!file_exists($dir)) return true;
  7:     if (!is_dir($dir)) return unlink($dir);
  8:     foreach (scandir($dir) as $item) {
  9:         if ($item === '.' || $item === '..') continue;
 10:         if (!deleteDir($dir.DIRECTORY_SEPARATOR.$item)) return false;
 11:     }
 12:     return rmdir($dir);
 13: }
 14: 
 15: function duplicate_file($old_path,$name){
 16:     if(file_exists($old_path)){
 17:     $info=pathinfo($old_path);
 18:     $new_path=$info['dirname']."/".$name.".".$info['extension'];
 19:     if(file_exists($new_path)) return false;
 20:     return copy($old_path,$new_path);
 21:     }
 22: }
 23: 
 24: function rename_file($old_path,$name,$transliteration){
 25:     $name=fix_filename($name,$transliteration);
 26:     if(file_exists($old_path)){
 27:     $info=pathinfo($old_path);
 28:     $new_path=$info['dirname']."/".$name.".".$info['extension'];
 29:     if(file_exists($new_path)) return false;
 30:     return rename($old_path,$new_path);
 31:     }
 32: }
 33: 
 34: function rename_folder($old_path,$name,$transliteration){
 35:     $name=fix_filename($name,$transliteration);
 36:     if(file_exists($old_path)){
 37:     $new_path=fix_dirname($old_path)."/".$name;
 38:     if(file_exists($new_path)) return false;
 39:     return rename($old_path,$new_path);
 40:     }
 41: }
 42: 
 43: function create_img_gd($imgfile, $imgthumb, $newwidth, $newheight="") {
 44:     if(image_check_memory_usage($imgfile,$newwidth,$newheight)){
 45:     require_once('php_image_magician.php');
 46:     $magicianObj = new imageLib($imgfile);
 47:     $magicianObj -> resizeImage($newwidth, $newheight, 'crop');
 48:     $magicianObj -> saveImage($imgthumb,80);
 49:     return true;
 50:     }
 51:     return false;
 52: }
 53: 
 54: function create_img($imgfile, $imgthumb, $newwidth, $newheight="") {
 55:     if(image_check_memory_usage($imgfile,$newwidth,$newheight)){
 56:     require_once('php_image_magician.php');
 57:     $magicianObj = new imageLib($imgfile);
 58:     $magicianObj -> resizeImage($newwidth, $newheight, 'auto');
 59:     $magicianObj -> saveImage($imgthumb,80);
 60:     return true;
 61:     }else{
 62:     return false;
 63:     }
 64: }
 65: 
 66: function makeSize($size) {
 67:    $units = array('B','KB','MB','GB','TB');
 68:    $u = 0;
 69:    while ( (round($size / 1024) > 0) && ($u < 4) ) {
 70:      $size = $size / 1024;
 71:      $u++;
 72:    }
 73:    return (number_format($size, 0) . " " . $units[$u]);
 74: }
 75: 
 76: function foldersize($path) {
 77:     $total_size = 0;
 78:     $files = scandir($path);
 79:     $cleanPath = rtrim($path, '/'). '/';
 80: 
 81:     foreach($files as $t) {
 82:         if ($t !== "." && $t !== "..") {
 83:             $currentFile = $cleanPath . $t;
 84:             if (is_dir($currentFile)) {
 85:                 $size = foldersize($currentFile);
 86:                 $total_size += $size;
 87:             }
 88:             else {
 89:                 $size = filesize($currentFile);
 90:                 $total_size += $size;
 91:             }
 92:         }
 93:     }
 94: 
 95:     return $total_size;
 96: }
 97: 
 98: function filescount($path) {
 99:     $total_count = 0;
100:     $files = scandir($path);
101:     $cleanPath = rtrim($path, '/'). '/';
102: 
103:     foreach($files as $t) {
104:         if ($t !== "." && $t !== "..") {
105:             $currentFile = $cleanPath . $t;
106:             if (is_dir($currentFile)) {
107:                 $size = filescount($currentFile);
108:                 $total_count += $size;
109:             }
110:             else {
111:                 $total_count += 1;
112:             }
113:         }
114:     }
115: 
116:     return $total_count;
117: }
118: 
119: function create_folder($path=false,$path_thumbs=false){
120:     $oldumask = umask(0);
121:     if ($path && !file_exists($path))
122:         mkdir($path, 0777, true); 
123:     if($path_thumbs && !file_exists($path_thumbs))
124:         mkdir($path_thumbs, 0777, true) or die("$path_thumbs cannot be found"); 
125:     umask($oldumask);
126: }
127: 
128: function check_files_extensions_on_path($path,$ext){
129:     if(!is_dir($path)){
130:     $fileinfo = pathinfo($path);
131:     if(!in_array(mb_strtolower($fileinfo['extension']),$ext))
132:         unlink($path);
133:     }else{
134:     $files = scandir($path);
135:     foreach($files as $file){
136:         check_files_extensions_on_path(trim($path,'/')."/".$file,$ext);
137:     }
138:     }
139: }
140: 
141: function check_files_extensions_on_phar( $phar, &$files, $basepath, $ext ) {
142:     foreach( $phar as $file )
143:     {
144:         if( $file->isFile() )
145:         {
146:             if(in_array(mb_strtolower($file->getExtension()),$ext))
147:             {
148:                 $files[] = $basepath.$file->getFileName( );
149:             }
150:         }
151:         else if( $file->isDir() )
152:         {
153:             $iterator = new DirectoryIterator( $file );
154:             check_files_extensions_on_phar($iterator, $files, $basepath.$file->getFileName().'/', $ext);
155:         }
156:     }
157: }
158: 
159: function fix_get_params($str){
160:     return strip_tags(preg_replace( "/[^a-zA-Z0-9\.\[\]_| -]/", '', $str));
161: }
162: 
163: function fix_filename($str,$transliteration){
164:     if($transliteration){
165:         if( function_exists( 'transliterator_transliterate' ) )
166:         {
167:            $str = transliterator_transliterate( 'Accents-Any', $str );
168:         }
169:         else
170:         {
171:            $str = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $str);
172:         }
173: 
174:     $str = preg_replace( "/[^a-zA-Z0-9\.\[\]_| -]/", '', $str );
175:     }
176: 
177:     $str=str_replace(array('"',"'","/","\\"),"",$str);
178:     $str=strip_tags($str);
179: 
180:     
181:     
182:     
183:     if( strpos( $str, '.' ) === 0 )
184:     {
185:        $str = 'file'.$str;
186:     }
187: 
188:     return trim( $str );
189: }
190: 
191: function fix_dirname($str){
192:     return str_replace('~',' ',dirname(str_replace(' ','~',$str)));
193: }
194: 
195: function fix_strtoupper($str){
196:     if( function_exists( 'mb_strtoupper' ) )
197:     return mb_strtoupper($str);
198:     else
199:     return strtoupper($str);
200: }
201: 
202: 
203: function fix_strtolower($str){
204:     if( function_exists( 'mb_strtoupper' ) )
205:     return mb_strtolower($str);
206:     else
207:     return strtolower($str);
208: }
209: 
210: function fix_path($path,$transliteration){
211:     $info=pathinfo($path);
212:     $tmp_path = $info['dirname'];
213:     $str=fix_filename($info['filename'],$transliteration);
214:     if($tmp_path!="")
215:         return $tmp_path.DIRECTORY_SEPARATOR.$str;
216:     else
217:         return $str;
218: }
219: 
220: function base_url(){
221:   return sprintf(
222:     "%s://%s",
223:     isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http',
224:     $_SERVER['HTTP_HOST']
225:   );
226: }
227: 
228: function config_loading($current_path,$fld){
229:     if(file_exists($current_path.$fld.".config")){
230:     require_once($current_path.$fld.".config");
231:     return true;
232:     }
233:     echo "!!!!".$parent=fix_dirname($fld);
234:     if($parent!=="." && !empty($parent)){
235:     config_loading($current_path,$parent);
236:     }
237: 
238:     return false;
239: }
240: 
241: 
242: function image_check_memory_usage($img, $max_breedte, $max_hoogte){
243:     if(file_exists($img)){
244:     $K64 = 65536;    
245:     $memory_usage = memory_get_usage();
246:     $memory_limit = abs((int)(str_replace('M','',ini_get('memory_limit'))*1024*1024));
247:     $image_properties = getimagesize($img);
248:     $image_width = $image_properties[0];
249:     $image_height = $image_properties[1];
250:     $image_bits = $image_properties['bits'];
251:     $image_memory_usage = $K64 + ($image_width * $image_height * ($image_bits )  * 2);
252:     $thumb_memory_usage = $K64 + ($max_breedte * $max_hoogte * ($image_bits ) * 2);
253:     $memory_needed = (int)($memory_usage + $image_memory_usage + $thumb_memory_usage);
254: 
255:         if($memory_needed > $memory_limit){
256:                 ini_set('memory_limit',((int)($memory_needed/1024/1024)+5) . 'M');
257:                 if(ini_get('memory_limit') == ((int)($memory_needed/1024/1024)+5) . 'M'){
258:                 return true;
259:             }else{
260:                 return false;
261:             }
262:         }else{
263:             return true;
264:         }
265:         }else{
266:         return false;
267:     }
268: }
269: 
270: function endsWith($haystack, $needle)
271: {
272:     return $needle === "" || substr($haystack, -strlen($needle)) === $needle;
273: }
274: 
275: function new_thumbnails_creation($targetPath,$targetFile,$name,$current_path,$relative_image_creation,$relative_path_from_current_pos,$relative_image_creation_name_to_prepend,$relative_image_creation_name_to_append,$relative_image_creation_width,$relative_image_creation_height,$fixed_image_creation,$fixed_path_from_filemanager,$fixed_image_creation_name_to_prepend,$fixed_image_creation_to_append,$fixed_image_creation_width,$fixed_image_creation_height){
276:     
277:     $all_ok=true;
278:     if($relative_image_creation){
279:     foreach($relative_path_from_current_pos as $k=>$path){
280:         if($path!="" && $path[strlen($path)-1]!="/") $path.="/";
281:         if (!file_exists($targetPath.$path)) create_folder($targetPath.$path,false);
282:         $info=pathinfo($name);
283:         if(!endsWith($targetPath,$path))
284:         if(!create_img($targetFile, $targetPath.$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].".".$info['extension'], $relative_image_creation_width[$k], $relative_image_creation_height[$k]))
285:             $all_ok=false;
286:     }
287:     }
288: 
289:     
290:     if($fixed_image_creation){
291:     foreach($fixed_path_from_filemanager as $k=>$path){
292:         if($path!="" && $path[strlen($path)-1]!="/") $path.="/";
293:         $base_dir=$path.substr_replace($targetPath, '', 0, strlen($current_path));
294:         if (!file_exists($base_dir)) create_folder($base_dir,false);
295:         $info=pathinfo($name);
296:         if(!create_img($targetFile, $base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension'], $fixed_image_creation_width[$k], $fixed_image_creation_height[$k]))
297:         $all_ok=false;
298:     }
299:     }
300:     return $all_ok;
301: }
302: 
303: 
304: 
305: function get_file_by_url($url) {
306:     if (ini_get('allow_url_fopen')) {
307:         return file_get_contents($url);
308:     }
309:     if (!function_exists('curl_version')) {
310:         return false;
311:     }
312: 
313:     $ch = curl_init();
314: 
315:     curl_setopt($ch, CURLOPT_HEADER, 0);
316:     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
317:     curl_setopt($ch, CURLOPT_URL, $url);
318: 
319:     $data = curl_exec($ch);
320:     curl_close($ch);
321: 
322:     return $data;
323: }
324: 
325: 
326: function is_really_writable($dir){
327:     $dir = rtrim($dir, '/');
328:     
329:     if (DIRECTORY_SEPARATOR === '/' && @ini_get("safe_mode") == FALSE){
330:         return is_writable($dir);
331:     }
332: 
333:     
334:     if (is_dir($dir)){
335:         $dir = $dir.'/'.md5(mt_rand(1,1000).mt_rand(1,1000));
336: 
337:         if (($fp = @fopen($dir, 'ab')) === FALSE){
338:             return FALSE;
339:         }
340: 
341:         fclose($fp);
342:         @chmod($dir, 0777);
343:         @unlink($dir);
344:         return TRUE;
345:     }
346:     elseif ( ! is_file($dir) || ($fp = @fopen($dir, 'ab')) === FALSE){
347:         return FALSE;
348:     }
349: 
350:     fclose($fp);
351:     return TRUE;
352: }
353: 
354: 355: 356: 357: 358: 359: 360: 
361: function is_function_callable($name){
362:     if (function_exists($name) === FALSE) return FALSE;
363:     $disabled = explode(',', ini_get('disable_functions'));
364:     return !in_array($name, $disabled);
365: }
366: 
367: 
368: function rcopy($source, $destination, $is_rec = FALSE) {
369:     if (is_dir($source)) {
370:         if ($is_rec === FALSE){
371:             $pinfo = pathinfo($source);
372:             $destination = rtrim($destination, '/').DIRECTORY_SEPARATOR.$pinfo['basename'];
373:         }
374:         if (is_dir($destination) === FALSE){
375:             mkdir($destination, 0777, true);
376:         }
377: 
378:         $files = scandir($source);
379:         foreach ($files as $file){
380:             if ($file !== "." && $file !== "..") {
381:                 rcopy($source.DIRECTORY_SEPARATOR.$file, rtrim($destination, '/').DIRECTORY_SEPARATOR.$file, TRUE);
382:             }
383:         }
384:     }
385:     else {
386:         if (file_exists($source)){
387:             if (is_dir($destination) === TRUE){
388:                 $pinfo = pathinfo($source);
389:                 $dest2 = rtrim($destination, '/').DIRECTORY_SEPARATOR.$pinfo['basename'];
390:             }
391:             else {
392:                 $dest2 = $destination;
393:             }
394: 
395:             copy($source, $dest2);
396:         }
397:     }
398: }
399: 
400: 
401: 
402: 
403: 
404: function rrename($source, $destination, $is_rec = FALSE) {
405:     if (is_dir($source)) {
406:         if ($is_rec === FALSE){
407:             $pinfo = pathinfo($source);
408:             $destination = rtrim($destination, '/').DIRECTORY_SEPARATOR.$pinfo['basename'];
409:         }
410:         if (is_dir($destination) === FALSE){
411:             mkdir($destination, 0777, true);
412:         }
413: 
414:         $files = scandir($source);
415:         foreach ($files as $file){
416:             if ($file !== "." && $file !== "..") {
417:                 rrename($source.DIRECTORY_SEPARATOR.$file, rtrim($destination, '/').DIRECTORY_SEPARATOR.$file, TRUE);
418:             }
419:         }
420:     }
421:     else {
422:         if (file_exists($source)){
423:             if (is_dir($destination) === TRUE){
424:                 $pinfo = pathinfo($source);
425:                 $dest2 = rtrim($destination, '/').DIRECTORY_SEPARATOR.$pinfo['basename'];
426:             }
427:             else {
428:                 $dest2 = $destination;
429:             }
430: 
431:             rename($source, $dest2);
432:         }
433:     }
434: }
435: 
436: 
437: 
438: 
439: function rrename_after_cleaner($source) {
440:     $files = scandir($source);
441: 
442:     foreach ($files as $file) {
443:         if ($file !== "." && $file !== "..") {
444:             if (is_dir($source.DIRECTORY_SEPARATOR.$file)){
445:                 rrename_after_cleaner($source.DIRECTORY_SEPARATOR.$file);
446:             }
447:             else {
448:                 unlink($source.DIRECTORY_SEPARATOR.$file);
449:             }
450:         }
451:     }
452: 
453:     return rmdir($source);
454: }
455: 
456: function debugger($input, $trace = false, $halt = fale){
457:     \Xmf\Debug::dump($input);
458:     if ($trace){
459:          \Xmf\Debug::backtrace();
460:     }
461:     if ($halt){
462:         exit();
463:     }
464: }
465: