Alternc  latest
Alternc logiel libre pour l'hébergement
 All Classes 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. More...
 
 hook_menu ()
 
 convertabsolute ($dir, $strip=true)
 Verifie un dossier relatif au dossier de l'utilisateur courant. More...
 
 get_user_root ($login)
 Retourne le chemin complet vers la racine du repertoire de l'utilisateur. More...
 
 get_userid_root ($uid)
 Retourne le chemin complet vers la racine du repertoire de l'utilisateur. More...
 
 filelist ($dir="", $showdirsize=false)
 Retourne un tableau contenant la liste des fichiers du dossier courant. More...
 
 GetPrefs ()
 Retourne un tableau contenant les prfrences de l'utilisateur courant. More...
 
 SetPrefs ($editsizex, $editsizey, $listmode, $showicons, $downfmt, $createfile, $showtype, $editor_font, $editor_size, $golastdir)
 Modifie les prfrences de l'utilisateur courant. More...
 
 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. More...
 
 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. More...
 
 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. More...
 
 dirsize ($dir)
 Returns the size of a directory, by adding all it's files sizes. More...
 
 CreateDir ($dir, $file)
 Crée le dossier $file dans le dossier (parent) $dir. More...
 
 CreateFile ($dir, $file)
 Crée un fichier vide dans un dossier. More...
 
 DeleteFile ($file_list, $R)
 Efface les fichiers du tableau $file_list dans le dossier $R. More...
 
 RenameFile ($R, $old, $new)
 Renomme les fichier de $old du dossier $R en $new. More...
 
 MoveFile ($d, $old, $new)
 Déplace les fichier de $d du dossier $old vers $new. More...
 
 ChangePermissions ($R, $d, $perm, $verbose=false)
 Change les droits d'acces aux fichier de $d du dossier $R en $p. More...
 
 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. More...
 
 ExtractFile ($file, $dest=null)
 Extract an archive by using GNU and non-GNU tools. More...
 
 CopyFile ($d, $old, $new)
 Copy many files from point A to point B. More...
 
 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) More...
 
 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. More...
 
 content ($R, $file)
 Affiche le contenu d'un fichier pour un champ VALUE de textarea. More...
 
 viewurl ($dir, $name)
 Retourne une url de navigation pour le fichier $name du dossier $dir Les url sont mises en caches. More...
 
 can_edit ($dir, $name)
 
 is_extractable ($name)
 Return a HTML snippet representing an extraction function only if the mimetype of $name is supported. More...
 
 is_sqlfile ($name)
 return true if file is a sql dump (end with .sql or .sql.gz) More...
 
 download_link ($dir, $file)
 
 content_send ($R, $file)
 Echoes the content of the file $file located in directory $R. More...
 
 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. More...
 
 DownloadZ ($dir="")
 Echo d'un flux .tar.Z contenant tout le contenu du dossier $dir. More...
 
 DownloadTGZ ($dir="")
 Echo d'un flux .tgz contenant tout le contenu du dossier $dir. More...
 
 DownloadTBZ ($dir="")
 Echo d'un flux .tar.bz2 contenant tout le contenu du dossier $dir. More...
 
 DownloadZIP ($dir="")
 Echo d'un flux .ZIP contenant tout le contenu du dossier $dir. More...
 
 _sort_filelist_name ($a, $b)
 Fonction de tri perso utilis par filelist. More...
 
 _delete ($file, $depth=0)
 Efface $file et tous ses sous-dossiers s'il s'agit d'un dossier A UTILISER AVEC PRECAUTION !!! More...
 
 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. More...
 
 alternc_export_data ($dir)
 Function d'exportation des données appelé par la classe m_export via un hooks. More...
 
 getMaxAllowedUploadSize ()
 

Public Attributes

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

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 34 of file m_bro.php.

Member Function Documentation

m_bro::_delete (   $file,
  $depth = 0 
)

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 1103 of file m_bro.php.

References $err.

Referenced by DeleteFile().

1103  {
1104  global $err;
1105  // permet d'effacer de nombreux fichiers
1106  @set_time_limit(0);
1107  //chmod($file,0777);
1108  $err->log("bro", "_delete($file)");
1109  if ($depth>20) {
1110  $err->log("bro", "CANCELING _delete($file) TOO DEEP");
1111  }
1112  if (is_dir($file)) {
1113  $handle = opendir($file);
1114  if (!$handle) {
1115  rmdir($file); // let's try it anyway...
1116  return; // skip unreacheable folders
1117  }
1118  while (($filename = readdir($handle)) !== false) {
1119  if ($filename != "." && $filename != "..") {
1120  $this->_delete($file . "/" . $filename,$depth+1);
1121  }
1122  }
1123  closedir($handle);
1124  rmdir($file);
1125  } else {
1126  unlink($file);
1127  }
1128  }
_delete($file, $depth=0)
Efface $file et tous ses sous-dossiers s'il s'agit d'un dossier A UTILISER AVEC PRECAUTION !!! ...
Definition: m_bro.php:1103
$err
Definition: bootstrap.php:72
m_bro::_sort_filelist_name (   $a,
  $b 
)

Fonction de tri perso utilis par filelist.

private

Parameters
string$a
string$b
Returns
int

Definition at line 1087 of file m_bro.php.

1087  {
1088  if ($a["type"] && !$b["type"]) {
1089  return 1;
1090  }
1091  if ($b["type"] && !$a["type"]) {
1092  return -1;
1093  }
1094  return $a["name"] > $b["name"];
1095  }
m_bro::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.

Parameters
globalm_mysql $db
globalm_err $err
Returns
string

Definition at line 1138 of file m_bro.php.

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

