주고받은 쪽지를 지울때 내 쪽지함에서만 지우기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

주고받은 쪽지를 지울때 내 쪽지함에서만 지우기 정보

주고받은 쪽지를 지울때 내 쪽지함에서만 지우기

본문

쪽지기능을 써 보다가 보낸사람이나 받은사람 어느 누구라도 쪽지를 지우면 양쪽에서 다 볼 수 없다는 것을 알고는 대략 난감했었습니다.
하나의 데이타테이블을 쓰더군요.
해서 데이타테이블을 하나 더 만들어서 받은쪽과 보낸쪽을 분리하고 누구든 지운쪽만 지워지고 안지운쪽은 쪽지가 남아있게 해 보았습니다.

혹자는 데이타량이 많아질 수 있다 우려하실지도 모르지만 형편에 따라 사용하시기 바랍니다.

===========================================================
1. 먼저 mysql DB에 접속해서 g4_memolist 라는 테이블을 만들고 필드는 g4_memo와 동일하게 해 주시면 됩니다.

===========================================================
2. 메인폴더의 ./config.php 파일을 열어 중간쯤에

$g4[memo_table]          = $g4[table_prefix] . "memo";          // 메모 테이블
밑에 아래 줄을 추가
$g4[memolist_table]      = $g4[table_prefix] . "memolist";    // 메모 테이블

==========================================================
3. /bbs/memo.php 파일을 열어 아래 소스로 교체. 원본이 어땟는지 몰라서 다 퍼옵니다.

<?
$g4_path = "..";
include_once ("$g4_path/common.php");
   
if (!$member[mb_id])
    alert_close("회원만 이용하실 수 있습니다.");

$g4[title] = "내 쪽지함";
include_once("$g4[path]/head.sub.php");

// 설정일이 지난 받은메모 삭제
$sql = " delete from $g4[memo_table]
          where me_recv_mb_id = '$member[mb_id]'
            and me_send_datetime < '".date("Y-m-d H:i:s", $g4[server_time] - (86400 * $config[cf_memo_del]))."' ";
sql_query($sql);

// 설정일이 지난 보낸메모 삭제
$sql = " delete from $g4[memolist_table]
          where me_recv_mb_id = '$member[mb_id]'
            and me_send_datetime < '".date("Y-m-d H:i:s", $g4[server_time] - (86400 * $config[cf_memo_del]))."' ";
sql_query($sql);

if (!$kind) $kind = "recv";

if ($kind == "recv")
    $unkind = "send";
else if ($kind == "send")
    $unkind = "recv";
else
    alert("\$kind 값을 넘겨주세요.");

if ($kind == "recv")
{
$sql = " select count(*) as cnt from $g4[memo_table] where me_{$kind}_mb_id = '$member[mb_id]' ";
$row = sql_fetch($sql);
$total_count = number_format($row[cnt]);

  $kind_title = "받은";
  $recv_img = "on";
  $send_img = "off";
   
$list = array();

$sql = " select a.*, b.mb_id, b.mb_nick, b.mb_email, b.mb_homepage
          from $g4[memo_table] a
          left join $g4[member_table] b on (a.me_{$unkind}_mb_id = b.mb_id)
          where a.me_{$kind}_mb_id = '$member[mb_id]'
          order by me_read_datetime asc, me_send_datetime desc, mb_nick asc ";

$result = sql_query($sql);

 
}
else
{
$sql = " select count(*) as cnt from $g4[memolist_table] where me_{$kind}_mb_id = '$member[mb_id]' ";
$row = sql_fetch($sql);
$total_count = number_format($row[cnt]);

  $kind_title = "보낸";
  $recv_img = "off";
  $send_img = "on";
   
$list = array();

$sql = " select a.*, b.mb_id, b.mb_nick, b.mb_email, b.mb_homepage
          from $g4[memolist_table] a
          left join $g4[member_table] b on (a.me_{$unkind}_mb_id = b.mb_id)
          where a.me_{$kind}_mb_id = '$member[mb_id]'
          order by me_read_datetime asc, me_send_datetime desc, mb_nick asc ";

$result = sql_query($sql);
}

for ($i=0; $row=sql_fetch_array($result); $i++)
{
    $list[$i] = $row;

    $mb_id = $row["me_{$unkind}_mb_id"];

    if ($row[mb_nick])
        $mb_nick = $row[mb_nick];
    else
        $mb_nick = "<font color=silver>정보없음</font>";

    $name = get_sideview($row[mb_id], $row[mb_nick], $row[wr_email], $row[wr_homepage]);

    if (substr($row[me_read_datetime],0,1) == '0')
        $read_datetime = '아직 읽지 않음';
    else
        $read_datetime = substr($row[me_read_datetime],2,14);

    $send_datetime = substr($row[me_send_datetime],2,14);

    $list[$i][name] = $name;
    $list[$i][send_datetime] = $send_datetime;
    $list[$i][read_datetime] = $read_datetime;
    $list[$i][view_href] = "./memo_view.php?me_id=$row[me_id]&kind=$kind";
    $list[$i][del_href] = "./memo_delete.php?me_id=$row[me_id]&kind=$kind";
}
?>
<script language="javascript">
// 자바스크립트에서 사용하는 전역변수 선언
var g4_path      = "<?=$g4[path]?>";
var g4_bbs      = "<?=$g4[bbs]?>";
var g4_bbs_img  = "<?=$g4[bbs_img]?>";
var g4_admin    = "<?=$g4[admin]?>";
var g4_url      = "<?=$g4[url]?>";
var g4_is_member = "<?=$is_member?>";
var g4_is_admin  = "<?=$is_admin?>";
var g4_bo_table  = "<?=$bo_table?>";
var g4_sca      = "<?=$sca?>";
var g4_charset  = "<?=$g4[charset]?>";
var g4_is_gecko  = navigator.userAgent.toLowerCase().indexOf("gecko") != -1;
var g4_is_ie    = navigator.userAgent.toLowerCase().indexOf("msie") != -1;
</script>
<link rel="stylesheet" href="<?=$g4[path]?>/steamstyle.css" type="text/css">

<script language="javascript" src="<?=$g4[path]?>/js/sideview.js"></script>
<script language="javascript" src="<?=$g4[path]?>/js/common.js"></script>


<?
$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";
include_once("$member_skin_path/memo.skin.php");

include_once("$g4[path]/tail.sub.php");
?>

==========================================================
4. bbs/memo_view.php 파일을 열어 아래것으로 수정

<?
include_once("./_common.php");

if (!$member[mb_id])
    alert("회원만 이용하실 수 있습니다.");

$g4[title] = "쪽지 보기";
include_once("$g4[path]/head.sub.php");

if ($kind == "recv") {
    $unkind = "send";

//받은쪽 쪽지 읽은시간 표시
    $sql = " update $g4[memo_table]
                set me_read_datetime = '$g4[time_ymdhis]'
                where me_id = '$me_id'
                and me_read_datetime = '0000-00-00 00:00:00' ";
    sql_query($sql);
 
  //보낸쪽 쪽지 읽은시간 표시
    $sql = " update $g4[memolist_table]
                set me_read_datetime = '$g4[time_ymdhis]'
                where me_id = '$me_id'
                and me_read_datetime = '0000-00-00 00:00:00' ";
    sql_query($sql);

//받은쪽지함 리스트
$sql = " select * from $g4[memo_table]
      where me_id = '$me_id'
        and me_{$kind}_mb_id = '$member[mb_id]' ";
$memo = sql_fetch($sql);
$mb = get_member($memo["me_{$unkind}_mb_id"]);

} else if ($kind == "send") {
    $unkind = "recv";

//보낸쪽지함 리스트
  $sql = " select * from $g4[memolist_table]
      where me_id = '$me_id'
        and me_{$kind}_mb_id = '$member[mb_id]' ";
$memo = sql_fetch($sql);
$mb = get_member($memo["me_{$unkind}_mb_id"]);
}
else
    alert("\$kind 값을 넘겨주세요.");


$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";
include_once("$member_skin_path/memo_view.skin.php");

include_once("$g4[path]/tail.sub.php");
?>


==========================================================
5. ./bbs/memo_delete_all.php 파일에서

mysql_query("delete from $g4[memo_table] where me_id ='{$tmp_array[$i]}' and (me_recv_mb_id = '$member[mb_id]' or me_send_mb_id = '$member[mb_id]') ");
아래에 다음을 추가

//보낸쪽지삭제
mysql_query("delete from $g4[memolist_table] where me_id ='{$tmp_array[$i]}' and (me_recv_mb_id = '$member[mb_id]' or me_send_mb_id = '$member[mb_id]') ");

===========================================================
6. ./bbs/memo_delete.php 파일을 열어 아래소스로 변경

<?
include_once("./_common.php");

if (!$member[mb_id])
    alert("회원만 이용하실 수 있습니다.");

if ($kind == "recv") {
//받은쪽지 삭제
$sql = " delete from $g4[memo_table]
          where me_id = '$me_id'
            and (me_recv_mb_id = '$member[mb_id]' or me_send_mb_id = '$member[mb_id]') ";
sql_query($sql);
}

if ($kind == "send") {
//보낸쪽지 삭제
$sql = " delete from $g4[memolist_table]
          where me_id = '$me_id'
            and (me_recv_mb_id = '$member[mb_id]' or me_send_mb_id = '$member[mb_id]') ";
sql_query($sql);
}

goto_url("./memo.php?kind=$kind");
?>


==========================================================
7. ./bbs/memo_form_update.php를 열어

쪽지 INSERT 부분 아래에 다음을 추가

        // 보낸쪽지 INSERT
        $sql = " insert into $g4[memolist_table]
                        ( me_id, me_recv_mb_id, me_send_mb_id,  me_send_datetime, me_memo )
                values ( '$me_id', '$mb_list[$i]', '$member[mb_id]',  '$g4[time_ymdhis]', '$me_memo' ) ";
        sql_query($sql);
 
==========================================================
이상입니다만...

DB를 추가하는 것은 다른 팁들을 찾아 해 주시기 바라며, 그 질문에는 명확한 답변 드릴 실력이 못됩니다.

또한...

나름대로 테스트를 많이 해보았으나 고수분들의 날카로운 지적이 있으리라 예상되는 바 해결책까지 함께 올려 주시는 자상함을 보여 주시길 기대하오며...

혹시라도 쪽지알림 때문에 문제가 생기신다면..
전 아웃로그인에 쪽지 알림 기능을 넣어 놓은 관계로 명확한 답변을 못 드릴 수 있습니다.
다만 head_sub.php 파일에서

// 쪽지를 받았나?
if ($member[mb_memo_call]) {
    $mb = get_member($member[mb_memo_call], "mb_nick");
    sql_query(" update {$g4[member_table]} set mb_memo_call = '' where mb_id = '$member[mb_id]' ");
//    alert($mb[mb_nick]."님으로부터 새로운 쪽지가 도착하였습니다.", $_SERVER[REQUEST_URI]);
}

alert 부분을 막아 놓았습니다.

혹시 쪽지알림 기능을 저처럼 다른분의 팁을 사용하시는 분들은 alert 부분 이외에는 막지 마시기 바랍니다.
추천
1
  • 복사

댓글 4개

© SIRSOFT
현재 페이지 제일 처음으로