Exemple #1
0
 /**
  * nameFile
  * Returns the valid file name to use
  *
  * @param	string
  * @return	string
  */
 private function nameFile($path = '', $extension, $method, $original_name = '')
 {
     $path = trim($path);
     $path = $path == '' ? './' : $path;
     $method = !check_value($method) || !in_array($method, array('original', 'random', 'mixed')) ? 'original' : $method;
     $original_name = unaccent_string($original_name);
     $original_name = !check_value($original_name) ? generateRandomString(rand(5, 10)) : preg_replace('/\\.[^.\\s]{3,4}$/', '', $original_name);
     // Original name as it
     $strip = array("~", "`", "!", "@", "#", "\$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "[", "{", "]", "}", "\\", "|", ";", ":", "\"", "'", "&#8216;", "&#8217;", "&#8220;", "&#8221;", "&#8211;", "&#8212;", "—", "–", ",", "<", ".", ">", "/", "?");
     $original_name = trim(str_replace($strip, "", strip_tags($original_name)));
     $original_name = preg_replace('/[\\s\\.]+/', '_', $original_name);
     // Original name with spaces and dots changed to "_"
     if (strlen($original_name) == 0) {
         $method = 'random';
     }
     function get_name_by_method($method, $extension, $original_name)
     {
         //$max_lenght = 255 - 1 - strlen($extension) - 5; // 246
         $max_lenght = 200;
         $original_name = substr($original_name, 0, 200);
         $original_name_lenght = strlen($original_name);
         switch ($method) {
             default:
             case 'original':
                 $name = $original_name;
                 break;
             case 'random':
                 $name = generateRandomString(rand(5, 10));
                 break;
             case 'mixed':
                 if ($original_name_lenght >= $max_lenght) {
                     $name = substr($original_name, 0, $max_lenght - 5);
                 } else {
                     $name = $original_name;
                 }
                 $name .= generateRandomString(5);
                 break;
         }
         return $name . '.' . strtolower($extension);
     }
     $filename = $path . get_name_by_method($method, $extension, $original_name);
     while (file_exists($filename)) {
         if ($method == 'original') {
             $method = 'mixed';
         }
         $filename = $path . get_name_by_method($method, $extension, $original_name);
     }
     return $filename;
 }
 /**
  * Get a safe filename
  * $method: original | random | mixed | id
  * $filename: name of the original file
  */
 function get_filename_by_method($method, $filename)
 {
     $max_lenght = 200;
     $extension = get_file_extension($filename);
     $clean_filename = substr($filename, 0, -(strlen($extension) + 1));
     $clean_filename = unaccent_string($clean_filename);
     // change áéíóú to aeiou
     $clean_filename = preg_replace('/[^\\.\\w\\d-]/i', '', $clean_filename);
     // remove any non alphanumeric, non underscore, non hyphen and non period
     // Non alphanumeric name uh..
     if (strlen($clean_filename) == 0) {
         $clean_filename = random_string(16);
     }
     $unlimited_filename = $clean_filename;
     // No max_lenght limit
     $clean_filename = substr($clean_filename, 0, $max_lenght);
     switch ($method) {
         default:
         case 'original':
             $name = $clean_filename;
             break;
         case 'random':
             $name = random_string(32);
             break;
         case 'mixed':
             if (strlen($clean_filename) >= $max_lenght) {
                 $name = substr($clean_filename, 0, $max_lenght - 5);
             } else {
                 $name = $clean_filename;
             }
             $name .= random_string(5);
             break;
         case 'id':
             $name = $unlimited_filename;
             break;
     }
     return $name . '.' . $extension;
 }