Alternc  latest
Alternc logiel libre pour l'hébergement
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 ()
 Hook called by the menu class to add menus to the left panel. More...
 
 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)
 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()
 
 $mime_type = array()
 
 $cacheurl = array()
 
 $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 30 of file m_bro.php.

Member Function Documentation

◆ _delete()

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. @access private

Definition at line 1132 of file m_bro.php.

1132  {
1133  global $msg;
1134  // permet d'effacer de nombreux fichiers
1135  @set_time_limit(0);
1136  //chmod($file,0777);
1137  $msg->log("bro", "_delete($file)");
1138  if ($depth>20) {
1139  $msg->log("bro", "CANCELING _delete($file) TOO DEEP");
1140  }
1141  if (is_dir($file)) {
1142  $handle = opendir($file);
1143  if (!$handle) {
1144  rmdir($file); // let's try it anyway...
1145  return; // skip unreacheable folders
1146  }
1147  while (($filename = readdir($handle)) !== false) {
1148  if ($filename != "." && $filename != "..") {
1149  $this->_delete($file . "/" . $filename,$depth+1);
1150  }
1151  }
1152  closedir($handle);
1153  rmdir($file);
1154  } else {
1155  unlink($file);
1156  }
1157  }
$msg
Definition: bootstrap.php:75
_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:1132

References $msg.

Referenced by DeleteFile().

◆ _sort_filelist_name()

m_bro::_sort_filelist_name (   $a,
  $b 
)

Fonction de tri perso utilis par filelist.

@access private

Parameters
string$a
string$b
Returns
int

Definition at line 1115 of file m_bro.php.

1115  {
1116  if ($a["type"] && !$b["type"]) {
1117  return 1;
1118  }
1119  if ($b["type"] && !$a["type"]) {
1120  return -1;
1121  }
1122  return $a["name"] > $b["name"];
1123  }

◆ alternc_export_conf()

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_messages $msg
Returns
string

Definition at line 1168 of file m_bro.php.

1168  {
1169  global $msg;
1170  $msg->log("bro", "export_conf");
1171  $str = "<table border=\"1\"><caption> Browser </caption>\n";
1172  $str.=" <browser>\n";
1173  $pref = $this->GetPrefs();
1174 
1175  $i = 1;
1176  foreach ($pref as $k => $v) {
1177  if (($i % 2) == 0) {
1178  $str.=" <$k>$v</$k>\n";
1179  }
1180  $i++;
1181  }
1182  $str.=" </browser>\n";
1183 
1184  return $str;
1185  }
GetPrefs()
Retourne un tableau contenant les prfrences de l'utilisateur courant.
Definition: m_bro.php:229
$i

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

◆ alternc_export_data()

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_messages $msg
string$dirLe chemin destination du tarball produit
Returns
boolean|null

Definition at line 1196 of file m_bro.php.

1196  {
1197  global $mem, $msg;
1198  $msg->log("bro", "export_data");
1199  $dir.="html/";
1200  if (!is_dir($dir)) {
1201  if (!mkdir($dir))
1202  $msg->raise("ERROR", "bro", _("Cannot create the requested directory. Please check the permissions"));
1203  }
1204  $timestamp = date("H:i:s");
1205 
1206  if (exec("/bin/tar cvf - " . escapeshellarg(getuserpath() . "/") . "| gzip -9c > " . escapeshellarg($dir . "/" . $mem->user['login'] . "_html_" . $timestamp . ".tar.gz"))) {
1207  $msg->log("bro", "export_data_succes");
1208  } else {
1209  $msg->log("bro", "export_data_failed");
1210  }
1211  }
$mem
Definition: bootstrap.php:71
getuserpath($user=null)
get the home of the user
Definition: functions.php:329

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

◆ can_edit()

m_bro::can_edit (   $dir,
  $name 
)
Parameters
globalm_mem $mem
globalm_messages $msg
string$dir
string$name
Returns
null|boolean

Definition at line 894 of file m_bro.php.

