Hallo, Gast! (Registrieren)

Letzte Ankündigung: Sicherheitsupdate: MyBB 1.8.26 veröffentlicht (10.03.21)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Reihenfolge der Hooks?
#11
Naja, Problem hierbei ist halt, dass ich keine Dateien verändern will, da man ja immer mal einplanen könnte, das Plugin zu veröffentlichen.. Oder so etwas in die Richtung.

Btw, gibt es eine Möglichkeit, herauszufinden ob man gerade einen "Anfangs-Post (Erster Post im Thread, also quasi der Thread selbst)" editiert? Ob man ein Thema erstellt ist ja ganz einfach mit der von frostschutz oben gesendeten Methode ausführbar, aber wie sieht das mit dem editieren aus?

MfG
Zitieren
#12
Evtl. gibts in einem der Edit-Hooks $thread['firstpost'] and $post['tid'] und wenn die gleich sind ists der erste.

Habe gerade keine Zeit/Lust das durchzuchecken, sorry. Viel Erfolg.
Zitieren
#13
@frostschutz
Vielen Dank Big Grin!
Probiere ich sofort aus, sobald ich die Parameter der Hooks herausgefunden habe xD - In der Doku stehen zwar die Namen, aber nicht die Parameter ._. ....
Zitieren
#14
Parameter haben die wenigsten. Meistens geht alles über die globalen Variablen.

Doku benutze ich nie. Ich baue mir wenn dann direkt in class_plugins :: run_hooks(_by_ref) ne Debugmeldung ein, die mir die Namen der aufgerufenen Hooks, ggf. auch Variablen anzeigt.

Ohne den Code zu lesen und ohne Debugmeldungen kann man nicht arbeiten. - was da drin steht, das kann man gar nicht dokumentieren Big Grin
Zitieren
#15
Oh, okay Big Grin.

Dann werde ich dass mit dem Debug auch mal versuchen Smile. Oder einfach $GLOBALS ausgeben xD

Vielen Dank nochmals ^^ Ich melde mich, falls ich was finde Smile

LG

EDIT: Hm, $GLOBALS enthält zwar die PID des Postes, aber sagt nicht ob es der erste Post in einem Thread ist :/ ...
Zitieren
#16
Zur Not müsstest du dann eben selbst get_thread($tid) aufrufen.
Zitieren
#17
Okay, versuche ich mal Smile

Und theoretisch.. ganz theoretisch.. Könnte man doch gucken, ob die Query

"SELECT * FROM {prefix}posts WHERE pid = '{$pid}' AND replyto = '0'" mehr als 0 Resultate zurückliefert... oder?
Zitieren
#18
Theoretisch. Ich würde mich auf replyto nicht verlassen. In der threads Tabelle gibts den firstpost Eintrag, der dafür da ist. Der kann zwar auch falsch sein - das macht dann aber alle möglichen Probleme. Normal ist meistens wenn mit Posts gearbeitet wird der Thread eh auch irgendwo vorhanden. Ansonsten halt get_thread oder sowas. Hab es mir jetzt nicht nochmal angeschaut, du bekommst es ja eh selber hin letztendlich Toungue
Zitieren
#19
*grins* Hoffentlich Big Grin! Auf jeden Fall vielen Dank für die Hilfe Smile!


Allerdings verstehe ich nicht so wirklich was get_thread in diesem Falle bringt; In der Cross Reference steht dies:
Code:
/**
4931   * Get the thread of a thread id.
4932   *
4933   * @param int The thread id of the thread.
4934   * @param boolean Whether or not to recache the thread.
4935   * @return string The database row of the thread.
4936   */
4937  function get_thread($tid, $recache = false)
4938  {
4939      global $db;
4940      static $thread_cache;
4941  
4942      if(isset($thread_cache[$tid]) && !$recache)
4943      {
4944          return $thread_cache[$tid];
4945      }
4946      else
4947      {
4948          $query = $db->simple_select("threads", "*", "tid='".intval($tid)."'");
4949          $thread = $db->fetch_array($query);
4950  
4951          if($thread)
4952          {
4953              $thread_cache[$tid] = $thread;
4954              return $thread;
4955          }
4956          else
4957          {
4958              $thread_cache[$tid] = false;
4959              return false;
4960          }
4961      }
4962  }

Das gibt einem dann ja nur all die Daten eines bestimmten Threades zurück; "tid fid subject prefix icon poll uid username dateline firstpost lastpost lastposter lastposteruid views replies closed sticky numratings totalratings notes visible unapprovedposts attachmentcount deletetime" - Aber aus welchen Daten kann ich nun entnehmen, ob die Post-ID die ich zZ editiere, ein Thread-Start-Post ist? Sorry falls ich mich etwas dümmlich anstelle Sad.. Ahh.. Ich glaub ich habs.. firstpost mit der PID vergleichen? Müsste dann nur noch nachgucken, ob die Thread-ID im $GLOBALS Array vorhanden ist. Oder ginge es vielleicht auch so: "SELECT * FROM prefix_threads WHERE firstpost = '$pid';" ? Wenn das Resultat dann mehr als 0 Spalten zürückliefert, sollte der Post ja theoretisch ein Startpost sein.. Oder liege ich wieder mal falsch Big Grin?
Zitieren
#20
Ja, pid == firstpost. Du willst da selber keine Datenbankabfrage machen, wenn eine MyBB-Funktion schon die entsprechenden Daten liefert. get_thread() ist schon richtig, wenn die Daten da schon gecached sind bekommst du das, ansonsten macht die Funktion die Abfrage für dich.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Was genau sind "Hooks"? itsmeJAY 1 696 05.02.2019, 10:18
Letzter Beitrag: bv64
  [geteilt] Reihenfolge der Hooks? Sense 6 1.814 15.12.2013, 14:46
Letzter Beitrag: Sense
  Hooks: Dokumentation, in welcher die mitgegebenen Argumente aufgelistet sind? Javatic 2 1.062 27.07.2013, 18:18
Letzter Beitrag: Javatic
  Hooks werden nicht immer ausgeführt! icarus 9 2.087 16.11.2011, 17:47
Letzter Beitrag: icarus