주고받은 쪽지를 지울때 내 쪽지함에서만 지우기 정보
주고받은 쪽지를 지울때 내 쪽지함에서만 지우기
본문
쪽지기능을 써 보다가 보낸사람이나 받은사람 어느 누구라도 쪽지를 지우면 양쪽에서 다 볼 수 없다는 것을 알고는 대략 난감했었습니다.
하나의 데이타테이블을 쓰더군요.
해서 데이타테이블을 하나 더 만들어서 받은쪽과 보낸쪽을 분리하고 누구든 지운쪽만 지워지고 안지운쪽은 쪽지가 남아있게 해 보았습니다.
혹자는 데이타량이 많아질 수 있다 우려하실지도 모르지만 형편에 따라 사용하시기 바랍니다.
===========================================================
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. 먼저 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
1
댓글 4개

아주 유용한 팁이네요.
필요했던 팁중의 하나입니다.
zestar님, 감사드립니다.
필요했던 팁중의 하나입니다.
zestar님, 감사드립니다.

저 역시 목진철님의 팁과 스킨에 감사하고 있습니다.
좋은정보 감사합니다.

잘되네요 감사합니다.