2009年10月20日火曜日

MyNETSで「全員マイフレンド」に。

とあるSNSをMyNETSで立ち上げ準備中で、「全員をマイフレンドに」という要望なのでカスタマイズしたメモです。

■まず以下から、0.9.0をダウンロード(テストバージョンじゃなくても大丈夫でした)。

http://blog.justoneplanet.info/2008/09/06/openpneで全員マイフレンドになるphpを書いてみよう/

■ダウンロードしたものを解凍。そして、inc/function.phpの46行目に「$c_member_id = trim($c_member_id); 」の部分を追加。(このtrimを入れないと、重複登録されます。この部分を忘れて、慌てました(^^;)

$c_member_id = mysql_real_escape_string($_GET['c_member_id']);$c_member_id = trim($c_member_id);



■そして、modules/にpc/というディレクトリをつくり、アップロード。

■また、
webapp/modules/pc/templates/new_templates/my_friend_list.tpl
ノ127行目あたりに、
<a href="/modules/pc/add_all_friends/set.php?c_member_id= ({$c_member.c_member_id})">みんなフレンド!</a>

を追加。

■後は、ログインした人ごとに、「みんなフレンド」というリンクをクリックしてもらえば、全員がマイフレンドに登録されます。

社内SNSなどで、全員フレンド状態のSNSを作る際には有益です。

メモでした。

==========================

重要な追記です。
(以下の追記は、いつもお世話になっている、Usagi Project concrete5日本チームリーダーのKatzさんからご指摘いただきました。この場を借りてお礼申し上げます。)

MyNETSは、データベースにprefixを設定できます。
しかし、上記の大本のソースは、元々OpenPNE用でしたので、MyNETS1系prefix対応の部分がありませんでした。
もしMyNETS1系でprefix設定されている方は、以下のソースのように、" . MYNETS_PREFIX_NAME . "を加える修正が必要となります。
修正箇所は四か所です。
ソースにおけるだいたいの行番号は、16行、30行、63行、86行です。

以上、よろしくお願いいたします。

<?php
/**
 * Mitsuaki Ishimoto
 * justoneplanet.info
 * 2009-04-07
 * ver 0.9.0
 * functions.php
/*==========================================================================================*/
/**
 * get all user list
 * @return (array) all users list
 */
function getAllUserList(){
    global $dbh;
    $user_id_list = array();
    $sql = "SELECT DISTINCT `c_member_id` FROM `" . MYNETS_PREFIX_NAME . "c_member`";
    $result = mysql_query($sql, $dbh);
    while($row = mysql_fetch_array($result)){
        $user_id_list[] = $row['c_member_id'];
    }
    return $user_id_list;
}
/**
 * get all combinations
 * @return (array) all users combinations
 */
function getAllCombinations(){
    global $dbh;
    $combination_list = array();
    $sql = "SELECT `c_member_id_from`,`c_member_id_to` FROM `" . MYNETS_PREFIX_NAME . "c_friend`";
    $result = mysql_query($sql, $dbh);
    while($row = mysql_fetch_array($result)){
        $combination_list[] = "'$row[c_member_id_from]','$row[c_member_id_to]'";
    }
    return $combination_list;
}
/**
 * set friends
 * @return (array) result status
 */
function setFriends($user_id_list, $combination_list){
    global $dbh;
    $date = date("Y-m-d H:i:s");
    $msg = MSG_BECAME;
    if(isset($_GET['c_member_id']) && in_array($_GET['c_member_id'], $user_id_list)){
        $c_member_id = mysql_real_escape_string($_GET['c_member_id']);
        $c_member_id = trim($c_member_id);
        $value_list = '';
        for($i=0; $i<count($user_id_list); $i++){
            if($c_member_id != $user_id_list[$i]){
                $register_list = "'$c_member_id','$user_id_list[$i]'";
                if(!in_array($register_list, $combination_list)){
                    $value_list .= ",('',$register_list,'$date','','')";
                }
                $register_list = "'$user_id_list[$i]','$c_member_id'";
                if(!in_array($register_list, $combination_list)){
                    $value_list .= ",('',$register_list,'$date','','')";
                }
            }
        }
        if($value_list != ''){
            $value_list = substr($value_list, 1);
            $sql = "INSERT INTO " . MYNETS_PREFIX_NAME . "c_friend (`c_friend_id`,`c_member_id_from`,`c_member_id_to`,`r_datetime`,`intro`,`r_datetime_intro`) VALUES $value_list";
            $result = mysql_query($sql, $dbh);
        }
        else{
            $msg = MSG_ALREADY;
        }
    }
    else{
        $register_list = array();
        for($s=0; $s<count($user_id_list); $s++){
            for($t=0; $t<count($user_id_list); $t++){
                if($s != $t){
                    $register_list[] = "'$user_id_list[$s]','$user_id_list[$t]'";
                }
            }
        }
        for($i=0; $i<count($register_list); $i++){
            if(!in_array($register_list[$i], $combination_list)){
                $value_list .= ",('',$register_list[$i],'$date','','')";
            }
        }
        if($value_list != ''){
            $value_list = substr($value_list, 1);
            $sql = "INSERT INTO" . MYNETS_PREFIX_NAME . "c_friend (`c_friend_id`,`c_member_id_from`,`c_member_id_to`,`r_datetime`,`intro`,`r_datetime_intro`) VALUES $value_list";
            $result = mysql_query($sql, $dbh);
        }
        else{
            $msg = MSG_ALREADY;
        }
    }
    return $msg;
}
?>

0 件のコメント: