Firstpic im CBACK Portal

 
Mimi
Benutzer
Avatar
Geschlecht:
Alter: 38
Beiträge: 89
Dabei seit: 05 / 2017
Betreff:

Firstpic im CBACK Portal

 · 
Gepostet: 31.01.2022 - 20:40 Uhr  ·  #1
Hi Chris,

ich habe dein Portal-Plugin für unser Forum mittlerweile im Einsatz und es erfreut sich großer Beliebtheit :-)
An der Automatik-Box habe ich selbst ein wenig "gebastelt", so dass nur das erste Bild der Threads der im ACP angehakten Foren angezeigt wird und der restliche Text ausgeblendet ist. Somit hab ich im Protal quasi eine Anzeige der neuesten Bilder.
Da wir aber sehr viel mit dem MediaManager arbeiten habe ich eine weitere Suche nach dem ersten mit dem MM hochgeladenen Bild eingebaut.

Das hat bis letzte Woche Donnerstag gut funktioniert und nun wird mal ein Bild (im Portal in der Automatik-Box) angezeigt, mal nicht. Schau ich mir den dahinter liegenden Thread an, ist da immer ein Bild und ich frage mich nun, weshalb das nicht klappt.
Ich fürchte, ich seh den Wald vor lauter Bäumen nicht und hoffe, du hast einen Tipp für mich.

Danke und viele Grüße,
Mimi
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 36
Homepage: cback.net
Beiträge: 17565
Dabei seit: 12 / 2003
Betreff:

Re: Firstpic im CBACK Portal

 · 
Gepostet: 31.01.2022 - 20:46 Uhr  ·  #2
Hallo Mimi,

freut mich sehr, dass Dir das Portal so gefällt!

Die Modifikation, die Du selbst gemacht hast und das Einsetzen des MediaManagers ist natürlich zum einen ein Plugin, zum anderen auch noch eine von Dir gemachte Erweiterung (also keine "normale" Funktion des Forums oder des Plugins) und damit kann ich Dir jetzt so komplett blind auch leider keine Auskunft geben und da es sich um eine eigene Programmierarbeit von Dir handelt ist das auch leider nicht vom Premium Support abgedeckt.

Dennoch, wenn Du mir näher beschreibst, was Du wie gemacht hast, dann habe ich vielleicht zumindest einen kleinen Tipp, den ich Dir geben kann. Dazu benötige ich aber natürlich alle Informationen über Deine Veränderung, sonst weiß ich ja nicht, wie Du etwas ausliest.


Da Du allerdings sagst, dass es vorher funktionierte und jetzt nicht mehr und basierend auf einer anderen Anfrage von Dir zum MediaManager in der Vergangenheit: Hast Du daran gedacht, dass MediaManager Links aus Sicherheitsgründen seit einigen Updates des Plugins mit einem Sicherheits-Token im BBCode & in der Bildanzeige ausgestattet sind und nicht mehr hier nur die Bild-ID genommen wird? Vermutlich ist Deine Änderung einfach darauf noch nicht angepasst. Das würde erklären, warum manche Beiträge gehen (vermutlich ältere) und manche nicht (Beiträge nach MediaManager Update). Der MM kann Altdaten ohne Token dann nämlich weiter zeigen, die neuen brauchen aber noch das Token sonst wird kein Bild angezeigt. Wenn Du das selbst ausliest und reproduzierst, müsstest Du entsprechend Deine Funktion entsprechend anpassen, damit sie wieder mit der aktuellen MM-Version kompatibel wird.

Viele Grüße,
Chris
Mimi
Benutzer
Avatar
Geschlecht:
Alter: 38
Beiträge: 89
Dabei seit: 05 / 2017
Betreff:

Re: Firstpic im CBACK Portal

 · 
Gepostet: 01.02.2022 - 20:54 Uhr  ·  #3
Hi Chris,

tja, hätt ich die Anpassung mal bei dir in Auftrag gegeben. ;-)

Ich glaube, dass es nicht an dem Update des MediaManagers liegt, da ich dies zwar gemacht habe, aber das zeitlich vor meiner Anpassung am Portal war.

Gerne versuche ich so genau wie möglich alles zu beschreiben/aufzulisten.
Ich möchte einfach verstehen, weshalb sich das auf einmal so "zickig" verhält.

Ich habe im Portal in der Datei "cback_portal.class.php" den else-Zweig im nachfolgenden Quellcode eingefügt sowie ein Stück weiter unten einfach sehr quick and dirty den Vorschau-Text eingekürzt:

Code

if($boxinfo['bshorten']>0)
         {
            $matches = array();
            $firstpic = '';
            preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $res['post_text'], $matches);
            if(isset($matches['src'])&&!empty($matches['src']))
            {
              $firstpic = $matches['src'];
            }
            /* Test MK
               Wenn keine Bilder anhand img-Tag gefunden wurden, nach MediaManager-Uploads suchen
            */
            else
            {
                            
              preg_match('/<a.+href="(?P<upl>.+?\.jpg)".*>/', $res['post_text'], $matches);
              
              if(isset($matches['upl'])&&!empty($matches['upl']))
              {
                $firstpic = $matches['upl'];
              }
            }

            $res['post_text'] = strip_tags($res['post_text']);
            $res['post_text'] = str_replace(array("\n", "\t", "\r"), ' ', $res['post_text']);
            $res['post_text'] = trim($res['post_text']);
            if(mb_strlen($res['post_text'])>=$boxinfo['bshorten'])
            {
              $res['post_text'] = mb_substr($res['post_text'], 0, $boxinfo['bshorten'], 'utf-8').' &hellip;';
            }
            
            /*VERSUCH MK => kein Text!*/
            $res['post_text'] = '';
            
            if(!empty($firstpic))
            {
              $res['post_text'] = '<div style="float:left;margin-right:8px;"><img src="'.$firstpic.'" alt="" title="" style="max-width:150px;max-height:150px;" /></div>'.$res['post_text'].'<div class="uk-clearfix"></div>';
            }
            
          }


Zu erwähnen ist noch, dass die Threads, aus denen die Bilder angezeigt werden, so eine Art Sammelthreads sind bzw. der erste Beitrag. In meinem Forum erstellen wir für die eigenen Bilder einen Thread, wo man den ersten Beitrag immer bearbeitet sprich das aktuellste Bild einfügt. Entweder per <img>-Befehl oder mit dem MediaManager.
Im Januar läuft im Forum eine Art Challenge, wo über den Monat jeden Tag ein neues Bild in diesen Thread bzw. Beitrag eingefügt wird.
Zu Beginn des Monats funktionierte meine Anpassung für alle 25 Threads, die in der Automatik-Box angezeigt wurden.

Jetzt, wo die Threads im ersten Beitrag viele Bilder enthalten, wird das "zickig".
Gerade sind 17 von 25 "firstpics" sichtbar, bei den anderen, gerade zum Schluss der Liste, klappt es nicht.
Manchmal ist es aber auch zwischendurch so, dass es nicht klappt, obwohl die Threads alle gleich aufgebaut sind.

Ich hoffe, ich konnte es gut genug beschreiben und bin gespannt, ob du mir einen Tipp geben kannst.
Ich danke dir jetzt schon und viele Grüße,
Mimi
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 36
Homepage: cback.net
Beiträge: 17565
Dabei seit: 12 / 2003
Betreff:

Re: Firstpic im CBACK Portal

 · 
Gepostet: 02.02.2022 - 11:34 Uhr  ·  #4
Hallo Mimi,

Zitat
tja, hätt ich die Anpassung mal bei dir in Auftrag gegeben.
Dann hättest Du bei Problemen natürlich die volle Funktionsgarantie, aber so habe ich das natürlich auch nicht gemeint. Ich freue mich sogar, wenn sich Leute selbst an Plugins und Modifikationen herantrauen! Davon lebt ja letztlich die Plattform. Nur muss ich natürlich dann darauf hinweisen, dass individuelle Codehilfe natürlich leider kein Teil des Supportpaketes ist und daher meine Hilfestellung nicht wie gewohnt die Komplettlösung sein kann und ich höchstens ein paar Tipps als Anregung geben kann. Man muss sich in Fremdcode ja ansonsten erst einmal einlesen, etwas ggf. nachstellen, testen, etc. - je nach Umfang geht da schnell eine Stunde oder deutlich mehr drauf, das könnte man dann natürlich in einem Pauschalpaket so nicht für jeden halten (ist daher im Grunde bei jedem Hersteller so). Also das praktisch nur so ein Hinweis nebenher gewesen. Natürlich hast Du dann trotzdem noch Möglichkeiten, wenn Du weitere Unterstützung bei Eigenentwicklungen benötigst: Entweder ich schaue mir das „vor Ort“ an und teste und man rechnet dann die Arbeitszeit ab, oder Du fragst hier im „Developer-Talk“, ob ein anderer Entwickler eine Idee hat. Oder in einem Forum für PHP Programmierung, wobei die zum Testen auch mindestens sich das Problem bzw. die Auswirkungen in Deinem Forum ansehen müssten.


Aber vielleicht helfen Dir meine Anhaltspunkte ja auch schon weiter, die kann ich Dir natürlich gerne mal geben:
Ich habe jetzt mal in einem Testforum ein blankes Portal und einen blanken MediaManager in aktueller Version installiert und dabei festgestellt, dass normal mit dem MediaManager gepostete Bilder ohnehin schon mit dem Originalcode als „erstes Bild“ in der Automatikbox gezeigt werden. Mit komplexem Code (z.B. MediaManager Galerie) sieht das dann ggf. anders aus, aber zumindest ist die Bildanzeige im Original auch schon automatisch auf den MediaManager ausgeweitet und sollte direkt funktionieren.

Ich hätte also für Dein Problem nur folgende Ideen/Hinweise:

Hinweis 1:
Versuche einmal den Originalcode zu verwenden, ändere allerdings nur das reguläre preg_match:
Code
preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $res['post_text'], $matches);


auf folgendes um:
Code
preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/ism', $res['post_text'], $matches);


damit würdest Du Codekonstellationen um Carrier-Returns und Multiline abdecken und vielleicht wird dann auch im Galerie-Modus ein Bild vom MM mit ausgelesen.



Hinweis 2:
Beachte, dass der Code sich auf gekürzte Automatik Boxen bezieht:
Code
if($boxinfo['bshorten']>0) 

Achte also im ACP darauf, dass Du bei "Text kürzen nach x Zeichen" eine Zahl größer 0 eingetragen hast, sonst wird die Codepassage komplett übersprungen.


Hinweis 3:
In dem von Dir hinzugefügten preg_match erkennst Du Links und zwar nur, wenn sie das Format .jpg haben:
Code
preg_match('/<a.+href="(?P<upl>.+?\.jpg)".*>/', $res['post_text'], $matches);


Eventuell werden hier also auch "normale" Links (also a, nicht img) mal fälschlich erkannt oder eher Bilder anderer Formate (.gif, .png) nicht aufgenommen, da Du es ja auf .jpg beschränkt hast. Eventuell musst Du hier also als Identifikator den Pfad zum MM Ordner mit aufnehmen (und später wieder anhängen, wenn es nicht Teil vom Matching ist) oder eben noch auf .png und .gif erweitern (Links zu einem Bild, unabhängig ob MM oder nicht, vermutlich ist das sogar die Ursache).

Einen Hinweis kann Dir hier immer ein Blick in die Quelltext Ausgabe einer fehlerhaften Seite sein, was hier (oder was nicht) als Link in den Quelltext für ein Bild ausgegeben wird. Wenn kein "falsches Bild" kommt (irgend ein anderer Link wurde erkannt, der aber kein Bild ist), dann schätze ich, dass die Fehlenden Bilder viellelicht ein png oder jpeg oder gif waren und daher aktuell durch Dein Erkennungsraster fallen. Mit einer Anpassung Deines Matchers sollte das dann behoben sein. Auch kannst Du bei Deinem matching hinten auch den Modus /ism verwenden, das ignoriert groß/kleinschreibung (.JPG, .jPg, .PnG, ...), dehnt sich auf mehrere Zeilen aus (multiline) und stolpert nicht über \n's und \r's. :)