1138  {
1139  global $err;
1140  $err->log("bro", "export_conf");
1141  $str = "<table border=\"1\"><caption> Browser </caption>\n";
1142  $str.=" <browser>\n";
1143  $pref = $this->GetPrefs();
1144 
1145  $i = 1;
1146  foreach ($pref as $k => $v) {
1147  if (($i % 2) == 0) {
1148  $str.=" <$k>$v</$k>\n";
1149  }
1150  $i++;
1151  }
1152  $str.=" </browser>\n";
1153 
1154  return $str;
1155  }
GetPrefs()
Retourne un tableau contenant les prfrences de l'utilisateur courant.
Definition: m_bro.php:236
$err
Definition: bootstrap.php:72
m_bro::alternc_export_data (   $dir)

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

Parameters
globalm_mem $mem
globalm_err $err
string$dirLe chemin destination du tarball produit
Returns
boolean|null

Definition at line 1165 of file m_bro.php.

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

1165  {
1166  global $mem, $err;
1167  $err->log("bro", "export_data");
1168  $dir.="html/";
1169  if (!is_dir($dir)) {
1170  if (!mkdir($dir))
1171  $err->raise("bro", _("Cannot create the requested directory. Please check the permissions"));
1172  }
1173  $timestamp = date("H:i:s");
1174 
1175  if (exec("/bin/tar cvf - " . escapeshellarg(getuserpath() . "/") . "| gzip -9c > " . escapeshellarg($dir . "/" . $mem->user['login'] . "_html_" . $timestamp . ".tar.gz"))) {
1176  $err->log("bro", "export_data_succes");
1177  } else {
1178  $err->log("bro", "export_data_failed");
1179  }
1180  }
$err
Definition: bootstrap.php:72
getuserpath($user=null)
get the home of the user
Definition: functions.php:318
$mem
Definition: bootstrap.php:71
m_bro::can_edit (   $dir,
  $name 
)
Parameters
globalm_mem $mem
globalm_err $err
string$dir
string$name
Returns
null|boolean

Definition at line 877 of file m_bro.php.

References $err, convertabsolute(), and exit.

877  {
878  global $err;
879  $absolute = "$dir/$name";
880  $absolute = $this->convertabsolute($absolute, false);
881  if (!$absolute) {
882  $err->raise('bro', _("File not in authorized directory"));
883  include('foot.php');
884  exit;
885  }
886  $stat=stat($absolute);
887  if (!($stat[2] & 0000200)) return false;
888  $finfo = finfo_open(FILEINFO_MIME_TYPE);
889  $mime = finfo_file($finfo, $absolute);
890  if (substr($mime, 0, 5) == "text/" || $mime == "application/x-empty" || $mime == "inode/x-empty") {
891  return true;
892  }
893  return false;
894  }
$err
Definition: bootstrap.php:72
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
exit
Definition: adm_doadd.php:71
m_bro::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.
string$dlist of files whose permission must be changed
string$permthe permission to change
boolean$verboseShall we 'echo' what we did ?
Returns
boolean TRUE Si les fichiers ont t renomms, FALSE si une erreur s'est produite.

Definition at line 550 of file m_bro.php.

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

550  {
551  global $err, $action;
552  $absolute = $this->convertabsolute($R, false);
553  if (!$absolute) {
554  $err->raise("bro", _("File or folder name is incorrect"));
555  return false;
556  }
557  for ($i = 0; $i < count($d); $i++) {
558  $d[$i] = ssla($d[$i]); // strip slashes if needed
559  if (!strpos($d[$i], "/")) { // caractre / interdit dans le nom du fichier
560  $m = fileperms($absolute . "/" . $d[$i]);
561 
562  // pour l'instant on se limite a "write" pour owner, puisque c'est le seul
563  // cas interessant compte tenu de la conf de Apache pour AlternC..
564  if ($perm[$i]['w']) {
565  $m = $m | 0220; // ug+w
566  } else {
567  $m = $m & (~ 0222); // ugo-w
568  }
569  $action->chmod($absolute . "/" . $d[$i], $m);
570  if ($verbose) {
571  echo "chmod " . sprintf('%o', $m) . " file, was " . sprintf('%o', fileperms($absolute . "/" . $d[$i])) . " -- " . $perm[$i]['w'];
572  }
573  }
574  }
575  // We'd like to *wait* for this to complete, but since this is essentially asynchronous, we can't be sure easily
576  // So we chose to wait a little bit (2 sec) at the end of the loop...
577  sleep(2);
578  return true;
579  }
$R
Definition: bro_editor.php:49
$err
Definition: bootstrap.php:72
ssla($str)
Strip slashes if needed :
Definition: functions.php:498
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
$d
m_bro::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
globalm_err $err
string$RDossier dans lequel on cherche le fichier
string$fileFichier dont on souhaite obtenir le contenu.
Returns
string|false TRUE si le fichier a bien été mis sur echo, ou FALSE si une erreur est survenue.

Definition at line 792 of file m_bro.php.

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

792  {
793  global $err;
794  $absolute = $this->convertabsolute($R, false);
795  if (!strpos($file, "/")) {
796  $absolute.="/" . $file;
797  if (file_exists($absolute)) {
798  $std = str_replace("<", "&lt;", str_replace("&", "&amp;", file_get_contents($absolute)));
799  return $std;
800  } else {
801  $err->raise("bro", _("Cannot read the requested file. Please check the permissions"));
802  return false;
803  }
804  } else {
805  $err->raise("bro", _("File or folder name is incorrect"));
806  return false;
807  }
808  }
$R
Definition: bro_editor.php:49
$err
Definition: bootstrap.php:72
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::content_send (   $R,
  $file 
)

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

Parameters
globalm_err $err
string$R
string$file
Returns
null|false

Definition at line 967 of file m_bro.php.

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

Referenced by download_link().

