Jako administrator potrzebowałem więcej miejsca w skrzynce wiadomości prywatnych niż zwykli użytkownicy. Postanowiłem przerobić nieco plik 'messages.php'
Pojawił się jednak problem:
- Gdy zwykły user wysyła do mnie wiadomość, a w skrzynce mam więcej wiadomości niż jest to zadeklarowane globalnie (user_id=0) pojawia mu się komunikat, że mam przepełnioną skrzynkę.
Oto zmodyfikowany fragment messages.php:
<?php
/*---------------------------------------------------+
| PHP-Fusion 6 Content Management System
+----------------------------------------------------+
| Copyright © 2002 - 2006 Nick Jones
| http://www.php-fusion.co.uk/
+----------------------------------------------------+
| Released under the terms & conditions of v2 of the
| GNU General Public License. For details refer to
| the included gpl.txt file or visit http://gnu.org
+----------------------------------------------------*/
require_once "maincore.php";
require_once "subheader.php";
require_once "side_left.php";
include LOCALE.LOCALESET."messages.php";
if (!iMEMBER) fallback("index.php");
/* modyfikacja messages.php dla adminow i s-adminow */
if ($userdata['user_level'] == '103' OR $userdata['user_level'] == '102') //sprawdzanie uprawnien administracyjnych
{
$msg_settings = dbarray(dbquery("SELECT * FROM ".$db_prefix."messages_options WHERE user_id='".$userdata['user_id']."'"));
//pobieranie osobnych ustawien PM administratora
}
else { //jesli zwykly uzytkownik to wczytaj standardowe
/* koniec modyfikacji */
$msg_settings = dbarray(dbquery("SELECT * FROM ".$db_prefix."messages_options WHERE user_id='0'"));
}
...
//Modyfikacja działa na zasadzie, że sprawdza, czy użytkownik to administrator.
Jeżeli TAK to:
- wczytuje ustawienia limitów PM od aktualnego użytkownika (admina)
W przeciwnym wypadku:
- czyta globalne ustawienia od 'user_id = 0'
Prosiłbym o pomoc związaną z tym komunikatem o przepełnieniu skrzynki.
Próbowałem sam, ale wyszło na to, że użytkownik miał pełną skrzynkę PM, a ja mogłem mu jeszcze wysłać wiadomość. :@
=====
AKTUALIZACJA:
Poradziłem sobie sam :)
Przeróbka messages.php (początek pliku):
<?php
/*---------------------------------------------------+
| PHP-Fusion 6 Content Management System
+----------------------------------------------------+
| Copyright © 2002 - 2006 Nick Jones
| http://www.php-fusion.co.uk/
+----------------------------------------------------+
| Released under the terms & conditions of v2 of the
| GNU General Public License. For details refer to
| the included gpl.txt file or visit http://gnu.org
+----------------------------------------------------*/
require_once "maincore.php";
require_once "subheader.php";
require_once "side_left.php";
include LOCALE.LOCALESET."messages.php";
if (!iMEMBER) fallback("index.php");
/* modyfikacja messages.php dla adminow i s-adminow */
if ($userdata['user_level'] == '103' OR $userdata['user_level'] == '102') //sprawdzanie uprawnien administracyjnych
{
$msg_settings = dbarray(dbquery("SELECT * FROM ".$db_prefix."messages_options WHERE user_id='".$userdata['user_id']."'")); // 1,93,86,50
//pobieranie osobnych ustawien PM administratora
}
else { //jesli zwykly uzytkownik to ustaw. standardowe
/* koniec modyfikacji */
$msg_settings = dbarray(dbquery("SELECT * FROM ".$db_prefix."messages_options WHERE user_id='0'"));
}
Dalej, poniżej znaleźć kod:
$result = dbquery(
"SELECT u.user_id, u.user_name, u.user_email, mo.pm_email_notify, COUNT(message_id) as message_count FROM ".$db_prefix."users u
LEFT JOIN ".$db_prefix."messages_options mo USING(user_id)
LEFT JOIN ".$db_prefix."messages ON message_to=u.user_id AND message_folder='0'
WHERE u.user_id='".$msg_send."' GROUP BY u.user_id"
);
$data = dbarray($result);
if ($data['user_id'] != $userdata['user_id']) {
wstawić poniżej kod:
/* Poprawka błędu przepełnienia skrzynki przy modyfikacji limitów PM */
$user_lvl_check = dbarray(dbquery("SELECT user_level FROM ".$db_prefix."users WHERE user_id='".$data['user_id']."'")); //podstawianie pod zmienna levelu uprawnien adresata wiadomosci
if ($user_lvl_check['user_level'] > 101) { /* wybor ze wzgledu na uprawnienia adresata, czy podstawic ustawienia z ID globalnego, czy prywatne ustawienia wiadom. przychodzacych */
$right_id = $data['user_id'];
$msg_temp_limit = dbarray(dbquery("SELECT pm_inbox FROM ".$db_prefix."messages_options WHERE user_id='$right_id'"));
} else
{
$right_id = 0;
$msg_temp_limit = dbarray(dbquery("SELECT pm_inbox FROM ".$db_prefix."messages_options WHERE user_id='$right_id'"));
}
/* Koniec poprawki */
, a następnie poniżej zmienić:
if ($msg_settings['pm_inbox'] == "0" || ($data['message_count'] + 1) <= $msg_settings['pm_inbox']) {
na:
if ($msg_settings['pm_inbox'] == "0" || ($data['message_count'] + 1) <= $msg_temp_limit['pm_inbox']) {
Przeróbka settings_messages.php:
(tak, aby każdy administrator mógł sam dla siebie ustawiać limity)
Znaleźć kod:
dbquery("UPDATE ".$db_prefix."messages_options SET
pm_email_notify = '".$_POST['pm_email_notify']."',
pm_save_sent = '".$_POST['pm_save_sent']."',
pm_inbox = '".$_POST['pm_inbox']."',
pm_sentbox = '".$_POST['pm_sentbox']."',
pm_savebox = '".$_POST['pm_savebox']."'
WHERE user_id='0'"
);
poniżej w nowej linii dodać:
dbquery("UPDATE ".$db_prefix."messages_options SET
pm_inbox = '".$_POST['pm_inbox2']."',
pm_sentbox = '".$_POST['pm_sentbox2']."',
pm_savebox = '".$_POST['pm_savebox2']."'
WHERE user_id='".$userdata['user_id']."'"
);
Znaleźć kod:
$options = dbarray(dbquery("SELECT * FROM ".$db_prefix."messages_options WHERE user_id='0'"),0);
$pm_inbox = $options['pm_inbox'];
$pm_sentbox = $options['pm_sentbox'];
$pm_savebox = $options['pm_savebox'];
poniżej dodać:
$options2 = dbarray(dbquery("SELECT * FROM ".$db_prefix."messages_options WHERE user_id='".$userdata['user_id']."'"),0);
$pm_inbox2 = $options2['pm_inbox'];
$pm_sentbox2 = $options2['pm_sentbox'];
$pm_savebox2 = $options2['pm_savebox'];
Znaleźć kod:
<td align='center' colspan='2' class='tbl'><span class='small2'>".$locale['711']."</span></td>
</tr>
Poniżej dodać:
<tr><td class='tbl' align='center' colspan='2'><br></td></tr>
<tr>
<td class='tbl2' align='center' colspan='2'>Limit PW dla administratora: <b>".$userdata['user_name']."</b></td>
</tr>
<td class='tbl' width='50%'>".$locale['701']."<br><span class='small2'>".$locale['704']."</span></td>
<td class='tbl' width='50%'><input type='text' name='pm_inbox2' maxlength='4' class='textbox' style='width:40px;' value='".$pm_inbox2."'></td>
</tr>
<tr>
<td class='tbl' width='50%'>".$locale['702']."<br><span class='small2'>".$locale['704']."</span></td>
<td class='tbl' width='50%'><input type='text' name='pm_sentbox2' maxlength='4' class='textbox' style='width:40px;' value='".$pm_sentbox2."'></td>
</tr>
<tr>
<td class='tbl' width='50%'>".$locale['703']."<br><span class='small2'>".$locale['704']."</span></td>
<td class='tbl' width='50%'><input type='text' name='pm_savebox2' maxlength='4' class='textbox' style='width:40px;' value='".$pm_savebox2."'></td>
</tr>
Programistą nie jestem, ale teraz osobne limity PW dla administratorów działają jak należy.
PW od moderatora:
- Przeniesienie tematu - Pieka 17.03 - 22:19
Edytowane przez Domker_ dnia 18.03.2010 14:26:18
|