| Source for file class.afiles.phpDocumentation is available at class.afiles.php 
 * @package linea21.externals * @subpackage Absynthe-files * @author Sylvain 'Absynthe' Rabot <sylvain@abstraction.fr> , modified by Linea21 <info@linea21.com> * @link http://absynthe.is.free.fr/aFiles/ * @license http://opensource.org/licenses/gpl-3.0.html   * Default path to an entity   * Constructor which allows to chose the path of the entity used for following actions   * Methods which allows to chose the path of the entity used for following actions   * Return the path of the entity used by default   * Return the type of an entity  function type($path = null)   * Return the list of all entity included in the path   * @param boolean $withroot   function ls($path = null, $withroot = true)      while (false !== ($file = readdir($handle)))        if ($file != '..' && $file != '.' && $file != '')          $infos[] = $path .'/' .$file;      $infos = array_map(array($this, 'format_path'), $infos);   * Return the list of directories included in the path   * @param boolean $withroot   function lsd($path = null, $withroot = true)      while (false !== ($file = readdir($handle)))          if ($file != '..' && $file != '.' && $file != '')            $infos[] = $path .'/' .$file;      $infos = array_map(array($this, 'format_path'), $infos);   * Return infos of all entity included in the path   * @param boolean $withroot   function ll($path = null, $withroot = true)      while (false !== ($file = readdir($handle)))        if ($file != '..' && $file != '.' && $file != '')            $infos[$temp] = $this->infos($temp);            $infos[$temp] = $this->infos($path .'/' .$file);   * Return infos of all directories included in the path   * @param boolean $withroot   function lld($path = null, $withroot = true)      while (false !== ($file = readdir($handle)))          if ($file != '..' && $file != '.' && $file != '')              $infos[$temp] = $this->infos($temp);              $infos[$temp] = $this->infos($path .'/' .$file);   * Create a file with or without content  function mkfile($content = '', $path = null)    if ($handle = fopen($path, 'w+'))   * Read the content of a file  function read_file($path = null, $byline = false, $length = 1024)      if ($handle = fopen($path, 'r'))        $lines[] = fgets($handle, $length);   * Create a directory with/without chmod  function mkdir($path = null, $chmod = null)   * Move a file or a directory  function mv($path, $where)      $tree = $this->tree($path);      $this->cp($path, $where);      $this->cp($path, $where);   * Remove files or/and directories  function rm($path = null)        $tree = $this->tree($file);   * Copy files or/and directories  function cp($path, $where)        copy($path, $where.'/' .$file_name);          copy($file, $where.'/' .$file_name);          $files = $this->tree($file);          $this->mkdir($where.'/' .$file);            $this->mkdir($where.'/' .$f);   * Return the mod of a file/directory   * Credits goes to Ambriel_Angel (www dot ambriels dot net)    $val += (($perms & 0x0100) ? 0x0100 : 0x0000);        // Read    $val += (($perms & 0x0080) ? 0x0080 : 0x0000);        // Write    $val += (($perms & 0x0040) ? 0x0040 : 0x0000);        // Execute    $val += (($perms & 0x0020) ? 0x0020 : 0x0000);        // Read    $val += (($perms & 0x0010) ? 0x0010 : 0x0000);        // Write    $val += (($perms & 0x0008) ? 0x0008 : 0x0000);        // Execute    $val += (($perms & 0x0004) ? 0x0004 : 0x0000);        // Read    $val += (($perms & 0x0002) ? 0x0002 : 0x0000);        // Write    $val += (($perms & 0x0001) ? 0x0001 : 0x0000);        //    Execute    $val += (($perms & 0x40000) ? 0x40000 : 0x0000);    // temporary file (01000000)    $val += (($perms & 0x80000) ? 0x80000 : 0x0000);     // compressed file (02000000)    $val += (($perms & 0x100000) ? 0x100000 : 0x0000);    // sparse file (04000000)    $val += (($perms & 0x0800) ? 0x0800 : 0x0000);        // Hidden file (setuid bit) (04000)    $val += (($perms & 0x0400) ? 0x0400 : 0x0000);        // System file (setgid bit) (02000)    $val += (($perms & 0x0200) ? 0x0200 : 0x0000);        // Archive bit (sticky bit) (01000)   * Return infos concerning the entity   * @param boolean $withroot    * @param boolean $content   function infos($path = null, $withroot = true, $content = true, $byline = false, $length = 1024)        $infos['chmod']            = $this->mod($path);        $infos['files_count']    = 0;        $infos['size']            = $this->filesize($path);        $infos['files']            = array();        $infos['directories']    = array();        while (false !== ($file = readdir($handle)))            if ($file != '..' && $file != '.' && $file != '')              $infos['directories'][] = $path .'/' .$file;              $infos['directories'][] = $file;            $infos['files'][] = $path .'/' .$file;            $infos['files'][] = $file;        $infos['files']            = array_map(array($this, 'format_path'), $infos['files']);        $infos['directories']    = array_map(array($this, 'format_path'), $infos['directories']);      if ($handle = fopen($path, 'r'))        $infos['chmod']            = $this->mod($path);        $infos['lines_count']    = 0;        $infos['size']            = $this->filesize($path);          $infos['content'][] = fgets($handle, $length);   * Return tree of a directory   * @param boolean $expand2files   function tree($path = null, $expand2files = true)    $directories = $this->lsd($path);    for ($x = 0; $x < count($directories); $x ++)      if (!is_dir($directories[$x]))      if ($handle = opendir($directories[$x]))        while (false !== ($file = readdir($handle)))          if (is_dir($directories[$x]."/" .$file))            if ($file != '..' && $file != '.' && $file != '')              $directories[] = $directories[$x] ."/" .$file;    $directories    = array_map(array($this, 'format_path'), $directories);      foreach ($directories as $dir)        $expanded_directories[] = $dir;          while (false !== ($file = readdir($handle)))          $expanded_directories[] = $dir .'/' .$file;          $expanded_directories[] = false;      $expanded_directories = array_map(array($this, 'format_path'), $expanded_directories);    return $expand2files === true ? $expanded_directories : $directories;   * Return the size of an entity      $tree = $this->tree($path);   * Serialize and creates a file with the serial  function parse_ini($path = null, $whithsection = true)  function mkini($content, $path = null)    foreach ($content as $key => $ini)        $out .= "\n[" .$key ."]\n\n";        foreach ($ini as $var => $value)          $out .= $var ." \t\t= " .$this->quote_ini($value) ."\n";        $out .= $key ." \t\t= " .$this->quote_ini($ini) ."\n";    return $this->mkfile($out, $path);   ------------------------------------------------- */   * Set a variable to $default parameter if it's null   * @param anything $default    * Replace '//' by '/' in paths   * Quote ini var if needed  /*function quote_ini($var)   return is_string($var) === true ? '"'.str_replace('"', '\"', $var).'"' : $var;   * Apply the callback function on files with extension "filter"   * this method is recursive  function lsr($directory, $filter=false, $directory_tree)    // if the path has a slash at the end we remove it here    if(substr($directory,-1) == '/')      $directory = substr($directory,0, -1);    // if the path is not valid or is not a directory ...      // ... we return false and exit the function      // ... else if the path is readable      $directory_list = opendir($directory);      // and scan through the items inside      while (false !== ($file = readdir($directory_list)))        // if the filepointer is not the current directory        // or the parent directory        if($file != '.' && $file != '..')          // we build the new path to scan          $path = $directory .'/' .$file;          // if the path is readable            // we split the new path by directories            $subdirectories = explode('/',$path);            // if the new path is a directory              // we scan the new path by calling this function              $directory_tree=$this->lsr($path, $filter, $directory_tree);              // if the new path is a file              // get the file extension by taking everything after the last dot              // if there is no filter set or the filter is set and matches              if($filter === false || $filter == $extension)      if(isset($directory_tree))      // if the path is not readable ... |