894  {
895  global $msg;
896  $absolute = "$dir/$name";
897  $absolute = $this->convertabsolute($absolute, false);
898  if (!$absolute) {
899  $msg->raise("ERROR", 'bro', _("File not in authorized directory"));
900  include('foot.php');
901  exit;
902  }
903  $stat=stat($absolute);
904  if (!($stat[2] & 0000200)) return false;
905  $finfo = finfo_open(FILEINFO_MIME_TYPE);
906  $mime = finfo_file($finfo, $absolute);
907  if (substr($mime, 0, 5) == "text/" || $mime == "application/x-empty" || $mime == "inode/x-empty") {
908  return true;
909  }
910  return false;
911  }
exit
Definition: adm_doadd.php:70
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
Definition: m_bro.php:95

References $msg, convertabsolute(), and exit.

◆ ChangePermissions()

m_bro::ChangePermissions (   $R,
  $d,
  $perm 
)

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

553  {
554  global $msg, $action;
555  $absolute = $this->convertabsolute($R, false);
556  if (!$absolute) {
557  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
558  return false;
559  }
560  for ($i = 0; $i < count($d); $i++) {
561  $d[$i] = ssla($d[$i]); // strip slashes if needed
562  // If the form checkboxes are not checked, PHP will not fill in a
563  // value at all for the permissions. Set the default to unwriteable
564  // unless explicitly marked as writable.
565  if (!isset($perm[$i])) {
566  $perm[$i]['w'] = False;
567  }
568  if (!strpos($d[$i], "/")) { // caractre / interdit dans le nom du fichier
569  $m = fileperms($absolute . "/" . $d[$i]);
570 
571  // pour l'instant on se limite a "write" pour owner, puisque c'est le seul
572  // cas interessant compte tenu de la conf de Apache pour AlternC..
573  if ($perm[$i]['w']) {
574  $m = $m | 0220; // ug+w
575  } else {
576  $m = $m & (~ 0222); // ugo-w
577  }
578  $action->chmod($absolute . "/" . $d[$i], $m);
579  }
580  }
581  // We'd like to *wait* for this to complete, but since this is essentially asynchronous, we can't be sure easily
582  // So we chose to wait a little bit (2 sec) at the end of the loop...
583  sleep(2);
584  return true;
585  }
$d
$R
Definition: bro_editor.php:45
ssla($str)
Strip slashes if needed :
Definition: functions.php:519

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

◆ content()

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_messages $msg
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 807 of file m_bro.php.

807  {
808  global $msg;
809  $absolute = $this->convertabsolute($R, false);
810  if (!strpos($file, "/")) {
811  $absolute.="/" . $file;
812  if (file_exists($absolute)) {
813  $std = str_replace("<", "&lt;", str_replace("&", "&amp;", file_get_contents($absolute)));
814  return $std;
815  } else {
816  $msg->raise("ERROR", "bro", _("Cannot read the requested file. Please check the permissions"));
817  return false;
818  }
819  } else {
820  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
821  return false;
822  }
823  }

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

◆ content_send()

m_bro::content_send (   $R,
  $file 
)

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

Parameters
globalm_messages $msg
string$R
string$file
Returns
null|false

Definition at line 988 of file m_bro.php.

988  {
989  global $msg;
990  $absolute = $this->convertabsolute($R, false);
991  if (!strpos($file, "/")) {
992  $absolute.="/" . $file;
993  if (file_exists($absolute)) {
994  readfile($absolute);
995  }
996  } else {
997  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
998  return false;
999  }
1000  }

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

Referenced by download_link().

◆ convertabsolute()

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

