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: