Quixplorer - anpassen und erweitern

Hallo zusammen,

das mit der Upload-Grafik ist erledigt. Habe es hinbekommen. :smiley:
Nun geht es weiter in meiner “ToDo-Liste”. Gemacht werden muß noch folgendes:

  • eMail-Benachrichtigung bei Up- bzw. Download (eventuell mit Formular)
    Benachrichtigung mit Dateiname, Datum und Uhrzeit (Bezugnehmend auf User)
  • Dynamische Vorschaubilder von Bilddateien einbinden (Thumbnails)
  • ZIP-Archiv erstellen (dynamischer Download) Fehlerbeseitigung

Hoffe das ich die oben genannten Punkte auch noch irgendwie implementiert bekomme.

Hilfe… ich bräuchte nochmals Hilfe… :astonished:

Ich blicke nicht ganz durch wie ich es bewerkstelligen kann, daß sobald ein angemeldeter User eine Datei hochlädt, auch eine eMail an den Admin geht. Genauso möchte ich das auch umgekehrt haben. Wenn also der angemeldete User eine Datei herunterlädt, dann soll eine eMail an den Admin versendet werden. Der Inhalt der eMail sollte sein: Die Datei, die Uhrzeit sowie das Datum wann die Datei herunter bzw. heruafgeladen worden ist.

Wie muß ich das machen? Vor allem wie binde ich das ein?

