PHP Classes

File: FolderPerms.php

Recommend this page to a friend!
  Classes of Tony   FileWatch   FolderPerms.php   Download  
File: FolderPerms.php
Role: Auxiliary script
Content type: text/plain
Description: companion script
Class: FileWatch
Monitor changes in files of a directory
Author: By
Last change:
Date: 14 years ago
Size: 2,329 bytes
 

Contents

Class file image Download
<?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; }

?>