Alternc  3.2
Alternc logiel libre pour l'hébergement
 All Data Structures Namespaces Files Functions Variables Pages
m_bro Class Reference

This class manage the file browser of AlternC allow the file and directory management in the user account web folder. More...

Public Member Functions

 m_bro ()
 Constructor.
 hook_menu ()
 convertabsolute ($dir, $strip=1)
 Verifie un dossier relatif au dossier de l'utilisateur courant.
 get_user_root ($login)
 Retourne le chemin complet vers la racine du repertoire de l'utilisateur.
 get_userid_root ($uid)
 Retourne le chemin complet vers la racine du repertoire de l'utilisateur.
 filelist ($dir="", $showdirsize=false)
 Retourne un tableau contenant la liste des fichiers du dossier courant Ce tableau contient tous les paramtres des fichiers du dossier courant sous la forme d'un tableau index de tableaux associatifs comme suit : $a["name"]=nom du fichier / dossier $a["size"]=Taille totale du fichier / dossier + sous-dossier $a["date"]=Date de dernire modification $a["type"]=Type du fichier (1 pour fichier, 0 pour dossier)
 GetPrefs ()
 Retourne un tableau contenant les prfrences de l'utilisateur courant Ce tableau aqssociatif contient les valeurs des champs de la table "browser" pour l'utilisateur courant.
 SetPrefs ($editsizex, $editsizey, $listmode, $showicons, $downfmt, $createfile, $showtype, $editor_font, $editor_size, $golastdir)
 Modifie les prfrences de l'utilisateur courant.
 icon ($file)
 Retourne le nom du fichier icone associ au fichier donc le nom est $file Note: Les fichiers icones sont mis en cache sur la page courante.
 mime ($file)
 Retourne le type mime associ au fichier donc le nom est $file Note: Les types mimes sont mis en cache sur la page courante.
 fsize ($file, $showdirsize=false)
 Retourne la taille du fichier $file si $file est un dossier, retourne la taille de ce dossier et de tous ses sous dossiers.
 dirsize ($dir)
 Returns the size of a directory, by adding all it's files sizes.
 CreateDir ($dir, $file)
 Cre le dossier $file dans le dossier (parent) $dir.
 CreateFile ($dir, $file)
 Cre un fichier vide dans un dossier.
 DeleteFile ($file_list, $R)
 Efface les fichiers du tableau $file_list dans le dossier $R.
 RenameFile ($R, $old, $new)
 Renomme les fichier de $old du dossier $R en $new.
 MoveFile ($d, $old, $new)
 Dplace les fichier de $d du dossier $old vers $new.
 ChangePermissions ($R, $d, $perm, $verbose=false)
 Change les droits d'acces aux fichier de $d du dossier $R en $p.
 UploadFile ($R)
 Recoit un champ file upload (Global) et le stocke dans le dossier $R Le champ file-upload originel doit s'appeler "userfile" et doit bien tre un fichier d'upload.
 ExtractFile ($file, $dest=null)
 Extract an archive by using GNU and non-GNU tools.
 CopyFile ($d, $old, $new)
 Copy many files from point A to point B.
 CopyOneFile ($src, $dest)
 Copy a source to a destination by either copying recursively a directory or by downloading a file with a URL (only http:// is supported)
 PathList ($path, $action, $justparent=false)
 Affiche le chemin et les liens de la racine au dossier $path Affiche autant de liens HTML (anchor) que le chemin $path contient de niveaux de dossier.
 content ($R, $file)
 Affiche le contenu d'un fichier pour un champ VALUE de textarea Affiche le contenu du fichier $file dans le dossier $R.
 viewurl ($dir, $name)
 Retourne une url de navigation pour le fichier $name du dossier $dir Les url sont mises en caches.
 can_edit ($dir, $name)
 is_extractable ($dir, $name)
 Return a HTML snippet representing an extraction function only if the mimetype of $name is supported.
 is_sqlfile ($dir, $name)
 download_link ($dir, $file)
 content_send ($R, $file)
 Echoes the content of the file $file located in directory $R.
 save ($file, $R, $texte)
 Sauve le fichier $file dans le dossier $R avec pour contenu $texte le contenu est issu d'un textarea, et ne DOIT PAS contenir de \ ajouts automatiquement par addslashes.
 DownloadZ ($dir="")
 Echo d'un flux .tar.Z contenant tout le contenu du dossier $dir.
 DownloadTGZ ($dir="")
 Echo d'un flux .tgz contenant tout le contenu du dossier $dir.
 DownloadTBZ ($dir="")
 Echo d'un flux .tar.bz2 contenant tout le contenu du dossier $dir.
 DownloadZIP ($dir="")
 Echo d'un flux .ZIP contenant tout le contenu du dossier $dir.
 _sort_filelist_name ($a, $b)
 Fonction de tri perso utilis par filelist.
 _delete ($file)
 Efface $file et tous ses sous-dossiers s'il s'agit d'un dossier A UTILISER AVEC PRECAUTION !!!
 alternc_export_conf ()
 Function d'exportation de configuration appelé par la classe m_export via un hooks *Produit en sorti un tableau formatté ( pour le moment) en HTML.
 alternc_export_data ($dir)
 Function d'exportation des données appelé par la classe m_export via un hooks.
 getMaxAllowedUploadSize ()

Data Fields

 $l_mode
 How we draw the file in column.
 $l_tgz
 download mode of a compressed folder
 $l_icons
 Shall we show icons or just names?
 $l_createfile
 What do we do after creating a file?
 $mime_desc = array()
 internal cache
 $mime_icon = array()
 internal cache
 $mime_type = array()
 internal cache
 $l_editor_font = array("Arial, Helvetica, Sans-serif","Times, Bookman, Serif","Courier New, Courier, Fixed")
 Font choice in the editor.
 $l_editor_size = array("18px","14px","12px","10px","8px","0.8em","0.9em","1em","1.1em","1.2em")
 font size in the editor
 $cacheurl = array()
 Internal cache for viewurl.

Detailed Description

This class manage the file browser of AlternC allow the file and directory management in the user account web folder.

Definition at line 33 of file m_bro.php.

Member Function Documentation

_delete (   $file)

Efface $file et tous ses sous-dossiers s'il s'agit d'un dossier A UTILISER AVEC PRECAUTION !!!

Parameters
string$fileFichier ou dossier supprimer. private

Definition at line 999 of file m_bro.php.

Referenced by DeleteFile().

{
// permet d'effacer de nombreux fichiers
@set_time_limit(0);
//chmod($file,0777);
if (is_dir($file)) {
$handle = opendir($file);
while($filename = readdir($handle)) {
if ($filename != "." && $filename != "..") {
$this->_delete($file."/".$filename);
}
}
closedir($handle);
rmdir($file);
} else {
unlink($file);
}
}
_sort_filelist_name (   $a,
  $b 
)

Fonction de tri perso utilis par filelist.

private

Definition at line 986 of file m_bro.php.

{
if ($a["type"] && !$b["type"]) return 1;
if ($b["type"] && !$a["type"]) return -1;
return $a["name"]>$b["name"];
}
alternc_export_conf ( )

Function d'exportation de configuration appelé par la classe m_export via un hooks *Produit en sorti un tableau formatté ( pour le moment) en HTML.

Definition at line 1022 of file m_bro.php.

References $db, $err, $i, and GetPrefs().

{
global $db,$err;
$err->log("bro","export_conf");
$str="<table border=\"1\"><caption> Browser </caption>\n";
$str=" <browser>\n";
$pref=$this->GetPrefs();
$i=1;
foreach ($pref as $k=>$v) {
if (($i % 2)==0){
$str.=" <$k>$v</$k>\n";
}
$i++;
}
$str.=" </browser>\n";
return $str;
}
alternc_export_data (   $dir)

Function d'exportation des données appelé par la classe m_export via un hooks.

Parameters
:le chemin destination du tarball produit.

Definition at line 1046 of file m_bro.php.

References $err, $mem, and getuserpath().

{
global $mem,$err;
$err->log("bro","export_data");
$dir.="html/";
if(!is_dir($dir)){
if(!mkdir($dir))
$err->raise("bro",_("Cannot create the requested directory. Please check the permissions"));
}
$timestamp=date("H:i:s");
// relacher le lock global sinon ce download va geler alternc pour
// tout le monde
alternc_shutdown();
if(exec("/bin/tar cvf - ".getuserpath()."/ | gzip -9c > ".$dir."/".$mem->user['login']."_html_".$timestamp.".tar.gz")){
$err->log("bro","export_data_succes");
}else{
$err->log("bro","export_data_failed");
}
}
can_edit (   $dir,
  $name 
)

Definition at line 803 of file m_bro.php.

References $err, $mem, convertabsolute(), and exit.

{
global $mem,$err;
$absolute="$dir/$name";
$absolute=$this->convertabsolute($absolute,0);
if (!$absolute) {
$err->raise('bro',_("File not in authorized directory"));
include('foot.php');
}
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo,$absolute);
if ( substr($mime,0,5)=="text/" || $mime == "application/x-empty" || $mime == "inode/x-empty") {
return true;
}
return false;
}
ChangePermissions (   $R,
  $d,
  $perm,
  $verbose = false 
)

