public/Cerebro/inc/WURFL/FileUtils.php line 69

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright (c) 2012 ScientiaMobile, Inc.
  4.  *
  5.  * This program is free software: you can redistribute it and/or modify
  6.  * it under the terms of the GNU Affero General Public License as
  7.  * published by the Free Software Foundation, either version 3 of the
  8.  * License, or (at your option) any later version.
  9.  *
  10.  * Refer to the COPYING.txt file distributed with this package.
  11.  *
  12.  * @category   WURFL
  13.  * @package    WURFL
  14.  * @copyright  ScientiaMobile, Inc.
  15.  * @license    GNU Affero General Public License
  16.  * @version    $id$
  17.  */
  18. /**
  19.  * WURFL File Utilities
  20.  * @package    WURFL
  21.  */
  22. class WURFL_FileUtils {
  23.     
  24.     /**
  25.      * Create a directory structure recursiveley
  26.      * @param string $path
  27.      * @param int $mode
  28.      */
  29.     public static function mkdir($path$mode=0755) {
  30.         @mkdir($path$modetrue);
  31.     }
  32.     
  33.     /**
  34.      * Recursiely remove all files from the given directory NOT including the
  35.      * specified directory itself
  36.      * @param string $path Directory to be cleaned out
  37.      */
  38.     public static function rmdirContents($path) {
  39.         $files scandir($path);
  40.         array_shift($files); // remove '.' from array
  41.         array_shift($files); // remove '..' from array
  42.         
  43.         foreach ($files as $file) {
  44.             $file $path DIRECTORY_SEPARATOR $file;
  45.             if (is_dir($file )) {
  46.                 self::rmdir($file);
  47.                 rmdir($file);
  48.             } else {
  49.                 unlink($file);
  50.             }
  51.         }    
  52.     }
  53.     
  54.     /**
  55.      * Alias to rmdirContents()
  56.      * @param string $path Directory to be cleaned out
  57.      * @see rmdirContents()
  58.      */
  59.     public static function rmdir($path) {
  60.         self::rmdirContents($path);
  61.     }
  62.     
  63.     /**
  64.      * Returns the unserialized contents of the given $file
  65.      * @param string $file filename
  66.      * @return mixed Unserialized data or null if file does not exist
  67.      */
  68.     public static function read($file) {
  69.         $data = @file_get_contents($file);
  70.         if ($data === false) return null;
  71.         $value = @unserialize($data);
  72.         if ($value === false) return null;
  73.         return $value;
  74.     }
  75.     
  76.     /**
  77.      * Serializes and saves $data in the file $path and sets the last modified time to $mtime  
  78.      * @param string $path filename to save data in
  79.      * @param mixed $data data to be serialized and saved
  80.      * @param integer $mtime Last modified date in epoch time
  81.      */
  82.     public static function write($path$data$mtime 0) {
  83.         if (!file_exists(dirname($path))) {
  84.             self::mkdir(dirname($path), 0755true);
  85.         }
  86.         if (file_put_contents($pathserialize($data), LOCK_EX )) {
  87.             $mtime = ($mtime 0)? $mtimetime();
  88.             @chmod($path0777);
  89.             @touch($path$mtime);
  90.         }
  91.     }
  92.     
  93.     /**
  94.      * Combines given array of $strings into a proper filesystem path
  95.      * @param array $strings Array of (string)path members
  96.      * @return string Proper filesystem path 
  97.      */
  98.     public static function join($strings = array()) {
  99.         return implode(DIRECTORY_SEPARATOR$strings);
  100.     }
  101.     
  102.     /**
  103.      * Returns a directory for storing temporary files
  104.      * @return string 
  105.      */
  106.     public static function getTempDir() {
  107.         $temp_dir ini_get('upload_tmp_dir');
  108.         if (!$temp_dir) {
  109.             $temp_dir function_exists('sys_get_temp_dir')? sys_get_temp_dir(): '/tmp';
  110.         }
  111.         return realpath($temp_dir);
  112.     }
  113.     
  114.     /**
  115.      * Cleans the filename by removing duplicate directory separators and normalizing them for the current OS
  116.      * @param string $fileName
  117.      * @return string
  118.      */
  119.     public static function cleanFilename($fileName) {
  120.         return preg_replace('#[/\\\]+#'DIRECTORY_SEPARATOR$fileName);
  121.     }
  122. }