MyBB.de Forum
Reihenfolge der Hooks? - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Entwicklung (https://www.mybb.de/forum/forum-74.html)
+--- Thema: Reihenfolge der Hooks? (/thread-27799.html)

Seiten: Seiten: 1 2 3 4


RE: Reihenfolge der Hooks? - Javatic - 06.04.2013

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


RE: Reihenfolge der Hooks? - frostschutz - 06.04.2013

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.


RE: Reihenfolge der Hooks? - Javatic - 06.04.2013

@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 ._. ....


RE: Reihenfolge der Hooks? - frostschutz - 06.04.2013

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


RE: Reihenfolge der Hooks? - Javatic - 06.04.2013

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 :/ ...


RE: Reihenfolge der Hooks? - frostschutz - 06.04.2013

Zur Not müsstest du dann eben selbst get_thread($tid) aufrufen.


RE: Reihenfolge der Hooks? - Javatic - 06.04.2013

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?


RE: Reihenfolge der Hooks? - frostschutz - 07.04.2013

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


RE: Reihenfolge der Hooks? - Javatic - 07.04.2013

*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?


RE: Reihenfolge der Hooks? - frostschutz - 07.04.2013

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.