51 var
$l_editor_font = array(
"Arial, Helvetica, Sans-serif",
"Times, Bookman, Serif",
"Courier New, Courier, Fixed");
54 var
$l_editor_size = array(
"18px",
"14px",
"12px",
"10px",
"8px",
"0.8em",
"0.9em",
"1em",
"1.1em",
"1.2em");
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"));
74 'title' => _(
"File browser"),
75 'ico' =>
'images/folder.png',
76 'link' =>
'bro_main.php',
99 $root_alternc =
$root;
103 $file = basename($dir);
104 $dir = dirname($dir);
105 $dir = realpath(
$root .
"/" . $dir);
107 if (substr($dir, 0, strlen(
$root)) !=
$root) {
112 $dir = $dir .
'/' . $file;
114 # Si on tente de mettre un '..' alors erreur
115 if (preg_match(
"/\/\.\.\//", $dir) || preg_match(
"/\/\.\.$/", $dir)) {
120 $dir = substr($dir, strlen(
$root));
125 $dir = $root_alternc . substr($dir, strlen(
$root));
127 if (substr($dir, -1) ==
"/") {
128 return substr($dir, 0, strlen($dir) - 1);
163 $old_enabled = $admin->enabled;
164 $admin->enabled =
true;
165 $member = $admin->get(
$uid);
166 $admin->enabled = $old_enabled;
189 function filelist($dir =
"", $showdirsize =
false) {
191 $db->query(
"UPDATE browser SET lastdir= ? WHERE uid= ?;", array($dir,
$cuid));
193 if (!$absolute || !file_exists($absolute)) {
194 $msg->raise(
"ERROR",
'bro', _(
"This directory does not exist."));
197 if (!is_readable($absolute)) {
198 $msg->raise(
"ERROR",
'bro', _(
"This directory is not readable."));
201 clearstatcache(
true);
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] );
214 usort(
$c, array(
"m_bro",
"_sort_filelist_name"));
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));
258 function SetPrefs($editsizex, $editsizey, $listmode, $showicons, $downfmt, $createfile, $showtype, $editor_font, $editor_size, $golastdir) {
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)));
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)));
287 if (!strpos($file,
".") && substr($file, 0, 1) !=
".") {
290 $t = explode(
".", $file);
294 $ext =
$t[count(
$t) - 1];
297 if (!isset($bro_icon[$ext]) || !$bro_icon[$ext]) {
300 return $bro_icon[$ext] .
".png";
316 if (!strpos($file,
".") && substr($file, 0, 1) !=
".") {
319 $t = explode(
".", $file);
323 $ext =
$t[count(
$t) - 1];
326 if (empty($bro_type[$ext])) {
329 return $bro_type[$ext];
344 function fsize($file, $showdirsize =
false) {
352 return filesize($file);
366 if (($handle = opendir($dir))) {
367 while (
false !== ($file = readdir($handle))) {
368 $nextpath = $dir .
'/' . $file;
370 if ($file !=
'.' && $file !=
'..' && !is_link($nextpath)) {
371 if (is_dir($nextpath)) {
373 }
elseif (is_file($nextpath)) {
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"));
403 $db->query(
"UPDATE browser SET crff=1 WHERE uid= ?;", array(
$cuid));
406 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
426 if (!$absolute || file_exists($absolute)) {
427 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
430 if (!file_exists($absolute)) {
431 if (!@touch($absolute)) {
432 $msg->raise(
"ERROR",
"bro", _(
"Cannot create the requested file. Please check the permissions"));
436 $db->query(
"UPDATE browser SET crff=0 WHERE uid= ?;", array(
$cuid));
454 if (!$absolute && strpos(
$root, $absolute) === 0 && strlen($absolute) > (strlen(
$root) + 1)) {
455 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
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])) {
461 $this->
_delete($absolute .
"/" . $file_list[
$i]);
481 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
484 $alea =
"." . time() . mt_rand(1000, 9999);
485 for (
$i = 0;
$i < count($old);
$i++) {
488 if (!strpos($old[
$i],
"/") && !strpos($new[
$i],
"/")) {
489 @rename($absolute .
"/" . $old[
$i], $absolute .
"/" . $old[
$i] . $alea);
492 for (
$i = 0;
$i < count($old);
$i++) {
493 if (!strpos($old[
$i],
"/") && !strpos($new[
$i],
"/")) {
494 @rename($absolute .
"/" . $old[
$i] . $alea, $absolute .
"/" . $new[
$i]);
515 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
519 if ($new[0] !=
'/') {
520 $new = $old .
'/' . $new;
525 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
529 $msg->raise(
"ERROR",
"bro", _(
"You cannot move or copy a file to the same folder"));
532 for (
$i = 0;
$i < count(
$d);
$i++) {
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]");
554 global
$msg, $action;
557 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
560 for (
$i = 0;
$i < count(
$d);
$i++) {
565 if (!isset($perm[
$i])) {
566 $perm[
$i][
'w'] = False;
568 if (!strpos(
$d[
$i],
"/")) {
569 $m = fileperms($absolute .
"/" .
$d[
$i]);
573 if ($perm[
$i][
'w']) {
578 $action->chmod($absolute .
"/" .
$d[
$i], $m);
605 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
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']);
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'];
617 $msg->raise(
"ERROR",
"bro", _(
"Cannot create the requested file. Please check the permissions"));
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");
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:
634 $erstr = _(
"Undefined error ") . $_FILES[
'userfile'][
'error'];
637 $msg->raise(
"ERROR",
"bro", _(
"Error during the upload of the file: ") . $erstr);
641 return $absolute .
"/" . $_FILES[
'userfile'][
'name'];
658 global
$msg, $action;
660 if (is_null($dest)) {
661 $dest = dirname($file);
665 if (!$file || !$dest || !is_readable($file)) {
666 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
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" ) {
673 echo
"<p>" . _(
"Uncompressing through TAR") .
"</p><pre style=\"overflow: scroll; height: 200px\">";
675 passthru(
"tar -xvf " . escapeshellarg($file) .
" --numeric-owner -C " . escapeshellarg($dest) .
" 2>&1", $ret);
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);
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);
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);
695 $action->fix_dir($dest);
698 $msg->raise(
"ERROR",
"bro", _(
"I cannot find a way to extract the file %s, it is an unsupported compressed format"), $file);
718 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
723 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
727 $msg->raise(
"ERROR",
"bro", _(
"You cannot move or copy a file to the same folder"));
730 for (
$i = 0;
$i < count(
$d);
$i++) {
732 if (!strpos(
$d[
$i],
"/") && file_exists($old .
"/" .
$d[
$i]) && !file_exists($new .
"/" .
$d[
$i])) {
754 exec(
"cp -Rpf " . escapeshellarg($src) .
" " . escapeshellarg($dest), $void, $ret);
756 $msg->raise(
"ERROR",
"bro",
"Errors happened while copying the source to destination. cp return value: %d", $ret);
774 function PathList($path, $action, $justparent =
false) {
776 $a = explode(
"/", $path);
783 return "<a href=\"$action?R=" . urlencode($a[count($a) - 2] .
'/') .
"\">↑</a>";
785 for (
$i = 0;
$i < count($a);
$i++) {
788 $c.=
"<a href=\"$action?R=" . urlencode(
$R) .
"\">" . $a[
$i] .
"</a> / ";
810 if (!strpos($file,
"/")) {
811 $absolute.=
"/" . $file;
812 if (file_exists($absolute)) {
813 $std = str_replace(
"<",
"<", str_replace(
"&",
"&", file_get_contents($absolute)));
816 $msg->raise(
"ERROR",
"bro", _(
"Cannot read the requested file. Please check the permissions"));
820 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
844 if (substr($dir, 0, 1) ==
"/") {
845 $dir = substr($dir, 1);
847 if (substr($dir, -1) ==
"/") {
848 $dir = substr($dir, 0, -1);
850 $dir = str_replace(
"%2F",
"/", urlencode($dir));
851 $name = urlencode($name);
852 if (!@$this->cacheurl[
"d" . $dir]) {
858 $db->query(
"SELECT sub,domaine FROM sub_domaines WHERE compte= ? AND type=0 AND (valeur= ? or valeur= ?);", array(
$cuid,
"/".$beg.
"/",
"/".$beg));
860 if (
$db->num_rows()) {
862 $this->cacheurl[
"d" . $dir] =
"http://" .
$db->f(
"sub") .
ife(
$db->f(
"sub"),
".") .
$db->f(
"domaine") . $end;
864 if (!$beg && $tofind) {
866 $this->cacheurl[
"d" . $dir] =
"-";
869 if (($tt = strrpos($beg,
"/")) !==
false) {
870 $end = substr($beg, $tt) . $end;
871 $beg = substr($beg, 0, $tt);
873 $end =
"/" . $beg . $end;
878 if ($this->cacheurl[
"d" . $dir] && $this->cacheurl[
"d" . $dir] !=
"-") {
879 return $this->cacheurl[
"d" . $dir] .
"/" . $name;
896 $absolute =
"$dir/$name";
899 $msg->raise(
"ERROR",
'bro', _(
"File not in authorized directory"));
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") {
921 if (($parts = explode(
".", $name))) {
922 $ext = array_pop($parts);
927 $ext = array_pop($parts) . $ext;
953 if (($parts = explode(
".", $name))) {
954 $ext = array_pop($parts);
955 $ext2 = array_pop($parts) .
'.' . $ext;
956 if ($ext ==
'sql' or $ext2 ==
'sql.gz') {
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");
991 if (!strpos($file,
"/")) {
992 $absolute.=
"/" . $file;
993 if (file_exists($absolute)) {
997 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
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"));
1027 $msg->raise(
"ERROR",
"bro", _(
"File or folder name is incorrect"));
1043 header(
"Content-Disposition: attachment; filename=" .
$mem->user[
"login"] .
".Z");
1044 header(
"Content-Type: application/x-Z");
1045 header(
"Content-Transfer-Encoding: binary");
1048 passthru(
"/bin/tar -cZ -C " .
getuserpath() .
"/" .
$mem->user[
"login"] .
"/ $d");
1061 header(
"Content-Disposition: attachment; filename=" .
$mem->user[
"login"] .
".tgz");
1062 header(
"Content-Type: application/x-tgz");
1063 header(
"Content-Transfer-Encoding: binary");
1066 passthru(
"/bin/tar -cz -C " .
getuserpath() .
"/ $d");
1079 header(
"Content-Disposition: attachment; filename=" .
$mem->user[
"login"] .
".tar.bz2");
1080 header(
"Content-Type: application/x-bzip2");
1081 header(
"Content-Transfer-Encoding: binary");
1084 passthru(
"/bin/tar -cj -C " .
getuserpath() .
"/ $d");
1097 header(
"Content-Disposition: attachment; filename=" .
$mem->user[
"login"] .
".zip");
1098 header(
"Content-Type: application/x-zip");
1099 header(
"Content-Transfer-Encoding: binary");
1103 passthru(
"/usr/bin/zip -r - ".escapeshellarg(basename(
$d)));
1116 if ($a[
"type"] && !$b[
"type"]) {
1119 if ($b[
"type"] && !$a[
"type"]) {
1122 return $a[
"name"] > $b[
"name"];
1137 $msg->log(
"bro",
"_delete($file)");
1139 $msg->log(
"bro",
"CANCELING _delete($file) TOO DEEP");
1141 if (is_dir($file)) {
1142 $handle = opendir($file);
1147 while (($filename = readdir($handle)) !==
false) {
1148 if ($filename !=
"." && $filename !=
"..") {
1149 $this->
_delete($file .
"/" . $filename,$depth+1);
1170 $msg->log(
"bro",
"export_conf");
1171 $str =
"<table border=\"1\"><caption> Browser </caption>\n";
1172 $str.=
" <browser>\n";
1176 foreach ($pref as $k => $v) {
1177 if ((
$i % 2) == 0) {
1178 $str.=
" <$k>$v</$k>\n";
1182 $str.=
" </browser>\n";
1198 $msg->log(
"bro",
"export_data");
1200 if (!is_dir($dir)) {
1202 $msg->raise(
"ERROR",
"bro", _(
"Cannot create the requested directory. Please check the permissions"));
1204 $timestamp = date(
"H:i:s");
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");
1209 $msg->log(
"bro",
"export_data_failed");
1214 return min(ini_get(
'post_max_size'), ini_get(
'upload_max_filesize'));
This class manage the file browser of AlternC allow the file and directory management in the user acc...
MoveFile($d, $old, $new)
Déplace les fichier de $d du dossier $old vers $new.
DownloadTBZ($dir="")
Echo d'un flux .tar.bz2 contenant tout le contenu du dossier $dir.
GetPrefs()
Retourne un tableau contenant les prfrences de l'utilisateur courant.
$l_icons
Shall we show icons or just names?
get_userid_root($uid)
Retourne le chemin complet vers la racine du repertoire de l'utilisateur.
CreateDir($dir, $file)
Crée le dossier $file dans le dossier (parent) $dir.
UploadFile($R)
Recoit un champ file upload (Global) et le stocke dans le dossier $R Le champ file-upload originel do...
$l_editor_font
Font choice in the editor.
SetPrefs($editsizex, $editsizey, $listmode, $showicons, $downfmt, $createfile, $showtype, $editor_font, $editor_size, $golastdir)
Modifie les prfrences de l'utilisateur courant.
hook_menu()
Hook called by the menu class to add menus to the left panel.
filelist($dir="", $showdirsize=false)
Retourne un tableau contenant la liste des fichiers du dossier courant.
PathList($path, $action, $justparent=false)
Affiche le chemin et les liens de la racine au dossier $path Affiche autant de liens HTML (anchor) qu...
RenameFile($R, $old, $new)
Renomme les fichier de $old du dossier $R en $new.
DownloadTGZ($dir="")
Echo d'un flux .tgz contenant tout le contenu du dossier $dir.
save($file, $R, $texte)
Sauve le fichier $file dans le dossier $R avec pour contenu $texte le contenu est issu d'un textarea,...
download_link($dir, $file)
getMaxAllowedUploadSize()
content_send($R, $file)
Echoes the content of the file $file located in directory $R.
DownloadZ($dir="")
Echo d'un flux .tar.Z contenant tout le contenu du dossier $dir.
_delete($file, $depth=0)
Efface $file et tous ses sous-dossiers s'il s'agit d'un dossier A UTILISER AVEC PRECAUTION !...
ChangePermissions($R, $d, $perm)
Change les droits d'acces aux fichier de $d du dossier $R en $p.
$l_mode
How we draw the file in column.
get_user_root($login)
Retourne le chemin complet vers la racine du repertoire de l'utilisateur.
is_sqlfile($name)
return true if file is a sql dump (end with .sql or .sql.gz)
DeleteFile($file_list, $R)
Efface les fichiers du tableau $file_list dans le dossier $R.
CopyOneFile($src, $dest)
Copy a source to a destination by either copying recursively a directory or by downloading a file wit...
$l_createfile
What do we do after creating a file?
viewurl($dir, $name)
Retourne une url de navigation pour le fichier $name du dossier $dir Les url sont mises en caches.
is_extractable($name)
Return a HTML snippet representing an extraction function only if the mimetype of $name is supported.
fsize($file, $showdirsize=false)
Retourne la taille du fichier $file si $file est un dossier, retourne la taille de ce dossier et de t...
CreateFile($dir, $file)
Crée un fichier vide dans un dossier.
alternc_export_conf()
Function d'exportation de configuration appelé par la classe m_export via un hooks Produit en sorti u...
DownloadZIP($dir="")
Echo d'un flux .ZIP contenant tout le contenu du dossier $dir.
CopyFile($d, $old, $new)
Copy many files from point A to point B.
convertabsolute($dir, $strip=true)
Verifie un dossier relatif au dossier de l'utilisateur courant.
mime($file)
Retourne le type mime associé au fichier donc le nom est $file Note: Les types mimes sont mis en cach...
dirsize($dir)
Returns the size of a directory, by adding all it's files sizes.
_sort_filelist_name($a, $b)
Fonction de tri perso utilis par filelist.
alternc_export_data($dir)
Function d'exportation des données appelé par la classe m_export via un hooks.
icon($file)
Retourne le nom du fichier icone associ au fichier donc le nom est $file Note: Les fichiers icones so...
$l_editor_size
font size in the editor
content($R, $file)
Affiche le contenu d'un fichier pour un champ VALUE de textarea.
ExtractFile($file, $dest=null)
Extract an archive by using GNU and non-GNU tools.
$l_tgz
download mode of a compressed folder
ssla($str)
Strip slashes if needed :
getuserpath($user=null)
get the home of the user
if(empty($site_name)) elseif($piwik->site_add( $site_name, $site_urls))
foreach($domaines_user as $domaine) $t