diff --git a/design/actions.png b/design/actions.png
index 1e43e39..5cecb22 100644
Binary files a/design/actions.png and b/design/actions.png differ
diff --git a/design/style.css b/design/style.css
index 2bb9582..2a24129 100644
--- a/design/style.css
+++ b/design/style.css
@@ -6,7 +6,7 @@ body {
margin:0;padding:0;
font-family: Georgia, Serif;font-size : 16px; color: #050;
}
-a:hover { color: #050;text-shadow:0 0 5px green;}
+a:hover { color: #050;text-shadow:0 0 3px green;}
a { color: black; text-decoration: none;}
@@ -29,34 +29,51 @@ header{
background-image: -moz-linear-gradient( top, #555, #333); background-image: -ms-linear-gradient( top, #555, #333);
background-image: -o-linear-gradient( top, #555, #333); background-image: -webkit-gradient(linear, center top, center bottom, from(#555), to(#333)); background-image: -webkit-linear-gradient( top, #555, #333); background-image: linear-gradient( top, #555, #333);
}
- header nav{display:inline-block; vertical-align: top;}
- header nav p{color:lightgreen;text-shadow: 0 1px 1px black;font-size:20px;}
-
+header nav{display:inline-block; vertical-align: top;}
+header nav .zip{width:16px;height:16px; display:inline-block;background:url(zip.png) no-repeat;}
+header nav p{color:lightgreen;text-shadow: 0 1px 1px black;font-size:20px;}
+header nav .tag_public{display:inline-block;padding:5px;color:green;text-shadow: 0 1px 1px black;}
+header nav .tag_public:hover{color:lightgreen;}
+header nav .tag_private{display:inline-block;padding:5px;color:red;text-shadow: 0 1px 1px black;}
+header nav .tag_private:hover{color:pink;}
aside{height:100%;padding-bottom : 70px;text-align:center;}
aside iframe{height:100%;border:none;}
aside ul{padding:0;}
-aside li{margin:5px;list-style:none;vertical-align:middle;border-radius:3px;}
+aside li{margin:5px;list-style:none;vertical-align:middle;border-radius:3px;overflow-x:hidden;}
+aside li .tag{font-size:10px;display:inline-block;padding:2px;border-radius:3px;}
+aside .public li .tag{background:rgba(100,255,100,0.4);color:green;}
+aside .public li .tag:hover{background:rgba(100,255,100,0.9);color:darkgreen;}
+aside .private li .tag{background:rgba(255,100,100,0.4);color:red;}
+aside .private li .tag:hover{background:rgba(255,100,100,0.9);color:darkred;text-shadow:0 0 3px red;}
+
+
aside .public li{background:rgba(100,255,100,0.2);}
aside .private li{background:rgba(255,100,100,0.2);}
aside .public {background:rgba(100,255,100,0.2);}
aside .private {background:rgba(255,100,100,0.2);}
aside li em {font-size:10px ; color:#484;}
+aside li.private em { color:#844;}
aside li img {vertical-align:bottom;margin:1px;width:16px;height:16px;}
-aside li a.suppr, aside li a.origine, aside li a.zip{opacity:0.5;width:16px;height:16px;display:inline-block;background:url(actions.png) no-repeat 0 -159px ;}
+aside li a.suppr,aside li a.rename,aside li a.origine, aside li a.zip, aside li a.tagme{opacity:0.5;width:16px;height:16px;display:inline-block;background:url(actions.png) no-repeat 0 -159px ;}
aside li a.origine{background-position: 0 -396px ;}
aside li a.zip{background-position: 0 2px ;}
-aside li a.suppr:hover,aside li a.origine:hover,aside li a.zip:hover{opacity:1;}
+aside li a.tagme{background-position: 0 -63px ;}
+aside li a.rename{background-position: 0 -30px ;}
+aside li a.tagme:hover,aside li a.rename:hover,aside li a.suppr:hover,aside li a.origine:hover,aside li a.zip:hover{opacity:1;}
aside li a.toprivate,aside li a.topublic{float:right;margin-right:5px;opacity:0.5;}
aside li a.toprivate:hover,aside li a.topublic:hover{opacity:1;}
aside .public,.private{min-width:300px;text-align:left;vertical-align:top; margin-top:25px;padding:10px; border-radius:5px; border:1px dashed;display:inline-block;}
aside .public{border-color:green;}
aside .private{border-color:red;}
-footer {text-align: right; color:#F80;text-shadow: 0 1px 1px black; position:fixed;bottom:0;left:0;right:0;height:auto;min-height:20px;padding : 5px ; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; border-top:1px solid #888;-moz-box-shadow: 0 0px 9px #000; -webkit-box-shadow: 0 0px 9px #000; box-shadow: 0 0px 9px #000; -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=9, Direction=135, Color='#000')"; filter: progid:DXImageTransform.Microsoft.Shadow(Strength=9, Direction=135, Color='#000'); filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #555, endColorstr = #333); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #555, endColorstr = #333)"; background-image: -moz-linear-gradient( top, #555, #333); background-image: -ms-linear-gradient( top, #555, #333); background-image: -o-linear-gradient( top, #555, #333); background-image: -webkit-gradient(linear, center top, center bottom, from(#555), to(#333)); background-image: -webkit-linear-gradient( top, #555, #333); background-image: linear-gradient( top, #555, #333); }
- footer p {margin:0;padding:0;color:lightgreen;text-shadow:0 1px 1px green;}
+footer {
+ font-size:10px;text-align: right; color:lightgreen;text-shadow: 0 1px 1px black; position:fixed; line-height:15px;
+ bottom:0;left:0;right:0;height:auto;min-height:15px;padding-right : 5px ; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;
+ border-top:1px solid #888;-moz-box-shadow: 0 0px 9px #000; -webkit-box-shadow: 0 0px 9px #000; box-shadow: 0 0px 9px #000;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=9, Direction=135, Color='#000')"; filter: progid:DXImageTransform.Microsoft.Shadow(Strength=9, Direction=135, Color='#000'); filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #555, endColorstr = #333); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #555, endColorstr = #333)"; background-image: -moz-linear-gradient( top, #555, #333); background-image: -ms-linear-gradient( top, #555, #333); background-image: -o-linear-gradient( top, #555, #333); background-image: -webkit-gradient(linear, center top, center bottom, from(#555), to(#333)); background-image: -webkit-linear-gradient( top, #555, #333); background-image: linear-gradient( top, #555, #333); }
footer a {color:lightgreen;text-shadow:0 1px 1px green;}
footer a:hover {color:white;}
diff --git a/design/zip.png b/design/zip.png
new file mode 100644
index 0000000..d45a46b
Binary files /dev/null and b/design/zip.png differ
diff --git a/index.php b/index.php
index c5be110..1df4c03 100644
--- a/index.php
+++ b/index.php
@@ -1,10 +1,112 @@
';var_dump($a);echo '';if ($stop){exit();}}
function BodyClasses($add=''){$regex='#(msie)[/ ]([0-9])+|(firefox)/([0-9])+|(chrome)/([0-9])+|(opera)/([0-9]+)|(safari)/([0-9]+)|(android)|(iphone)|(ipad)|(blackberry)|(Windows Phone)|(symbian)|(mobile)|(bada])#i';@preg_match($regex,$_SERVER['HTTP_USER_AGENT'],$resultat);return ' class="'.$add.' '.@preg_replace('#([a-zA-Z ]+)[ /]([0-9]+)#','$1 $1$2',$resultat[0]).' '.basename($_SERVER['PHP_SELF'],'.php').'" ';}
function title2filename($chaine){$a=array(' ',':','|','#','/','\\','$','*','?','&','<','>');return substr(stripAccents(str_replace($a,'_',$chaine)),0,30);}
function stripAccents($string){ $a=explode(' ','à á â ã ä ç è é ê ë ì í î ï ñ ò ó ô õ ö ù ú û ü ý ÿ À Á Â Ã Ä Ç È É Ê Ë Ì Í Î Ï Ñ Ò Ó Ô Õ Ö Ù Ú Û Ü Ý');$b=explode(' ','a a a a a c e e e e i i i i n o o o o o u u u u y y A A A A A C E E E E I I I I N O O O O O U U U U Y');return str_replace($a,$b,$string);}
+function returncurrenturl(){$domaine=dirname($_SERVER['SERVER_PROTOCOL']) . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ;$domaine=explode('?',$domaine);return $domaine[0];}
+function store($file,$datas){file_put_contents($file,serialize($datas));}
+function unstore($file){ return unserialize(file_get_contents($file));}
+function search($public='public',$tag=false){
+ global $GLOBAL;
+ //$GLOBAL['tag_array'];
+ if (!$tag){return scandir($GLOBAL[$public.'_data_folder'] );}
+ else{
+ foreach ($GLOBAL['tag_array'][$public] as $key=>$val){
+ if (stripos($val,$tag)!==false){$result[]=$key;}
+ }
+ if (!empty($result)){return $result;}else{return array();}
+ }
+}
+function array2feed($array=null){
+ // more infos on this function at https://github.com/broncowdd/feed2array
+ if (!$array){return false;}
+ if (empty($array['infos']['type'])){$array['infos']['type']='rss';}else{$array['infos']['type']=strtolower($array['infos']['type']);}
+ if (empty($array['infos']['description'])){$array['infos']['description']='';}
+ $r="\n";$t="\t";
+ $tpl=array('rss'=>array(),'atom'=>array());
+ $tpl['rss']['header']=''.$r.'
';print_r($files);die(); foreach ($files as $i => $file) { @@ -115,20 +224,20 @@ if (!$public){ $liste_css[] = $file; } else { - file_put_contents($GLOBALS['target_folder'].'/'.$file['nom_destination'], $data); + file_put_contents($GLOBAL['target_folder'].'/'.$file['nom_destination'], $data); } } } // remplace juste les liens relatifs vers des liens absolus - absolutes_links($GLOBALS['main_page_data']); + absolutes_links($GLOBAL['main_page_data']); // enregistre le fichier HTML principal - file_put_contents($GLOBALS['target_folder'].'/'.'index.html', $GLOBALS['main_page_data']); + file_put_contents($GLOBAL['target_folder'].'/'.'index.html', $GLOBAL['main_page_data']); // récupère le titre de la page // cherche le charset spécifié dans le code HTML. // récupère la balise méta tout entière, dans $meta - preg_match('##Usi', $GLOBALS['main_page_data'], $meta); + preg_match('##Usi', $GLOBAL['main_page_data'], $meta); // si la balise a été trouvée, on tente d’isoler l’encodage. if (!empty($meta[0])) { @@ -138,7 +247,7 @@ if (!$public){ $html_charset = (!empty($enc[1])) ? strtolower($enc[1]) : 'utf-8'; } else { $html_charset = 'utf-8'; } // récupère le titre, dans le tableau $titles, rempli par preg_match() - preg_match('#(.*) #Usi', $GLOBALS['main_page_data'], $titles); + preg_match('#(.*) #Usi', $GLOBAL['main_page_data'], $titles); if (!empty($titles[1])) { $html_title = trim($titles[1]); // ré-encode le titre en UTF-8 en fonction de son encodage. @@ -224,14 +333,14 @@ if (!$public){ if (!preg_match('#(css|php|txt|html)#', $file['url_fichier']) ) { if (FALSE !== ($f = get_external_file($url_fichier, 3)) ) { - file_put_contents($GLOBALS['target_folder'].'/'.$nouveau_nom, $f); + file_put_contents($GLOBAL['target_folder'].'/'.$nouveau_nom, $f); } } } } // don't forget to save data - file_put_contents($GLOBALS['target_folder'].'/'.$file['nom_destination'], $data); + file_put_contents($GLOBAL['target_folder'].'/'.$file['nom_destination'], $data); } $n++; $count = count($liste_css); @@ -239,12 +348,12 @@ if (!$public){ } // enregistre un fichier d’informations concernant la page (date, url, titre) $info = ''; - $info .= 'URL="'.$GLOBALS['url'].'"'."\n"; + $info .= 'URL="'.$GLOBAL['url'].'"'."\n"; $info .= 'TITLE="'.$title.'"'."\n"; $info .= 'DATE="'.time().'"'."\n"; - file_put_contents($GLOBALS['target_folder'].'/'.'index.ini', $info); - /*$GLOBALS['done']['d'] = 'ajout'; - $GLOBALS['done']['lien'] = $GLOBALS['target_folder'].'/'; */ + file_put_contents($GLOBAL['target_folder'].'/'.'index.ini', $info); + /*$GLOBAL['done']['d'] = 'ajout'; + $GLOBAL['done']['lien'] = $GLOBAL['target_folder'].'/'; */ } @@ -264,7 +373,7 @@ if (!$public){ } // then the folder itself. if (TRUE === rmdir($_GET['suppr'])) { - $GLOBALS['done']['d'] = 'remove'; + $GLOBAL['done']['d'] = 'remove'; } } @@ -275,70 +384,145 @@ if (!$public){ // to private if (isset($_GET['toprivate']) and $torem = $_GET['toprivate'] and $torem != '') { $torem = htmlspecialchars($_GET['toprivate']); - if (is_dir($GLOBALS['public_data_folder'].'/'.$_GET['toprivate'])){ - rename ($GLOBALS['public_data_folder'].'/'.$_GET['toprivate'],$GLOBALS['private_data_folder'].'/'.$_GET['toprivate']); + if (is_dir($GLOBAL['public_data_folder'].'/'.$_GET['toprivate'])){ + rename ($GLOBAL['public_data_folder'].'/'.$_GET['toprivate'],$GLOBAL['private_data_folder'].'/'.$_GET['toprivate']); header("location: index.php"); } } // to public if (isset($_GET['topublic']) and $torem = $_GET['topublic'] and $torem != '') { $torem = htmlspecialchars($_GET['topublic']); - if (is_dir($GLOBALS['private_data_folder'].'/'.$_GET['topublic'])){ - rename ($GLOBALS['private_data_folder'].'/'.$_GET['topublic'],$GLOBALS['public_data_folder'].'/'.$_GET['topublic']); + if (is_dir($GLOBAL['private_data_folder'].'/'.$_GET['topublic'])){ + rename ($GLOBAL['private_data_folder'].'/'.$_GET['topublic'],$GLOBAL['public_data_folder'].'/'.$_GET['topublic']); header("location: index.php"); } } // disconnect if (isset($_GET['discotime'])){log_user('disco','');} - if (isset($_GET['privateget'])&&is_dir($GLOBALS['private_data_folder'].'/'.$_GET['privateget'])){$target=$GLOBALS['private_data_folder'].'/'.$_GET['privateget'];} - + if (isset($_GET['privateget'])&&is_dir($GLOBAL['private_data_folder'].'/'.$_GET['privateget'])){$target=$GLOBAL['private_data_folder'].'/'.$_GET['privateget'];} if (isset($_GET['zipprivate'])) { - $ini_file = $GLOBALS['private_data_folder'].'/'.$_GET['zipprivate'].'/index.ini'; + $ini_file = $GLOBAL['private_data_folder'].'/'.$_GET['zipprivate'].'/index.ini'; if(is_file($ini_file)){$info=parse_ini_file($ini_file);}else{$info['TITLE']='';} - $origin_folder_path=$GLOBALS['private_data_folder'].'/'.$_GET['zipprivate']; + $origin_folder_path=$GLOBAL['private_data_folder'].'/'.$_GET['zipprivate']; $zip_foldername=title2filename($info['TITLE']).'-'.$_GET['zipprivate']; $zip_filename=$zip_foldername.'.zip'; - $zip_completepath=$GLOBALS['data_folder'].'/zipversions/'.$zip_filename; + $zip_completepath=$GLOBAL['data_folder'].'/zipversions/'.$zip_filename; if (is_file($zip_completepath)){header("location: $zip_completepath");exit();}// il existe déjà, on envoie if (is_dir($origin_folder_path)){// sinon on crée le zip si le dossier existe include 'zip.php'; rename ($origin_folder_path,$zip_foldername); // on le déplace pour éviter de voir la structure de dossiers apparaître dans le zip - zip($zip_filename,$zip_foldername,$GLOBALS['data_folder'].'/zipversions/'); + zip($zip_filename,$zip_foldername,$GLOBAL['data_folder'].'/zipversions/'); rename ($zip_foldername,$origin_folder_path); // on le remet à sa place - header('location: '.$GLOBALS['data_folder'].'/zipversions/'.$zip_filename); + header('location: '.$GLOBAL['data_folder'].'/zipversions/'.$zip_filename); } } -} - // public get + + if (isset($_GET['rename'])&&isset($_GET['to'])&&isset($_GET['file'])) { + if (is_file($_GET['file'].'/index.ini')){ + $ini=parse_ini_file($_GET['file'].'/index.ini'); + + $old=strip_tags(urldecode($_GET['rename'])); + $new=strip_tags(urldecode($_GET['to'])); + $newini='URL="'.$ini['URL'].'"'."\n".'TITLE="'.$new.'"'."\n".'DATE="'.$ini['DATE'].'"'; + //$ini=str_replace('TITLE="'.$old.'"','TITLE="'.$new.'"',$ini);aff($ini); + file_put_contents($_GET['file'].'/index.ini',$newini); + } + } + if (isset($_GET['settag'])&&isset($_GET['file'])) { + if (is_file($GLOBAL['data_folder'].'/tags.txt')){$GLOBAL['tag_array']=unstore($GLOBAL['data_folder'].'/tags.txt');}else{$GLOBAL['tag_array']=array();} + if (isset($_GET['ispublic'])){$type='public';}else{$type='private';} + $GLOBAL['tag_array'][$type][$_GET['file']]=strip_tags($_GET['settag']); + store($GLOBAL['data_folder'].'/tags.txt',$GLOBAL['tag_array']); + } +}else{ // public get //download public zip version if (isset($_GET['zippublic'])) { - $ini_file = $GLOBALS['public_data_folder'].'/'.$_GET['zippublic'].'/index.ini'; - if(is_file($ini_file)){$info=parse_ini_file($ini_file);}else{$info['TITLE']='';} - $origin_folder_path=$GLOBALS['public_data_folder'].'/'.$_GET['zippublic']; - $zip_foldername=title2filename($info['TITLE']).'-'.$_GET['zippublic']; - $zip_filename=$zip_foldername.'.zip'; - $zip_completepath=$GLOBALS['data_folder'].'/zipversions/'.$zip_filename; - if (is_file($zip_completepath)){header("location: $zip_completepath");exit();}// il existe déjà, on envoie - if (is_dir($origin_folder_path)){// sinon on crée le zip si le dossier existe - include 'zip.php'; - rename ($origin_folder_path,$zip_foldername); // on le déplace pour éviter de voir la structure de dossiers apparaître dans le zip - zip($zip_filename,$zip_foldername,$GLOBALS['data_folder'].'/zipversions/'); - rename ($zip_foldername,$origin_folder_path); // on le remet à sa place - header('location: '.$GLOBALS['data_folder'].'/zipversions/'.$zip_filename); - } + $ini_file = $GLOBAL['public_data_folder'].'/'.$_GET['zippublic'].'/index.ini'; + if(is_file($ini_file)){$info=parse_ini_file($ini_file);}else{$info['TITLE']='';} + $origin_folder_path=$GLOBAL['public_data_folder'].'/'.$_GET['zippublic']; + $zip_foldername=title2filename($info['TITLE']).'-'.$_GET['zippublic']; + $zip_filename=$zip_foldername.'.zip'; + $zip_completepath=$GLOBAL['data_folder'].'/zipversions/'.$zip_filename; + if (is_file($zip_completepath)){header("location: $zip_completepath");exit();}// il existe déjà, on envoie + if (is_dir($origin_folder_path)){// sinon on crée le zip si le dossier existe + include 'zip.php'; + rename ($origin_folder_path,$zip_foldername); // on le déplace pour éviter de voir la structure de dossiers apparaître dans le zip + zip($zip_filename,$zip_foldername,$GLOBAL['data_folder'].'/zipversions/'); + rename ($zip_foldername,$origin_folder_path); // on le remet à sa place + header('location: '.$GLOBAL['data_folder'].'/zipversions/'.$zip_filename); } - if (isset($_GET['publicget'])&&is_dir($GLOBALS['public_data_folder'].'/'.$_GET['publicget'])){$target=$GLOBALS['public_data_folder'].'/'.$_GET['publicget'];} + } + if (isset($_GET['publicget'])&&is_dir($GLOBAL['public_data_folder'].'/'.$_GET['publicget'])){$target=$GLOBAL['public_data_folder'].'/'.$_GET['publicget'];} + if (isset($_GET['rss'])){ + $items=array_reverse(search('public',$search_tags)); + $feed=array( + 'infos'=>array( + 'type'=>'rss', + 'description'=>$GLOBAL['rss_description'], + 'title'=>$GLOBAL['rss_title'], + 'link'=>$GLOBAL['respawn_url'], + ) + ); + foreach ($items as $key=>$item){ + if ($item!='index.html'){ + if (is_dir($GLOBAL['public_data_folder'].'/'.$item)){ + if (is_file($GLOBAL['public_data_folder'].'/'.$item.'/index.ini')){ + $infos=parse_ini_file($GLOBAL['public_data_folder'].'/'.$item.'/index.ini'); + date_default_timezone_set('Europe/Paris'); + $infos['DATE']= date("r", $infos['DATE']); + if ($infos['TITLE']==''){$infos['TITLE']='Version Respawn de '.$infos['URL'];} + $feed['items'][$key]=array( + 'description'=>'Version Respawn de '.$infos['URL'], + 'title'=>$infos['TITLE'], + 'link'=>$GLOBAL['respawn_url'].'?publicget='.$item, + 'guid'=>$infos['URL'], + 'pubDate'=>$infos['DATE'], + ); + } + } + } + + } + exit(array2feed($feed)); + } + if (isset($_GET['api'])){ + $content=array(); + $items=search('public',$search_tags); + foreach ($items as $key=>$item){ + if ($item!='index.html'){ + if (is_dir($GLOBAL['public_data_folder'].'/'.$item)){ + if (is_file($GLOBAL['public_data_folder'].'/'.$item.'/index.ini')){ + $infos=parse_ini_file($GLOBAL['public_data_folder'].'/'.$item.'/index.ini'); + date_default_timezone_set('Europe/Paris'); + $infos['DATE']= date('d/m/Y', $infos['DATE']); + if ($infos['TITLE']==''){$infos['TITLE']='Respawn de '.$infos['URL'];} + $content[$key]=array( + 'description'=>'Version Respawn de '.$infos['URL'], + 'title'=>$infos['TITLE'], + 'respawn_link'=>$GLOBAL['respawn_url'].'?publicget='.$item, + 'original_link'=>$infos['URL'], + 'date'=>$infos['DATE'], + 'tags'=>$GLOBAL['tag_array']['public'][$item], + ); + } + } + } + + } + exit(serialize($content)); + } +} function url_parts() { - $url_p['s'] = parse_url($GLOBALS['url'], PHP_URL_SCHEME); $url_p['s'] = (is_null($url_p['s'])) ? '' : $url_p['s']; - $url_p['h'] = parse_url($GLOBALS['url'], PHP_URL_HOST); $url_p['h'] = (is_null($url_p['h'])) ? '' : $url_p['h']; - $url_p['p'] = parse_url($GLOBALS['url'], PHP_URL_PORT); $url_p['p'] = (is_null($url_p['p'])) ? '' : ':'.$url_p['p']; - $url_p['pat'] = parse_url($GLOBALS['url'], PHP_URL_PATH); $url_p['pat'] = (is_null($url_p['pat'])) ? '' : $url_p['pat']; + $url_p['s'] = parse_url($GLOBAL['url'], PHP_URL_SCHEME); $url_p['s'] = (is_null($url_p['s'])) ? '' : $url_p['s']; + $url_p['h'] = parse_url($GLOBAL['url'], PHP_URL_HOST); $url_p['h'] = (is_null($url_p['h'])) ? '' : $url_p['h']; + $url_p['p'] = parse_url($GLOBAL['url'], PHP_URL_PORT); $url_p['p'] = (is_null($url_p['p'])) ? '' : ':'.$url_p['p']; + $url_p['pat'] = parse_url($GLOBAL['url'], PHP_URL_PATH); $url_p['pat'] = (is_null($url_p['pat'])) ? '' : $url_p['pat']; $url_p['file'] = pathinfo($url_p['pat'], PATHINFO_BASENAME); return $url_p; } @@ -520,7 +704,7 @@ function add_table_and_replace(&$data, $retrievable, &$match1, $match, $url_p, $ $url_fichier = $url_p['s'].'://'.$url_p['h'].$match; } else { // relative local path - $uuu = (strlen($url_p['file']) == 0 or preg_match('#/$#', $url_p['pat'])) ? $GLOBALS['url'] : substr($GLOBALS['url'], 0, -strlen($url_p['file'])) ; + $uuu = (strlen($url_p['file']) == 0 or preg_match('#/$#', $url_p['pat'])) ? $GLOBAL['url'] : substr($GLOBAL['url'], 0, -strlen($url_p['file'])) ; $url_fichier = $uuu . substr($match, 0, -strlen($nom_fichier)).$nom_fichier; } @@ -564,13 +748,13 @@ function rand_new_name($name) { } -if ($GLOBALS['done']['d'] !== FALSE) { - switch($GLOBALS['done']['d']) { +if ($GLOBAL['done']['d'] !== FALSE) { + switch($GLOBAL['done']['d']) { case 'ajout' : - header('Location: index.php?done='.$GLOBALS['done']['d'].'&lien='.urlencode($GLOBALS['url']).'&loclink='.urlencode($GLOBALS['done']['lien'])); + header('Location: index.php?done='.$GLOBAL['done']['d'].'&lien='.urlencode($GLOBAL['url']).'&loclink='.urlencode($GLOBAL['done']['lien'])); break; case 'remove' : - header('Location: index.php?done='.$GLOBALS['done']['d']); + header('Location: index.php?done='.$GLOBAL['done']['d']); break; } echo ''."\n"; @@ -584,23 +768,41 @@ if ($GLOBALS['done']['d'] !== FALSE) { + -Respawn – a PHP WebPage Saver +> - + @@ -609,7 +811,8 @@ if ($GLOBALS['done']['d'] !== FALSE) { if (!empty($target)){ echo ''; }else{ - if (!$public){ + if (!empty($search_tags)){echo ' Tag : '.$search_tags.' - No tag
';} + if (!$GLOBAL['public']){ if (isset($_GET['done']) and $_GET['done'] !== FALSE) { echo ''."\n"; switch($_GET['done']) { @@ -627,16 +830,17 @@ if ($GLOBALS['done']['d'] !== FALSE) { } // public pages echo ''."\n"; - $liste_pages = scandir($GLOBALS['public_data_folder']); + $liste_pages = search('public',$search_tags); + if ( ($nb = count($liste_pages)) != 0 ) { echo ''."\n"; - if (!$public){ // don't list private pages + + +// PRIVATE PAGES ------------------------------------------------------------------------------------------ + if (!$GLOBAL['public']){ echo ''."\n"; for ($i = 0 ; $i < $nb ; $i++) { // dont list '.' and '..' folders. - if (is_dir($GLOBALS['public_data_folder'].'/'.$liste_pages[$i]) and ($liste_pages[$i] != '.') and ($liste_pages[$i] != '..')) { + if (is_dir($GLOBAL['public_data_folder'].'/'.$liste_pages[$i]) and ($liste_pages[$i] != '.') and ($liste_pages[$i] != '..')) { // each folder should contain such a file "index.ini". - $ini_file = $GLOBALS['public_data_folder'].'/'.$liste_pages[$i].'/index.ini'; - $favicon = glob($GLOBALS['public_data_folder'].'/'.$liste_pages[$i].'/*favicon.*'); + $ini_file = $GLOBAL['public_data_folder'].'/'.$liste_pages[$i].'/index.ini'; + $favicon = glob($GLOBAL['public_data_folder'].'/'.$liste_pages[$i].'/*favicon.*'); $favicon = (isset($favicon[0])) ? $favicon[0] : ''; if ( is_file($ini_file) and is_readable($ini_file) ) { @@ -649,29 +853,37 @@ if ($GLOBALS['done']['d'] !== FALSE) { } else { $titre = 'titre'; $url = '#'; $date = 'date inconnue'; } + + $tags=$taglinks=''; + if (isset($GLOBAL['tag_array']['public'][$liste_pages[$i]])){$tags=$GLOBAL['tag_array']['public'][$liste_pages[$i]];$taglinks=tag2links($GLOBAL['tag_array']['public'][$liste_pages[$i]]);} echo "\t".'
'."\n"; - } + }else{echo 'Nothing found...';} echo '- '; - if (!$public){echo ' ';} - echo ' - '.$titre.' ['.$date.']'; - if (!$public){echo '▶
'."\n";}else{echo "\n";} + if (!$GLOBAL['public']){echo ' ';} + if (!$GLOBAL['public']){echo ' ';} + if (!$GLOBAL['public']){echo ' ';} + echo ' - '.$titre.' ['.$date.'] '.$taglinks; + if (!$GLOBAL['public']){echo '▶'."\n";}else{echo "\n";} } } echo ''."\n"; - $liste_pages = scandir($GLOBALS['private_data_folder']); + $liste_pages = search('private',$search_tags); if ( ($nb = count($liste_pages)) != 0 ) { echo ''."\n"; } } ?> - + + +'."\n"; for ($i = 0 ; $i < $nb ; $i++) { // dont list '.' and '..' folders. - if (is_dir($GLOBALS['private_data_folder'].'/'.$liste_pages[$i]) and ($liste_pages[$i] != '.') and ($liste_pages[$i] != '..')) { + if (is_dir($GLOBAL['private_data_folder'].'/'.$liste_pages[$i]) and ($liste_pages[$i] != '.') and ($liste_pages[$i] != '..')) { // each folder should contain such a file "index.ini". - $ini_file = $GLOBALS['private_data_folder'].'/'.$liste_pages[$i].'/index.ini'; - $favicon=glob($GLOBALS['private_data_folder'].'/'.$liste_pages[$i].'/*favicon.*'); + $ini_file = $GLOBAL['private_data_folder'].'/'.$liste_pages[$i].'/index.ini'; + $favicon=glob($GLOBAL['private_data_folder'].'/'.$liste_pages[$i].'/*favicon.*'); $favicon = (isset($favicon[0])) ? $favicon[0] : ''; if ( is_file($ini_file) and is_readable($ini_file) ) { $infos = parse_ini_file($ini_file); @@ -683,22 +895,46 @@ if ($GLOBALS['done']['d'] !== FALSE) { } else { $titre = 'titre'; $url = '#'; $date = 'date inconnue'; } - echo "\t".'
'."\n"; - } + }else{echo 'Nothing found...';} echo '- - '.$titre.' ['.$date.']◀
'."\n"; + $tags=$taglinks=''; + if (isset($GLOBAL['tag_array']['private'][$liste_pages[$i]])){$tags=$GLOBAL['tag_array']['private'][$liste_pages[$i]];$taglinks=tag2links($GLOBAL['tag_array']['private'][$liste_pages[$i]]);} + + echo "\t".'- + + + + - '.$titre.' ['.$date.'] '.$taglinks.' ◀
'."\n"; } } echo '