967  {
968  global $err;
969  $absolute = $this->convertabsolute($R, false);
970  if (!strpos($file, "/")) {
971  $absolute.="/" . $file;
972  if (file_exists($absolute)) {
973  readfile($absolute);
974  }
975  } else {
976  $err->raise("bro", _("File or folder name is incorrect"));
977  return false;
978  }
979  }
$R
Definition: bro_editor.php:49
$err
Definition: bootstrap.php:72
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::convertabsolute (   $dir,
  $strip = true 
)

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

Parameters
string$dir
globalm_mem $mem
string$dirDossier absolu que l'on souhaite vérifier
boolean$strip
Returns
false|string Retourne le nom du dossier vérifié, 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 106 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().

106  {
107  global $mem;
108  $root = $this->get_user_root($mem->user["login"]);
109  // Sauvegarde du chemin de base.
110  $root_alternc = $root;
111  // Passage du root en chemin rel (diffrent avec un lien)
112  $root = realpath($root);
113  // separer le chemin entre le repertoire et le fichier
114  $file = basename($dir);
115  $dir = dirname($dir);
116  $dir = realpath($root . "/" . $dir);
117  // verifier que le repertoire est dans le home de l'usager
118  if (substr($dir, 0, strlen($root)) != $root) {
119  return false;
120  }
121 
122  // recomposer le chemin
123  $dir = $dir . '/' . $file;
124 
125  # Si on tente de mettre un '..' alors erreur
126  if (preg_match("/\/\.\.\//", $dir) || preg_match("/\/\.\.$/", $dir)) {
127  return false;
128  }
129 
130  if ($strip) {
131  $dir = substr($dir, strlen($root));
132  } else {
133  // si on ne strip pas, il faut enlever le chemin rel
134  // et mettre la racine d'alternc pour viter les
135  // problmes de lien depuis /var /alternc !
136  $dir = $root_alternc . substr($dir, strlen($root));
137  }
138  if (substr($dir, -1) == "/") {
139  return substr($dir, 0, strlen($dir) - 1);
140  } else {
141  return $dir;
142  }
143  }
$root
Definition: bootstrap.php:20
get_user_root($login)
Retourne le chemin complet vers la racine du repertoire de l'utilisateur.
Definition: m_bro.php:153
$mem
Definition: bootstrap.php:71
m_bro::CopyFile (   $d,
  $old,
  $new 
)

Copy many files from point A to point B.

Parameters
globalm_err $err
array$dList of files to move
string$old
string$new
Returns
boolean

Definition at line 702 of file m_bro.php.

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

702  {
703  global $err;
704  $old = $this->convertabsolute($old, false);
705  if (!$old) {
706  $err->raise("bro", _("File or folder name is incorrect"));
707  return false;
708  }
709  $new = $this->convertabsolute($new, false);
710  if (!$new) {
711  $err->raise("bro", _("File or folder name is incorrect"));
712  return false;
713  }
714  if ($old == $new) {
715  $err->raise("bro", _("You cannot move or copy a file to the same folder"));
716  return false;
717  }
718  for ($i = 0; $i < count($d); $i++) {
719  $d[$i] = ssla($d[$i]); // strip slashes if needed
720  if (!strpos($d[$i], "/") && file_exists($old . "/" . $d[$i]) && !file_exists($new . "/" . $d[$i])) {
721  $this->CopyOneFile($old . "/" . $d[$i], $new);
722  }
723  }
724  return true;
725  }
$err
Definition: bootstrap.php:72
ssla($str)
Strip slashes if needed :
Definition: functions.php:498
CopyOneFile($src, $dest)
Copy a source to a destination by either copying recursively a directory or by downloading a file wit...
Definition: m_bro.php:739
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
$d
m_bro::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)

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

Parameters
globalm_err $err
string$srcPath or URL
string$destAbsolute path inside the users directory
Returns
boolean false on error

Definition at line 739 of file m_bro.php.

References $err.

Referenced by CopyFile().

739  {
740  global $err;
741  exec("cp -Rpf " . escapeshellarg($src) . " " . escapeshellarg($dest), $void, $ret);
742  if ($ret) {
743  $err->raise("bro", "Errors happened while copying the source to destination. cp return value: %d", $ret);
744  return false;
745  }
746  return true;
747  }
$err
Definition: bootstrap.php:72
m_bro::CreateDir (   $dir,
  $file 
)

Crée le dossier $file dans le dossier (parent) $dir.

Parameters
globalm_mysql $db
globalint $cuid
globalm_err $err
string$dirDossier dans lequel on veut crer un sous-dossier
string$fileNom du dossier à créer
Returns
boolean TRUE si le dossier a été créé, FALSE si une erreur s'est produite.

Definition at line 395 of file m_bro.php.

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

395  {
396  global $db, $cuid, $err;
397  $file = ssla($file);
398  $absolute = $this->convertabsolute($dir . "/" . $file, false);
399  #echo "$absolute";
400  if ($absolute && (!file_exists($absolute))) {
401  if (!mkdir($absolute, 00777, true)) {
402  $err->raise("bro", _("Cannot create the requested directory. Please check the permissions"));
403  return false;
404  }
405  $db->query("UPDATE browser SET crff=1 WHERE uid= ?;", array($cuid));
406  return true;
407  } else {
408  $err->raise("bro", _("File or folder name is incorrect"));
409  return false;
410  }
411  }
global $db
Definition: bootstrap.php:22
$err
Definition: bootstrap.php:72
ssla($str)
Strip slashes if needed :
Definition: functions.php:498
$cuid
Definition: bootstrap.php:43
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::CreateFile (   $dir,
  $file 
)

Crée un fichier vide dans un dossier.

Parameters
globalm_mysql $db
globalm_err $err
globalint $cuid
string$dirDossier dans lequel on veut crer un sous-dossier
string$fileNom du dossier à créer
Returns
boolean TRUE si le dossier a été créé, FALSE si une erreur s'est produite.

Definition at line 423 of file m_bro.php.

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