So könnte das also eventuell mit Deinem geänderten matcher dann schon besser funktionieren im Falle von MM-Galerien, die nicht in die normale Bilderkennung fallen:
Code
preg_match('/<a.+href="(?P<upl>.+?\.(jpg|jpeg|png|gif))".*>/ism', $res['post_text'], $matches);

ist aber jetzt ungetestet, eventuell musst bissel nachfeilen.


Hoffe die schnellen Tipps helfen Dir!

Viele Grüße,
Chris
Mimi
Benutzer
Avatar
Geschlecht:
Alter: 38
Beiträge: 89
Dabei seit: 05 / 2017
Betreff:

Re: Firstpic im CBACK Portal

 · 
Gepostet: 03.02.2022 - 11:15 Uhr  ·  #5
Hi Chris,

vielen Dank für deine Tipps!
Ich weiß dies sehr zu schätzen, gerade weil es kein Support-Fall ist.

Ich bin sie einzeln durchgegangen und war dankbar, dass ich bei Tipp 2 direkt einen Haken dran machen konnte 8-)
(Ich denke aber, dass ich sonst gar keine Bilder gesehen hätte.)

Ich habe deinen ersten und dritten Tipp umgesetzt.
Wenn ich jedoch nur "dein" preg_match im Quellcode lasse, dann fehlen im Portal einige Bilder.
Somit bin ich zwingend auf mein zusätzliches preg_match angewiesen.
Ich habe es aber nun statt in den else-Zweig in ein eigenes if-Statement gepackt.
Irgendwie ist das sauberer für mich.
Code
if(empty($firstpic))
            {            
              preg_match('/<a.+href="(?P<upl>.+?\.(jpg|jpeg|png|gif))".*>/ism', $res['post_text'], $matches);
                            
              if(isset($matches['upl'])&&!empty($matches['upl']))
              {
                $firstpic = $matches['upl'];
              }
            }


Dennoch hab ich weiterhin das Problem, dass die Anzeige "zickig" ist und ich kann es mir nicht wirklich erklären.
Es sind immer die Threads zum Ende der Liste.
Wenn ich 20 anzeige, klappt es oft komplett.
Bei 25 sind meist 3-4 ohne Bild.
Stell ich es auf 40 werden knapp 1/3 ohne Bild angezeigt.
Und dabei sind die Bilder so eingebunden, dass entweder dein oder mein preg_match sie finden sollten... :-/
Es scheint fast so, als hätte das Portal zum Ende "keinen Bock mehr" die vielen Bilder zu verarbeiten....
Zumal: wenn der Thread durch einen aktuellen Kommentar weiter nach oben in die Liste rutscht, dann klappt es bei diesem und ein anderer weiter unten in der Liste ist dann ohne Bild...

Aktuell hab ich 20 eingestellt und damit funktioniert es (vorerst).
Ich überlege, ob ich das nun eine Weile beobachte, jetzt wo der Januar rum ist und somit auch unsere Challenge im Forum.

Sollte es mich weiterhin anhaltend zanken, dann meld ich mich bei dir für eine "individuelle Codehilfe" ;-)
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 36
Homepage: cback.net
Beiträge: 17565
Dabei seit: 12 / 2003
Betreff:

Re: Firstpic im CBACK Portal

 · 
Gepostet: 03.02.2022 - 13:34 Uhr  ·  #6
Hallo Mimi,

sehr gerne! Ich freue mich auch, wenn ich zumindest ein paar grobe Tipps geben kann, muss dann natürlich nur immer darauf hinweisen, dass wir uns in solchen Fällen dann natürlich in den "ungetesteten" Galaxien bewegen. ;)


Schade, dass Dein Problem durch die Tipps noch nicht gelöst werden konnte.