95  {
96  global $mem;
97  $root = $this->get_user_root($mem->user["login"]);
98  // Sauvegarde du chemin de base.
99  $root_alternc = $root;
100  // Passage du root en chemin rel (diffrent avec un lien)
101  $root = realpath($root);
102  // separer le chemin entre le repertoire et le fichier
103  $file = basename($dir);
104  $dir = dirname($dir);
105  $dir = realpath($root . "/" . $dir);
106  // verifier que le repertoire est dans le home de l'usager
107  if (substr($dir, 0, strlen($root)) != $root) {
108  return false;
109  }
110 
111  // recomposer le chemin
112  $dir = $dir . '/' . $file;
113 
114  # Si on tente de mettre un '..' alors erreur
115  if (preg_match("/\/\.\.\//", $dir) || preg_match("/\/\.\.$/", $dir)) {
116  return false;
117  }
118 
119  if ($strip) {
120  $dir = substr($dir, strlen($root));
121  } else {
122  // si on ne strip pas, il faut enlever le chemin rel
123  // et mettre la racine d'alternc pour viter les
124  // problmes de lien depuis /var /alternc !
125  $dir = $root_alternc . substr($dir, strlen($root));
126  }
127  if (substr($dir, -1) == "/") {
128  return substr($dir, 0, strlen($dir) - 1);
129  } else {
130  return $dir;
131  }
132  }
$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:143

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().

◆ CopyFile()

m_bro::CopyFile (   $d,
  $old,
  $new 
)

Copy many files from point A to point B.

Parameters
globalm_messages $msg
array$dList of files to move
string$old
string$new
Returns
boolean

Definition at line 714 of file m_bro.php.

714  {
715  global $msg;
716  $old = $this->convertabsolute($old, false);
717  if (!$old) {
718  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
719  return false;
720  }
721  $new = $this->convertabsolute($new, false);
722  if (!$new) {
723  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
724  return false;
725  }
726  if ($old == $new) {
727  $msg->raise("ERROR", "bro", _("You cannot move or copy a file to the same folder"));
728  return false;
729  }
730  for ($i = 0; $i < count($d); $i++) {
731  $d[$i] = ssla($d[$i]); // strip slashes if needed
732  if (!strpos($d[$i], "/") && file_exists($old . "/" . $d[$i]) && !file_exists($new . "/" . $d[$i])) {
733  $this->CopyOneFile($old . "/" . $d[$i], $new);
734  }
735  }
736  return true;
737  }
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:752

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

◆ CopyOneFile()

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_messages $msg
string$srcPath or URL
string$destAbsolute path inside the users directory
Returns
boolean false on error

Definition at line 752 of file m_bro.php.

752  {
753  global $msg;
754  exec("cp -Rpf " . escapeshellarg($src) . " " . escapeshellarg($dest), $void, $ret);
755  if ($ret) {
756  $msg->raise("ERROR", "bro", "Errors happened while copying the source to destination. cp return value: %d", $ret);
757  return false;
758  }
759  return true;
760  }

References $msg.

Referenced by CopyFile().

◆ CreateDir()

m_bro::CreateDir (   $dir,
  $file 
)

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

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

394  {
395  global $db, $cuid, $msg;
396  $file = ssla($file);
397  $absolute = $this->convertabsolute($dir . "/" . $file, false);
398  if ($absolute && (!file_exists($absolute))) {
399  if (!mkdir($absolute, 00777, true)) {
400  $msg->raise("ERROR", "bro", _("Cannot create the requested directory. Please check the permissions"));
401  return false;
402  }
403  $db->query("UPDATE browser SET crff=1 WHERE uid= ?;", array($cuid));
404  return true;
405  } else {
406  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
407  return false;
408  }
409  }
global $db
Definition: bootstrap.php:26
$cuid
Definition: bootstrap.php:43

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

◆ CreateFile()

m_bro::CreateFile (   $dir,
  $file 
)

Crée un fichier vide dans un dossier.

Parameters
globalm_mysql $db
globalm_messages $msg
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 422 of file m_bro.php.

422  {
423  global $db, $msg, $cuid;
424  $file = ssla($file);
425  $absolute = $this->convertabsolute($dir . "/" . $file, false);
426  if (!$absolute || file_exists($absolute)) {
427  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
428  return false;
429  }
430  if (!file_exists($absolute)) {
431  if (!@touch($absolute)) {
432  $msg->raise("ERROR", "bro", _("Cannot create the requested file. Please check the permissions"));
433  return false;
434  }
435  }
436  $db->query("UPDATE browser SET crff=0 WHERE uid= ?;", array($cuid));
437  return true;
438  }

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

◆ DeleteFile()

