Pagina 1 din 1

Reason for edit

Scris: 07-Ian-2008, 22:44:09
de Vally007
Cum fac ca acest camp care apare in momentul in care un moderatorul editeaza un mesaj al unui utilizator, sa nu fie optional, ci OBLIGATORIU? Va rog frumos ca ma intereseaza in mod deosebit.

Multumesc frumos.

Scris: 08-Ian-2008, 01:36:14
de axn
Deschide message_parser.php din includes, si cauta:
global $config, $auth, $user, $phpbb_root_path, $phpEx, $db;
Dupa asta, adaugi:
if ((empty($_POST['edit_reason'])) && $auth->acl_get('m_'))
{
$this->warn_msg[] = 'Trebuie sa specificati motivul editarii!';
}

Daca tu esti administratorul principal, (cel creat odata cu instalarea forumului) trebuie sa iti dai remove din grupul global moderators, sau din alte parti de unde esti moderator, altfel iti va cere si tie sa completezi acel camp. M-am enervat si eu o jumatate de ora, ca nu imi dadeam seama ce nu am facut bine, si de ce imi cere si mie ca admin sa completez ala.. :-)

Scris: 08-Ian-2008, 10:43:37
de Vally007
Mulţumesc mult de tot. Merge PERFECT.

Cu stimă,

Scris: 09-Ian-2008, 12:38:11
de Vally007
Din păcate revin cu o problemă. Se pare că nu totul merge perfect. Am făcut nişte teste de pe un cont de moderator şi tot nu îi cere să specifice motivul. Ar putea fi o problemă faptul că user-ul respectiv nu este în grupul Global Moderators, ci doar într-un grup creat de mine care are drepturi de moderare doar pe anumite forumuri?

Mulţumesc încă odată pentru ajutor.

Cu stimă,

Scris: 09-Ian-2008, 17:57:58
de axn
Scuze, nu am fost foarte atent atunci, si m-am cam grabit.
Am gasit si alte erori, pe care le-am rezolvat azi.
Am facut mai multe teste cu noul cod scris azi, si pana acum totul a fost bine. Campul va fi obligatoriu in cazul in care un moderator editeaza mesajul altcuiva. Daca moderatorul isi editeaza propriul mesaj, acesta nu va fi obligatoriu, deoarece este posibil sa il editeze la cateva secunde dupa ce l-a trimis, moment in care, dupa cum am vazut, campul respectiv nu apare pentru a fi completat, prin urmare nu putem sa ii cerem sa il completeze.

Scoaterea din grupul de moderatori a adminului iarasi nu merge, pt. ca atunci adminul nu mai poate modera forumul. Nu este ca la phpbb2 unde chiar daca nu ti-ai setat permisiuni de moderator, tot poti sa moderezi forumul daca ai permisiuni de administrator.
Inainte sa modifici, fa un backup la message_parser.php, pt. orice eventualitate.
Tot ce e mai jos, va incepe de sub:
global $config, $auth, $user, $phpbb_root_path, $phpEx, $db;
inlocuind vechiul cod.

Cod: Selectaţi tot

$cerereSQL = 'SELECT `poster_id`
FROM ' . POSTS_TABLE . ' WHERE `post_id`="'.$_GET['p'].'"';
$result = $db->sql_query($cerereSQL);
$rezultat = $db->sql_fetchrow($result);

if ((empty($_POST['edit_reason'])) && $auth->acl_getf('m_') && ($_GET['mode'] == 'edit') && ($user->data['user_id'] != $rezultat['poster_id']) || $auth->acl_get('m_'))
{
          if($auth->acl_get('a_')) {
          echo '';
          } else {
          $this->warn_msg[] = 'Trebuie sa specificati motivul editarii!'; }
}
Aici am mai facut o interogare sql, deoarece nu am vazut alta metoda de a verifica cine este cel care editeaza mesajul, mai exact daca e vorba de acelasi utilizator care l-a postat.
Nu uita sa faci backup. Pana acum la mine totul a mers ok. Daca mai apar alte erori, revin-o cu problema, si voi incerca sa gasesc solutia.
Succes.

Scris: 09-Ian-2008, 23:28:55
de Vally007
Da, se pare ca acesta merge bine.

Multumesc frumos pentru asistenta si promptitudine.

Toate cele bune,

Scris: 10-Ian-2008, 19:44:18
de Vally007
Si o alta problema... Merge bine la grupul creat de moderatori, si administratori, in sensul ca la moderatorii (din grupul separat) le cere sa specifice motivul, iar la administratori NU. Problema este acum la grupul Global moderators, care nu mai poate adauga nici un mesaj pe forum. Si la topicuri noi si la replay-uri le cere sa specifice motivul editarii, cu toate ca aceasta rubrica nu mai exista.

Cu stima,

Scris: 10-Ian-2008, 23:13:19
de axn
Am mai adaugat o regula conditiei, care sa corecteze eroarea.

Cod: Selectaţi tot

if ((empty($_POST['edit_reason'])) && $auth->acl_getf('m_') && ($_GET['mode'] == 'edit') && ($user->data['user_id'] != $rezultat['poster_id']) || $auth->acl_get('m_') && !$auth->acl_getf_global('m_'))
Vechiul cod incepand de la if ((empty... si pana la prima acolada {
poate fi inlocuit cu acesta. Singura modificare e cea de la urma cu !$auth->acl_getf_global('m_')

Scris: 11-Ian-2008, 11:32:10
de Vally007
S-a rezolvat cu adăugarea acelei opţiuni.

Mulţumesc mult.