<?php
 
/*
 
    FolderPerms.php - tweezy FileWatch companion
 
 
    30/7/10
 
    FileWatch.class doesn't check or report on directory permissions, only files.
 
    Use this little script to check directory permissions on your site.
 
 
*/
 
 
 
$StartFolder    = './';
 
$RecurseLevel   = 99;
 
$ShowList       = true;  // list directories if true, otherwise just show summary
 
$Except         = '755,750,700'; // comma-sep list of permissions not to list in detail (if $ShowList=true)
 
 
 
//________________________________________________________________________________
 
// no need to edit below here
 
//---------------------------
 
echo 'Directory permissions for '.$StartFolder;
 
if($RecurseLevel>0) echo " and $RecurseLevel levels below";
 
echo '<hr />';
 
if(!isset($FollowSymlinks)) $FollowSymlinks=false;
 
if(!isset($Except)) $Except='';
 
$Except=explode(',', $Except);
 
 
$DirList = FileDirPerm($StartFolder, $RecurseLevel, $FollowSymlinks);
 
 
// count directories for each perm value..
 
$PermCount=array();
 
foreach($DirList as $FolderName=>$PermValue)
 
    {
 
    if(isset($PermCount[$PermValue]))
 
        { $PermCount[$PermValue]++; }
 
    else
 
        { $PermCount[$PermValue]=1; }
 
    }
 
 
// show the results..
 
echo '<pre>';
 
foreach($PermCount as $Perm=>$Count)
 
    { echo "$Perm ... $Count directories\r\n"; }
 
echo "\r\n\r\n";
 
if($ShowList)
 
    {
 
    foreach($DirList as $Dirname=>$Perm)
 
        { if(!in_array($Perm, $Except)) echo "$Perm  $Dirname\r\n"; }
 
    }
 
echo '</pre>';
 
exit;
 
 
 
// from twzInc ===============================================================================================
 
function FileDirPerm($FolderName, $RecurseLevel=999, $FollowSymlinks=false, $ThisLevel=0) { if(substr($FolderName,-1)<>'/') $FolderName.='/'; if($ThisLevel<=0) $ThisLevel=0; $DirList=array(); if (@$handle = opendir($FolderName)) { while (false !== ($Filename=readdir($handle))) { $DirList[$FolderName]=substr(decoct(fileperms($FolderName)), -3); if ($Filename != "." and $Filename != "..") { if(is_dir($FolderName.$Filename) and $ThisLevel<$RecurseLevel and ($FollowSymlinks or !is_link($FolderName.$Filename))) { $DirList=array_merge($DirList, call_user_func(__FUNCTION__, ($FolderName.$Filename), $RecurseLevel, $FollowSymlinks, ($ThisLevel+1))); } } } closedir($handle); } return $DirList; }
 
 
?>
 
 |