m_bro::DeleteFile (   $file_list,
  $R 
)

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

Parameters
globalm_messages $msg
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.

450  {
451  global $msg;
452  $root = realpath(getuserpath());
453  $absolute = $this->convertabsolute($R, false);
454  if (!$absolute && strpos($root, $absolute) === 0 && strlen($absolute) > (strlen($root) + 1)) {
455  $msg->raise("ERROR", "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  }

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

◆ dirsize()

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

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

References $totalsize, and elseif.

Referenced by fsize().

◆ download_link()

m_bro::download_link (   $dir,
  $file 
)
Parameters
globalm_messages $msg
string$dir
string$file

Definition at line 970 of file m_bro.php.

970  {
971  global $msg;
972  $msg->log("bro", "download_link");
973  header("Content-Disposition: attachment; filename=$file");
974  header("Content-Type: application/force-download");
975  header("Content-Transfer-Encoding: binary");
976  $this->content_send($dir, $file);
977  }
content_send($R, $file)
Echoes the content of the file $file located in directory $R.
Definition: m_bro.php:988

References $msg, and content_send().

◆ DownloadTBZ()

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

1077  {
1078  global $mem;
1079  header("Content-Disposition: attachment; filename=" . $mem->user["login"] . ".tar.bz2");
1080  header("Content-Type: application/x-bzip2");
1081  header("Content-Transfer-Encoding: binary");
1082  $d = escapeshellarg("." . $this->convertabsolute($dir, true));
1083  set_time_limit(0);
1084  passthru("/bin/tar -cj -C " . getuserpath() . "/ $d");
1085  }

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

◆ DownloadTGZ()

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

1059  {
1060  global $mem;
1061  header("Content-Disposition: attachment; filename=" . $mem->user["login"] . ".tgz");
1062  header("Content-Type: application/x-tgz");
1063  header("Content-Transfer-Encoding: binary");
1064  $d = escapeshellarg("." . $this->convertabsolute($dir, true));
1065  set_time_limit(0);
1066  passthru("/bin/tar -cz -C " . getuserpath() . "/ $d");
1067  }

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

◆ DownloadZ()

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

1041  {
1042  global $mem;
1043  header("Content-Disposition: attachment; filename=" . $mem->user["login"] . ".Z");
1044  header("Content-Type: application/x-Z");
1045  header("Content-Transfer-Encoding: binary");
1046  $d = escapeshellarg("." . $this->convertabsolute($dir, true));
1047  set_time_limit(0);
1048  passthru("/bin/tar -cZ -C " . getuserpath() . "/" . $mem->user["login"] . "/ $d");
1049  }

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

◆ DownloadZIP()

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

1095  {
1096  global $mem;
1097  header("Content-Disposition: attachment; filename=" . $mem->user["login"] . ".zip");
1098  header("Content-Type: application/x-zip");
1099  header("Content-Transfer-Encoding: binary");
1100  $d = $this->convertabsolute($dir, false);
1101  set_time_limit(0);
1102  chdir(dirname($d));
1103  passthru("/usr/bin/zip -r - ".escapeshellarg(basename($d)));
1104  }

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

◆ ExtractFile()

m_bro::ExtractFile (   $file,
  $dest = null 
)

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

Parameters
globalm_messages $msg
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 657 of file m_bro.php.

657  {
658  global $msg, $action;
659  $file = $this->convertabsolute($file, false);
660  if (is_null($dest)) {
661  $dest = dirname($file);
662  } else {
663  $dest = $this->convertabsolute($dest, false);
664  }
665  if (!$file || !$dest || !is_readable($file)) {
666  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
667  return 1;
668  }
669  $lfile = strtolower($file);
670  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" ) {
671  // TODO new version of tar supports `tar xf ...` so there is no
672  // need to specify the compression format
673  echo "<p>" . _("Uncompressing through TAR") . "</p><pre style=\"overflow: scroll; height: 200px\">";
674  $ret = 0;
675  passthru("tar -xvf " . escapeshellarg($file) . " --numeric-owner -C " . escapeshellarg($dest) . " 2>&1", $ret);
676  }
677  elseif (substr($lfile, -4) == ".zip") {
678  echo "<p>" . _("Uncompressing through UNZIP") . "</p><pre style=\"overflow: scroll; height: 200px\">";
679  $cmd = "unzip -o " . escapeshellarg($file) . " -d " . escapeshellarg($dest) . " 2>&1";
680  passthru($cmd, $ret);
681  }
682  elseif (substr($lfile, -3) == ".gz" || substr($lfile, -2) == ".Z") {
683  echo "<p>" . _("Uncompressing through GUNZIP") . "</p><pre style=\"overflow: scroll; height: 200px\">";
684  $cmd = "gunzip " . escapeshellarg($file) . " 2>&1";
685  passthru($cmd, $ret);
686  }
687  elseif (substr($lfile, -3) == ".bz" || substr($lfile, -4) == ".bz2") {
688  echo "<p>" . _("Uncompressing through bunzip2") . "</p><pre style=\"overflow: scroll; height: 200px\">";
689  $cmd = "bunzip2 " . escapeshellarg($file) . " 2>&1";
690  passthru($cmd, $ret);
691  }
692  echo "</pre>";
693 
694  // fix the perms of the extracted archive TODO: does it work??? | note: it was using a wrong variable name !
695  $action->fix_dir($dest);
696 
697  if ($ret) {
698  $msg->raise("ERROR", "bro", _("I cannot find a way to extract the file %s, it is an unsupported compressed format"), $file);
699  return false;
700  }
701  return true;
702  }

References $msg, convertabsolute(), and elseif.

◆ filelist()

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_messages $msg
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 189 of file m_bro.php.

189  {
190  global $db, $cuid, $msg;
191  $db->query("UPDATE browser SET lastdir= ? WHERE uid= ?;", array($dir, $cuid));
192  $absolute = $this->convertabsolute($dir, false);
193  if (!$absolute || !file_exists($absolute)) {
194  $msg->raise("ERROR", 'bro', _("This directory does not exist."));
195  return false;
196  }
197  if (!is_readable($absolute)) {
198  $msg->raise("ERROR", 'bro', _("This directory is not readable."));
199  return false;
200  }
201  clearstatcache(true);
202  $c = array();
203  if ($dir = @opendir($absolute)) {
204  while (($file = readdir($dir)) !== false) {
205  if ($file != "." && $file != "..") {
206  $stat=stat($absolute . "/" . $file);
207  $c[] = array("name" => $file, "size" => $this->fsize($absolute . "/" . $file, $showdirsize),
208  "date" => filemtime($absolute . "/" . $file), "type" => (!is_dir($absolute . "/" . $file)),
209  "permissions" => $stat[2] );
210  }
211  }
212  closedir($dir);
213  }
214  usort($c, array("m_bro", "_sort_filelist_name"));
215  return $c;
216  }
$c
Definition: bootstrap.php:47
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:344

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

◆ fsize()

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

344  {
345  if (is_dir($file)) {
346  if ($showdirsize) {
347  return $this->dirsize($file);
348  } else {
349  return "-";
350  }
351  } else {
352  return filesize($file);
353  }
354  }

References dirsize().

Referenced by filelist().

◆ get_user_root()

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

143  {
144  return getuserpath();
145  }

References getuserpath().

Referenced by convertabsolute(), and get_userid_root().

◆ get_userid_root()

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

160  {
161  global $admin;
162 
163  $old_enabled = $admin->enabled;
164  $admin->enabled = true;
165  $member = $admin->get($uid);
166  $admin->enabled = $old_enabled;
167 
168  return $this->get_user_root($member['login']);
169  }
$uid

References $uid, and get_user_root().

◆ getMaxAllowedUploadSize()

m_bro::getMaxAllowedUploadSize ( )

Definition at line 1213 of file m_bro.php.

1213  {
1214  return min(ini_get('post_max_size'), ini_get('upload_max_filesize'));
1215  }

◆ GetPrefs()

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

229  {
230  global $db, $cuid;
231  $db->query("SELECT * FROM browser WHERE uid= ?;", array($cuid));
232  if ($db->num_rows() == 0) {
233  $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));
234  $db->query("SELECT * FROM browser WHERE uid= ?;", array($cuid));
235  }
236  $db->next_record();
237  return $db->Record;
238  }