423  {
424  global $db, $err, $cuid;
425  $file = ssla($file);
426  $absolute = $this->convertabsolute($dir . "/" . $file, false);
427  if (!$absolute || file_exists($absolute)) {
428  $err->raise("bro", _("File or folder name is incorrect"));
429  return false;
430  }
431  if (!file_exists($absolute)) {
432  if (!@touch($absolute)) {
433  $err->raise("bro", _("Cannot create the requested file. Please check the permissions"));
434  return false;
435  }
436  }
437  $db->query("UPDATE browser SET crff=0 WHERE uid= ?;", array($cuid));
438  return true;
439  }
global $db
Definition: bootstrap.php:22
$err
Definition: bootstrap.php:72
ssla($str)
Strip slashes if needed :
Definition: functions.php:498
$cuid
Definition: bootstrap.php:43
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::DeleteFile (   $file_list,
  $R 
)

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

Parameters
globalm_err $err
globalm_mem $mem
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 450 of file m_bro.php.

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

450  {
451  global $err;
452  $root = realpath(getuserpath());
453  $absolute = $this->convertabsolute($R, false);
454  if (!$absolute && strpos($root, $absolute) === 0 && strlen($absolute) > (strlen($root) + 1)) {
455  $err->raise("bro", _("File or folder name is incorrect"));
456  return false;
457  }
458  for ($i = 0; $i < count($file_list); $i++) {
459  $file_list[$i] = ssla($file_list[$i]);
460  if (!strpos($file_list[$i], "/") && file_exists($absolute . "/" . $file_list[$i])) { // Character / forbidden in a FILE name
461  $this->_delete($absolute . "/" . $file_list[$i]);
462  }
463  }
464  return true;
465  }
$R
Definition: bro_editor.php:49
_delete($file, $depth=0)
Efface $file et tous ses sous-dossiers s'il s'agit d'un dossier A UTILISER AVEC PRECAUTION !!! ...
Definition: m_bro.php:1103
$err
Definition: bootstrap.php:72
getuserpath($user=null)
get the home of the user
Definition: functions.php:318
ssla($str)
Strip slashes if needed :
Definition: functions.php:498
$root
Definition: bootstrap.php:20
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::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 365 of file m_bro.php.

Referenced by fsize().

365  {
366  $totalsize = 0;
367 
368  if (($handle = opendir($dir))) {
369  while (false !== ($file = readdir($handle))) {
370  $nextpath = $dir . '/' . $file;
371 
372  if ($file != '.' && $file != '..' && !is_link($nextpath)) {
373  if (is_dir($nextpath)) {
374  $totalsize += $this->dirsize($nextpath);
375  } elseif (is_file($nextpath)) {
376  $totalsize += filesize($nextpath);
377  }
378  }
379  }
380  closedir($handle);
381  }
382  return $totalsize;
383  }
dirsize($dir)
Returns the size of a directory, by adding all it's files sizes.
Definition: m_bro.php:365
m_bro::download_link (   $dir,
  $file 
)
Parameters
globalm_err $err
string$dir
string$file

Definition at line 950 of file m_bro.php.

References $err, and content_send().

950  {
951  global $err;
952  $err->log("bro", "download_link");
953  header("Content-Disposition: attachment; filename=$file");
954  header("Content-Type: application/force-download");
955  header("Content-Transfer-Encoding: binary");
956  $this->content_send($dir, $file);
957  }
$err
Definition: bootstrap.php:72
content_send($R, $file)
Echoes the content of the file $file located in directory $R.
Definition: m_bro.php:967
m_bro::DownloadTBZ (   $dir = "")

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

Parameters
globaltype $mem
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 1051 of file m_bro.php.

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

1051  {
1052  global $mem;
1053  header("Content-Disposition: attachment; filename=" . $mem->user["login"] . ".tar.bz2");
1054  header("Content-Type: application/x-bzip2");
1055  header("Content-Transfer-Encoding: binary");
1056  $d = escapeshellarg("." . $this->convertabsolute($dir, true));
1057  set_time_limit(0);
1058  passthru("/bin/tar -cj -C " . getuserpath() . "/ $d");
1059  }
getuserpath($user=null)
get the home of the user
Definition: functions.php:318
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
$mem
Definition: bootstrap.php:71
$d
m_bro::DownloadTGZ (   $dir = "")

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

Parameters
globaltype $mem
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 1034 of file m_bro.php.

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

1034  {
1035  global $mem;
1036  header("Content-Disposition: attachment; filename=" . $mem->user["login"] . ".tgz");
1037  header("Content-Type: application/x-tgz");
1038  header("Content-Transfer-Encoding: binary");
1039  $d = escapeshellarg("." . $this->convertabsolute($dir, true));
1040  set_time_limit(0);
1041  passthru("/bin/tar -cz -C " . getuserpath() . "/ $d");
1042  }
getuserpath($user=null)
get the home of the user
Definition: functions.php:318
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
$mem
Definition: bootstrap.php:71
$d
m_bro::DownloadZ (   $dir = "")

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

Parameters
globalm_mem $mem
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 1017 of file m_bro.php.

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

1017  {
1018  global $mem;
1019  header("Content-Disposition: attachment; filename=" . $mem->user["login"] . ".Z");
1020  header("Content-Type: application/x-Z");
1021  header("Content-Transfer-Encoding: binary");
1022  $d = escapeshellarg("." . $this->convertabsolute($dir, true));
1023  set_time_limit(0);
1024  passthru("/bin/tar -cZ -C " . getuserpath() . "/" . $mem->user["login"] . "/ $d");
1025  }
getuserpath($user=null)
get the home of the user
Definition: functions.php:318
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
$mem
Definition: bootstrap.php:71
$d
m_bro::DownloadZIP (   $dir = "")

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

Parameters
globaltype $mem
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 1068 of file m_bro.php.

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

