/la/admin3120tsmcd/filemanager/execute.php
https://gitlab.com/elasa/shop2.elasa.ir · PHP · 205 lines · 187 code · 18 blank · 0 comment · 79 complexity · 49d0c9f21e1b4047c209df70200542a8 MD5 · raw file
- <?php
- include('config/config.php');
- if ($_SESSION['verify'] != 'RESPONSIVEfilemanager') die('forbiden');
- include('include/utils.php');
- $_POST['path_thumb'] = $thumbs_base_path.$_POST['path_thumb'];
- if (!isset($_POST['path_thumb']) && trim($_POST['path_thumb']) == '')
- die('wrong path');
- $thumb_pos = strpos($_POST['path_thumb'], $thumbs_base_path);
- if ($thumb_pos === false
- || preg_match('/\.{1,2}[\/|\\\]/', $_POST['path_thumb']) !== 0
- || preg_match('/\.{1,2}[\/|\\\]/', $_POST['path']) !== 0
- )
- die('wrong path');
- $language_file = 'lang/en.php';
- if (isset($_GET['lang']) && $_GET['lang'] != 'undefined' && $_GET['lang'] != '')
- {
- $path_parts = pathinfo($_GET['lang']);
- if (is_readable('lang/'.$path_parts['basename'].'.php'))
- $language_file = 'lang/'.$path_parts['basename'].'.php';
- }
- require_once $language_file;
- $base = $current_path;
- if (isset($_POST['path']))
- $path = $current_path.str_replace("\0", "", $_POST['path']);
- else
- $path = $current_path;
- $cycle = true;
- $max_cycles = 50;
- $i = 0;
- while ($cycle && $i < $max_cycles)
- {
- $i++;
- if ($path == $base) $cycle = false;
- if (file_exists($path.'config.php'))
- {
- require_once($path.'config.php');
- $cycle = false;
- }
- $path = fix_dirname($path).'/';
- $cycle = false;
- }
- $path = $current_path.str_replace("\0", "", $_POST['path']);
- $path_thumb = $_POST['path_thumb'];
- if (isset($_POST['name']))
- {
- $name = $_POST['name'];
- if (preg_match('/\.{1,2}[\/|\\\]/', $name) !== 0) die('wrong name');
- }
- $info = pathinfo($path);
- if (isset($info['extension']) && !(isset($_GET['action']) && $_GET['action'] == 'delete_folder') && !in_array(strtolower($info['extension']), $ext))
- die('wrong extension');
- if (isset($_GET['action']))
- {
- switch ($_GET['action'])
- {
- case 'delete_file':
- if ($delete_files)
- {
- unlink($path);
- if (file_exists($path_thumb))
- unlink($path_thumb);
- $info = pathinfo($path);
- if ($relative_image_creation)
- {
- foreach ($relative_path_from_current_pos as $k => $path)
- {
- if ($path != '' && $path[strlen($path) - 1] != '/')
- $path .= '/';
- if (file_exists($info['dirname'].'/'.$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].'.'.$info['extension']))
- unlink($info['dirname'].'/'.$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].'.'.$info['extension']);
- }
- }
- if ($fixed_image_creation)
- {
- foreach ($fixed_path_from_filemanager as $k => $path)
- {
- if ($path != '' && $path[strlen($path) - 1] != '/')
- $path .= '/';
- $base_dir = $path.substr_replace($info['dirname'].'/', '', 0, strlen($current_path));
- if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension']))
- unlink($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension']);
- }
- }
- }
- break;
- case 'delete_folder':
- if ($delete_folders)
- {
- if (is_dir($path_thumb))
- deleteDir($path_thumb);
- if (is_dir($path))
- {
- deleteDir($path);
- if ($fixed_image_creation)
- {
- foreach ($fixed_path_from_filemanager as $k => $paths)
- {
- if ($paths != '' && $paths[strlen($paths) - 1] != '/') $paths .= '/';
- $base_dir = $paths.substr_replace($path, '', 0, strlen($current_path));
- if (is_dir($base_dir))
- deleteDir($base_dir);
- }
- }
- }
- }
- break;
- case 'create_folder':
- if ($create_folders)
- create_folder(fix_path($path, $transliteration), fix_path($path_thumb, $transliteration));
- break;
- case 'rename_folder':
- if ($rename_folders)
- {
- $name = fix_filename($name, $transliteration);
- $name = str_replace('.', '', $name);
- if (!empty($name))
- {
- if (!rename_folder($path, $name, $transliteration))
- die(lang_Rename_existing_folder);
- rename_folder($path_thumb, $name, $transliteration);
- if ($fixed_image_creation)
- {
- foreach ($fixed_path_from_filemanager as $k => $paths)
- {
- if ($paths != '' && $paths[strlen($paths) - 1] != '/') $paths .= '/';
- $base_dir = $paths.substr_replace($path, '', 0, strlen($current_path));
- rename_folder($base_dir, $name, $transliteration);
- }
- }
- } else
- die(lang_Empty_name);
- }
- break;
- case 'rename_file':
- if ($rename_files)
- {
- $name = fix_filename($name, $transliteration);
- if (!empty($name))
- {
- if (!rename_file($path, $name, $transliteration))
- die(lang_Rename_existing_file);
- rename_file($path_thumb, $name, $transliteration);
- if ($fixed_image_creation)
- {
- $info = pathinfo($path);
- foreach ($fixed_path_from_filemanager as $k => $paths)
- {
- if ($paths != '' && $paths[strlen($paths) - 1] != '/') $paths .= '/';
- $base_dir = $paths.substr_replace($info['dirname'].'/', '', 0, strlen($current_path));
- if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension']))
- rename_file($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension'], $fixed_image_creation_name_to_prepend[$k].$name.$fixed_image_creation_to_append[$k], $transliteration);
- }
- }
- } else
- die(lang_Empty_name);
- }
- break;
- case 'duplicate_file':
- if ($duplicate_files)
- {
- $name = fix_filename($name, $transliteration);
- if (!empty($name))
- {
- if (!duplicate_file($path, $name))
- die(lang_Rename_existing_file);
- duplicate_file($path_thumb, $name);
- if ($fixed_image_creation)
- {
- $info = pathinfo($path);
- foreach ($fixed_path_from_filemanager as $k => $paths)
- {
- if ($paths != '' && $paths[strlen($paths) - 1] != '/') $paths .= '/';
- $base_dir = $paths.substr_replace($info['dirname'].'/', '', 0, strlen($current_path));
- if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension']))
- duplicate_file($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension'], $fixed_image_creation_name_to_prepend[$k].$name.$fixed_image_creation_to_append[$k]);
- }
- }
- } else
- die(lang_Empty_name);
- }
- break;
- default:
- die('wrong action');
- break;
- }
- }
- ?>