References $cuid, and $db.

Referenced by alternc_export_conf().

◆ hook_menu()

m_bro::hook_menu ( )

Hook called by the menu class to add menus to the left panel.

Returns
array

Definition at line 72 of file m_bro.php.

72  {
73  $obj = array(
74  'title' => _("File browser"),
75  'ico' => 'images/folder.png',
76  'link' => 'bro_main.php',
77  'pos' => 40,
78  );
79 
80  return $obj;
81  }

◆ icon()

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

285  {
286  global $bro_icon;
287  if (!strpos($file, ".") && substr($file, 0, 1) != ".") {
288  return "file.png";
289  }
290  $t = explode(".", $file);
291  if (!is_array($t)) {
292  $ext = $t;
293  } else {
294  $ext = $t[count($t) - 1];
295  }
296  // Now seek the extension
297  if (!isset($bro_icon[$ext]) || !$bro_icon[$ext]) {
298  return "file.png";
299  } else {
300  return $bro_icon[$ext] . ".png";
301  }
302  }
foreach($domaines_user as $domaine) $t

References $t.

◆ is_extractable()

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

920  {
921  if (($parts = explode(".", $name))) {
922  $ext = array_pop($parts);
923  switch ($ext) {
924  case "gz":
925  case "bz":
926  case "bz2":
927  $ext = array_pop($parts) . $ext;
928  /* FALLTHROUGH */
929  case "tar.gz":
930  case "tar.bz":
931  case "tar.bz2":
932  case "tgz":
933  case "tbz":
934  case "tbz2":
935  case "tar":
936  case "Z":
937  case "zip":
938  return true;
939  }
940  }
941  return false;
942  }