1068  {
1069  global $mem;
1070  header("Content-Disposition: attachment; filename=" . $mem->user["login"] . ".zip");
1071  header("Content-Type: application/x-zip");
1072  header("Content-Transfer-Encoding: binary");
1073  $d = $this->convertabsolute($dir, false);
1074  set_time_limit(0);
1075  chdir(dirname($d));
1076  passthru("/usr/bin/zip -r - ".escapeshellarg(basename($d)));
1077  }
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
$mem
Definition: bootstrap.php:71
$d
m_bro::ExtractFile (   $file,
  $dest = null 
)

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

Parameters
globalm_err $err
globalint $cuid
globalm_mem $mem
globalm_action $action
string$fileFull or relative path to the archive
string$destPath of the extract destination, the same directory as the archive by default
Returns
integer|null != 0 on error

Definition at line 649 of file m_bro.php.

References $err, and convertabsolute().

649  {
650  global $err, $action;
651  $file = $this->convertabsolute($file, false);
652  if (is_null($dest)) {
653  $dest = dirname($file);
654  } else {
655  $dest = $this->convertabsolute($dest, false);
656  }
657  if (!$file || !$dest || !is_readable($file)) {
658  $err->raise("bro", _("File or folder name is incorrect"));
659  return 1;
660  }
661  $lfile = strtolower($file);
662  if (substr($lfile, -4) == ".tar" || substr($lfile, -8) == ".tar.bz2" || substr($lfile, -7) == ".tar.gz" || substr($lfile, -6) == ".tar.z" || substr($lfile, -4) == ".tgz" || substr($lfile, -4) == ".tbz" || substr($lfile, -5) == ".tbz2" ) {
663  // TODO new version of tar supports `tar xf ...` so there is no
664  // need to specify the compression format
665  echo "<p>" . _("Uncompressing through TAR") . "</p><pre style=\"overflow: scroll; height: 200px\">";
666  $ret = 0;
667  passthru("tar -xvf " . escapeshellarg($file) . " --numeric-owner -C " . escapeshellarg($dest) . " 2>&1", $ret);
668  }
669  elseif (substr($lfile, -4) == ".zip") {
670  echo "<p>" . _("Uncompressing through UNZIP") . "</p><pre style=\"overflow: scroll; height: 200px\">";
671  $cmd = "unzip -o " . escapeshellarg($file) . " -d " . escapeshellarg($dest) . " 2>&1";
672  passthru($cmd, $ret);
673  }
674  elseif (substr($lfile, -3) == ".gz" || substr($lfile, -2) == ".Z") {
675  echo "<p>" . _("Uncompressing through GUNZIP") . "</p><pre style=\"overflow: scroll; height: 200px\">";
676  $cmd = "gunzip " . escapeshellarg($file) . " 2>&1";
677  passthru($cmd, $ret);
678  }
679  elseif (substr($lfile, -3) == ".bz" || substr($lfile, -4) == ".bz2") {
680  echo "<p>" . _("Uncompressing through bunzip2") . "</p><pre style=\"overflow: scroll; height: 200px\">";
681  $cmd = "bunzip2 " . escapeshellarg($file) . " 2>&1";
682  passthru($cmd, $ret);
683  }
684  echo "</pre>";
685  if ($ret) {
686  $err->raise("bro", _("I cannot find a way to extract the file %s, it is an unsupported compressed format"), $file);
687  }
688  // fix the perms of the extracted archive TODO: does it work??? | note: it was using a wrong variable name !
689  $action->fix_dir($dest);
690  return $ret;
691  }
$err
Definition: bootstrap.php:72
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::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
globalm_mysql $db
globalint $cuid
globalm_err $err
string$dirDossier relatif au dossier racine du compte du membre courant
boolean$showdirsize
Returns
array Le tableau contenant les fichiers de $dir, et

Definition at line 197 of file m_bro.php.

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

197  {
198  global $db, $cuid, $err;
199  $db->query("UPDATE browser SET lastdir= ? WHERE uid= ?;", array($dir, $cuid));
200  $absolute = $this->convertabsolute($dir, false);
201  if (!$absolute || !file_exists($absolute)) {
202  $err->raise('bro', _("This directory does not exist."));
203  return false;
204  }
205  if (!is_readable($absolute)) {
206  $err->raise('bro', _("This directory is not readable."));
207  return false;
208  }
209  clearstatcache(true);
210  $c = array();
211  if ($dir = @opendir($absolute)) {
212  while (($file = readdir($dir)) !== false) {
213  if ($file != "." && $file != "..") {
214  $stat=stat($absolute . "/" . $file);
215  $c[] = array("name" => $file, "size" => $this->fsize($absolute . "/" . $file, $showdirsize),
216  "date" => filemtime($absolute . "/" . $file), "type" => (!is_dir($absolute . "/" . $file)),
217  "permissions" => $stat[2] );
218  }
219  }
220  closedir($dir);
221  }
222  usort($c, array("m_bro", "_sort_filelist_name"));
223  return $c;
224  }
global $db
Definition: bootstrap.php:22
$err
Definition: bootstrap.php:72
$cuid
Definition: bootstrap.php:43
fsize($file, $showdirsize=false)
Retourne la taille du fichier $file si $file est un dossier, retourne la taille de ce dossier et de t...
Definition: m_bro.php:347
$c
Definition: bootstrap.php:47
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::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.
int|string

Definition at line 347 of file m_bro.php.

References dirsize().

Referenced by filelist().

347  {
348  if (is_dir($file)) {
349  if ($showdirsize) {
350  return $this->dirsize($file);
351  } else {
352  return "-";
353  }
354  } else {
355  return filesize($file);
356  }
357  }
dirsize($dir)
Returns the size of a directory, by adding all it's files sizes.
Definition: m_bro.php:365
m_bro::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 153 of file m_bro.php.

References getuserpath().

Referenced by convertabsolute(), and get_userid_root().

