Hjemmelavet stifinder driller
Jeg har fortsat gang i et projekt, med at opgradere et intranet til nyere verionser af bl.a. php.Derfor løber ind i nogle ting, som ikke virker længere bl.a. dette.
Jeg har en lille stifinder, som kigger i en bestemt mappe på en server, ud fra et tilbuds- eller ordre-nummer. Samtidig oprettet stifinderen hovedmappen + nogle forudbestemme undermapper, hvis disse ikke findes.
Men efter jeg har opgraderet php, så virker stifinderen ikke længere.
Jeg får bl.a. følgende fejl
Det er som om at stien som funktionerne får ikke er helt korrekt, for når jeg tester i funktion forceDir, så returnere explode() ikke noget i de 2 første elementer af arrayet, altså [0] og [1].
Men jeg har stirret mig blind på koden nu, kan bare ikke se hvad fejlen er, så nu får I chancen... :-)
Koden:
<?php
include('static/opsaetning.php');
/*
echo '<p>$SERVER: '.$SERVER.'</p>';
echo $KATALOG."<br>";
echo $SERVER."<br>";
*/
function forceDir($dir){//Funktion der opretter alle undermapper
echo $dir."<br>";
$subs = explode('/', $dir);
echo $subs[1]."<br>";
$tmp = '';
foreach($subs as $name){
echo $name."<br>";
$tmp = $tmp . $name;
//echo $tmp."<br>";
echo file_exists($tmp);
if (!file_exists($tmp)) {
echo $tmp."<br>";
echo "Filen findes ikke";
mkdir( $tmp );
}
$tmp = $tmp . '/';
}
return $dir;
}
function showDir($root, $dir) {
include('static/opsaetning.php');
//$KATALOG = "katalognavnet";
$SERVER = "servernavnet";
$filliste = array();
//$showdir = "//" . $SERVER . "/" . $KATALOG . "/" . $root;
$type = substr("$root", 0, strpos($root, "/"));
$mappe1;
$mappe2;
if ($type == Tilbud) {//Tjekker hvilken type sagen er, tilbud/ordre
$num = substr("$root", -6);
$mappe1 = substr($num, -5, 1);
$mappe2 = substr($num, -4, 1);
$ubermappe = substr($num, -6, 2);
$slutmappe;
$mapper = $mappe1 . $mappe2;
if ($mapper > 9){
$startmappe = $mappe2 . "000";
} else {
$startmappe = $mapper . "000";
}
if ($mappe1 == 0){
$slutmappe = (($mappe2 +1) . "000") - 1;
$startmappe = $mappe2 . "000";
} else {
$slutmappe = ((($mappe1 . $mappe2)+1) . "000" -1);
}
if ($slutmappe<"1000"){
$mappenavn = $ubermappe . $startmappe ."-". $ubermappe . "0".$slutmappe;
} else {
if($slutmappe > 10000){
$mappenavn = $ubermappe . $startmappe ."-". substr($ubermappe, -2, 1) . $slutmappe;
} else {
$mappenavn = $ubermappe . $startmappe ."-". $ubermappe . $slutmappe;
}
}
$mappenavn;
$root = $type . "/" . $mappenavn . "/" . $num;
} else {
$num = substr("$root", -5);
$mappe1 = substr($num, -4, 2);
if ($mappe1 > 9) {
$mappe2 = $mappe1+1;
} else {
$mappe1 = substr($num, -3, 1);
$mappe2 = $mappe1 +1;
}
$ubermappe = substr($num, -6, 2);//retunere de 2 første cifre
if ($mappe1 > 9){
$mappe1 = substr($num, -3, 1);
$mappe1 = $mappe1 . "00";
} else {
$mappe1 = $mappe1 . "00";
}
//Laver slutmappen
$slutmappe1 = ((substr($num, -3, 1) + 1)."00") -1;
if ($slutmappe1 < 100) {
$slutmappe1 = "0". $slutmappe1;
}
$mappenavn = $ubermappe . $mappe1 . "-" . $ubermappe . $slutmappe1;
$root = $type . "/" . $mappenavn . "/" . $num;
}
//echo $type;
$showdir = "//" . $SERVER . "/" . $KATALOG . "/" . $root;
forceDir($showdir);//Kalder funktion som opretter undermapper
if ($type == Tilbud) {
for($i=1; $i<=count($TILBUD); $i++){
$mail = "//" . $SERVER . "/" . $KATALOG . "/" . $root . "/" . $TILBUD[$i];
/* Tjekker mappens navn, er de 2 første tegn ikke 0_,
tjekkes der for om mappen findes i forvejen med 0_ foran i mappenavnet.
Findes den ikke, så oprettes der en mappe men uden 0_ i navnet
*/
if( substr($TILBUD[$i], 0, 1) != "0_") {
$tmpMail = "//" . $SERVER . "/" . $KATALOG . "/" . $root . "/0_" . $TILBUD[$i];
if ( !file_exists($tmpMail) ) {
mkdir($mail);
} else {
mkdir($tmpMail);
}
}
}
} else {
for($i=1; $i<=count($ORDRE); $i++){
$mail = "//" . $SERVER . "/" . $KATALOG . "/" . $root . "/" . $ORDRE[$i];
/* Tjekker mappens navn, er de 2 første tegn ikke 0_,
tjekkes der for om mappen findes i forvejen med 0_ foran i mappenavnet.
Findes den ikke, så oprettes der en mappe men uden 0_ i navnet
*/
if( substr($ORDRE[$i], 0, 1) != "0_"){
$tmpMail = "//" . $SERVER . "/" . $KATALOG . "/" . $root . "/0_" . $ORDRE[$i];
if ( !file_exists($tmpMail) ) {
mkdir($mail);
} else {
mkdir($tmpMail);
}
}
}
}
if($dir != ""){
$showdir .= $dir;
$filliste[] = "<a href=\"stifinder.php?root=$root&dir=" . substr_replace($dir, '', strrpos($dir, '/') ) . "\"> <img src=\"/gfx/mappe.gif\" border=\"0\" width=\"18\"> </a>
<a href=\"stifinder.php?root=$root&dir=" . substr_replace($dir, '', strrpos($dir, '/') ) . "\">..</a>";
}
$files = array();
$dirs = array();
if ( $dh = opendir( $showdir ) ) {
while ( $fil = readdir( $dh ) ) {
if ( is_dir( $showdir . '/' . $fil ) && $fil != '.' && $fil != '..' ) {
$dirs[] = $showdir . '/' . $fil;
} else if ( !is_dir( $showdir . '/' . $fil ) ) {
$files[] = $showdir . '/' . $fil;
}
}
}
sort( $dirs );
sort( $files );
if(count($dirs)<1){
echo "<a href=\"stifinder.php?root=$root&dir=" . substr_replace($dir, '', strrpos($dir, '/') ) . "\"> <img src=\"/gfx/mappe.gif\" border=\"0\" width=\"18\"> </a>
<a href=\"stifinder.php?root=$root&dir=" . substr_replace($dir, '', strrpos($dir, '/') ) . "\">..</a>";
} else {
for($i=0;$i<count($dirs);$i++){
echo "<a href=\"stifinder.php?root=$root&dir=".$dir."/".basename($dirs[$i])."\"> <img src=\"/gfx/mappe.gif\" width=\"18\" border=\"0\"> ".basename($dirs[$i])." </a><br>";
}
}
for($i=0;$i<count($files);$i++){
$tmp=explode( '.', basename($files[$i]) );
if(strtolower($tmp[1]) == "rtf" || strtolower($tmp[1]) == "doc" || strtolower($tmp[1]) == "docx") {
$ikon="/gfx/ikon_word.gif";
} else if(strtolower($tmp[1]) == "xls" || strtolower($tmp[1]) == "xlsx") {
$ikon="/gfx/ikon_excel.gif";
} else if(strtolower($tmp[1]) == "pdf") {
$ikon="/gfx/ikon_pdf.gif";
} else {
$ikon="/gfx/ikon_fil.gif";
}
echo "<a target=\"_blank\" href=\"file:".$files[$i]."\"> <img src=\".$ikon.\" width=\"18\" border=\"0\"> ".basename($files[$i])." </a><br>";
}
}
?>
<html>
<style>
body, table, tr, td {
margin-bottom : 0px;
margin-left : 0px;
margin-right : 0px;
margin-top : 0px;
font-family : Geneva, Arial, Helvetica, sans-serif;
font-size: 13px;
}
a {
text-decoration: none;
color: black;
}
</style>
<body>
<table width="500">
<?php
$filliste = showDir($_GET['root'], $_GET['dir']);
foreach($filliste as $fil) {
echo "<tr><td>$fil</td></tr>";
}
?>
</table>
</body>
</html>