Unstimmigkeit in Datenbankschema 4.3.2

Welcome, aber mit einem chaotischen Vorgehen beim Hochladen funktioniert OXPICSGENARTED nicht korrekt.

Es wird dann kein Tumb unter out/pictures/ im Odner 0 generiert und im Shop erscheint kein Thumb in der Kategorieanzeige - das erkennt man auch sofort nach dem Hochladen im Adminbereich (links kein Thumb, kein Icon).

Die Reihenfolge beginned mit Artikelbild#1 hat schon einen Sinn. Wenn man sich an die beschriebene Logik hält ist die Arbeitsweise doch klar und die autom. Bildgenerierung läuft korrekt ab.

Getestet in Version 4.3.2_27884

Hallo,

es geht nicht um die Reihenfolge, sondern um den Bildnamen. Lade bei einem neuen Artikel doch mal bitte ein Bild mit der Endung _p1.jpg hoch. Daraus wird bei uns z.B. kein .ico generiert.

Grüße

Cutty

rubbercut,

meine Antwort bezog sich auf den Beitrag davor mit “Pic 7”. Habe noch geschrieben während Du inzwischen gesendet hast, sodass mein Post nach unten versetzt ist.

Zur “Endung _p1.jpg beim Produktbild” kann ich das Problem in 4.3.2 auch ohne Migration von 4.2. bestätigen. Das sieht nach einem Bug aus.

Hallo und vielen Dank für die Antwort,

der Bug kann sogar sinnvoll sein, nämlich dann, wenn z.B. ein Bild (aus welchen Gründen auch immer) gelöscht werden und dann nicht der ganze Bildstamm geändert werden muss (als Platzhalter).

Aber mir isr da gerade was eingefallen…

Grüße

Cutty

.

Wenn man in der DB manuell einen Wert einträgt, funktioniert auch die autom. Bilderzeugen bis zu diesem Wert nicht mehr, weil das Programm natürlich davon ausgeht, dass diese Bilder schon generiert sind. Also bei OXPICSGENERATED nichts manuell ändern.

Dann kann ich also davon ausgehen, dass wenn ich hier eine 12 eintrage, die (für uns unerwünschte) automatische Bilderzeugung definitiv abgeschaltet ist?

Hallo,

ich kann nur für uns sprechen, dass es ohne die Zusatzfunktion nicht geht. Bei uns wird die oxpicsgenerated einfach überschrieben.

Grüße

Cutty

[QUOTE=rubbercut;33997]Hallo und vielen Dank für die Antwort,

der Bug kann sogar sinnvoll sein, nämlich dann, wenn z.B. ein Bild (aus welchen Gründen auch immer) gelöscht werden und dann nicht der ganze Bildstamm geändert werden muss (als Platzhalter).

Aber mir isr da gerade was eingefallen…

Grüße

Cutty

.[/QUOTE]

rubbercut,

“ein Bug kann sinnvoll sein …” - pfiffiger Verkäufer, merk ich mir.

Aber Spass beiseite:
In core/oxpicturehandler.php steht ganz am Ende die Anweisung, dass beim Master Image u.a. Suffix _p1 entfernt werden soll. Es wird aber nicht beim Master Image entfernt, sondern nur bei den autom. generierten Bildern. Also wo liegt der Bug?

/

**
     * Gets master image file name and removes suffics (e.g. _p1) from file end.
     *
     * @param string $sMasterImageFile master image file name
     *
     * @return null
     */
    protected function _getBaseMasterImageFileName( $sMasterImageFile )
    {
        $sMasterImageFile = getStr()->preg_replace( '/_p\d+(\.jpg|\.gif|\.png)$/i', '\\1', $sMasterImageFile );

        return basename( $sMasterImageFile );
    }

Hallo,

die Lösung für die Darstellung ohne einzuhaltene Reihenfolge liegt in einem Counter, der unabhängig von oxpicgenerated läuft.

Zum obigen Problem: Ersetze:

$sMasterImageFile = getStr()->preg_replace( '/_p\d+(\.jpg|\.gif|\.png)$/i', '\\1', $sMasterImageFile );

mit:

$sMasterImageFile = getStr()->preg_replace( '/(\.jpg|\.gif|\.png)$/i', '\\1', $sMasterImageFile );

Grüße

Cutty

[QUOTE=alexz hh;34003]Dann kann ich also davon ausgehen, dass wenn ich hier eine 12 eintrage, die (für uns unerwünschte) automatische Bilderzeugung definitiv abgeschaltet ist?[/QUOTE]

Wenn Du Bilder nicht automatisch generieren lassen willst, sondern alle direkt per FTP hochlädst, dann setze vorher den Wert für OXPICSGENERATED auf 7 (das ist die max. Bildzahl für die Automatik in Version 4.3.2_27884 getestet) oder höher - also 12 geht auch.

Hallo!!!

Ohne den Zusatz funktonierts weder mit 7 noch mit 12. Ich kann bisher auch nirgendwo eine Funktion entdecken, die aufgrund der Eintagung die Generierung beschränkt.

Grüße

Cutty

Das ist unschön, um es vorsichtig zu formulieren. Finde es eh extrem ungünstig vorhandene Möglichkeiten sang und klanglos rauszunehmen und durch eine ‘Automatik’ zu ersetzen. So etwas sollte immer eine Option sein.