153  {
154  return getuserpath();
155  }
getuserpath($user=null)
get the home of the user
Definition: functions.php:318
m_bro::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.

Todo:
[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..
Parameters
globalm_admin $admin
int$uidUser id.
Returns
string Returns the complete path to the root of the user's directory.

Definition at line 169 of file m_bro.php.

References $uid, and get_user_root().

169  {
170  global $admin;
171 
172  $old_enabled = $admin->enabled;
173  $admin->enabled = true;
174  $member = $admin->get($uid);
175  $admin->enabled = $old_enabled;
176 
177  return $this->get_user_root($member['login']);
178  }
$uid
get_user_root($login)
Retourne le chemin complet vers la racine du repertoire de l'utilisateur.
Definition: m_bro.php:153
m_bro::getMaxAllowedUploadSize ( )

Definition at line 1182 of file m_bro.php.

1182  {
1183  return min(ini_get('post_max_size'), ini_get('upload_max_filesize'));
1184  }
m_bro::GetPrefs ( )

Retourne un tableau contenant les prfrences de l'utilisateur courant.

Ce tableau associatif contient les valeurs des champs de la table "browser" pour l'utilisateur courant.

Parameters
globalm_mysql $db
globalint $cuid
Returns
array Tableau des prfrences de l'utilisateur courant.

Definition at line 236 of file m_bro.php.

References $cuid, and $db.

Referenced by alternc_export_conf().

236  {
237  global $db, $cuid;
238  $db->query("SELECT * FROM browser WHERE uid= ?;", array($cuid));
239  if ($db->num_rows() == 0) {
240  $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, ?,'Arial, Helvetica, Sans-serif','12px');", array($cuid));
241  $db->query("SELECT * FROM browser WHERE uid= ?;", array($cuid));
242  }
243  $db->next_record();
244  return $db->Record;
245  }
global $db
Definition: bootstrap.php:22
$cuid
Definition: bootstrap.php:43
m_bro::hook_menu ( )
Returns
array

Definition at line 84 of file m_bro.php.

84  {
85  $obj = array(
86  'title' => _("File browser"),
87  'ico' => 'images/folder.png',
88  'link' => 'bro_main.php',
89  'pos' => 40,
90  );
91 
92  return $obj;
93  }
m_bro::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
globalarray $bro_icon
string$fileFichier dont on souhaite connaitre le fichier icone
Returns
string Fichier icone correspondant.

Definition at line 290 of file m_bro.php.

References $t.

290  {
291  global $bro_icon;
292  if (!strpos($file, ".") && substr($file, 0, 1) != ".") {
293  return "file.png";
294  }
295  $t = explode(".", $file);
296  if (!is_array($t)) {
297  $ext = $t;
298  } else {
299  $ext = $t[count($t) - 1];
300  }
301  // Now seek the extension
302  if (!isset($bro_icon[$ext]) || !$bro_icon[$ext]) {
303  return "file.png";
304  } else {
305  return $bro_icon[$ext] . ".png";
306  }
307  }
$t
Definition: dom_editdns.php:58
m_bro::is_extractable (   $name)

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

Parameters
string$name
Returns
boolean

Definition at line 902 of file m_bro.php.

902  {
903  if (($parts = explode(".", $name))) {
904  $ext = array_pop($parts);
905  switch ($ext) {
906  case "gz":
907  case "bz":
908  case "bz2":
909  $ext = array_pop($parts) . $ext;
910  /* FALLTHROUGH */
911  case "tar.gz":
912  case "tar.bz":
913  case "tar.bz2":
914  case "tgz":
915  case "tbz":
916  case "tbz2":
917  case "tar":
918  case "Z":
919  case "zip":
920  return true;
921  }
922  }
923  return false;
924  }
m_bro::is_sqlfile (   $name)

return true if file is a sql dump (end with .sql or .sql.gz)

Parameters
type$dir
type$name
Returns
boolean

Definition at line 933 of file m_bro.php.

933  {
934  if (($parts = explode(".", $name))) {
935  $ext = array_pop($parts);
936  $ext2 = array_pop($parts) . '.' . $ext;
937  if ($ext == 'sql' or $ext2 == 'sql.gz') {
938  return true;
939  }
940  }
941  return false;
942  }
m_bro::m_bro ( )

Constructor.

Definition at line 73 of file m_bro.php.

73  {
74  $this->l_mode = array(0 => _("1 column, detailed"), 1 => _("2 columns, short"), 2 => _("3 columns, short"));
75  $this->l_tgz = array(0 => _("tgz (Linux)"), 1 => _("tar.bz2 (Linux)"), 2 => _("zip (Windows/Dos)"), 3 => _("tar.Z (Unix)"));
76  $this->l_icons = array(0 => _("No"), 1 => _("Yes"));
77  $this->l_createfile = array(0 => _("Go back to the file manager"), 1 => _("Edit the newly created file"));
78  }
m_bro::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
globalarray $bro_type
string$fileFichier dont on souhaite connaitre le type mime
Returns
string Type mime / Sous type du fichier demand

Definition at line 318 of file m_bro.php.

References $t.

318  {
319  global $bro_type;
320  if (!strpos($file, ".") && substr($file, 0, 1) != ".") {
321  return "File";
322  }
323  $t = explode(".", $file);
324  if (!is_array($t)) {
325  $ext = $t;
326  } else {
327  $ext = $t[count($t) - 1];
328  }
329  // Now seek the extension
330  if (empty($bro_type[$ext])) {
331  return "File";
332  } else {
333  return $bro_type[$ext];
334  }
335  }
$t
Definition: dom_editdns.php:58
m_bro::MoveFile (   $d,
  $old,
  $new 
)

Déplace les fichier de $d du dossier $old vers $new.

Parameters
globalm_err $err
array$dListe 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 509 of file m_bro.php.

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