Habe mich hier schonmal etwas eingelesen (http://de.php.net/manual/de/function.mail.php aber ich muß ehrlich gestehen daß ich das nicht so ganz verstehe. Vor allem weiss ich nicht wo ich was reinschreiben muß.

Könnte mir da nochmal jemand helfend unter die Arme greifen? Bitte?

Du must das ganze mal im Kopf angehen; du schreibst das eben da hin, dass es nach dem Download einer Datei vollzogen wird, dann einfach per mail.function() eine Email mit den Inhalten, die gewünscht sind (diese per MySQL o.ä. auslesen und übergeben) abschicken lassen

:morgen:

ein neuer Tag hat begonnen und ich sitze wieder vor dem Script erst mal nen Kaffee trinken

Mein Hauptproblem ist, das ich nie weiß wo in welcher Datei muß ich was definieren damit es in einer anderen Datei ausgeführt wird. Da blicke ich momentan noch nicht so wirklich durch. Auch wenn ich mir verschiedene Dateien miteinander vergleiche macht es bei mir noch nicht klick. In welcher Datei muß denn was stehen, damit auch genau das was man möchte ausgeführt wird?

Kann mir das nochmal jemand vielleicht mit Beispiel erklären?

Ich nochmal, :ps:

momentan sitze ich vor einem anderen Problem. Und zwar wird beim erstellen eines zip-Archives die Dateiendung .zip nicht mit erstellt. In der Datei von TWG geht das habe auch schon verglichen aber ich finde den Fehler auch nicht. Was noch komisch ist, das wenn man anhakt das man die Datei herunterladen möchte, wird diese trotzdem (ohne Dateiendung) ins Verzeichnis gespeichert. Das soll nicht sein nur wenn man den Haken entfernt. Bekomme auch keine Fehlermeldung.

Hier mal der Code:

fun_archiv.php von TWG:

[code]//------------------------------------------------------------------------------
function zip_items($dir,$name) {

require_once("./_lib/lib_zip.php");

    $cnt=count($GLOBALS['__POST']["selitems"]);
    $abs_dir=get_abs_dir($dir);

    $download = mosGetParam( $_REQUEST, 'download', "n" );

    $archive_name = get_abs_item($dir,$name);
    if( !strstr( $archive_name, "." )) $archive_name .= ".zip.";


    $zipfile=new ZipFile();

    for($i=0;$i<$cnt;++$i) {
            $selitem=stripslashes($GLOBALS['__POST']["selitems"][$i]);
            if(!$zipfile->add($abs_dir,$selitem)) {
                    show_error($selitem.": Failed adding item.");
            }
    }
    if(!$zipfile->save( $archive_name )) {
            show_error($name.": Failed saving zipfile.");
    }
    else {
      if( $download=="y" ) {
            require "./.include/fun_down.php";
            download_item( $dir, basename($archive_name), true );
      }
    }
    return;

}

//------------------------------------------------------------------------------
function tgz_items($dir,$name) {

    require_once("./_lib/Tar.php");
    $cnt=count($GLOBALS['__POST']["selitems"]);
    $abs_dir=get_abs_dir($dir);

    $download = mosGetParam( $_REQUEST, 'download', "n" );

    $type = ($GLOBALS['__POST']["type"] == "tgz") ? "gz" : "bz2";
    $archive_name = get_abs_item($dir,$name);
    if( !strstr( $archive_name, "." )) {
      $archive_name .= ".tar.$type";
    }
    $tgz_file = new Archive_Tar($archive_name, $type);

    for($i=0;$i<$cnt;++$i) {
            $selitem=stripslashes($GLOBALS['__POST']["selitems"][$i]);
            $v_list[] = $abs_dir ."/". $selitem;
    }
    if(!$tgz_file->createModify($v_list, '', realpath($GLOBALS['home_dir']))) {
            show_error($name.": Failed saving Archive File.");
    }
    else {
      if( $download=="y" ) {
            require "./.include/fun_down.php";
            download_item( dirname($archive_name), basename($archive_name), true );
      }
    }
    return;

}
//------------------------------------------------------------------------------
function archive_items($dir) {
if(($GLOBALS[„permissions“]&01)!=01) show_error($GLOBALS[„error_msg“][„accessfunc“]);
if(!$GLOBALS[„zip“]) show_error($GLOBALS[„error_msg“][„miscnofunc“]);

    if(isset($GLOBALS['__POST']["name"])) {
            $name=basename(stripslashes($GLOBALS['__POST']["name"]));
            if($name=="") show_error($GLOBALS["error_msg"]["miscnoname"]);
            switch($GLOBALS['__POST']["type"]) {
                    case "zip":        zip_items($dir,$name);        break;
                    default:        tgz_items($dir,$name);
            }
            header("Location: ".make_link("list",$dir,NULL));
    }


    show_header($GLOBALS["messages"]["actarchive"]);
    echo "<br/><form name=\"archform\" method=\"post\" action=\"".str_replace("index2.php", "index3.php", make_link("arch",$dir,NULL))."\">\n";
    echo "<input type=\"hidden\" name=\"no_html\" value=\"1\" />";
    $cnt=count($GLOBALS['__POST']["selitems"]);
    for($i=0;$i<$cnt;++$i) {
            echo "<input type=\"hidden\" name=\"selitems[]\" value=\"".stripslashes($GLOBALS['__POST']["selitems"][$i])."\">\n";
    }

    echo "<table summary=\"\" width=\"300\"><tr><td>".$GLOBALS["messages"]["nameheader"].":</td><td align=\"left\">";
    echo "<input type=\"text\" name=\"name\" size=\"25\"></td></tr>\n";
    echo "<tr><td>".$GLOBALS["messages"]["typeheader"].":</td><td align=\"left\"><select name=\"type\">\n";
    if(extension_loaded("zlib")) {
      echo "<option value=\"zip\">Zip</option>\n";

    }

    echo "</select></td></tr>";
    echo "<tr><td>".$GLOBALS["messages"]["downlink"]."?:</td><td align=\"left\">";
    echo "<input type=\"checkbox\" checked=\"checked\" name=\"download\" value=\"y\" /></td></tr>\n";
    echo "<tr><td></td><td align=\"right\"><input type=\"submit\" value=\"".$GLOBALS["messages"]["btncreate"]."\">\n";
    echo "<input type=\"button\" value=\"".$GLOBALS["messages"]["btncancel"];
    echo "\" onclick=\"javascript:location='".make_link("list",$dir,NULL)."';\">\n</td></tr></form></table><br/>\n";

?><?php
}

function extract_item( $dir, $item ) {

if( !is_archive( $item )) {
show_error($GLOBALS[„error_msg“][„extract_noarchive“]);
}
else {

      $archive_name = realpath(get_abs_item($dir,$item));

      $file_info = pathinfo($archive_name);

      if( empty( $dir ))
            $extract_dir = realpath($GLOBALS['home_dir']);
      else
            $extract_dir = realpath( $GLOBALS['home_dir']."/".$dir );

      $ext = $file_info["extension"];

      switch( $ext ) {
            case "zip":

              require_once( "./_lib/pcl/pclzip.lib.php" );
              require_once( "./_lib/pcl/pclerror.lib.php" );
              $zip = new PclZip($archive_name);
              $res = $zip->extract( PCLZIP_OPT_PATH, $extract_dir );
              if( $res < 1 ) {
                    show_error( $GLOBALS["messages"]["extract_failure"]." (". $zip->error_string.")" );
              }
              else
                    $_REQUEST['mosmsg'] = $GLOBALS["messages"]["extract_success"];

            break;

            case "gz":  // a
            case "bz": // lot
            case "bz2": // of
            case "bzip2": // fallthroughs,
            case "tbz": // don't
            case "tar": // wonder
              require_once("./_lib/Tar.php");
              $archive = new Archive_Tar($archive_name, $type);
              if( $archive->extract( $extract_dir ) )
                    $_REQUEST['mosmsg'] = $GLOBALS["messages"]["extract_success"];
              else
                    show_error($GLOBALS["error_msg"]["extract_failure"]);
            break;

            default:
                    show_error($GLOBALS["error_msg"]["extract_unknowntype"]);

            break;
      }
header("Location: ".make_link("list",$dir,NULL));

}
}[/code]

Hier der Original-Code:

[code]if($GLOBALS[„zip“]) include("./_lib/lib_zip.php");
//if($GLOBALS[„tar“]) include("./_lib/lib_tar.php");
//if($GLOBALS[„tgz“]) include("./_lib/lib_tgz.php");
//------------------------------------------------------------------------------
function zip_items($dir,$name) {
$cnt=count($GLOBALS[’__POST’][„selitems“]);
$abs_dir=get_abs_dir($dir);

    $zipfile=new ZipFile();
    for($i=0;$i<$cnt;++$i) {
            $selitem=stripslashes($GLOBALS['__POST']["selitems"][$i]);
            if(!$zipfile->add($abs_dir,$selitem)) {
                    show_error($selitem.": Failed adding item.");
            }
    }
    if(!$zipfile->save(get_abs_item($dir,$name))) {
            show_error($name.": Failed saving zipfile.");
    }

    header("Location: ".make_link("list",$dir,NULL));

}
//------------------------------------------------------------------------------
function tar_items($dir,$name) {
// …
}
//------------------------------------------------------------------------------
function tgz_items($dir,$name) {
// …
}
//------------------------------------------------------------------------------
function archive_items($dir) {
if(($GLOBALS[„permissions“]&01)!=01) show_error($GLOBALS[„error_msg“][„accessfunc“]);
if(!$GLOBALS[„zip“] && !$GLOBALS[„tar“] && !$GLOBALS[„tgz“]) show_error($GLOBALS[„error_msg“][„miscnofunc“]);

    if(isset($GLOBALS['__POST']["name"])) {
            $name=basename(stripslashes($GLOBALS['__POST']["name"]));
            if($name=="") show_error($GLOBALS["error_msg"]["miscnoname"]);
            switch($GLOBALS['__POST']["type"]) {
                    case "zip":        zip_items($dir,$name);        break;
                    case "tar":        tar_items($dir,$name);        break;
                    default:                tgz_items($dir,$name);
            }
            header("Location: ".make_link("list",$dir,NULL));
    }

    show_header($GLOBALS["messages"]["actarchive"]);
    echo "<BR><FORM name=\"archform\" method=\"post\" action=\"".make_link("arch",$dir,NULL)."\">\n";

    $cnt=count($GLOBALS['__POST']["selitems"]);
    for($i=0;$i<$cnt;++$i) {
            echo "<INPUT type=\"hidden\" name=\"selitems[]\" value=\"".stripslashes($GLOBALS['__POST']["selitems"][$i])."\">\n";
    }

    echo "<TABLE width=\"300\"><TR><TD>".$GLOBALS["messages"]["nameheader"].":</TD><TD align=\"right\">";
    echo "<INPUT type=\"text\" name=\"name\" size=\"25\"></TD></TR>\n";
    echo "<TR><TD>".$GLOBALS["messages"]["typeheader"].":</TD><TD align=\"right\"><SELECT name=\"type\">\n";
    if($GLOBALS["zip"]) echo "<OPTION value=\"zip\">Zip</OPTION>\n";

    echo "</SELECT></TD></TR>";

    echo "<TR><TD></TD><TD align=\"right\"><INPUT type=\"submit\" value=\"".$GLOBALS["messages"]["btncreate"]."\">\n";
    echo "<input type=\"button\" value=\"".$GLOBALS["messages"]["btncancel"];
    echo "\" onClick=\"javascript:location='".make_link("list",$dir,NULL)."';\">\n</TD></TR></FORM></TABLE><BR>\n";

?><?php
}
//------------------------------------------------------------------------------
?>[/code]

Wo wird denn definiert, das die Dateiendung mit angehangen werden soll??? Wo steht der Befehl dafür? In der TWG-Version klappt das so wie es soll bekomme das aber nicht eingebunden in den Quixplorer. Hilfe…

Ok mühsam ernährt sich das Eichhörnchen. Also das mit der Dateiendung habe ich schonmal hinbekommen. Wird jetzt richtig übergeben. In der fun_extra.php mußte noch was geändert werden. Allerdings wird obwohl die Datei an den Browser übergeben wird diese trotzdem auf dem Webspace gespeichert also nicht temporär. Muß ich jedes Mal manuell löschen das erstellte Archiv. Ich hoffe das ich das auch noch irgendwie hinbekomme.

Hallo zusammen,

ich komme mal wieder nicht weiter. Finde einfach den Fehler nicht. Ich habe mir ein Script rausgesucht,welches Thumbnails generiert und anzeigt. Habe das als eigenständiges Script ausprobiert und es läuft. Jetzt möchte ich es in den Quixplorer integrieren aber ich bekomme es nicht hin, das die Bilder angezeigt werden. Der Pfad wird gar nicht übermittelt.

Hier mal der Code:

[code]//------------------------------------------------------------------------------
// Verzeichnis auslesen

$Pfad="/.";
$thumbDir="_thumbnails";

if($Verzeichniszeiger=opendir($Pfad))
{
while($Datei=readdir($Verzeichniszeiger))
{
if($Datei!="/." && $Datei!="…" && $Datei!= ($thumbDir))

            {
                    $Bilddaten=getimagesize($Datei);
                    if($Bilddaten[2]==1 || $Bilddaten[2]==2 || $Bilddaten[2]==3)
                    {

//------------------------------------------------------------------------------
// Thumbnail erstellen

$Grafikdatei = “$Datei”;

$Bilddaten = getimagesize($Grafikdatei);

$OriginalBreite = $Bilddaten[0];
$OriginalHoehe = $Bilddaten[1];
$ThumbnailBreite = 128;
if($OriginalBreite < $ThumbnailBreite)
{
$ThumbnailBreite=$OriginalBreite;
}
$Skalierungsfaktor = $OriginalBreite/$ThumbnailBreite;
$ThumbnailHoehe = intval($OriginalHoehe/$Skalierungsfaktor);

if($Bilddaten[2]==1)
{
$Originalgrafik = ImageCreateFromGIF($Grafikdatei);
$Thumbnailgrafik = ImageCreateTrueColor($ThumbnailBreite, $ThumbnailHoehe);
ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
ImageGIF($Thumbnailgrafik, “thumbnails/tn”.$Grafikdatei);
}
elseif($Bilddaten[2]==2)
{
$Originalgrafik = ImageCreateFromJPEG($Grafikdatei);
$Thumbnailgrafik = ImageCreateTrueColor($ThumbnailBreite, $ThumbnailHoehe);
ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
ImageJPEG($Thumbnailgrafik, “thumbnails/tn”.$Grafikdatei);
}
elseif($Bilddaten[2]==3)
{
$Originalgrafik = ImageCreateFromPNG($Grafikdatei);
$Thumbnailgrafik = ImageCreateTrueColor($ThumbnailBreite, $ThumbnailHoehe);
ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
ImagePNG($Thumbnailgrafik, “thumbnails/tn”.$Grafikdatei);
}

//------------------------------------------------------------------------------
// Verzeichnis schliessen
}
}
}
closedir($Verzeichniszeiger);
}
//------------------------------------------------------------------------------[/code]

als Ausgabe habe ich das so gemacht:

// Thumbnail echo "<td><a href=\"$Datei\" target=\"_blank\"><img style=\"border: 0px\" alt=\"$Datei\" src=\"_thumbnails/tn_",$Grafikdatei,"\"></a><br><br></td>\n";

Die Datei, in welcher ich das eingefügt habe ist die fun_list.php. Die Vorschaubilder werden im Ordner Thumbnails gespeichert. Die fun_list.php befindet sich im Ordner .include. Bedeutet das die Datei und der Ordner Thumbnails nicht im selben Verzeichnis liegen. Ausgelesen werden soll das Hauptverzeichnis wo sich auch der Thumbnail-Ordner befindet. Ich vermute das ich irgendwo eine Pfadangabe nicht richtig habe aber ich finde das nicht. Kann mir da nochmal jemand helfen?

Hallo nochmal,

ich bekomme es nicht hin. Ich möchte unabhängig vom eingeloggten Benutzer Bilder anzeigen lassen sobald erkannt wird, das Bilder in dem Ordner vorhanden sind. Das soll in jedem Ordner funktionieren. Also Jeden Ordner einlesen, schauen ob Bilder da sind, wenn ja dann Thumbnail erstellen und anzeigen lassen mit Link zum Original-Bild. Bekomme das nicht eingebunden. Wie muß ich das implemetieren? Wie kann ich dem Script sagen, das es alle Ordner durchsuchen soll??? Kann dafür keinen festen Ordner vergeben, das sollte dynamisch funktionieren. Stoße momentan an meine Grenzen.

Werden die Thumbnails vom Script gar nicht angelegt - weil du dabei einen falschen Pfad angegeben hast;
oder kann der Client sie nicht erfolgreich laden, weil du ihm den falschen Pfad genannt hast?

Hallo,

das weiss ich leider nicht. Also es werden keine Thumbnails erstellt und im Quelltext wird auch nix übergeben. Wennich das Script als Standalone ausführe, dann geht alles, bekomme es aber nicht eingebunden. Ausserdem brauche ich noch eine Erweiterung damit das Script alle Ordner durchsucht und nicht nur einen festgelegten.
Tue mich echt schwer mit deisem PHP-Kram… :neutral_face:

Jetzt habe ich das ganze Script in die fun_list.php gepackt aber jetzt zeigt der mir egal was für eine Datei das ist ein Bild an und verschiebt sich nach rechts…

Ich weiss nicht mehr weiter… ich blicke nicht mehr durch… :cry:

Ich will doch nur ein Vorschaubild haben wenn erkannt wird das es sich um eine Grafikdatei handelt. Ich verstehe es nicht… was mache ich denn falsch??? :neutral_face: