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
|