◆ is_sqlfile()

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

952  {
953  if (($parts = explode(".", $name))) {
954  $ext = array_pop($parts);
955  $ext2 = array_pop($parts) . '.' . $ext;
956  if ($ext == 'sql' or $ext2 == 'sql.gz') {
957  return true;
958  }
959  }
960  return false;
961  }

◆ m_bro()

m_bro::m_bro ( )

Constructor.

Definition at line 60 of file m_bro.php.

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

◆ mime()

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

314  {
315  global $bro_type;
316  if (!strpos($file, ".") && substr($file, 0, 1) != ".") {
317  return "File";
318  }
319  $t = explode(".", $file);
320  if (!is_array($t)) {
321  $ext = $t;
322  } else {
323  $ext = $t[count($t) - 1];
324  }
325  // Now seek the extension
326  if (empty($bro_type[$ext])) {
327  return "File";
328  } else {
329  return $bro_type[$ext];
330  }
331  }

References $t.

◆ MoveFile()

m_bro::MoveFile (   $d,
  $old,
  $new 
)

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

Parameters
globalm_messages $msg
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 511 of file m_bro.php.

511  {
512  global $msg;
513  $old = $this->convertabsolute($old, false);
514  if (!$old) {
515  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
516  return false;
517  }
518 
519  if ($new[0] != '/') {
520  $new = $old . '/' . $new;
521  }
522  $new = $this->convertabsolute($new, false);
523 
524  if (!$new) {
525  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
526  return false;
527  }
528  if ($old == $new) {
529  $msg->raise("ERROR", "bro", _("You cannot move or copy a file to the same folder"));
530  return false;
531  }
532  for ($i = 0; $i < count($d); $i++) {
533  $d[$i] = ssla($d[$i]); // strip slashes if needed
534  if (!strpos($d[$i], "/") && file_exists($old . "/" . $d[$i]) && !file_exists($new . "/" . $d[$i])) {
535  if (!rename($old . "/" . $d[$i], $new . "/" . $d[$i])) {
536  $msg->raise("ERROR", "bro", "error renaming $old/$d[$i] -> $new/$d[$i]");
537  }
538  }
539  }
540  return true;
541  }

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

◆ PathList()

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