509  {
510  global $err;
511  $old = $this->convertabsolute($old, false);
512  if (!$old) {
513  $err->raise("bro", _("File or folder name is incorrect"));
514  return false;
515  }
516 
517  if ($new[0] != '/') {
518  $new = $old . '/' . $new;
519  }
520  $new = $this->convertabsolute($new, false);
521 
522  if (!$new) {
523  $err->raise("bro", _("File or folder name is incorrect"));
524  return false;
525  }
526  if ($old == $new) {
527  $err->raise("bro", _("You cannot move or copy a file to the same folder"));
528  return false;
529  }
530  for ($i = 0; $i < count($d); $i++) {
531  $d[$i] = ssla($d[$i]); // strip slashes if needed
532  if (!strpos($d[$i], "/") && file_exists($old . "/" . $d[$i]) && !file_exists($new . "/" . $d[$i])) {
533  if (!rename($old . "/" . $d[$i], $new . "/" . $d[$i])) {
534  $err->raise("bro", "error renaming $old/$d[$i] -> $new/$d[$i]");
535  }
536  }
537  }
538  return true;
539  }
$err
Definition: bootstrap.php:72
ssla($str)
Strip slashes if needed :
Definition: functions.php:498
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
$d
m_bro::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
boolean$justparent
Returns
string Le code HTML ainsi obtenu.

Definition at line 760 of file m_bro.php.

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

760  {
761  $path = $this->convertabsolute($path, true);
762  $a = explode("/", $path);
763  if (!is_array($a)) {
764  $a = array($a);
765  }
766  $c = '';
767  $R = '';
768  if ($justparent) {
769  return "<a href=\"$action?R=" . urlencode($a[count($a) - 2] . '/') . "\">&uarr;</a>";
770  }
771  for ($i = 0; $i < count($a); $i++) {
772  if ($a[$i]) {
773  $R.=$a[$i] . "/";
774  $c.="<a href=\"$action?R=" . urlencode($R) . "\">" . $a[$i] . "</a>&nbsp;/&nbsp;";
775  }
776  }
777  return $c;
778  }
$R
Definition: bro_editor.php:49
$c
Definition: bootstrap.php:47
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::RenameFile (   $R,
  $old,
  $new 
)

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

Parameters
globalm_err $err
string$RDossier dans lequel se trouve les fichiers renommer.
array$oldAncien nom des fichiers
array$newNouveau nom des fichiers
Returns
boolean TRUE si les fichiers ont t renomms, FALSE si une erreur s'est produite.

Definition at line 476 of file m_bro.php.

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

476  {
477  global $err;
478  $absolute = $this->convertabsolute($R, false);
479  if (!$absolute) {
480  $err->raise("bro", _("File or folder name is incorrect"));
481  return false;
482  }
483  $alea = "." . time() . mt_rand(1000, 9999);
484  for ($i = 0; $i < count($old); $i++) {
485  $old[$i] = ssla($old[$i]); // strip slashes if needed
486  $new[$i] = ssla($new[$i]);
487  if (!strpos($old[$i], "/") && !strpos($new[$i], "/")) { // caractre / interdit dans old ET dans new...
488  @rename($absolute . "/" . $old[$i], $absolute . "/" . $old[$i] . $alea);
489  }
490  }
491  for ($i = 0; $i < count($old); $i++) {
492  if (!strpos($old[$i], "/") && !strpos($new[$i], "/")) { // caractre / interdit dans old ET dans new...
493  @rename($absolute . "/" . $old[$i] . $alea, $absolute . "/" . $new[$i]);
494  }
495  }
496 
497  return true;
498  }
$R
Definition: bro_editor.php:49
$err
Definition: bootstrap.php:72
ssla($str)
Strip slashes if needed :
Definition: functions.php:498
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::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
globalm_err $err
string$fileNom du fichier sauver. S'il existe déjà, il sera écrasé sans confirmation.
string$RDossier dans lequel on modifie le fichier
string$texteTexte du fichier à sauver dedans
Returns
false|null TRUE si tout s'est bien pass, FALSE si une erreur s'est produite.

Definition at line 993 of file m_bro.php.

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

993  {
994  global $err;
995  $absolute = $this->convertabsolute($R, false);
996  if (!strpos($file, "/")) {
997  $absolute.="/" . $file;
998  if (file_exists($absolute)) {
999  if (!file_put_contents($absolute, $texte)) {
1000  $err->raise("bro", _("Cannot edit the requested file. Please check the permissions"));
1001  return false;
1002  }
1003  }
1004  } else {
1005  $err->raise("bro", _("File or folder name is incorrect"));
1006  return false;
1007  }
1008  }
$R
Definition: bro_editor.php:49
$err
Definition: bootstrap.php:72
$texte
Definition: bro_editor.php:47
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::SetPrefs (   $editsizex,
  $editsizey,
  $listmode,
  $showicons,
  $downfmt,
  $createfile,
  $showtype,
  $editor_font,
  $editor_size,
  $golastdir 
)

Modifie les prfrences de l'utilisateur courant.

Parameters
globalm_mysql $db
globalint $cuid
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

Definition at line 264 of file m_bro.php.

References $cuid, and $db.

264  {
265  global $db, $cuid;
266  $editsizex = intval($editsizex);
267  $editsizey = intval($editsizey);
268  $listmode = intval($listmode);
269  $showicons = intval($showicons);
270  $showtype = intval($showtype);
271  $downfmt = intval($downfmt);
272  $createfile = intval($createfile);
273  $golastdir = intval($golastdir);
274  $db->query("SELECT * FROM browser WHERE uid= ?;", array(intval($cuid)));
275  if ($db->num_rows() == 0) {
276  $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, ?,'Arial, Helvetica, Sans-serif','12px',1);", array(intval($cuid)));
277  }
278  $db->query("UPDATE browser SET editsizex= ?, editsizey= ?, listmode= ?, showicons= ?, downfmt= ?, createfile= ?, showtype= ?, editor_font= ?, editor_size= ?, golastdir= ? WHERE uid= ?;", array($editsizex, $editsizey, $listmode, $showicons, $downfmt, $createfile, $showtype, $editor_font, $editor_size, $golastdir, intval($cuid)));
279  return true;
280  }
global $db
Definition: bootstrap.php:22
$cuid
Definition: bootstrap.php:43
m_bro::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
globalarray $_FILES
globalm_err $err
globalint $cuid
globalm_action $action
string$RDossier dans lequel on upload le fichier
Returns
string The path where the file resides or false if upload failed