Das Dein zusätzlicher preg notwendig ist kommt vermutlich daher, weil Ihr den Thumb-Modus verwendet oder? Der baut die Vorschau-Kästchen ja ein wenig anders auf, nicht nur mit dem klassischen "img"-Tag, also ist dann das zusätzliche von Dir definitiv absolut korrekt und wird dann benötigt.

Warum jedoch die Schleife irgendwann "keine Lust" mehr hat ist wirklich mysteriös.
Idee wäre noch gewesen, dass das $firstpic dann in dem Fall ja schon gefüllt wurde und Du müsstest es nochmal explizit leer machen, aber die Variable wird innerhalb der Schleife ja eigentlich auch von sich aus schon zurückgesetzt und theoretisch wäre der Effekt dann eher, dass Du immer wieder das selbe Bild hast aber nicht, dass plötzlich gar keins mehr da ist.

Du kannst natürlich zur Sicherheit trotzdem versuchen nach Verwendung des erkannten $firstpic dieses direkt danach nochmal zu resetten ($firstpic = '';). Vielleicht springt da doch ein "empty" nicht an als Bedingung. Also direkt eine Zeile, nachdem er das Vorschaubild an den post_text hängt das $firstpic zurücksetzen.

Auch zu beachten: Der Standard-Code enthält ja die CSS Anweisung "float", vielleicht fließen Dir zu viele Bilder einfach nur irgendwo hin? Eventuell auch mal das float:left rausmachen und schauen, wie linear gelistete Bilder sich verhalten in Deiner Box, um eventuelle Probleme mit einem ungesehenen overflow auszuschließen. Es kommt zwar danach immer ein clearfix, welcher das normal verhindert, aber ich rate gerade mal bei allen eventualitäten rum. ;)

Ansonsten könnte ich mir nur erklären, dass da noch etwas anderes matched, was dann kein Bild ist und das hier und da in Ausgaben landet. Ich würde mich jetzt aber auch wundern, mit dem Festnageln auf die Dateiendungen.


Dann hätte ich aber leider keine andere Idee mehr, da müsste man wirklich vor Ort bei Dir im Forum schauen und debuggen, was da genau in dem Code schiefläuft und wie der entsprechende Effekt ist. Melde Dich gerne, falls Du da individuelle Unterstützung brauchst, ich schätze mal viel Zeit fiele da auch nicht an, aber man müsste es in diesem Fall "im Betrieb" wirklich mal sehen, wenn der Fehler entstanden ist und was in dem Moment in allen beteiligten Variablen so an Werten drinsteckt.

Viele Grüße,
Chris
Mimi
Benutzer
Avatar
Geschlecht:
Alter: 38
Beiträge: 89
Dabei seit: 05 / 2017
Betreff:

Re: Firstpic im CBACK Portal

 · 
Gepostet: 07.02.2022 - 12:21 Uhr  ·  #7
Hi Chris!

Nachdem ich am Wochenende meinem Kopf eine Pause von diesem Thema gegönnt habe, habe ich heute noch einmal deine weiteren Hinweise ausprobiert.

Mit beiden Sachen (firstpic noch mal zusätzlich leeren sowie float:left entfernen) habe ich jedoch das immer noch komische Verhalten: bei 20 Bildern klappt es, bei 30 werden 26 von 30 Bildern angezeigt.

Tja, um das Mysterium zu lösen bleibt wohl nur direkt live im System schauen und debuggen.
Ich frag mich gerade, ob ich den "Juckreiz im Gehirn" aushalte oder ob ich dich beauftragen muss ;-)
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 36
Homepage: cback.net
Beiträge: 17565
Dabei seit: 12 / 2003
Betreff:

Re: Firstpic im CBACK Portal

 · 
Gepostet: 07.02.2022 - 12:30 Uhr  ·  #8
Hi Mimi,

okay dann bin ich so "Remote" leider leer mit den Tipps. :)

Ob Du den Juckreiz aushälst oder nicht kann ich Dir natürlich auch nicht sagen, aber falls Du ihn nicht aushälst weißt Du ja, wie Du mich per Mail oder PM erreichen kannst, dann sprechen wir das gerne ab. :)

Viele Grüße,
Chris
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.