Wie muss den der Zusatz aussehen? Würde da jemand die Code-Schnipsel bereitstellen?

I understand only railroad station :slight_smile:
Kann bitte nochmal jemand ganz genau erklären, was fehlt, was geändert werden sollte und ob die Dokumentation ausreichend ist, damit ich das entsprechend verpacken und eintüten kann?

Danke und Gruß

Hallo Marco,

wie schon geschrieben, funktioniert bei meinen Shops der manuelle Eintrag der Zahlen 7 oder 12 in die oxpicsgenerated [B]nicht[/B], d.h. die Bilder werden trotzdem generiert.

Ich konnte auch keine Funktion finden, die das ermöglicht, weshalb ich einen eigenen Zusatz eingebaut habe, der mir im Admin die Bestimmung des Bildes als Zoom oder Pic ermöglicht…

Grüße

Cutty

Hallo Cutty,

das würde heissen, dass hier
http://wiki.oxidforge.org/Tutorials/understand_newbasepicture_implementation oder hier
http://wiki.oxidforge.org/Tutorials/de#Automatische_Bildgenerierung_ab_Oxid-eShop_4.3.0

etwas falsch beschrieben wurde?

Betrifft es nur Deinen Shop oder ist das auch mit einer frischen Installation so?

Gruß

Ich greife nochmals den alten Beitrag auf:

[QUOTE=tvtotal;33964]S O R R Y, aber das stimmt nicht. Bsp: Wenn ich bei einem Artikel zunächst [B]nur[/B] das Pic 7 lade und später Pic 5, so werden auch bei 5 die Bilder generiert.[/QUOTE]

Die Umsetzung ist IMHO schlecht.

[B]oxarticle.php[/B]


    /**
     * Updates count of how many master pictures where used for
     * images generation.
     *
     * @param int $iTotalGenerated total generated images
     *
     * @return null
     */
    public function updateAmountOfGeneratedPictures( $iTotalGenerated )
    {
        $sQ = "UPDATE oxarticles SET oxpicsgenerated = '$iTotalGenerated' WHERE oxid = '".$this->getId()."'";
        oxDb::getDb()->execute($sQ);

        $this->oxarticles__oxpicsgenerated = new oxField( $iTotalGenerated );
    }

    /**
     * Checks if article already has generated images from master picture
     * specified by index.
     *
     * @param int $iIndex master picture index
     *
     * @return bool
     */
    protected function _hasGeneratedImage( $iIndex )
    {
        if ( $iIndex > (int) $this->oxarticles__oxpicsgenerated->value ) {
            return false;
        }

        return true;
    }

Hier wird tatsächlich nur nach der höchsten Zahl geprüft bzw. ausgewertet.
Um aber eine kombination aus Boolschen Werten mit einer Integerzahl darzustellen muss man mit Bit-Operatoren arbeiten.

Beispiel (4 Bilder):
Bild 1 => Wert=1
Bild 2 => Wert=2
Bild 3 => Wert=4
Bild 4 => Wert=8

Ein Bild:
1 => 1
2 => 2
3 => 4
4 => 8

Zwei Bilder:
(Bild-Nr. => Formel => Ergebnis)
1+2 => 1^2 => 3
1+3 => 1^4 => 5
1+4 => 1^8 => 9
2+3 => 2^4 => 6
2+4 => 2^8 => 10
3+4 => 4^8 => 12

Drei Bilder:
1+2+3 => 1^2^4 => 7
1+2+4 => 1^2^8 => 11
1+3+4 => 1^4^8 => 13
2+3+4 => 2^4^8 => 14

Vier Bilder:
1+2+3+4 => 1^2^4^8 => 15

So ist eindeutig, welche Bilder bereits berechnet wurden und welche nicht.
Es gibt massig Stellen, wo PHP das genauso handhabt (error_reporting, glob usw.).

Leider ist dies bestimmt kein Bug… funktioniert doch und als Feature Request IMHO überflüssig, da das Prinzip nicht trivial ist und wer wählt schon ein Feature, was er in dem ersten 5 Sekunden nicht versteht.

Ich gehe mal davon aus, wenn dies so umgesetzt worden währe, währe dieser Thread auch wesentlich kürzer.

Da die Bilder nun mal nicht in der DB liegen sondern im Dateisystem, währe IMO die ideale Lösung ein einfaches file_exists() für jedes zu berechnende Bild(von mir aus das Ergebnis auch gecached). Weil selbst wenn die Bilder mittels Bitprüfung auf ihrer Existenz geprüft werden heisst es noch lange nicht, dass sie real im Dateisystem existieren.

[QUOTE=Marco Steinhaeuser;34425]Hallo Cutty,

das würde heissen, dass hier
http://wiki.oxidforge.org/Tutorials/understand_newbasepicture_implementation oder hier
http://wiki.oxidforge.org/Tutorials/de#Automatische_Bildgenerierung_ab_Oxid-eShop_4.3.0

etwas falsch beschrieben wurde?

Betrifft es nur Deinen Shop oder ist das auch mit einer frischen Installation so?

Gruß[/QUOTE]

Hallo Marco,

das war in einer frischen Installation (4.30). Dieser wurde dann umgebaut und auf 4.31 und 4.32 upgedatet.

Grüße

Cutty

OK, danke. Damit lässt sich etwas anfangen.

Gruß