774  {
775  $path = $this->convertabsolute($path, true);
776  $a = explode("/", $path);
777  if (!is_array($a)) {
778  $a = array($a);
779  }
780  $c = '';
781  $R = '';
782  if ($justparent) {
783  return "<a href=\"$action?R=" . urlencode($a[count($a) - 2] . '/') . "\">&uarr;</a>";
784  }
785  for ($i = 0; $i < count($a); $i++) {
786  if ($a[$i]) {
787  $R.=$a[$i] . "/";
788  $c.="<a href=\"$action?R=" . urlencode($R) . "\">" . $a[$i] . "</a>&nbsp;/&nbsp;";
789  }
790  }
791  return $c;
792  }

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

◆ RenameFile()

m_bro::RenameFile (   $R,
  $old,
  $new 
)

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

Parameters
globalm_messages $msg
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 477 of file m_bro.php.

477  {
478  global $msg;
479  $absolute = $this->convertabsolute($R, false);
480  if (!$absolute) {
481  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
482  return false;
483  }
484  $alea = "." . time() . mt_rand(1000, 9999);
485  for ($i = 0; $i < count($old); $i++) {
486  $old[$i] = ssla($old[$i]); // strip slashes if needed
487  $new[$i] = ssla($new[$i]);
488  if (!strpos($old[$i], "/") && !strpos($new[$i], "/")) { // caractre / interdit dans old ET dans new...
489  @rename($absolute . "/" . $old[$i], $absolute . "/" . $old[$i] . $alea);
490  }
491  }
492  for ($i = 0; $i < count($old); $i++) {
493  if (!strpos($old[$i], "/") && !strpos($new[$i], "/")) { // caractre / interdit dans old ET dans new...
494  @rename($absolute . "/" . $old[$i] . $alea, $absolute . "/" . $new[$i]);
495  }
496  }
497 
498  return true;
499  }

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

◆ save()

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_messages $msg
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 1015 of file m_bro.php.

1015  {
1016  global $msg;
1017  $absolute = $this->convertabsolute($R, false);
1018  if (!strpos($file, "/")) {
1019  $absolute.="/" . $file;
1020  if (file_exists($absolute)) {
1021  if (!file_put_contents($absolute, $texte)) {
1022  $msg->raise("ERROR", "bro", _("Cannot edit the requested file. Please check the permissions"));
1023  return false;
1024  }
1025  }
1026  } else {
1027  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
1028  return false;
1029  }
1030  return true;
1031  }
$texte
Definition: bro_editor.php:43

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

◆ SetPrefs()

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

258  {
259  global $db, $cuid;
260  $editsizex = intval($editsizex);
261  $editsizey = intval($editsizey);
262  $listmode = intval($listmode);
263  $showicons = intval($showicons);
264  $showtype = intval($showtype);
265  $downfmt = intval($downfmt);
266  $createfile = intval($createfile);
267  $golastdir = intval($golastdir);
268  $db->query("SELECT * FROM browser WHERE uid= ?;", array(intval($cuid)));
269  if ($db->num_rows() == 0) {
270  $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)));
271  }
272  $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)));
273  return true;
274  }

References $cuid, and $db.

◆ UploadFile()

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_messages $msg
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 601 of file m_bro.php.

