Beiträge: 760
Themen: 106
Registriert seit: 23.08.2007
MyBB-Version: 1.6
13.10.2010, 10:09
(Dieser Beitrag wurde zuletzt bearbeitet: 13.10.2010, 10:14 von Plexxart.)
Hallo Forum
Jetzt gibts ja in der 1.6 Version die Möglichkeit vor dem Betreff ein Präfix zu setzen und dieses habe ich in meinem Forum auch bei einigen Foren aktiviert.
Leider ists so, daß die User die Präfixauswahl manchmal vergessen oder einfach nicht mitbekommen, daß so eine Auswahl überhaupt möglich ist.
Jetzt habe ich ein Thema dazu in MyBBCooder dazu gelesen, welches den User bei nichtsetzen des Präfixes dazu auffordert dieses auszuwählen andernfalls wird der Beitrag nicht abgespeichert.
https://www.mybb.de/forum/thread-22788.html
Leider hat dies wie das Thema auch zeigt, bei mir nicht optimal funktioniert.
Da ich das aber schon gerne hätte frage ich hier nochmals nach, obs eine Möglichkeit gibt dies mittels Code zu ändern.
Danke schon mal für eure Antworten.
Beiträge: 760
Themen: 106
Registriert seit: 23.08.2007
MyBB-Version: 1.6
Hat denn keiner eine Idee von euch ? Oder ist die Scriptänderung zu umfangreich es einfach umzusetzen ?
Beiträge: 35
Themen: 2
Registriert seit: 17.10.2010
MyBB-Version: 1.6
21.10.2010, 08:52
(Dieser Beitrag wurde zuletzt bearbeitet: 21.10.2010, 08:53 von Mithrandir.)
Eine Idee, die ich noch überhaupt nicht getestet habe und kein Code, sondern nur der prinzipielle Ablauf:
Code: if(!$prefix || $prefix < 1)
{
$prefix = 0;
}
wurde anscheinend in
Code: if(!$prefix || $prefix < 1)
{
$this->set_error("missing_prefix");
}
geändert.
Frage vor dem set_error noch die Forenid ab (geht vermutlich mit $post['fid']) und definiere ein Array der Foren mit zu setzenden Präfix. Schaue nach, ob das aktuell benutzte Forum in dem Array steht, wenn ja, verwende set_error, wenn nein $prefix=0
Das hardcodierte Arrray ist natürlich nicht so schön und müsste immer wieder angepasst werden, sobald du die Präfixzuordnung änderst.
MfG,
Mithrandir
MyBB 1.6 im Intranet unter Ubuntu 10.04.1 Server
Beiträge: 760
Themen: 106
Registriert seit: 23.08.2007
MyBB-Version: 1.6
(21.10.2010, 08:52)Mithrandir schrieb: Frage vor dem set_error noch die Forenid ab (geht vermutlich mit $post['fid']) und definiere ein Array der Foren mit zu setzenden Präfix. Schaue nach, ob das aktuell benutzte Forum in dem Array steht, wenn ja, verwende set_error, wenn nein $prefix=0
Das hardcodierte Arrray ist natürlich nicht so schön und müsste immer wieder angepasst werden, sobald du die Präfixzuordnung änderst.
Danke dir für deine Hilfe, nur bin ich in php eher eine Null, somit ists mir nicht möglich den Code selbst zu erstellen.
Mfg
Walter
Beiträge: 1.939
Themen: 18
Registriert seit: 30.06.2007
MyBB-Version: 1.6.6
21.10.2010, 12:40
(Dieser Beitrag wurde zuletzt bearbeitet: 21.10.2010, 12:47 von linwinman.)
Hallo Walter,
versuche es einmal mit folgendem Code:
ersetze in Datei ".../inc/datahandlers/post.php"
PHP-Code: /** * Verify thread prefix. * * @return boolean True when valid, false when not valid. */ function verify_prefix() { $prefix = &$this->data['prefix']; // If a valid prefix isn't supplied, don't assign one. if(!$prefix || $prefix < 1) { $prefix = 0; } return true; }
durch
PHP-Code: /** * Verify thread prefix. * * @return boolean True when valid, false when not valid. */ function verify_prefix() { $prefix_forums = array("X", "Y"); $fid = &$this->data['fid']; $prefix = &$this->data['prefix']; // prefix is mandatory in specific forums if((!$prefix || $prefix < 1) && in_array($fid, $prefix_forums)) { $this->set_error("missing_prefix"); return false; } return true; }
- das Array "$prefix_forums" kannst du beliebig erweitern; ersetze dabei "X" und "Y" durch deine Foren-IDs.
Beiträge: 35
Themen: 2
Registriert seit: 17.10.2010
MyBB-Version: 1.6
21.10.2010, 13:12
(Dieser Beitrag wurde zuletzt bearbeitet: 21.10.2010, 13:29 von Mithrandir.)
mir gefiel ja mein Vorschlag mit dem Array nicht, deshalb ein Versuch, der die Datenbank auswertet - sprich die zugewiesenen Präfixe+Foren werden mit SQL ermittelt:
Code: function verify_prefix()
{
global $mybb, $db;
$post = &$this->data;
$prefix = &$this->data['prefix'];
// If a valid prefix isn't supplied, don't assign one.
if(!$prefix || $prefix < 1)
{
$query = $db->simple_select("threadprefixes", "COUNT(prefix) AS prefixcount", "forums='-1' OR ".$post['fid']." IN(forums)");
$prefixinthisforum = $db->fetch_field($query, "prefixcount");
if ($prefixinthisforum==0)
{
$prefix = 0;
} else {
$this->set_error("missing_prefix");
}
}
return true;
}
Erklärung zum Kriterium:
"forums='-1' OR ".$post['fid']." IN(forums)"
Präfixe, die allen Foren zugewiesen sind, erhalten -1 im Feld "forums". Somit gehe ich davon aus, dass die Präfixauswahl auch in jedem Forum nötig ist. Das Kriterium könnte also um den Filter verringert werden, wenn man nur kontrollieren will, ob eines der direkt zugewiesenen Präfixe gewählt wurde. Hm - ist das verständlich?
Ansonsten stehen die Foren-IDs durch Komma getrennt im Feld "forums" - das wird mit dem IN abgefragt. Es kommt also z.B. so etwas zustande: "2 in (forums)", wenn man im Forum 2 postet.
MfG,
Mithrandir
MyBB 1.6 im Intranet unter Ubuntu 10.04.1 Server
Beiträge: 760
Themen: 106
Registriert seit: 23.08.2007
MyBB-Version: 1.6
Servus
Ich danke euch beiden recht herzlich für die Lösungsvorschläge wobei ich gleich mal Linwinmans Vorschlag umgesetzt habe.
Vielleicht könnte man auch eine Verbesserung in den neuen Versionen von Mybb übernehmen, daß man aussuchen kann in welchen Foren die Auswahl der Präfixe zwingend ist.
Ist das eine gute Idee ?
Ich habe dann noch in der
.../inc/languages/deutsch_du/datahandler_post.lang.php
ein neues error handling angelegt
$l['postdata_missing_prefix'] = 'Prefix fehlt. Blaa Blubb.';
Danke nochmals !
Mfg
Walter
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
IN (forums) funktioniert wahrscheinlich nicht...
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 35
Themen: 2
Registriert seit: 17.10.2010
MyBB-Version: 1.6
@Stefan: ich hab's ausprobiert - bei mir funktioniert's. Du kannst es auch einfach mit phpmyadmin simulieren und eine Abfrage wie
select count(*) From mybb_threadprefixes where 2 in(forums)
abschicken (2 ist natürlich ein Beispiel).
MfG,
Mithrandir
MyBB 1.6 im Intranet unter Ubuntu 10.04.1 Server
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Ich habe es ausprobiert, es funktioniert nicht, wenn ein Präfix in mehreren Foren verwendet wird.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
|