Coppermine verändert Dateinamen auf dem Server? - Page 2 Coppermine verändert Dateinamen auf dem Server? - Page 2
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

Coppermine verändert Dateinamen auf dem Server?

Started by lamama, November 10, 2010, 12:08:54 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Αndré

Quote from: lamama on November 12, 2010, 11:44:00 AM
"The topic or board you are looking for appears to be either missing or off limits to you."  8)
Sorry, ich dachte das war im Bug-Board, was jeder einsehe kann/können sollte.


Quote from: lamama on November 12, 2010, 11:44:00 AM
Da kommen zig User mit irrwitzigen Dateinamen an
Das gleiche passiert leider auch beim FTP-Upload, weshalb ein generelles Zurückfahren nicht in Frage kommt. Allerdings könnte man der Funktion replace_forbidden einen Parameter spendieren, den der Batch-Upload übergibt, damit man unterscheiden kann wie die Dateien gerade eingefügt werden (HTTP/Batch). Ich habe den Code gerade nicht im Kopf, daher bin ich mir nicht sicher, ob das möglich ist. Andererseits könnte man die Transliteration etc. ja nur generell abstellen, was ich für nicht gut halte.

Um es festzuhalten: eine (versteckte) Option die es ermöglicht selbst zu bestimmen, ob Dateinamen beim Batch-Add (und nur dort) von "bösen" Zeichen bereinigt werden halte ich für durchaus angebracht.

Αndré

Das ganze ist komplexer als zunächst angenommen. Es kommt noch hinzu, dass man Dateien umbenennen kann. Auch hier greift dieselbe Funktion, was in deinem Fall wiederum zu unerwünschten Ergebnissen führen könnte. Diese ganzen Abfragen fest einzubauen und mit versteckten Konfigurationswerten auszuwerten ist meiner Meinung nach nicht der richtige Weg.

Ein neuer Plugin-Hook ist denke ich mal der beste Weg. Dann kann jeder mit einem Plugin die Abfragen so gestalten, dass er zufrieden ist. Hier ein Entwurf, wie ich gedenke dies umzusetzen:
    $condition = array (
        'transliteration' => true,
        'special_chars' => true
    );
    $condition = CPGPluginAPI::filter('replace_forbidden_conditions', $condition);

    /**
     * Transliteration
     */
    if ($condition['transliteration']) {
        require_once('include/transliteration.inc.php');
        $return = transliteration_process($return, '_');
    }

    /**
     * Replace special chars
     */
    if ($condition['special_chars']) {
        $return = str_replace('%', '', rawurlencode($return));
    }


In deinem Plugin kannst du dann z.B. überprüfen, ob es sich gerade um einen Batch-Upload handelt. Sieht dann in etwa so aus:
function plugin_code($condition) {
    // Batch-add
    if (defined('ADDPIC_PHP') || defined('SEARCHNEW_PHP')) {
        //$condition['transliteration'] = false;
        $condition['special_chars'] = false;
    }
    return $condition;
}

lamama

Mich irritiert ...

QuoteIn deinem Plugin

... ein wenig. Von Plugin-Programmierung hab ich nun sowas von gar keine Ahnung.  ???

Das Plugin macht nix anderes, als beim Batch-Upload die Transliteration bzw. das Filtern auf SpecialChars aus- bzw. anzuschalten? Sind 5 Zeilen Code für nen Plugin nicht etwas wenig? ^^

Wenn Du an alle Betroffenen stellen das einbauen bzw. umbauen mußt wie in "Entwurf" dargestellt und dann den Umweg über ein Plugin gehst, wäre es nicht effektiver, die für's Plugin vorgesehene Funktion irgendwo in die functions.php.inc zu packen?

Αndré

Quote from: lamama on November 20, 2010, 12:26:24 AM
Wenn Du an alle Betroffenen stellen das einbauen bzw. umbauen mußt wie in "Entwurf" dargestellt und dann den Umweg über ein Plugin gehst, wäre es nicht effektiver, die für's Plugin vorgesehene Funktion irgendwo in die functions.php.inc zu packen?
Nein. Wie gesagt kann man theoretisch sehr feine Unterscheidungen treffen:
- Wer lädt hoch? (Admin/User, evtl. sogar für einige Benutzer aktivieren/deaktivieren; Batch-add/HTTP-Upload)
- Wer benennt die Datei um? (Admin/User, evtl. sogar für einige Benutzer aktivieren/deaktivieren)

Dies fest mit Konfigurationsvariablen und entsprechenden Abfragen zu verankern ist nicht sinnvoll (und darüber hinaus wahrscheinlich auch fehleranfällig, da ich ggf. irgendwas nicht beachtet habe).

Die Methode über den Plugin-Hook hat einen weiteren Vorteil für uns im Support. Im Debug-Output sehen wir, ob jemand den Hook benutzt hat und können daraus resultierende Fehler (verkorkste Dateinamen) leichter ausfindig machen. Darüber hinaus stößt das Thema "neuer Plugin Hook" auf wesentlich weniger Widerstand als eine neue Konfigurationsoption.

Ein Plugin muss nicht zwangsläufig aus mehreren 100 oder 1000 Zeilen Code bestehen. Es gibt tatsächlich mehrere Plugins die effektiv aus lediglich 5-10 Zeilen Code bestehen. Pluginprogrammierung ist keine Zauberei. Und in deinem Fall wahrscheinlich noch einfacher als mein Beispielcode.


Für wen und wann/wo soll denn das zusätzliche Umbenennen in deiner Galerie deaktiviert werden? Für den alle, immer? Nur für den Admin, immer? Nur für den Admin beim Batch-add, aber beim manuellen Umbenennen von Dateien nicht?

lamama


Αndré


lamama