<?php
/**
* @version		$Id: utils.php 46 2009-05-26 16:59:42Z happynoodleboy $
* @package      JCE
* @copyright    Copyright (C) 2005 - 2009 Ryan Demmer. All rights reserved.
* @author		Ryan Demmer
* @license      GNU/GPL
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/
defined( '_JEXEC' ) or die( 'Restricted access' );
class Utils 
{
	/**
    * Append a / to the path if required.
    * @param string $path the path
    * @return string path with trailing /
    */
    function fixPath($path)
	{
        //append a slash to the path if it doesn't exists.
        if (!(substr($path, -1) == '/'))
            $path .= '/';
        return $path;
    }
   	/**
    * Concat two paths together. Basically $pathA+$pathB
    * @param string $pathA path one
    * @param string $pathB path two
    * @return string a trailing slash combinded path.
    */
    function makePath($a, $b)
	{
        $a = Utils::fixPath($a);
        if (substr($b, 0, 1)  ==  '/') {
            $b = substr($b, 1);
		}
        return $a.$b;
    }
	/**
	 * Makes file name safe to use
	 * @param string The name of the file (not full path)
	 * @return string The sanitised string
	 */
	function makeSafe($file)
	{
		jimport('joomla.filesystem.file');
		$file = trim($file);
		$file = JFile::makeSafe($file);
		$file = preg_replace('#\s#', '', $file);
		
		return $file;
	}
	/**
    * Format the file size, limits to Mb.
    * @param int $size the raw filesize
    * @return string formated file size.
    */
    function formatSize($size)
	{
        if ($size < 1024)
            return $size.' '.JText::_('BYTES');
        else if ($size >= 1024 && $size < 1024*1024)
            return sprintf('%01.2f',$size/1024.0).' '.JText::_('KB');
        else
            return sprintf('%01.2f', $size/(1024.0*1024)).' '.JText::_('MB');
    }
   	/**
  	* Format the date.
    * @param int $date the unix datestamp
    * @return string formated date.
    */
   	function formatDate($date, $format="%d/%m/%Y, %H:%M")
	{
		return strftime($format, $date);
   	}
	/**
	 * Get the modified date of a file
	 * 
	 * @return Formatted modified date
	 * @param string $file Absolute path to file
	 */
	function getDate($file) 
	{
		return Utils::formatDate(@filemtime($file));
	}
	/**
	 * Get the size of a file
	 * 
	 * @return Formatted filesize value
	 * @param string $file Absolute path to file
	 */
	function getSize($file) 
	{
		return Utils::formatSize(@filesize($file));
	}
	/**
     * Count the number of folders in a given folder
	 * @return integer Total number of folders
	 * @param string $path Abolute path to folder
	 */
    function countDirs($path)
	{
		jimport('joomla.filesystem.folder');
		$total = 0;
        if (JFolder::exists($path)) {
            $folders = JFolder::folders($path);
            $total = count($folders);
        }
        return $total;
    }
	/**
	 * Count the number of files in a folder
	 * @return integer File total 
	 * @param string $path Absolute path to folder
	 */
	function countFiles($path)
	{
		jimport('joomla.filesystem.file');
		$total = 0;
        if (JFolder::exists($path)) {
            $files = JFolder::files($path);
            $total = count($files);
            foreach ($files as $file) {
                if (strtolower($file) == 'index.html' || strtolower($file) == 'thumbs.db') {
                    $total = $total -1;
                }
            }
        }
        return $total;
    }
}
?>