601  {
602  global $_FILES, $msg, $cuid, $action;
603  $absolute = $this->convertabsolute($R, false);
604  if (!$absolute) {
605  $msg->raise("ERROR", "bro", _("File or folder name is incorrect"));
606  return false;
607  }
608  if (!strpos($_FILES['userfile']['name'], "/")) {
609  if ($_FILES['userfile']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['userfile']['tmp_name'])) {
610  if (!file_exists($absolute . "/" . $_FILES['userfile']['name'])) {
611  @touch($absolute . "/" . $_FILES['userfile']['name']);
612  }
613  if (@move_uploaded_file($_FILES['userfile']['tmp_name'], $absolute . "/" . $_FILES['userfile']['name'])) {
614  $action->fix_file($absolute . "/" . $_FILES['userfile']['name']);
615  return $absolute . "/" . $_FILES['userfile']['name'];
616  } else {
617  $msg->raise("ERROR", "bro", _("Cannot create the requested file. Please check the permissions"));
618  return false;
619  }
620  } else {
621  // there was an error, raise it
622  $msg->log("bro", "uploadfile", "Problem when uploading a file");
623  switch ($_FILES['userfile']['error']) {
624  case UPLOAD_ERR_INI_SIZE:
625  $erstr = _("The uploaded file exceeds the max file size allowed");
626  break;
627  case UPLOAD_ERR_FORM_SIZE:
628  case UPLOAD_ERR_PARTIAL:
629  case UPLOAD_ERR_NO_FILE:
630  case UPLOAD_ERR_NO_TMP_DIR:
631  case UPLOAD_ERR_CANT_WRITE:
632  case UPLOAD_ERR_EXTENSION:
633  default:
634  $erstr = _("Undefined error ") . $_FILES['userfile']['error'];
635  break;
636  }
637  $msg->raise("ERROR", "bro", _("Error during the upload of the file: ") . $erstr);
638  return false;
639  }
640  }
641  return $absolute . "/" . $_FILES['userfile']['name'];
642  }

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

◆ viewurl()

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

841  {
842  global $db, $cuid;
843  // Is it in cache ?
844  if (substr($dir, 0, 1) == "/") {
845  $dir = substr($dir, 1);
846  }
847  if (substr($dir, -1) == "/") {
848  $dir = substr($dir, 0, -1);
849  }
850  $dir = str_replace("%2F", "/", urlencode($dir));
851  $name = urlencode($name);
852  if (!@$this->cacheurl["d" . $dir]) {
853  // On parcours $dir en remontant les /
854  $end = "";
855  $beg = $dir;
856  $tofind = true;
857  while ($tofind) {
858  $db->query("SELECT sub,domaine FROM sub_domaines WHERE compte= ? AND type=0 AND (valeur= ? or valeur= ?);", array($cuid, "/".$beg."/", "/".$beg));
859  $db->next_record();
860  if ($db->num_rows()) {
861  $tofind = false;
862  $this->cacheurl["d" . $dir] = "http://" . $db->f("sub") . ife($db->f("sub"), ".") . $db->f("domaine") . $end;
863  }
864  if (!$beg && $tofind) {
865  $tofind = false;
866  $this->cacheurl["d" . $dir] = "-";
867  // We did not find it ;(
868  }
869  if (($tt = strrpos($beg, "/")) !== false) {
870  $end = substr($beg, $tt) . $end; //=/topdir$end so $end starts AND ends with /
871  $beg = substr($beg, 0, $tt);
872  } else {
873  $end = "/" . $beg . $end;
874  $beg = "/";
875  }
876  }
877  }
878  if ($this->cacheurl["d" . $dir] && $this->cacheurl["d" . $dir] != "-") {
879  return $this->cacheurl["d" . $dir] . "/" . $name;
880  } else {
881  return false;
882  }
883  }
ife($test, $tr, $fa="")
Definition: functions.php:416

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

Member Data Documentation

◆ $cacheurl

m_bro::$cacheurl = array()

Definition at line 48 of file m_bro.php.

◆ $l_createfile

m_bro::$l_createfile

What do we do after creating a file?

Definition at line 42 of file m_bro.php.

◆ $l_editor_font

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

◆ $l_editor_size

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

◆ $l_icons

m_bro::$l_icons

Shall we show icons or just names?

Definition at line 39 of file m_bro.php.

◆ $l_mode

m_bro::$l_mode

How we draw the file in column.

Definition at line 33 of file m_bro.php.

◆ $l_tgz

m_bro::$l_tgz

download mode of a compressed folder

Definition at line 36 of file m_bro.php.

◆ $mime_desc

m_bro::$mime_desc = array()

internal cache

Definition at line 45 of file m_bro.php.

◆ $mime_icon

m_bro::$mime_icon = array()

Definition at line 46 of file m_bro.php.

◆ $mime_type

m_bro::$mime_type = array()

Definition at line 47 of file m_bro.php.


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