За последние 24 часа нас посетили 22672 программиста и 1122 робота. Сейчас ищут 658 программистов ...

DLE 9 отправить персональное сообщение на PHP

Тема в разделе "PHP для новичков", создана пользователем CeBePHb1Y, 27 апр 2011.

  1. CeBePHb1Y

    CeBePHb1Y Активный пользователь

    С нами с:
    27 апр 2011
    Сообщения:
    5
    Симпатии:
    0
    Помогите разобраться с кодом. Нужно отправить порсональное сообщение пользователю на сайте (движок DLE 9). вот файлик dle для сообщений:
    Код (Text):
    1. if( ! defined( 'DATALIFEENGINE' ) ) {
    2.     die( "Hacking attempt!" );
    3. }
    4.  
    5. require_once ENGINE_DIR . '/classes/parse.class.php';
    6.  
    7. $parse = new ParseFilter( );
    8. $parse->safe_mode = true;
    9. $parse->allow_url = $user_group[$member_id['user_group']]['allow_url'];
    10. $parse->allow_image = $user_group[$member_id['user_group']]['allow_image'];
    11.  
    12. $stop_pm = FALSE;
    13. if( isset( $_REQUEST['doaction'] ) ) $doaction = $_REQUEST['doaction'];
    14. else $doaction = "";
    15.  
    16. if( ! $is_logged or ! $user_group[$member_id['user_group']]['allow_pm'] ) {
    17.     msgbox( $lang['all_err_1'], $lang['pm_err_1'] );
    18.     $stop_pm = TRUE;
    19. }
    20.  
    21. if( $member_id['pm_all'] >= $user_group[$member_id['user_group']]['max_pm'] and ! $stop_pm ) {
    22.     msgbox( $lang['all_info'], $lang['pm_err_9'] );
    23. }
    24.  
    25.  
    26. if( $user_group[$member_id['user_group']]['max_pm_day'] AND ( isset( $_POST['send'] ) OR $doaction == "newpm" ) ) {
    27.  
    28.     $this_time = time() + ($config['date_adjust'] * 60) - 86400;
    29.     $db->query( "DELETE FROM " . PREFIX . "_sendlog WHERE date < '$this_time' AND flag='1'" );
    30.  
    31.     $row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_sendlog WHERE user = '{$member_id['name']}' AND flag='1'");
    32.  
    33.     if( $row['count'] >=  $user_group[$member_id['user_group']]['max_pm_day'] ) {
    34.  
    35.         msgbox( $lang['all_err_1'], str_replace('{max}', $user_group[$member_id['user_group']]['max_pm_day'], $lang['pm_err_10']) );
    36.         $stop_pm = TRUE;
    37.     }
    38. }
    39.  
    40. $tpl->load_template( 'pm.tpl' );
    41.  
    42. $tpl->set( '[inbox]', "<a href=\"$PHP_SELF?do=pm&amp;doaction=inbox\">" );
    43. $tpl->set( '[/inbox]', "</a>" );
    44. $tpl->set( '[outbox]', "<a href=\"$PHP_SELF?do=pm&amp;doaction=outbox\">" );
    45. $tpl->set( '[/outbox]', "</a>" );
    46. $tpl->set( '[new_pm]', "<a href=\"$PHP_SELF?do=pm&amp;doaction=newpm\">" );
    47. $tpl->set( '[/new_pm]', "</a>" );
    48.  
    49. $tpl->copy_template = "
    50.     <script language=\"javascript\" type=\"text/javascript\">
    51.     function confirmDelete(url){
    52.         DLEconfirm( '{$lang['pm_confirm']}', dle_confirm, function () {
    53.             document.location=url;
    54.         } );
    55.     }
    56.     </script>" . $tpl->copy_template;
    57.  
    58. if( isset( $_POST['send'] ) and ! $stop_pm ) {
    59.    
    60.     $name = $db->safesql( $parse->process( trim( $_POST['name'] ) ) );
    61.     $subj = $db->safesql( $parse->process( trim( $_POST['subj'] ) ) );
    62.    
    63.     $stop = "";
    64.  
    65.     $id_key = $_POST[$_SESSION['id_key']];         
    66.     if( $id_key == "" or $id_key != $dle_login_hash ) $stop .= "<li>ANTISPAM: User ID not valid</li>";
    67.     if (clean_url($_SERVER['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) $stop .= "<li>ANTISPAM: User ID not valid</li>";
    68.    
    69.     if( $config['allow_comments_wysiwyg'] != "yes" ) $comments = $db->safesql( $parse->BB_Parse( $parse->process( trim( $_POST['comments'] ) ), false ) );
    70.     else {
    71.         $parse->wysiwyg = true;
    72.        
    73.         if( strlen( $_POST['comments'] ) < 18 ) $_POST['comments'] = "";
    74.        
    75.         if( $user_group[$member_id['user_group']]['allow_url'] ) $parse->ParseFilter( Array ('div', 'a', 'span', 'p', 'br', 'strong', 'em', 'ul', 'li', 'ol' ), Array (), 0, 1 );
    76.         else $parse->ParseFilter( Array ('div', 'span', 'p', 'br', 'strong', 'em', 'ul', 'li', 'ol' ), Array (), 0, 1 );
    77.        
    78.         $comments = $db->safesql( $parse->BB_Parse( $parse->process( trim( $_POST['comments'] ) ) ) );
    79.     }
    80.    
    81.     if( empty( $name ) or empty( $subj ) or $comments == "" ) $stop .= $lang['pm_err_2'];
    82.    
    83.     if( dle_strlen( $subj, $config['charset'] ) > 250 ) {
    84.         $stop .= $lang['pm_err_3'];
    85.     }
    86.  
    87.     if( $parse->not_allowed_tags ) {
    88.        
    89.         $stop .= "<li>" .$lang['news_err_33']. "</li>";
    90.     }
    91.  
    92.     if( $parse->not_allowed_text ) {
    93.        
    94.         $stop .= "<li>" . $lang['news_err_37']. "</li>";
    95.     }
    96.    
    97.     if( $user_group[$member_id['user_group']]['captcha_pm'] and ($_REQUEST['sec_code'] != $_SESSION['sec_code_session'] or ! $_SESSION['sec_code_session']) ) {
    98.        
    99.         $stop .= "<li>" . $lang['news_err_30'] . "</li>";
    100.    
    101.     }
    102.    
    103.     $db->query( "SELECT email, name, user_id, pm_all, user_group FROM " . USERPREFIX . "_users where name = '$name'" );
    104.    
    105.     if( ! $db->num_rows() ) $stop .= $lang['pm_err_4'];
    106.    
    107.     $row = $db->get_row();
    108.     $db->free();
    109.    
    110.     if( $stop == "" and ($row['pm_all'] >= $user_group[$row['user_group']]['max_pm']) and $member_id['user_group'] != 1 ) {
    111.         $stop .= $lang['pm_err_8'];
    112.     }
    113.    
    114.     if( ! $stop ) {
    115.        
    116.         $_SESSION['sec_code_session'] = 0;
    117.        
    118.         $time = time() + ($config['date_adjust'] * 60);
    119.        
    120.         $db->query( "INSERT INTO " . USERPREFIX . "_pm (subj, text, user, user_from, date, pm_read, folder) values ('$subj', '$comments', '$row[user_id]', '$member_id[name]', '$time', 'no', 'inbox')" );
    121.        
    122.         $db->query( "UPDATE " . USERPREFIX . "_users set pm_all=pm_all+1, pm_unread=pm_unread+1  where user_id='$row[user_id]'" );
    123.        
    124.         if( intval( $_REQUEST['outboxcopy'] ) ) {
    125.            
    126.             $db->query( "INSERT INTO " . USERPREFIX . "_pm (subj, text, user, user_from, date, pm_read, folder) values ('$subj', '$comments', '$row[user_id]', '$member_id[name]', '$time', 'yes', 'outbox')" );
    127.             $db->query( "UPDATE " . USERPREFIX . "_users set pm_all=pm_all+1 where user_id='$member_id[user_id]'" );
    128.        
    129.         }
    130.        
    131.         $replyid = intval( $_GET['replyid'] );
    132.        
    133.         if( $replyid ) {
    134.            
    135.             $db->query( "UPDATE " . USERPREFIX . "_pm SET reply=1 WHERE id= '$replyid'" );
    136.        
    137.         }
    138.  
    139.         if( $user_group[$member_id['user_group']]['max_pm_day'] ) {
    140.  
    141.             $db->query( "INSERT INTO " . PREFIX . "_sendlog (user, date, flag) values ('{$member_id['name']}', '{$time}', '1')" );
    142.  
    143.         }
    144.        
    145.         if( $config['mail_pm'] ) {
    146.            
    147.             include_once ENGINE_DIR . '/classes/mail.class.php';
    148.             $mail = new dle_mail( $config );
    149.            
    150.             $mail_template = $db->super_query( "SELECT template FROM " . PREFIX . "_email WHERE name='pm' LIMIT 0,1" );
    151.            
    152.             $mail_template['template'] = stripslashes( $mail_template['template'] );
    153.             $mail_template['template'] = str_replace( "{%username%}", $row['name'], $mail_template['template'] );
    154.             $mail_template['template'] = str_replace( "{%date%}", langdate( "j F Y H:i", $_TIME ), $mail_template['template'] );
    155.             $mail_template['template'] = str_replace( "{%fromusername%}", $member_id['name'], $mail_template['template'] );
    156.             $mail_template['template'] = str_replace( "{%title%}", strip_tags( stripslashes( $subj ) ), $mail_template['template'] );
    157.            
    158.             $body = str_replace( '\n', "", $comments );
    159.             $body = str_replace( '\r', "", $body );
    160.            
    161.             $body = stripslashes( stripslashes( $body ) );
    162.             $body = str_replace( "<br />", "\n", $body );
    163.             $body = strip_tags( $body );
    164.            
    165.             $mail_template['template'] = str_replace( "{%text%}", $body, $mail_template['template'] );
    166.            
    167.             $mail->send( $row['email'], $lang['mail_pm'], $mail_template['template'] );
    168.        
    169.         }
    170.        
    171.         msgbox( $lang['all_info'], $lang['pm_sendok'] . " <a href=\"$PHP_SELF?do=pm&amp;doaction=newpm\">" . $lang['pm_noch'] . "</a> " . $lang['pm_or'] . " <a href=\"$PHP_SELF\">" . $lang['pm_main'] . "</a>" );
    172.         $stop_pm = TRUE;
    173.    
    174.     } else
    175.         msgbox( $lang['all_err_1'], "<ul>".$stop."</ul>" );
    176.  
    177. }
    178.  
    179. if( $doaction == "del" and ! $stop_pm ) {
    180.    
    181.     $delete_count = 0;
    182.    
    183.     if( $_REQUEST['dle_allow_hash'] == "" or $_REQUEST['dle_allow_hash'] != $dle_login_hash ) {
    184.        
    185.         die( "Hacking attempt! User ID not valid" );
    186.    
    187.     }
    188.    
    189.     if( $_GET['pmid'] ) {
    190.        
    191.         $pmid = intval( $_GET['pmid'] );
    192.         $row = $db->super_query( "SELECT id, user, user_from, pm_read, folder FROM " . USERPREFIX . "_pm where id= '$pmid'" );
    193.        
    194.         if( ($row['user'] == $member_id['user_id'] and $row['folder'] == "inbox") or ($row['user_from'] == $member_id['name'] and $row['folder'] == "outbox") ) {
    195.             $db->query( "DELETE FROM " . USERPREFIX . "_pm WHERE id='$row[id]'" );
    196.             $delete_count ++;
    197.            
    198.             if( $row['pm_read'] != "yes" ) {
    199.                 $db->query( "UPDATE " . USERPREFIX . "_users set pm_unread=pm_unread-1 where user_id='$member_id[user_id]'" );
    200.             }
    201.            
    202.             $db->query( "UPDATE " . USERPREFIX . "_users set pm_all=pm_all-1 where user_id='$member_id[user_id]'" );
    203.        
    204.         }
    205.    
    206.     } elseif( count( $_REQUEST['selected_pm'] ) ) {
    207.        
    208.         foreach ( $_REQUEST['selected_pm'] as $pmid ) {
    209.            
    210.             $pmid = intval( $pmid );
    211.             $row = $db->super_query( "SELECT id, user, user_from, pm_read, folder FROM " . USERPREFIX . "_pm where id= '$pmid'" );
    212.            
    213.             if( ($row['user'] == $member_id['user_id'] and $row['folder'] == "inbox") or ($row['user_from'] == $member_id['name'] and $row['folder'] == "outbox") ) {
    214.                 $db->query( "DELETE FROM " . USERPREFIX . "_pm WHERE id='$row[id]'" );
    215.                 $delete_count ++;
    216.                
    217.                 if( $row['pm_read'] != "yes" ) {
    218.                     $db->query( "UPDATE " . USERPREFIX . "_users set pm_unread=pm_unread-1 where user_id='$member_id[user_id]'" );
    219.                 }
    220.                
    221.                 $db->query( "UPDATE " . USERPREFIX . "_users set pm_all=pm_all-1 where user_id='$member_id[user_id]'" );
    222.            
    223.             }
    224.        
    225.         }
    226.     }
    227.    
    228.     if( $delete_count ) msgbox( $lang['all_info'], $lang['pm_delok'] . " <a href=\"$PHP_SELF?do=pm\">" . $lang['all_prev'] . "</a>." );
    229.     else msgbox( $lang['all_err_1'], $lang['pm_err_5'] );
    230.  
    231. } elseif( $doaction == "readpm" and ! $stop_pm ) {
    232.    
    233.     $pmid = intval( $_GET['pmid'] );
    234.    
    235.     $tpl->set( '[readpm]', "" );
    236.     $tpl->set( '[/readpm]', "" );
    237.     $tpl->set_block( "'\\[pmlist\\].*?\\[/pmlist\\]'si", "" );
    238.     $tpl->set_block( "'\\[newpm\\].*?\\[/newpm\\]'si", "" );
    239.    
    240.     $db->query( "SELECT id, subj, text, user, user_from, date, pm_read, news_num, comm_num, user_group, reg_date, signature, foto, fullname, land, icq, xfields FROM " . USERPREFIX . "_pm LEFT JOIN " . USERPREFIX . "_users ON " . USERPREFIX . "_pm.user_from=" . USERPREFIX . "_users.name WHERE " . USERPREFIX . "_pm.id= '$pmid'" );
    241.     $row = $db->get_row();
    242.    
    243.     if( $db->num_rows() < 1 ) {
    244.        
    245.         msgbox( $lang['all_err_1'], $lang['pm_err_6'] );
    246.         $stop_pm = TRUE;
    247.    
    248.     } elseif( $row['user'] != $member_id['user_id'] and $row['user_from'] != $member_id['name'] ) {
    249.        
    250.         msgbox( $lang['all_err_1'], $lang['pm_err_7'] );
    251.         $stop_pm = TRUE;
    252.    
    253.     } else {
    254.        
    255.         if( $row['user'] == $member_id['user_id'] and $row['pm_read'] != "yes" ) {
    256.            
    257.             $db->query( "UPDATE " . USERPREFIX . "_users set pm_unread=pm_unread-1  where user_id='$member_id[user_id]'" );
    258.            
    259.             $db->query( "UPDATE " . USERPREFIX . "_pm set pm_read='yes'  where id='$row[id]'" );
    260.        
    261.         }
    262.  
    263.         if( strpos( $tpl->copy_template, "[xfvalue_" ) !== false ) $xfound = true;
    264.         else $xfound = false;
    265.        
    266.         if( $xfound ) {
    267.  
    268.             $xfields = xfieldsload( true );
    269.  
    270.             $xfieldsdata = xfieldsdataload( $row['xfields'] );
    271.                
    272.             foreach ( $xfields as $value ) {
    273.                 $preg_safe_name = preg_quote( $value[0], "'" );
    274.                    
    275.                 if( $value[5] != 1 OR $member_id['user_group'] == 1 OR ($is_logged AND $member_id['name'] == $row['user_from']) ) {
    276.                     if( empty( $xfieldsdata[$value[0]] ) ) {
    277.                         $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
    278.                     } else {
    279.                         $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "\\1", $tpl->copy_template );
    280.                     }
    281.                     $tpl->copy_template = preg_replace( "'\\[xfvalue_{$preg_safe_name}\\]'i", stripslashes( $xfieldsdata[$value[0]] ), $tpl->copy_template );
    282.                 } else {
    283.                     $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
    284.                     $tpl->copy_template = preg_replace( "'\\[xfvalue_{$preg_safe_name}\\]'i", "", $tpl->copy_template );
    285.                 }
    286.             }
    287.         }
    288.        
    289.         $tpl->set( '{subj}', stripslashes( $row['subj'] ) );
    290.         $tpl->set( '{text}', stripslashes( $row['text'] ) );
    291.  
    292.         if( $row['signature'] and $user_group[$row['user_group']]['allow_signature'] ) {
    293.                
    294.             $tpl->set_block( "'\\[signature\\](.*?)\\[/signature\\]'si", "\\1" );
    295.             $tpl->set( '{signature}', stripslashes( $row['signature'] ) );
    296.            
    297.         } else {
    298.             $tpl->set_block( "'\\[signature\\](.*?)\\[/signature\\]'si", "" );
    299.         }
    300.  
    301.         if( $row['icq'] ) $tpl->set( '{icq}', stripslashes( $row['icq'] ) );
    302.         else $tpl->set( '{icq}', '--' );
    303.  
    304.         if( $user_group[$row['user_group']]['icon'] ) $tpl->set( '{group-icon}', "<img src=\"" . $user_group[$row['user_group']]['icon'] . "\" border=\"0\" alt=\"\" />" );
    305.         else $tpl->set( '{group-icon}', "" );
    306.  
    307.         $tpl->set( '{group-name}', $user_group[$row['user_group']]['group_prefix'].$user_group[$row['user_group']]['group_name'].$user_group[$row['user_group']]['group_suffix'] );
    308.  
    309.         $tpl->set( '{news-num}', intval( $row['news_num'] ) );
    310.         $tpl->set( '{comm-num}', intval( $row['comm_num'] ) );
    311.  
    312.         if( $row['foto'] ) $tpl->set( '{foto}', $config['http_home_url'] . "uploads/fotos/" . $row['foto'] );
    313.         else $tpl->set( '{foto}', "{THEME}/images/noavatar.png" );
    314.  
    315.         if( date( Ymd, $row['date'] ) == date( Ymd, $_TIME ) ) {
    316.                
    317.             $tpl->set( '{date}', $lang['time_heute'] . langdate( ", H:i", $row['date'] ) );
    318.            
    319.         } elseif( date( Ymd, $row['date'] ) == date( Ymd, ($_TIME - 86400) ) ) {
    320.                
    321.             $tpl->set( '{date}', $lang['time_gestern'] . langdate( ", H:i", $row['date'] ) );
    322.            
    323.         } else {
    324.                
    325.             $tpl->set( '{date}', langdate( $config['timestamp_comment'], $row['date'] ) );
    326.            
    327.         }
    328.  
    329.         if($row['reg_date'] ) $tpl->set( '{registration}', langdate( "j.m.Y", $row['reg_date'] ) );
    330.         else $tpl->set( '{registration}', '--' );
    331.  
    332.         if( $config['allow_alt_url'] == "yes" ) {
    333.            
    334.             $user_from = $config['http_home_url'] . "user/" . urlencode( $row['user_from'] ) . "/";
    335.             $user_from = "onclick=\"ShowProfile('" . urlencode( $row['user_from'] ) . "', '" . htmlspecialchars( $user_from ) . "'); return false;\"";
    336.             $tpl->set( '{author}', "<a {$user_from} class=\"pm_list\" href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['user_from'] ) . "/\">" . $row['user_from'] . "</a>");
    337.        
    338.         } else {
    339.            
    340.             $user_from = "$PHP_SELF?subaction=userinfo&amp;user=" . urlencode( $row['user_from'] );
    341.             $user_from = "onclick=\"ShowProfile('" . urlencode( $row['user_from'] ) . "', '" . htmlspecialchars( $user_from ) . "'); return false;\"";
    342.             $tpl->set( '{author}', "<a {$user_from} class=\"pm_list\" href=\"$PHP_SELF?subaction=userinfo&amp;user=" . urlencode( $row['user_from'] ) . "\">" . $row['user_from'] . "</a>");
    343.  
    344.         }
    345.        
    346.         $tpl->set( '[reply]', "<a href=\"" . $config['http_home_url'] . "index.php?do=pm&amp;doaction=newpm&amp;replyid=" . $row['id'] . "\">" );
    347.         $tpl->set( '[/reply]', "</a>" );
    348.        
    349.         $tpl->set( '[del]', "<a href=\"javascript:confirmDelete('" . $config['http_home_url'] . "index.php?do=pm&amp;doaction=del&amp;pmid=" . $row['id'] . "&amp;dle_allow_hash=" . $dle_login_hash . "')\">" );
    350.         $tpl->set( '[/del]', "</a>" );
    351.        
    352.         $tpl->compile( 'content' );
    353.         $tpl->clear();
    354.     }
    355.  
    356. } elseif( $doaction == "newpm" and ! $stop_pm ) {
    357.    
    358.     $ajax_form = <<<HTML
    359. <span id="dle-pm-preview"></span>
    360. <script language="javascript" type="text/javascript">
    361. <!--
    362. function dlePMPreview( ){
    363.  
    364.     var ajax = new dle_ajax();
    365.     var varsString = "";
    366.  
    367.     if (dle_wysiwyg == "yes") {
    368.         var pm_text = tinyMCE.get('comments').getContent();
    369.     } else {
    370.         var pm_text = document.getElementById('dle-comments-form').comments.value;
    371.     }
    372.  
    373.     if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || pm_text == '')
    374.     {
    375.         DLEalert('{$lang['comm_req_f']}', dle_info);return false
    376.  
    377.     }
    378.  
    379.     ajax.onShow ('');
    380.     ajax.setVar("text", ajax.encodeVAR(pm_text));
    381.     ajax.setVar("name", ajax.encodeVAR(document.getElementById('dle-comments-form').name.value));
    382.     ajax.setVar("subj", ajax.encodeVAR(document.getElementById('dle-comments-form').subj.value));
    383.     ajax.setVar("skin", dle_skin);
    384.     ajax.requestFile = dle_root + "engine/ajax/pm.php";
    385.     ajax.method = 'POST';
    386.     ajax.effect = 'blind';
    387.     ajax.element = 'dle-pm-preview';
    388.     ajax.sendAJAX(varsString);
    389. };
    390.  
    391. function reload () {
    392.  
    393.     var rndval = new Date().getTime();
    394.  
    395.     document.getElementById('dle-captcha').innerHTML = '<img src="{$path['path']}engine/modules/antibot.php?rndval=' + rndval + '" border="0" width="120" height="50" alt="" /><br /><a onclick="reload(); return false;" href="#">{$lang['reload_code']}</a>';
    396.  
    397. };
    398. //-->
    399. </script>
    400. HTML;
    401.    
    402.     $tpl->set( '[newpm]', $ajax_form );
    403.     $tpl->set( '[/newpm]', "" );
    404.     $tpl->set_block( "'\\[pmlist\\].*?\\[/pmlist\\]'si", "" );
    405.     $tpl->set_block( "'\\[readpm\\].*?\\[/readpm\\]'si", "" );
    406.    
    407.     if( $user_group[$member_id['user_group']]['captcha_pm'] ) {
    408.         $tpl->set( '[sec_code]', "" );
    409.         $tpl->set( '[/sec_code]', "" );
    410.         $path = parse_url( $config['http_home_url'] );
    411.         $tpl->set( '{sec_code}', "<span id=\"dle-captcha\"><img src=\"" . $path['path'] . "engine/modules/antibot.php\" alt=\"${lang['sec_image']}\" border=\"0\" alt=\"\" /><br /><a onclick=\"reload(); return false;\" href=\"#\">{$lang['reload_code']}</a></span>" );
    412.     } else {
    413.         $tpl->set( '{sec_code}', "" );
    414.         $tpl->set_block( "'\\[sec_code\\](.*?)\\[/sec_code\\]'si", "" );
    415.     }
    416.    
    417.     $replyid = intval( $_GET['replyid'] );
    418.     $user = intval( $_GET['user'] );
    419.     if( isset( $_REQUEST['username'] ) ) $username = $db->safesql( strip_tags( urldecode( $_GET['username'] ) ) );
    420.     else $username = '';
    421.  
    422.     $text = "";
    423.  
    424.     if( $replyid ) {
    425.         $row = $db->super_query( "SELECT * FROM " . USERPREFIX . "_pm where id= '$replyid'" );
    426.        
    427.         if( ($row['user'] != $member_id['user_id']) and ($row['user_from'] != $member_id['name']) ) {
    428.            
    429.             msgbox( $lang['all_err_1'], $lang['pm_err_7'] );
    430.             $stop_pm = TRUE;
    431.        
    432.         }
    433.        
    434.         if( $config['allow_comments_wysiwyg'] != "yes" ) {
    435.            
    436.             $text = $parse->decodeBBCodes( $row['text'], false );
    437.             $text = "[quote]" . $text . "[/quote]\n";
    438.        
    439.         } else {
    440.            
    441.             $text = $parse->decodeBBCodes( $row['text'], TRUE, $config['allow_comments_wysiwyg'] );
    442.             $text = "[quote]" . $text . "[/quote]<br />";
    443.         }
    444.        
    445.         $tpl->set( '{author}', $row['user_from'] );
    446.  
    447.         if (strpos ( $row['subj'], "RE:" ) === false)
    448.             $tpl->set( '{subj}', "RE: " . stripslashes( $row['subj'] ) );
    449.         else
    450.             $tpl->set( '{subj}', stripslashes( $row['subj'] ) );
    451.  
    452.         $row = $db->super_query( "SELECT pm_all, user_group FROM " . USERPREFIX . "_users WHERE name = '" . $db->safesql( $row['user_from'] ) . "'" );
    453.        
    454.         if( $row['pm_all'] >= $user_group[$row['user_group']]['max_pm'] and $member_id['user_group'] != 1 ) {
    455.             $stop_pm = true;
    456.         }
    457.    
    458.     } elseif( $user or $username != "" ) {
    459.        
    460.         if( $user ) $row = $db->super_query( "SELECT name, pm_all, user_group FROM " . USERPREFIX . "_users where user_id = '$user'" );
    461.         elseif( $username != "" ) $row = $db->super_query( "SELECT name, pm_all, user_group FROM " . USERPREFIX . "_users where name='$username'" );
    462.        
    463.         if( $row['pm_all'] >= $user_group[$row['user_group']]['max_pm'] and $member_id['user_group'] != 1 ) {
    464.             $stop_pm = true;
    465.         }
    466.        
    467.         $tpl->set( '{author}', $row['name'] );
    468.         $tpl->set( '{subj}', "" );
    469.    
    470.     } else {
    471.         $tpl->set( '{author}', "" );
    472.         $tpl->set( '{subj}', "" );
    473.    
    474.     }
    475.  
    476.     if( $config['allow_comments_wysiwyg'] == "yes" ) {
    477.        
    478.         include_once ENGINE_DIR . '/editor/comments.php';
    479.         $bb_code = "";
    480.         $allow_comments_ajax = true;
    481.     } else
    482.         include_once ENGINE_DIR . '/modules/bbcode.php';
    483.  
    484.     if( $config['allow_comments_wysiwyg'] == "yes" ) {
    485.        
    486.         $tpl->set( '{editor}', $wysiwyg );
    487.    
    488.     } else {
    489.         $tpl->set( '{editor}', $bb_code );
    490.     }
    491.  
    492.     $tpl->set( '{text}', $text );      
    493.  
    494.     $salt = "abchefghjkmnpqrstuvwxyz";
    495.     $random_key = "";
    496.            
    497.     for($i = 0; $i < 8; $i ++) {
    498.         $random_key .= $salt{rand( 0, 23 )};
    499.     }
    500.            
    501.     @session_register( 'id_key' );
    502.     $_SESSION['id_key'] = $random_key;
    503.            
    504.     $random_key = "<input name=\"{$random_key}\" type=\"hidden\" value=\"{$dle_login_hash}\" />";
    505.    
    506.     if( $config['allow_comments_wysiwyg'] == "yes" ) $tpl->copy_template = "<form  method=\"post\" name=\"dle-comments-form\" id=\"dle-comments-form\" onsubmit=\"document.getElementById('comments').value = tinyMCE.get('comments').getContent(); if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || document.getElementById('comments').value == ''){DLEalert('{$lang['comm_req_f']}', dle_info);return false}\" action=\"\">\n" . $tpl->copy_template . "{$random_key}<input name=\"send\" type=\"hidden\" value=\"send\" /></form>";
    507.     else $tpl->copy_template = "<form  method=\"post\" name=\"dle-comments-form\" id=\"dle-comments-form\" onsubmit=\"if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || document.getElementById('dle-comments-form').comments.value == ''){DLEalert('{$lang['comm_req_f']}', dle_info);return false}\" action=\"\">\n" . $tpl->copy_template . "{$random_key}<input name=\"send\" type=\"hidden\" value=\"send\" /></form>";
    508.    
    509.     if( ! $stop_pm ) {
    510.         $tpl->compile( 'content' );
    511.         $tpl->clear();
    512.     } else {
    513.         $tpl->clear();
    514.         if( ! $tpl->result['info'] ) msgbox( $lang['all_info'], $lang['pm_err_8'] );
    515.     }
    516.  
    517. } elseif( ! $stop_pm ) {
    518.    
    519.     $tpl->set( '[pmlist]', "" );
    520.     $tpl->set( '[/pmlist]', "" );
    521.     $tpl->set_block( "'\\[newpm\\].*?\\[/newpm\\]'si", "" );
    522.     $tpl->set_block( "'\\[readpm\\].*?\\[/readpm\\]'si", "" );
    523.    
    524.     if( $member_id['pm_unread'] < 0 ) {
    525.        
    526.         $db->query( "UPDATE " . USERPREFIX . "_users SET pm_unread='0' WHERE user_id='{$member_id['user_id']}'" );
    527.    
    528.     }
    529.    
    530.     $pmlist = <<<HTML
    531. <form action="$PHP_SELF?do=pm&doaction=del" method="post" name="pmlist">
    532. <input type="hidden" name="dle_allow_hash" value="{$dle_login_hash}" />
    533. HTML;
    534.    
    535.     if( $doaction == "outbox" ) {
    536.         $lang['pm_from'] = $lang['pm_to'];
    537.         $sql = "SELECT id, subj, name as user_from, date, pm_read FROM " . USERPREFIX . "_pm LEFT JOIN " . USERPREFIX . "_users ON " . USERPREFIX . "_pm.user=" . USERPREFIX . "_users.user_id WHERE user_from = '{$member_id['name']}' AND folder = 'outbox' order by date desc";
    538.     } else
    539.         $sql = "SELECT id, subj, user_from, date, pm_read, reply FROM " . USERPREFIX . "_pm where user = '{$member_id['user_id']}' AND folder = 'inbox' order by date desc";
    540.    
    541.     $pmlist .= "<table class=\"pm\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr><td width=\"20\">&nbsp;</td><td class=\"pm_head\">" . $lang['pm_subj'] . "</td><td width=\"150\" class=\"pm_head\">" . $lang['pm_from'] . "</td><td width=\"150\" class=\"pm_head\" align=\"center\">" . $lang['pm_date'] . "</td><td width=\"50\" class=\"pm_head\" align=\"center\"><input type=\"checkbox\" name=\"master_box\" title=\"{$lang['pm_selall']}\" onclick=\"javascript:ckeck_uncheck_all()\" /></td>";
    542.    
    543.     $db->query( $sql );
    544.     $i = 0;
    545.    
    546.     while ( $row = $db->get_row() ) {
    547.        
    548.         $i ++;
    549.        
    550.         if( $config['allow_alt_url'] == "yes" ) {
    551.            
    552.             $user_from = $config['http_home_url'] . "user/" . urlencode( $row['user_from'] ) . "/";
    553.             $user_from = "onclick=\"ShowProfile('" . urlencode( $row['user_from'] ) . "', '" . htmlspecialchars( $user_from ) . "'); return false;\"";
    554.             $user_from = "<a {$user_from} class=\"pm_list\" href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['user_from'] ) . "/\">" . $row['user_from'] . "</a>";
    555.        
    556.         } else {
    557.            
    558.             $user_from = "$PHP_SELF?subaction=userinfo&amp;user=" . urlencode( $row['user_from'] );
    559.             $user_from = "onclick=\"ShowProfile('" . urlencode( $row['user_from'] ) . "', '" . htmlspecialchars( $user_from ) . "'); return false;\"";
    560.             $user_from = "<a {$user_from} class=\"pm_list\" href=\"$PHP_SELF?subaction=userinfo&amp;user=" . urlencode( $row['user_from'] ) . "\">" . $row['user_from'] . "</a>";
    561.  
    562.         }
    563.        
    564.         if( $row['pm_read'] == "yes" ) {
    565.            
    566.             $subj = "<a class=\"pm_list\" href=\"$PHP_SELF?do=pm&amp;doaction=readpm&amp;pmid=" . $row['id'] . "\">" . stripslashes( $row['subj'] ) . "</a>";
    567.             $icon = "{THEME}/dleimages/read.gif";
    568.        
    569.         } else {
    570.            
    571.             $subj = "<a class=\"pm_list\" href=\"$PHP_SELF?do=pm&amp;doaction=readpm&amp;pmid=" . $row['id'] . "\"><b>" . stripslashes( $row['subj'] ) . "</b></a>";
    572.             $icon = "{THEME}/dleimages/unread.gif";
    573.        
    574.         }
    575.        
    576.         if( $row['reply'] ) $icon = "{THEME}/dleimages/send.gif";
    577.        
    578.         $pmlist .= "<tr><td><img src=\"{$icon}\" border=\"0\" alt=\"\" /></td><td class=\"pm_list\">{$subj}</td><td class=\"pm_list\">{$user_from}</td><td class=\"pm_list\" align=\"center\">" . langdate( "j.m.Y H:i", $row['date'] ) . "</td><td class=\"pm_list\" align=\"center\"><input name=\"selected_pm[]\" value=\"{$row['id']}\" type=\"checkbox\" /></td></tr>";
    579.    
    580.     }
    581.    
    582.     $db->free();
    583.    
    584.     $pmlist .= "<tr><td colspan=\"4\" align=\"right\"><input class=\"bbcodes\" type=\"submit\" value=\"{$lang['b_del']}\" /></td></tr></table></form>";
    585.    
    586.     if( $i ) $tpl->set( '{pmlist}', $pmlist );
    587.     else $tpl->set( '{pmlist}', $lang['no_message'] );
    588.    
    589.     $tpl->compile( 'content' );
    590.     $tpl->clear();
    591. }
    посмотрел его, но ничего не понял. нужно отправить так:
    Автор: такой-то
    Получатель: такой-то
    Тема:такая-то
    Сообщение:такое-то
    кто разбирается в php, посмотрите, где в коде это найти и как отправить.
     
  2. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    фу
    убери этот весь код , аж тошно

    PHP:
    1.  
    2. <?
    3. $subj="Тема письма";
    4.         $text="Текст письма";
    5.         $user="id юзера которому отсылаем. ";
    6.         $user_from="имя юзера от которого шлём.";
    7.         $date=time();
    8.         $pm_read="no";
    9.         $folder="inbox";
    10.         $reply="0";
    11.         $db->query( "INSERT INTO " . PREFIX . "_pm (subj,text,user,user_from,date,pm_read,folder,reply) VALUES ('$subj','$text','$user','$user_from','$date','$pm_read','$folder','$reply')" );
    12. ?>
     
  3. CeBePHb1Y

    CeBePHb1Y Активный пользователь

    С нами с:
    27 апр 2011
    Сообщения:
    5
    Симпатии:
    0
    siiXth, спасибо огромное! очень благодарен тебе!
     
  4. CeBePHb1Y

    CeBePHb1Y Активный пользователь

    С нами с:
    27 апр 2011
    Сообщения:
    5
    Симпатии:
    0
    а почему то в статистике не указываются пришедшие сообщения :( хотя сообщения приходят пользователю. как эту проблему решить?
     
  5. CeBePHb1Y

    CeBePHb1Y Активный пользователь

    С нами с:
    27 апр 2011
    Сообщения:
    5
    Симпатии:
    0
    а всё разобрался :)
     
  6. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ну да , вроде ещё апдейт профиля юзера надо сделать
     
  7. SX2

    SX2 Активный пользователь

    С нами с:
    24 июл 2012
    Сообщения:
    10
    Симпатии:
    0
    А как добавить несколько юзеров получателей id через запитую не катит !
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    в цикле прокрути
     
  9. SX2

    SX2 Активный пользователь

    С нами с:
    24 июл 2012
    Сообщения:
    10
    Симпатии:
    0
    А можно пример как прописать у меня сейчас так
    Код (Text):
    1. $subj="Тема письма";
    2. $text="Текст письма";
    3. $user="1 ";
    4. $user_from="admin";
    5. $date=time();
    6. $pm_read="no";
    7. $folder="inbox";
    8. $reply="0";
    9. $db->query( "INSERT INTO " . USERPREFIX . "_pm (subj,text,user,user_from,date,pm_read,folder,reply) VALUES ('$subj','$text','$user','$user_from','$date','$pm_read','$folder','$reply')" );
    10. $db->query( "UPDATE " . USERPREFIX . "_users set pm_all=pm_all+1, pm_unread=pm_unread+1  where user_id='$user'" );
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    с массивами знаком? с циклами?
     
  11. SX2

    SX2 Активный пользователь

    С нами с:
    24 июл 2012
    Сообщения:
    10
    Симпатии:
    0
    Пока нет только учусь ) ну на примере думаю пойму !
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Код (PHP):
    1. $subj = "Тема письма";
    2. $text = "Текст письма";
    3. $users = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    4. $user_from = "admin";
    5. $date = time();
    6. $pm_read = "no";
    7. $folder = "inbox";
    8. $reply = "0";
    9. foreach ($users as $user) {
    10.   $db->query("INSERT INTO " . USERPREFIX . "_pm (subj,text,user,user_from,date,pm_read,folder,reply) VALUES ('$subj','$text','$user','$user_from','$date','$pm_read','$folder','$reply')");
    11.   $db->query("UPDATE " . USERPREFIX . "_users set pm_all=pm_all+1, pm_unread=pm_unread+1  where user_id='$user'");
    12. } 
     
  13. SX2

    SX2 Активный пользователь

    С нами с:
    24 июл 2012
    Сообщения:
    10
    Симпатии:
    0
    Спасибо большое за помощь !
     
  14. SX2

    SX2 Активный пользователь

    С нами с:
    24 июл 2012
    Сообщения:
    10
    Симпатии:
    0
    Еще если можно подскажите как можно перенести в конфиг
    Код (Text):
    1. $users = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    делаю так отправляет только на первый в списке id
    Код (Text):
    1. $users = array($config['users_id']);
    в конфиге так
    Код (Text):
    1. <?php
    2. $config = array(
    3. 'users_id' => "1, 2, 3, 4, 5, 6, 7, 8, 9, 10",
    4. );
    5. ?>
     
  15. SX2

    SX2 Активный пользователь

    С нами с:
    24 июл 2012
    Сообщения:
    10
    Симпатии:
    0
    Ребята помогите очень нужно !