Definition at line 594 of file m_bro.php.

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

594  {
595  global $_FILES, $err, $cuid, $action;
596  $absolute = $this->convertabsolute($R, false);
597  if (!$absolute) {
598  $err->raise("bro", _("File or folder name is incorrect"));
599  return false;
600  }
601  if (!strpos($_FILES['userfile']['name'], "/")) {
602  if ($_FILES['userfile']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['userfile']['tmp_name'])) {
603  if (!file_exists($absolute . "/" . $_FILES['userfile']['name'])) {
604  @touch($absolute . "/" . $_FILES['userfile']['name']);
605  }
606  if (@move_uploaded_file($_FILES['userfile']['tmp_name'], $absolute . "/" . $_FILES['userfile']['name'])) {
607  $action->fix_file($absolute . "/" . $_FILES['userfile']['name']);
608  return $absolute . "/" . $_FILES['userfile']['name'];
609  } else {
610  $err->raise("bro", _("Cannot create the requested file. Please check the permissions"));
611  return false;
612  }
613  } else {
614  // there was an error, raise it
615  $err->log("bro", "uploadfile", "Problem when uploading a file");
616  switch ($_FILES['userfile']['error']) {
617  case UPLOAD_ERR_INI_SIZE:
618  $erstr = _("The uploaded file exceeds the max file size allowed");
619  break;
620  case UPLOAD_ERR_FORM_SIZE:
621  case UPLOAD_ERR_PARTIAL:
622  case UPLOAD_ERR_NO_FILE:
623  case UPLOAD_ERR_NO_TMP_DIR:
624  case UPLOAD_ERR_CANT_WRITE:
625  case UPLOAD_ERR_EXTENSION:
626  default:
627  $erstr = _("Undefined error ") . $_FILES['userfile']['error'];
628  break;
629  }
630  $err->raise("bro", _("Error during the upload of the file: ") . $erstr);
631  return false;
632  }
633  }
634  return $absolute . "/" . $_FILES['userfile']['name'];
635  }
$R
Definition: bro_editor.php:49
$err
Definition: bootstrap.php:72
$cuid
Definition: bootstrap.php:43
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:106
m_bro::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.

Return a browsing url if available. Maintain a url cache (positive AND negative(-) cache)

Parameters
globalm_mysql $db
globalint $cuid
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 825 of file m_bro.php.

References $cuid, $db, and ife().

825  {
826  global $db, $cuid;
827  // Is it in cache ?
828  if (substr($dir, 0, 1) == "/") {
829  $dir = substr($dir, 1);
830  }
831  if (substr($dir, -1) == "/") {
832  $dir = substr($dir, 0, -1);
833  }
834  $dir = str_replace("%2F", "/", urlencode($dir));
835  $name = urlencode($name);
836  if (!@$this->cacheurl["d" . $dir]) {
837  // On parcours $dir en remontant les /
838  $end = "";
839  $beg = $dir;
840  $tofind = true;
841  while ($tofind) {
842  $db->query("SELECT sub,domaine FROM sub_domaines WHERE compte= ? AND type=0 AND (valeur= ? or valeur= ?);", array($cuid, "/".$beg."/", "/".$beg));
843  $db->next_record();
844  if ($db->num_rows()) {
845  $tofind = false;
846  $this->cacheurl["d" . $dir] = "http://" . $db->f("sub") . ife($db->f("sub"), ".") . $db->f("domaine") . $end;
847  }
848  if (!$beg && $tofind) {
849  $tofind = false;
850  $this->cacheurl["d" . $dir] = "-";
851  // We did not find it ;(
852  }
853  if (($tt = strrpos($beg, "/")) !== false) {
854  $end = substr($beg, $tt) . $end; //=/topdir$end so $end starts AND ends with /
855  $beg = substr($beg, 0, $tt);
856  } else {
857  $end = "/" . $beg . $end;
858  $beg = "/";
859  }
860  }
861  }
862  if ($this->cacheurl["d" . $dir] && $this->cacheurl["d" . $dir] != "-") {
863  return $this->cacheurl["d" . $dir] . "/" . $name;
864  } else {
865  return false;
866  }
867  }
global $db
Definition: bootstrap.php:22
ife($test, $tr, $fa="")
Definition: functions.php:400
$cuid
Definition: bootstrap.php:43

Member Data Documentation

m_bro::$cacheurl = array()

Internal cache for viewurl.

Definition at line 62 of file m_bro.php.

m_bro::$l_createfile

What do we do after creating a file?

Definition at line 46 of file m_bro.php.

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

Font choice in the editor.

Definition at line 65 of file m_bro.php.

m_bro::$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 68 of file m_bro.php.

m_bro::$l_icons

Shall we show icons or just names?

Definition at line 43 of file m_bro.php.

m_bro::$l_mode

How we draw the file in column.

Definition at line 37 of file m_bro.php.

m_bro::$l_tgz

download mode of a compressed folder

Definition at line 40 of file m_bro.php.

m_bro::$mime_desc = array()

internal cache

Definition at line 50 of file m_bro.php.

m_bro::$mime_icon = array()

internal cache

Definition at line 54 of file m_bro.php.

m_bro::$mime_type = array()

internal cache

Definition at line 58 of file m_bro.php.


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