<?php 
namespace Jackbooted\Util; 
 
use \Jackbooted\Config\Cfg; 
/** 
 * @copyright Confidential and copyright (c) 2016 Jackbooted Software. All rights reserved. 
 * 
 * Written by Brett Dutton of Jackbooted Software 
 * brett at brettdutton dot com 
 * 
 * This software is written and distributed under the GNU General Public 
 * License which means that its source code is freely-distributed and 
 * available to the general public. 
 * 
 * PHP Extensions utility class 
 */ 
 
class PHPExt extends \Jackbooted\Util\JB { 
 
    public static function is_assoc ( $array ) { 
        if ( ! is_array ( $array ) ) { 
            return false; 
        } 
 
        foreach ( array_keys ( $array ) as $k => $v ) { 
            if ( $k !== $v ) { 
                return true; 
            } 
        } 
 
        return false; 
    } 
    public static function getTempDir () { 
        if ( preg_match ( '/^(RADWEB|JACKBOOTWEB).*$/', Cfg::get ( 'version' ) ) ) { 
            $tmpDir = Cfg::get ( 'tmp_path' ); 
        } 
        else { 
            $tmpDir = '/tmp'; 
 
            if ( function_exists ( 'sys_get_temp_dir' ) ) { 
                $tmpDir = sys_get_temp_dir(); 
            } 
            else { 
                foreach (  [ 'TMP', 'TEMP', 'TMPDIR' ] as $envVar ) { 
                    if ( ( $temp = getenv ( $envVar ) ) !== false ) { 
                        $tmpDir = $temp; 
                        break; 
                    } 
                } 
            } 
        } 
 
        // ensure that there is no trailing slash (Standard) 
        $lastChar = substr ( $tmpDir, -1 ); 
        if ( $lastChar == '/' || $lastChar == '\\' ) $tmpDir = substr ( $tmpDir, 0, -1 ); 
        return $tmpDir; 
    } 
 
    public static function dirSearch ( $dir, $matchesExp=null ) { 
        $handle = opendir ( $dir ); 
        $fileList =  []; 
        while ( false !== ( $file = readdir ( $handle ) ) ) { 
            if ( strpos ( $file, '.' ) === 0 ) continue; 
            if ( $matchesExp != null && ! preg_match ( $matchesExp, $file ) ) continue; 
 
            $fullPathName = $dir . '/' . $file; 
            if ( is_dir ( $fullPathName ) ) { 
                $fileList = array_merge ( self::dirSearch ( $fullPathName ), $fileList ); 
            } 
            else { 
                $fileList[] = $fullPathName; 
            } 
        } 
        closedir ( $handle ); 
        return $fileList; 
    } 
}
 
 |