Change les droits d'acces aux fichier de $d du dossier $R en $p.

Parameters
string$Rdossier dans lequel se trouve les fichiers renommer.
arrayof string $old Ancien nom des fichiers
arrayof string $new Nouveau nom des fichiers
$verboseboolean shall we 'echo' what we did ?
Returns
boolean TRUE si les fichiers ont t renomms, FALSE si une erreur s'est produite.

Definition at line 505 of file m_bro.php.

References $d, $err, $i, $R, convertabsolute(), and ssla().

{
global $err;
$absolute=$this->convertabsolute($R,0);
if (!$absolute) {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
for ($i=0;$i<count($d);$i++) {
$d[$i]=ssla($d[$i]); // strip slashes if needed
if (!strpos($d[$i],"/")) { // caractre / interdit dans le nom du fichier
$m = fileperms($absolute."/". $d[$i]);
// pour l'instant on se limite a "write" pour owner, puisque c'est le seul
// cas interessant compte tenu de la conf de Apache pour AlternC..
if ($perm[$i]['w']) {
$m = $m | 0220; // ug+w
} else {
$m = $m ^ 0222; // ugo-w
}
chmod($absolute."/".$d[$i], $m);
if ($verbose) {
echo "chmod " . sprintf('%o', $m) . " file, was " . sprintf('%o', fileperms($absolute."/". $d[$i])). " -- " . $perm[$i]['w'];
}
}
}
return true;
}
content (   $R,
  $file 
)

Affiche le contenu d'un fichier pour un champ VALUE de textarea Affiche le contenu du fichier $file dans le dossier $R.

Le contenu du fichier est reformat pour pouvoir entrer dans un champs TextArea

Parameters
string$RDossier dans lequel on cherche le fichier
string$fileFichier dont on souhaite obtenir le contenu.
Returns
boolean retourne TRUE si le fichier a bien t mis sur echo, ou FALSE si une erreur est survenue.

Definition at line 724 of file m_bro.php.

References $err, $R, and convertabsolute().

{
global $err;
$absolute=$this->convertabsolute($R,0);
$std="";
if (!strpos($file,"/")) {
$absolute.="/".$file;
if (file_exists($absolute)) {
$std=str_replace("<","&lt;",str_replace("&","&amp;",file_get_contents($absolute)));
} else {
$err->raise("bro",_("Cannot read the requested file. Please check the permissions"));
return false;
}
} else {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
return $std;
}
content_send (   $R,
  $file 
)

Echoes the content of the file $file located in directory $R.

Definition at line 875 of file m_bro.php.

References $err, $R, and convertabsolute().

Referenced by download_link().

{
global $err;
$absolute=$this->convertabsolute($R,0);
if (!strpos($file,"/")) {
$absolute.="/".$file;
if (file_exists($absolute)) {
readfile($absolute);
}
} else {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
}
convertabsolute (   $dir,
  $strip = 1 
)

Verifie un dossier relatif au dossier de l'utilisateur courant.

Parameters
string$dirDossier (absolu que l'on souhaite vrifier
Returns
string Retourne le nom du dossier vrifi, relatif au dossier de l'utilisateur courant, ventuellement corrig. ou FALSE si le dossier n'est pas dans le dossier de l'utilisateur.

Definition at line 95 of file m_bro.php.

References $mem, $root, and get_user_root().

Referenced by can_edit(), ChangePermissions(), content(), content_send(), CopyFile(), CreateDir(), CreateFile(), DeleteFile(), DownloadTBZ(), DownloadTGZ(), DownloadZ(), DownloadZIP(), ExtractFile(), filelist(), MoveFile(), PathList(), RenameFile(), save(), and UploadFile().

{
global $mem;
$root=$this->get_user_root($mem->user["login"]);
// Sauvegarde du chemin de base.
$root_alternc = $root ;
// Passage du root en chemin rel (diffrent avec un lien)
$root=realpath($root) ;
// separer le chemin entre le repertoire et le fichier
$file = basename($dir);
$dir = dirname($dir);
$dir=realpath($root."/".$dir);
// verifier que le repertoire est dans le home de l'usager
if (substr($dir,0,strlen($root))!=$root) {
return false;
}
// recomposer le chemin
$dir = $dir . '/' . $file;
# Si on tente de mettre un '..' alors erreur
if ( preg_match("/\/\.\.\//", $dir) || preg_match("/\/\.\.$/", $dir) ) {
return false;
}
if ($strip) {
$dir=substr($dir,strlen($root));
} else {
// si on ne strip pas, il faut enlever le chemin rel
// et mettre la racine d'alternc pour viter les
// problmes de lien depuis /var /alternc !
$dir=$root_alternc . substr($dir,strlen($root));
}
if (substr($dir,-1)=="/") {
return substr($dir,0,strlen($dir)-1);
} else
return $dir;
}
CopyFile (   $d,
  $old,
  $new 
)

Copy many files from point A to point B.

Definition at line 637 of file m_bro.php.

References $d, $err, $i, convertabsolute(), CopyOneFile(), and ssla().

{
global $err;
$old=$this->convertabsolute($old,0);
if (!$old) {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
$new=$this->convertabsolute($new,0);
if (!$new) {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
if ($old==$new) {
$err->raise("bro",_("You cannot move or copy a file to the same folder"));
return false;
}
for ($i=0;$i<count($d);$i++) {
$d[$i]=ssla($d[$i]); // strip slashes if needed
if (!strpos($d[$i],"/") && file_exists($old."/".$d[$i]) && !file_exists($new."/".$d[$i])) {
$this->CopyOneFile($old."/".$d[$i],$new);
}
}
return true;
}
CopyOneFile (   $src,
  $dest 
)

Copy a source to a destination by either copying recursively a directory or by downloading a file with a URL (only http:// is supported)

Parameters
string$srcis the path or URL
string$destis the absolute path inside the users directory
Returns
boolean false on error

Note that we assume that the inputs have been convertabsolute()'d

Definition at line 674 of file m_bro.php.

References $err.

Referenced by CopyFile().

{
global $err;
$src = escapeshellarg($src);
$dest = escapeshellarg($dest);
exec("cp -Rpf $src $dest", $void, $ret);
if ($ret) {
$err->raise("bro","Errors happened while copying the source to destination. cp return value: %d", $ret);
return false;
}
return true;
}
CreateDir (   $dir,
  $file 
)

Cre le dossier $file dans le dossier (parent) $dir.

Parameters
string$dirdossier dans lequel on veut crer un sous-dossier
string$filenom du dossier crer
Returns
boolean TRUE si le dossier a t cr, FALSE si une erreur s'est produite.

Definition at line 358 of file m_bro.php.

References $cuid, $db, $err, convertabsolute(), and ssla().

{
global $db,$cuid,$err;
$file=ssla($file);
$absolute=$this->convertabsolute($dir."/".$file,0);
#echo "$absolute";
if ($absolute && (!file_exists($absolute))) {
if (!mkdir($absolute,00777,true)) {
$err->raise("bro",_("Cannot create the requested directory. Please check the permissions"));
return false;
}
$db->query("UPDATE browser SET crff=1 WHERE uid='$cuid';");
return true;
} else {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
}
CreateFile (   $dir,
  $file 
)

Cre un fichier vide dans un dossier.

Parameters
string$dirDossier dans lequel on cre le nouveau fichier
string$fileFichier que l'on souhaite crer.
Returns
boolean TRUE si le dossier a t cr, FALSE si une erreur s'est produite.

Definition at line 383 of file m_bro.php.

References $cuid, $db, $err, convertabsolute(), and ssla().

{
global $db,$err,$cuid;
$file=ssla($file);
$absolute=$this->convertabsolute($dir."/".$file,0);
if (!$absolute || file_exists($absolute)) {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
if (!file_exists($absolute)) {
if (!@touch($absolute)) {
$err->raise("bro",_("Cannot create the requested file. Please check the permissions"));
return false;
}
}
$db->query("UPDATE browser SET crff=0 WHERE uid='$cuid';");
return true;
}
DeleteFile (   $file_list,
  $R 
)

Efface les fichiers du tableau $file_list dans le dossier $R.

Parameters
array$file_listListe des fichiers effacer.
string$RDossier dans lequel on efface les fichiers
Returns
boolean TRUE si les fichiers ont t effacs, FALSE si une erreur s'est produite.

Definition at line 408 of file m_bro.php.

References $err, $i, $mem, $R, $root, _delete(), convertabsolute(), getuserpath(), and ssla().

{
global $err, $mem;
$root=realpath(getuserpath());
$absolute=$this->convertabsolute($R,0);
if (!$absolute && strpos($root,$absolute) === 0 && strlen($absolute) > (strlen($root)+1) ) {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
for ($i=0;$i<count($file_list);$i++) {
$file_list[$i]=ssla($file_list[$i]);
if (!strpos($file_list[$i],"/") && file_exists($absolute."/".$file_list[$i])) { // Character / forbidden in a FILE name
$this->_delete($absolute."/".$file_list[$i]);
}
}
return true;
}
dirsize (   $dir)

Returns the size of a directory, by adding all it's files sizes.

Parameters
string$dirthe directory whose size we want to compute
Returns
integer the total size in bytes.

Definition at line 331 of file m_bro.php.

Referenced by fsize().

{
$totalsize = 0;
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
$nextpath = $dir . '/' . $file;
if ($file != '.' && $file != '..' && !is_link($nextpath)) {
if (is_dir($nextpath)) {
$totalsize += $this->dirsize($nextpath);
} elseif (is_file ($nextpath)) {
$totalsize += filesize($nextpath);
}
}
}
closedir($handle);
}
return $totalsize;
}
download_link (   $dir,
  $file 
)

Definition at line 862 of file m_bro.php.

References $err, and content_send().

{
global $err;
$err->log("bro","download_link");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
$this->content_send($dir,$file);
}
DownloadTBZ (   $dir = "")

Echo d'un flux .tar.bz2 contenant tout le contenu du dossier $dir.

Parameters
string$dirdossier dumper, relatif la racine du compte du membre.
Returns
void NE RETOURNE RIEN, et il faut Quitter le script immdiatement aprs

Definition at line 955 of file m_bro.php.

References $d, $mem, convertabsolute(), and getuserpath().

{
global $mem;
header("Content-Disposition: attachment; filename=".$mem->user["login"].".tar.bz2");
header("Content-Type: application/x-bzip2");
header("Content-Transfer-Encoding: binary");
$d=escapeshellarg(".".$this->convertabsolute($dir,1));
set_time_limit(0);
passthru("/bin/tar -cj -C ".getuserpath()."/ $d");
}
DownloadTGZ (   $dir = "")

Echo d'un flux .tgz contenant tout le contenu du dossier $dir.

Parameters
string$dirdossier dumper, relatif la racine du compte du membre.
Returns
void NE RETOURNE RIEN, et il faut Quitter le script immdiatement aprs

Definition at line 939 of file m_bro.php.

References $d, $mem, convertabsolute(), and getuserpath().

{
global $mem;
header("Content-Disposition: attachment; filename=".$mem->user["login"].".tgz");
header("Content-Type: application/x-tgz");
header("Content-Transfer-Encoding: binary");
$d=escapeshellarg(".".$this->convertabsolute($dir,1));
set_time_limit(0);
passthru("/bin/tar -cz -C ".getuserpath()."/ $d");
}
DownloadZ (   $dir = "")

Echo d'un flux .tar.Z contenant tout le contenu du dossier $dir.

Parameters
string$dirdossier dumper, relatif la racine du compte du membre.
Returns
void NE RETOURNE RIEN, et il faut Quitter le script immdiatement aprs

Definition at line 923 of file m_bro.php.

References $d, $mem, convertabsolute(), and getuserpath().

{
global $mem;
header("Content-Disposition: attachment; filename=".$mem->user["login"].".Z");
header("Content-Type: application/x-Z");
header("Content-Transfer-Encoding: binary");
$d=escapeshellarg(".".$this->convertabsolute($dir,1));
set_time_limit(0);
passthru("/bin/tar -cZ -C ".getuserpath()."/".$mem->user["login"]."/ $d");
}
DownloadZIP (   $dir = "")

Echo d'un flux .ZIP contenant tout le contenu du dossier $dir.

Parameters
string$dirdossier dumper, relatif la racine du compte du membre.
Returns
void NE RETOURNE RIEN, et il faut Quitter le script immdiatement aprs

Definition at line 971 of file m_bro.php.

References $d, $mem, and convertabsolute().

{
global $mem;
header("Content-Disposition: attachment; filename=".$mem->user["login"].".zip");
header("Content-Type: application/x-zip");
header("Content-Transfer-Encoding: binary");
$d=escapeshellarg($this->convertabsolute($dir,0));
set_time_limit(0);
passthru("/usr/bin/zip -r - $d");
}
ExtractFile (   $file,
  $dest = null 
)

Extract an archive by using GNU and non-GNU tools.

Parameters
string$fileis the full or relative path to the archive
string$destis the path of the extract destination, the same directory as the archive by default
Returns
boolean != 0 on error

Definition at line 594 of file m_bro.php.

References $cuid, $err, $mem, and convertabsolute().

{
global $err,$cuid,$mem,$action;
$file = $this->convertabsolute($file,0);
if (is_null($dest)) {
$dest = dirname($file);
} else {
$dest = $this->convertabsolute($dest,0);
}
if (!$file || !$dest) {
$err->raise("bro",_("File or folder name is incorrect"));
return 1;
}
$file = escapeshellarg($file);
$dest_to_fix = $dest;
$dest = escapeshellarg($dest);
#$dest_to_fix=str_replace(getuserpath(),'',$dest);
// TODO new version of tar supports `tar xf ...` so there is no
// need to specify the compression format
exec("tar -xf $file -C $dest", $void, $ret);
if ($ret) {
exec("tar -xjf $file -C $dest", $void, $ret);
}
if ($ret) {
$cmd = "unzip -o $file -d $dest";
exec($cmd, $void, $ret);
}
if ($ret) {
$cmd = "gunzip $file";
exec($cmd, $void, $ret);
}
if ($ret) {
$err->raise("bro",_("I cannot find a way to extract the file %s, it is an unsupported compressed format"), $file);
}
// fix the perms of the extracted archive TODO: does it work???
$action->fix_dir($dest_to_fix);
return $ret;
}
filelist (   $dir = "",
  $showdirsize = false 
)

Retourne un tableau contenant la liste des fichiers du dossier courant Ce tableau contient tous les paramtres des fichiers du dossier courant sous la forme d'un tableau index de tableaux associatifs comme suit : $a["name"]=nom du fichier / dossier $a["size"]=Taille totale du fichier / dossier + sous-dossier $a["date"]=Date de dernire modification $a["type"]=Type du fichier (1 pour fichier, 0 pour dossier)

Parameters
string$dirdossier relatif au dossier racine du compte du membre courant
Returns
array le tableau contenant les fichiers de $dir, et

Definition at line 181 of file m_bro.php.

References $c, $cuid, $db, $err, convertabsolute(), fsize(), and isset.

{
global $db,$cuid,$err;
$db->query("UPDATE browser SET lastdir='$dir' WHERE uid='$cuid';");
$absolute=$this->convertabsolute($dir,0);
if (! file_exists($absolute)) {
$err->raise('bro',_("This directory do not exist"));
return false;
}
if ($dir = @opendir($absolute)) {
while (($file = readdir($dir)) !== false) {
if ($file!="." && $file!="..") {
$c[]=array("name"=>$file, "size"=>$this->fsize($absolute."/".$file, $showdirsize), "date"=>filemtime($absolute."/".$file), "type"=> (!is_dir($absolute."/".$file)) );
}
}
closedir($dir);
}
if (isset ($c) && is_array($c)) {
usort ($c, array("m_bro","_sort_filelist_name"));
return $c;
} else {
return array();
}
}
fsize (   $file,
  $showdirsize = false 
)

Retourne la taille du fichier $file si $file est un dossier, retourne la taille de ce dossier et de tous ses sous dossiers.

Parameters
string$fileFichier dont on souhaite connaitre la taille
boolean$showdirsizerecursively compute the directory size.
Returns
integer Taille du fichier en octets.

Definition at line 313 of file m_bro.php.

References dirsize().

Referenced by filelist().

{
if (is_dir($file)) {
if ($showdirsize) {
return $this->dirsize($file);
} else {
return "-";
}
} else {
return filesize($file);
}
}
get_user_root (   $login)

Retourne le chemin complet vers la racine du repertoire de l'utilisateur.

Returns the complete path to the root of the user's directory.

Parameters
string$loginUsername
Returns
string Returns the complete path to the root of the user's directory.

Definition at line 141 of file m_bro.php.

References getuserpath().

Referenced by convertabsolute(), and get_userid_root().

{
return getuserpath();
}
get_userid_root (   $uid)

Retourne le chemin complet vers la racine du repertoire de l'utilisateur.

Returns the complete path to the root of the user's directory.

Parameters
string$uidUser id.
Returns
string Returns the complete path to the root of the user's directory.

Definition at line 153 of file m_bro.php.

References $uid, and get_user_root().

{
global $admin;
// FIXME [ML] Comment faire ca correctement?
// C'est utilise' dans class/m_dom.php quand un utilisateur ajoute un domaine dans son compte
// et nous devons savoir quel est le chemin complet vers la racine de son compte..
$old_enabled = $admin->enabled;
$admin->enabled = true;
$member = $admin->get($uid);
$admin->enabled = $old_enabled;
return $this->get_user_root($member['login']);
}
getMaxAllowedUploadSize ( )

Definition at line 1068 of file m_bro.php.

{
return min(ini_get('post_max_size'), ini_get('upload_max_filesize'));
}
GetPrefs ( )

Retourne un tableau contenant les prfrences de l'utilisateur courant Ce tableau aqssociatif contient les valeurs des champs de la table "browser" pour l'utilisateur courant.

Returns
array Tableau des prfrences de l'utilisateur courant.

Definition at line 212 of file m_bro.php.

References $cuid, and $db.

Referenced by alternc_export_conf().

{
global $db,$cuid;
$db->query("SELECT * FROM browser WHERE uid='$cuid';");
if ($db->num_rows()==0) {
$db->query("INSERT INTO browser (editsizex, editsizey, listmode, showicons, downfmt, createfile, showtype, uid, editor_font, editor_size) VALUES (70, 21, 0, 0, 0, 0, 0, '$cuid','Arial, Helvetica, Sans-serif','12px');");
$db->query("SELECT * FROM browser WHERE uid='$cuid';");
}
$db->next_record();
return $db->Record;
}
hook_menu ( )

Definition at line 74 of file m_bro.php.

{
$obj = array(
'title' => _("File browser"),
'ico' => 'images/folder.png',
'link' => 'bro_main.php',
'pos' => 40,
) ;
return $obj;
}
icon (   $file)

Retourne le nom du fichier icone associ au fichier donc le nom est $file Note: Les fichiers icones sont mis en cache sur la page courante.

Parameters
string$fileFichier dont on souhaite connaitre le fichier icone
Returns
string Fichier icone correspondant.

Definition at line 260 of file m_bro.php.

References $t, and isset.

{
global $bro_icon;
if (!strpos($file,".") && substr($file,0,1)!=".") {
return "file.png";
}
$t=explode(".",$file);
if (!is_array($t))
$ext=$t;
else
$ext=$t[count($t)-1];
// Now seek the extension
if (!isset($bro_icon[$ext]) || ! $bro_icon[$ext]) {
return "file.png";
} else {
return $bro_icon[$ext].".png";
}
}
is_extractable (   $dir,
  $name 
)

Return a HTML snippet representing an extraction function only if the mimetype of $name is supported.

Definition at line 824 of file m_bro.php.

{
if ($parts = explode(".", $name)) {
$ext = array_pop($parts);
switch ($ext) {
case "gz":
case "bz":
case "bz2":
$ext = array_pop($parts) . $ext;
/* FALLTHROUGH */
case "tar.gz":
case "tar.bz":
case "tar.bz2":
case "tgz":
case "tbz":
case "tbz2":
case "tar":
case "Z":
case "zip":
return true;
}
}
return false;
}
is_sqlfile (   $dir,
  $name 
)

Definition at line 849 of file m_bro.php.

{
if ($parts = explode(".", $name)) {
$ext = array_pop($parts);
$ext2 = array_pop($parts) . '.'.$ext;
if ( $ext=='sql' or $ext2=='sql.gz') return true;
}
return false;
}
m_bro ( )

Constructor.

Definition at line 67 of file m_bro.php.

{
$this->l_mode=array( 0=>_("1 column, detailed"), 1=>_("2 columns, short"), 2=>_("3 columns, short") );
$this->l_tgz=array( 0=>_("tgz (Linux)"), 1=>_("tar.bz2 (Linux)"), 2=>_("zip (Windows/Dos)"), 3=>_("tar.Z (Unix)") );
$this->l_icons=array( 0=>_("No"), 1=>_("Yes") );
$this->l_createfile=array( 0=>_("Go back to the file manager"), 1=>_("Edit the newly created file") );
}
mime (   $file)

Retourne le type mime associ au fichier donc le nom est $file Note: Les types mimes sont mis en cache sur la page courante.

Le type mime est dtermin d'aprs l'extension du fichier.

Parameters
string$fileFichier dont on souhaite connaitre le type mime
Returns
string Type mime / Sous type du fichier demand

Definition at line 286 of file m_bro.php.

References $t.

{
global $bro_type;
if (!strpos($file,".") && substr($file,0,1)!=".") {
return "File";
}
$t=explode(".",$file);
if (!is_array($t))
$ext=$t;
else
$ext=$t[count($t)-1];
// Now seek the extension
if (empty($bro_type[$ext])) {
return "File";
} else {
return $bro_type[$ext];
}
}
MoveFile (   $d,
  $old,
  $new 
)

Dplace les fichier de $d du dossier $old vers $new.

Parameters
arrayof string $d Liste des fichiers du dossier $old dplacer
string$olddossier dans lequel se trouve les fichiers dplacer.
string$newdossier vers lequel seront dplacs les fichiers.
Returns
boolean TRUE si les fichiers ont t renomms, FALSE si une erreur s'est produite.

Definition at line 465 of file m_bro.php.

References $d, $err, $i, convertabsolute(), and ssla().

{
global $err;
$old=$this->convertabsolute($old,0);
if (!$old) {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
if ($new[0] != '/') {
$new = $old . '/' . $new;
}
$new = $this->convertabsolute($new,0);
if (!$new) {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
if ($old==$new) {
$err->raise("bro",_("You cannot move or copy a file to the same folder"));
return false;
}
for ($i=0;$i<count($d);$i++) {
$d[$i]=ssla($d[$i]); // strip slashes if needed
if (!strpos($d[$i],"/") && file_exists($old."/".$d[$i]) && !file_exists($new."/".$d[$i])) {
if (!rename($old."/".$d[$i],$new."/".$d[$i]))
$err->raise("bro", "error renaming $old/$d[$i] -> $new/$d[$i]");
}
}
return true;
}
PathList (   $path,
  $action,
  $justparent = false 
)

Affiche le chemin et les liens de la racine au dossier $path Affiche autant de liens HTML (anchor) que le chemin $path contient de niveaux de dossier.

Chaque lien est associ la page web $action laquelle on ajoute le paramtre R=+Le nom du dossier courant.

Parameters
string$pathDossier vers lequel on trace le chemin
string$actionPage web de destination des liens
Returns
string le code HTML ainsi obtenu.

Definition at line 696 of file m_bro.php.

References $c, $i, $R, and convertabsolute().

{
$path=$this->convertabsolute($path,1);
$a=explode("/",$path);
if (!is_array($a)) $a=array($a);
$c='';
$R='';
if ($justparent) {
return "<a href=\"$action?R=".urlencode($a[count($a)-2].'/')."\">&uarr;</a>";
}
for($i=0;$i<count($a);$i++) {
if ($a[$i]) {
$R.=$a[$i]."/";
$c.="<a href=\"$action?R=".urlencode($R)."\">".$a[$i]."</a>&nbsp;/&nbsp;";
}
}
return $c;
}
RenameFile (   $R,
  $old,
  $new 
)

Renomme les fichier de $old du dossier $R en $new.

Parameters
string$Rdossier dans lequel se trouve les fichiers renommer.
arrayof string $old Ancien nom des fichiers
arrayof string $new Nouveau nom des fichiers
Returns
boolean TRUE si les fichiers ont t renomms, FALSE si une erreur s'est produite.

Definition at line 433 of file m_bro.php.

References $err, $i, $R, convertabsolute(), and ssla().

{
global $err;
$absolute=$this->convertabsolute($R,0);
if (!$absolute) {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
$alea=".".time().rand(1000,9999);
for ($i=0;$i<count($old);$i++) {
$old[$i]=ssla($old[$i]); // strip slashes if needed
$new[$i]=ssla($new[$i]);
if (!strpos($old[$i],"/") && !strpos($new[$i],"/")) { // caractre / interdit dans old ET dans new...
@rename($absolute."/".$old[$i],$absolute."/".$old[$i].$alea);
}
}
for ($i=0;$i<count($old);$i++) {
if (!strpos($old[$i],"/") && !strpos($new[$i],"/")) { // caractre / interdit dans old ET dans new...
@rename($absolute."/".$old[$i].$alea,$absolute."/".$new[$i]);
}
}
return true;
}
save (   $file,
  $R,
  $texte 
)

Sauve le fichier $file dans le dossier $R avec pour contenu $texte le contenu est issu d'un textarea, et ne DOIT PAS contenir de \ ajouts automatiquement par addslashes.

Parameters
string$fileNom du fichier sauver. S'il existe dj, il sera cras sans confirmation.
string$RDossier dans lequel on modifie le fichier
string$textetexte du fichier sauver dedans
Returns
boolean TRUE si tout s'est bien pass, FALSE si une erreur s'est produite.

Definition at line 900 of file m_bro.php.

References $err, $R, $texte, and convertabsolute().

{
global $err;
$absolute=$this->convertabsolute($R,0);
if (!strpos($file,"/")) {
$absolute.="/".$file;
if (file_exists($absolute)) {
if (! file_put_contents($absolute, $texte ) ) {
$err->raise("bro",_("Cannot edit the requested file. Please check the permissions"));
return false;
}
}
} else {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
}
SetPrefs (   $editsizex,
  $editsizey,
  $listmode,
  $showicons,
  $downfmt,
  $createfile,
  $showtype,
  $editor_font,
  $editor_size,
  $golastdir 
)

Modifie les prfrences de l'utilisateur courant.

Parameters
integer$editsizexTaille de l'diteur (nombre de colonnes)
integer$editsizeyTaille de l'diteur (nombre de lignes)
integer$listmodeMode d'affichage de la liste des fichiers
integer$showiconsFaut-il afficher / cacher les icones des fichiers
integer$downfmtDans quel format faut-il tlcharger les dossiers compresss
integer$createfileFaut-il editer/revenir au browser aprs cration d'un fichier
integer$showtypeFaut-il afficher le type mime des fichiers
integer$editor_fontQuelle police faut-il utiliser pour l'diteur
integer$editor_sizeQuelle taille de police faut-il utiliser pour l'diteur
integer$golastdirFaut-il revenir la racine ou au dernier dossier visit ?
Returns
boolean TRUE

Definition at line 239 of file m_bro.php.

References $cuid, and $db.

{
global $db,$cuid;
$editsizex=intval($editsizex); $editsizey=intval($editsizey);
$listmode=intval($listmode); $showicons=intval($showicons);
$showtype=intval($showtype); $downfmt=intval($downfmt);
$createfile=intval($createfile); $golastdir=intval($golastdir);
$db->query("SELECT * FROM browser WHERE uid='$cuid';");
if ($db->num_rows()==0) {
$db->query("INSERT INTO browser (editsizex, editsizey, listmode, showicons, downfmt, createfile, showtype, uid, editor_font, editor_size, golastdir) VALUES (70, 21, 0, 0, 0, 0, 0, '".$this->uid."','Arial, Helvetica, Sans-serif','12px',1);");
}
$db->query("UPDATE browser SET editsizex='$editsizex', editsizey='$editsizey', listmode='$listmode', showicons='$showicons', downfmt='$downfmt', createfile='$createfile', showtype='$showtype', editor_font='$editor_font', editor_size='$editor_size', golastdir='$golastdir' WHERE uid='$cuid';");
return true;
}
UploadFile (   $R)

Recoit un champ file upload (Global) et le stocke dans le dossier $R Le champ file-upload originel doit s'appeler "userfile" et doit bien tre un fichier d'upload.

Parameters
string$RDossier dans lequel on upload le fichier
Returns
the path where the file resides or false if upload failed

Definition at line 542 of file m_bro.php.

References $cuid, $err, $R, and convertabsolute().

{
global $_FILES,$err,$cuid,$action;
$absolute=$this->convertabsolute($R,0);
if (!$absolute) {
$err->raise("bro",_("File or folder name is incorrect"));
return false;
}
if (!strpos($_FILES['userfile']['name'],"/")) {
if ($_FILES['userfile']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['userfile']['tmp_name'])) {
if (!file_exists($absolute."/".$_FILES['userfile']['name'])) {
@touch($absolute."/".$_FILES['userfile']['name']);
}
if (@move_uploaded_file($_FILES['userfile']['tmp_name'], $absolute."/".$_FILES['userfile']['name'])) {
$action->fix_file($absolute."/".$_FILES['userfile']['name']);
return $absolute."/".$_FILES['userfile']['name'];
} else {
$err->raise("bro",_("Cannot create the requested file. Please check the permissions"));
return false;
}
} else {
// there was an error, raise it
$err->log("bro","uploadfile","Problem when uploading a file");
switch ( $_FILES['userfile']['error'] ) {
case UPLOAD_ERR_INI_SIZE:
$erstr=_("The uploaded file exceeds the max file size allowed");
break;
case UPLOAD_ERR_FORM_SIZE:
case UPLOAD_ERR_PARTIAL:
case UPLOAD_ERR_NO_FILE:
case UPLOAD_ERR_NO_TMP_DIR:
case UPLOAD_ERR_CANT_WRITE:
case UPLOAD_ERR_EXTENSION:
default:
$erstr=_("Undefined error ").$_FILES['userfile']['error'];
break;
}
$err->raise("bro",_("Error during the upload of the file: ").$erstr);
return false;
}
}
return $absolute."/".$_FILES['userfile']['name'];
}
viewurl (   $dir,
  $name 
)

Retourne une url de navigation pour le fichier $name du dossier $dir Les url sont mises en caches.

Il se peut qu'aucune url n'existe, ou que celle-ci soit protge par un .htaccess.

Parameters
string$dirDossier concern
string$nameFichier dont on souhaite obtenir une URL
Returns
string URL concerne, ou FALSE si aucune URL n'est disponible pour ce fichier

Definition at line 760 of file m_bro.php.

References $cuid, and $db.

{
global $db,$cuid;
// Is it in cache ?
if (substr($dir,0,1)=="/") $dir=substr($dir,1);
if (substr($dir,-1)=="/") $dir=substr($dir,0,-1);
$dir=str_replace("%2F", "/", urlencode($dir));
$name=urlencode($name);
if (!@$this->cacheurl["d".$dir]) {
// On parcours $dir en remontant les /
$end=""; $beg=$dir; $tofind=true;
while ($tofind) {
$db->query("SELECT sub,domaine FROM sub_domaines WHERE compte='$cuid'
AND type=0 AND (valeur='/$beg/' or valeur='/$beg');");
$db->next_record();
if ($db->num_rows()) {
$tofind=false;
$this->cacheurl["d".$dir]="http://".$db->f("sub").ife($db->f("sub"),".").$db->f("domaine").$end;
}
if (!$beg && $tofind) {
$tofind=false;
$this->cacheurl["d".$dir]="-";
// We did not find it ;(
}
if (($tt=strrpos($beg,"/"))!==false) {
$end=substr($beg,$tt).$end; // = /topdir$end so $end starts AND ends with /
$beg=substr($beg,0,$tt);
} else {
$end="/".$beg.$end;
$beg="/";
}
}
}
if ($this->cacheurl["d".$dir] && $this->cacheurl["d".$dir]!="-") {
return $this->cacheurl["d".$dir]."/".$name;
} else {
return false;
}
}

Field Documentation

$cacheurl = array()

Internal cache for viewurl.

Definition at line 746 of file m_bro.php.

$l_createfile

What do we do after creating a file?

Definition at line 45 of file m_bro.php.

$l_editor_font = array("Arial, Helvetica, Sans-serif","Times, Bookman, Serif","Courier New, Courier, Fixed")

Font choice in the editor.

Definition at line 60 of file m_bro.php.

$l_editor_size = array("18px","14px","12px","10px","8px","0.8em","0.9em","1em","1.1em","1.2em")

font size in the editor

Definition at line 63 of file m_bro.php.

$l_icons

Shall we show icons or just names?

Definition at line 42 of file m_bro.php.

$l_mode

How we draw the file in column.

Definition at line 36 of file m_bro.php.

$l_tgz

download mode of a compressed folder

Definition at line 39 of file m_bro.php.

$mime_desc = array()

internal cache

Definition at line 49 of file m_bro.php.

$mime_icon = array()

internal cache

Definition at line 53 of file m_bro.php.

$mime_type = array()

internal cache

Definition at line 57 of file m_bro.php.


The documentation for this class was generated from the following file: