DLE Arkadaşlık Modulü

Konu sahibi son olarak 438 gün önce görüldü
Merhabalar arkadaşlar bu makalemizde sizlere arkadaşlık modulü kurulumu ve kullanımı hakkında detaylı bir şekilde bilgi vermeye çalışacağım.

Desteklenen DLE Sürüm : 12.1 ve üzeri

Modül Versiyonu : 1.6

Modül Kurulumu :

uploads.zip indir klasörü içerisindeki tüm dosyaları ilgili yerlere aktarınız.

Daha sonra;

/engine/data/friends_config.php CHMOD değerini 666 yapınız.

bir SQL Sorgusu oluşturup aşağıda vermiş olduğum kodu yazınız.

Kod:
CREATE TABLE `dle_friends` (
`id` mediumint(8) NOT NULL auto_increment,
`user` varchar(40) NOT NULL default '',
`friend` varchar(40) NOT NULL default '',
`date` varchar(30) NOT NULL default '',
PRIMARY KEY  (`id`)
);

ALTER TABLE `dle_users` ADD `friends` text NOT NULL DEFAULT '';
ALTER TABLE `dle_users` ADD `friends_temp` text NOT NULL DEFAULT '';
ALTER TABLE `dle_users` ADD `friends_settings` varchar(7) NOT NULL DEFAULT '1|1|1|0';

INSERT INTO `dle_email` values ('', 'friends', 'itibar {%username%}, size bilgi veriyoruz {%who%} seni arkadaş olarak eklemek istiyor.\r\n\r\nArkadaş olduğunuzu onaylayabilir veya reddedebilirsiniz.\r\n{%url%}\r\n\r\nС selamlar,\r\nyönetim http://127.0.0.1', '0');
INSERT INTO `dle_email` values ('', 'fr_fail', 'itibar {%username%}, size bilgi veriyoruz {%who%} arkadas istegini redetti\r\n\r\nС selamlar,\r\nyönetim http://127.0.0.1', '0');
INSERT INTO `dle_email` values ('', 'fr_add', 'itibar {%username%}, size bilgi veriyoruz {%who%} arkadaş isteğini kabul et\r\n\r\nС selamlar,\r\nyönetim http://127.0.0.1', '0');
INSERT INTO `dle_email` values ('', 'fr_delete', 'itibar {%username%}, size bilgi veriyoruz {%who%} seni arkadaş listenden çıkardı\r\n\r\nС selamlar,\r\nyönetim http://127.0.0.1', '0');

INSERT INTO `dle_email` values ('', 'friends_m', 'itibar {%username%}, size bilgi veriyoruz {%who%} seni arkadaş olarak eklemek istiyor.\r\n\r\nArkadaş olduğunuzu onaylayabilir veya reddedebilirsiniz.\r\n{%url%}\r\n\r\nС selamlar,\r\nyönetim http://127.0.0.1', '0');
INSERT INTO `dle_email` values ('', 'fr_fail_m', 'itibar {%username%}, size bilgi veriyoruz {%who%} arkadas istegini redetti\r\n\r\nС selamlar,\r\nyönetim http://127.0.0.1', '0');
INSERT INTO `dle_email` values ('', 'fr_add_m', 'itibar {%username%}, size bilgi veriyoruz {%who%} arkadaş isteğini kabul et\r\n\r\nС selamlar,\r\nyönetim http://127.0.0.1', '0');
INSERT INTO `dle_email` values ('', 'fr_del_m', 'itibar {%username%}, size bilgi veriyoruz {%who%} seni arkadaş listenden çıkardı\r\n\r\nС selamlar,\r\nyönetim http://127.0.0.1', '0');

INSERT INTO `dle_admin_sections` (`name`, `title`, `descr`, `icon`, `allow_groups`) VALUES ('friends', 'arkadas', 'Bu modül, sitede arkadaşlık sistemidir, yani herhangi bir kullanıcı başka bir kullanıcıya arkadaş ekleyebilir.', 'friends.jpg', '1');

sorgumuzu yaptıktan sonra /engine/classes/js/dle_js.js dosyasını açıp, aşağıda vermiş olduğum kodu sonuna ekliyoruz.

HTML:
function doFriends(friend,event,type){$('#random_f-'+friend).html("<p style='color:green;'>istek başarıyla gönderildi!</p>");if(event=="delete"){var b={};b['iptal']=function(){$(this).dialog('close')};b['arkadas listesinden kaldır']=function(){ShowLoading('');$.get(dle_root+"engine/ajax/friends.php",{friend_id:friend,action:event,skin:dle_skin,type:type,hash:dle_login_hash},function(data){HideLoading('');$('#dlepopup').dialog('close');$('#dlepopup').remove();if(type=="list"){$("#friend-list-"+friend).html(data)}else if(type=="pop"){$("#dofriend-"+friend).replaceWith(data)}else{$("#dofriend").replaceWith(data)}})};$('#dlepopup').remove();$('body').append("<div id='dlepopup' title='Уkullanıcıyı arkadaş listesinden kaldır?' style='display:none'><br />kullanıcıyı gerçekten arkadaş listenden kaldırmak istiyor musun?<br /><br /></div>");$('#dlepopup').dialog({autoOpen:true,width:400,buttons:b})}else{ShowLoading('');$.get(dle_root+"engine/ajax/friends.php",{friend_id:friend,action:event,skin:dle_skin,type:type,hash:dle_login_hash},function(data){HideLoading('');if(event=="activate"||event=="delete_req"){$("#friend-list-"+friend).html(data)}else if(type=="pop"){$("#dofriend-"+friend).replaceWith(data)}else if(type=="list"){$("#friend-list-"+friend).html(data)}else{$("#dofriend").replaceWith(data)}})}};$(function(){$('.feed_loader').click(function(){var f=$(this);var c=f.attr("rel");var n=(c*1)+1;if(f.attr("rel")!="stop"){f.attr("rel","stop").html("yükle...");$.get(dle_root+"engine/ajax/friends_feed.php",{count:c,skin:dle_skin},function(data){if(data=="no"){f.removeClass("f_active").html("Gösterilecek haber yok")}else{f.attr("rel",n).html("Önceki haberleri göster ↓");$("#friends_feed").append(data)}})}})});

/engine/engine.php açıp

Kod:
case "deletenews" :
	include ENGINE_DIR . '/modules/deletenews.php';
	break;

kodunu bulup helen altına

Kod:
// DLE Friends v1.6
	case "friends" :
		if ($user) include ENGINE_DIR . '/modules/friends_list.php';
		else msgbox ( $lang['all_err_1'], $lang['news_err_27'] );
		break;
	
	case "friendsfeed" :
		if ($is_logged) include ENGINE_DIR . '/modules/friends_feed.php';
		else msgbox ( $lang['all_err_1'], $lang['news_err_27'] );
		break;
// DLE Friends v1.6

ekliyoruz.Daha sonra aşağıdaki kodu buluyoruz.

Kod:
elseif ($do == 'stats') $nam_e = $lang['title_stats'];

hemen altına;

Kod:
// DLE Friends v1.6
elseif ($do == "friends") {
	if (! $subaction) $nam_e = $lang['fr_friends'];
	elseif ($subaction == "common") $nam_e = $url_user . $lang['fr_common'];
	elseif ($subaction == "requests") $nam_e = $lang['fr_activate_title'];
	elseif ($subaction == "suggestions") $nam_e = $lang['fr_suggestions'];
}
elseif ($do == "friendsfeed") $nam_e = $lang['fr_feed_title'];
// DLE Friends v1.6

ekliyoruz.Aynı dosya içinden devam ediyoruz.

Kod:
$s_navigation = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"{$config['http_home_url']}\" itemprop=\"url\"><span itemprop=\"title\">" . $config['short_title'] . "</span></a></span>"

hemen sonra;

Kod:
// DLE Friends v1.6
	if ($do == "friends") {
		if( $config['allow_alt_url'] ) $url_user = "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $user ) . "/\">" . stripslashes( $user ) . "</a>";
		else $url_user = "<a href=\"$PHP_SELF?subaction=userinfo&user=" . urlencode( $user ) . "\">" . stripslashes( $user ) . "</a>";
		
		$s_navigation .= " » " . $url_user;
	}
// DLE Friends v1.6

ekliyoruz.

engine/init.php dosyasını açıyoruz.

Kod:
$tpl->set( '{all-pm}', $member_id['pm_all'] );

kodunu bulup hemen altına;

Kod:
// DLE Friends v1.6
if( $member_id['friends_temp'] ) $tpl->set( '{request-count}', "(" . count(explode("," ,$member_id['friends_temp'])) . ")" );
else $tpl->set( '{request-count}', "" );

if( $config['allow_alt_url'] ) {
	$tpl->set( '{friends-link}', $config['http_home_url'] . "friends/" . urlencode( $member_id['name'] ) );
	$tpl->set( '{feed-link}', $config['http_home_url'] . "friendsfeed/" );
} else {
	$tpl->set( '{friends-link}', $PHP_SELF . "?do=friends&user=" . urlencode( $member_id['name'] ) );
	$tpl->set( '{feed-link}', $PHP_SELF . "?do=friendsfeed" );
}
// DLE Friends v1.6

ekliyoruz.

engine/modules/profile.php açıyoruz.

Kod:
$filecontents = '';

hemen sonra;

Kod:
// DLE Friends v1.6 
$friends_status_f  = isset($_POST['friends_status_f']) ?  intval($_POST['friends_status_f']) : 0; // Arkadaşlık isteklerini al [0]		
$friends_info_mail  = isset($_POST['friends_info_mail']) ?  intval($_POST['friends_info_mail']) : 0; // E-posta bildirimleri alın [1]
$friends_info_pm  = isset($_POST['friends_info_pm']) ?  intval($_POST['friends_info_pm']) : 0; // Bilgi alın [2]
$friends_pm  = isset($_POST['friends_pm']) ?  intval($_POST['friends_pm']) : 0; // Sadece arkadaşlardan özel mesaj al [3]

$friends_settings = $friends_status_f . "|" . $friends_info_mail . "|" . $friends_info_pm . "|" . $friends_pm;
// DLE Friends v1.6

ekliyoruz.

daha sonra;

Kod:
allow_mail='$allow_mail',

kodunu bulup altına;

Kod:
friends_settings='$friends_settings',

ekliyoruz.

daha sonra;

Kod:
$tpl->set( '{lastdate}', langdate( "j F Y H:i", $row['lastdate'] ) );

altına;

Kod:
// DLE Friends v1.6
include_once ENGINE_DIR . '/modules/friends_profile.php';
// DLE Friends v1.6

ekliyoruz.

engine/ajax/profile.php dosyasını açıyoruz.

Kod:
$tpl->set( '{rate}', userrating( $row['user_id'] ) );

kodunu bulup altına;

Kod:
// DLE Friends v1.6
    require_once ENGINE_DIR . '/data/friends_config.php';
    
    if ($is_logged and $member_id['user_id'] != $row['user_id'] and $friends_config['status']) {
        $friends_settings = explode("|", $row['friends_settings']);
        $friends_arr      = explode(',', $member_id['friends']);
        $temp_friends_arr = explode(',', $row['friends_temp']);
        
        if (!in_array($row['user_id'], $friends_arr) && !in_array($member_id['user_id'], $temp_friends_arr)) {
            if ($friends_settings[0]) {
                $tpl->set('{dofriends}', "<a id=\"dofriend-" . $row['user_id'] . "\" href=\"#\" onclick=\"doFriends('" . $row['user_id'] . "', 'add', 'pop'); return false;\">" . $lang['fr_add'] . "</a>");
            } else {
                $tpl->set('{dofriends}', "");
            }
        } elseif (in_array($row['user_id'], $friends_arr)) {
            $tpl->set('{dofriends}', "<a id=\"dofriend-" . $row['user_id'] . "\" href=\"#\" onclick=\"doFriends('" . $row['user_id'] . "', 'delete', 'pop'); return false;\">" . $lang['fr_del_do'] . "</a>");
        } else
            $tpl->set('{dofriends}', $lang['fr_req_sent']);
        
    } else
        $tpl->set('{dofriends}', "");
// DLE Friends v1.6

ekliyoruz.

engine/modules/pm.php aşağıdaki kodu buluyoruz.

Kod:
$db->query( "SELECT email, name, user_id, pm_all, user_group FROM " . USERPREFIX . "_users WHERE name = '{$name}'" );
		
		if( !$db->num_rows() ) $stop .= $lang['pm_err_4'];
		
		$row = $db->get_row();

bu kodu bulduktan sonra aşağıdaki kod ile değiştiriyoruz.

Kod:
$db->query( "SELECT email, name, user_id, pm_all, user_group, friends_settings FROM " . USERPREFIX . "_users WHERE name = '$name'" );
	
	if( !$db->num_rows() ) $stop .= $lang['pm_err_4'];
	
	$row = $db->get_row();
	
	$friends_settings = explode( "|", $row['friends_settings'] );
	
	if( $friends_settings[3] ) {
	
	$my_temp_arr = explode( ',', $member_id['friends'] );
	
		if( $member_id['user_id'] != 1 and !in_array( $row['user_id'], $my_temp_arr )) {	
	
			$stop .= "<li>".$lang['fr_pm_er']."</li>";
		
		}
	}

daha sonra;

sitemizin ana dizininden .htaccess dosyasında;

Kod:
# 
RewriteRule ^page/([0-9]+)(/?)$ index.php?cstart=$1 [L

altına;

Kod:
# DLE Friends v1.6
RewriteRule ^friends/([^/]*)(/?)+$ index.php?do=friends&user=$1 [L]
RewriteRule ^friends/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=friends&user=$1&cstart=$2 [L]
RewriteRule ^friends/([^/]*)/common(/?)+$ index.php?do=friends&subaction=common&user=$1 [L]
RewriteRule ^friends/([^/]*)/common/page/([0-9]+)(/?)+$ index.php?do=friends&subaction=common&user=$1&cstart=$2 [L]
RewriteRule ^friends/([^/]*)/requests(/?)+$ index.php?do=friends&subaction=requests&user=$1 [L]
RewriteRule ^friends/([^/]*)/requests/page/([0-9]+)(/?)+$ index.php?do=friends&subaction=requests&user=$1&cstart=$2 [L]
RewriteRule ^friends/([^/]*)/suggestions(/?)+$ index.php?do=friends&subaction=suggestions&user=$1 [L]
RewriteRule ^friendsfeed(/?)+$ index.php?do=friendsfeed [L]

yukardaki kodu ekliyoruz.

/Language/Turkish/website.lng dosyasını açıyoruz.

Kod:
'wysiwyg_language'	=>  "TR",

hemen altına;

Kod:
# DLE Friends v1.6
'fr_status' => "Modül Yönetici tarafından devre dışı bırakıldı",
'fr_friends' => "Arkadaşlar",
'fr_done' => "Tarafından Yapılan",
'fr_add_succes' => "Kullanıcı {user} arkadaş olarak başarıyla eklendi!",
'fr_del_succes' => "Kullanıcı {user} arkadaş listesinden kaldırıldı!",
'fr_del_act' => "istegi sil",
'fr_del_req_succes' => "istek silindi!",
'fr_del_do' => "Arkadaşlardan kaldır",
'fr_del_pm' => "Arkadaş listesinden çıktın",
'fr_send_pm' => "Mesaj yaz",
'fr_send_mail' => "E-posta gönder",
'fr_activate' => "Onayla",
'fr_activate_title' => "Arkadaşlık istekleri",
'fr_activate_fail_pm' => "Arkadaşlık isteği reddedildi",
'fr_activate_ok_pm' => "Arkadaşlık isteğin kabul edildi",
'fr_no_friends' => "Henüz hiç arkadaşın yok",
'fr_no_req_friends' => "Henüz yeni istek yok",
'fr_user_no_friends' => "{user} adlı kullanıcının henüz bir arkadaşı yok",
'fr_req' => "Arkadaşlık isteği",
'fr_add' => "Arkadaş olarak ekle",
'fr_req_sent' => "Başvuru gönderildi",
'fr_feed_off' => "Modül geçici olarak devre dışı",
'fr_feed_load' => "Önceki haberleri göster ↓",
'fr_feed_error' => "Bu bölüm sadece kayıtlı kullanıcılar tarafından kullanılabilir",
'fr_nofeed' => "Arkadaşların henüz bir şey yayınlamadı",
'fr_timeago' => "bir saat, iki saat, üç saat, dört saat, beş saat, altı saat, saniye önce, dakika önce, geri, bugün, dün",
'fr_pm_er' => "Bu kullanıcı yalnızca arkadaşlardan mesaj alabilir.!",
'fr_no_sugg' => "Henüz bir arkadaş bulunamadı!",
'fr_common' => "Ortak Arkadaşlar",
'fr_suggestions' => "Arkadaşlar",
'fr_feed_title' => "Arkadaşlarının makaleleri",
'fr_nopage' => "Ne yazık ki, bu sayfa sizin için uygun değil!",

templates/temanız/style/style.css dosyasını açıp sonuna aşağıdaki kodu ekleyin;

Kod:
/* DLE Friends v1.6 */
#no-friends { padding: 6px; border: 1px solid #C0D4DE; background-color: #F3F7F9; color: #507D98; margin: 10px 0; }

.friends { margin-bottom: 10px; }
.friends ul, .prof-list { margin-top: 10px; }
.friends li { width: 100px; text-align: center; float: left; margin-right: 10px; }
.friends img { display: block; margin: 0 auto; width: 100px; height: 100px; }

.friends_table h3 { margin-bottom: 6px; font-size: 14px; line-height: 14px; font-weight: bold; }
.friends_table h3 a span { font-size: 12px; font-weight: normal; color: #6C838E; }
.friends_table h3 a span:hover { text-decoration: underline; }
.friends_table ul { list-style: none; margin: 0; padding: 0; }
.friends_table td { padding: 10px; border-bottom: 1px solid #EEE; font-size:12px; vertical-align: top; }
.friends_table .active { background-color: #F8F8F8; }
.contact_friends { width: 140px; }
.contact_friends a, .contact_friends span { display: block; padding: 6px; margin-bottom: 4px; line-height: 11px; }
.contact_friends a:hover { background-color: #DAE7ED; text-decoration: none; }

#allfriends .rcol { margin-top: 4px; }
#allfriends h2.lcol a { text-decoration: underline; }
#allfriends h2.lcol a:hover { text-decoration: none; }

#friends_feed { margin: 0 15px; }
#friends_feed table { width: 100%; border-collapse: collapse; border-spacing: 0; margin-bottom: 25px; }
#friends_feed td { vertical-align: top; text-align: left; }
#friends_feed td.f_avatar, #friends_feed td.f_author { border: 1px solid; border-color: #ACCCDA #E2EDF2 #E2EDF2; vertical-align: middle; background-color: #F4F8FA; }
#friends_feed td.f_avatar { width: 50px; border-spacing: 10px; padding: 2px; border-right-width: 0; }
#friends_feed td.f_avatar img { width: 50px; height: 50px; }
#friends_feed td.f_author { padding: 0 10px; border-left-width: 0; border-style: solid; font-size: 11px; }
#friends_feed td.f_author h3 { fonst-size: 14px; font-weight: bold; margin-bottom: 4px; }
#friends_feed td.f_story { padding: 15px 0; }
#friends_feed .f_cover { width: 104px; max-height: 104px; overflow: hidden; margin-right: 10px; float: left; border: 1px solid #E2EDF2; background-color: #F4F8FA; }
#friends_feed .f_cover img { width: 100px; padding: 2px; }
#friends_feed td.f_det { border-top: 1px solid #E2EDF2; padding: 5px 0; }

.feed_loader { padding: 10px; text-align: center; border-top: 1px solid #E2EDF2; color: #284B5A; margin-bottom: 20px; }
.f_active:hover { border-color: #ACCCDA; background-color: #F4F8FA; cursor: pointer; }

/templates/temanız/userinfo.tpl açıyoruz ve aşağıdaki kodu buluyoruz.

Kod:
<li>{pm}</li>

bir alt satırına aşağıdaki kodu ekliyoruz.

Kod:
<li>{dofriends}</li>

aynı dosya içerisinde;

Kod:
</div>
[not-logged]
<div class="tab-pane" id="user2">

buluyoruz ve altına aşağıdaki kodu ekliyoruz.

Kod:
[friends]
<div class="friends ussep">
		<span class="grey">Arkadaşlarım ({friends-count}) [friends-link]Tüm arkadaşlar[/friends-link] [requests]{requests-count} Onay Bekleyen istekler[/requests]</span>
		{friends}
		<div class="clr"></div>
</div>
[/friends]
[common-friends]
<div class="friends ussep">
		<span class="grey">Ortak Arkadaşlar ({common-count}) [common-link]Tüm Ortak Arkadaşlar[/common-link]</span>
		{common-friends}
		<div class="clr"></div>
</div>
[/common-friends]

ekliyoruz.

Daha sonra;

Kod:
<li class="form-group">
	<label for="land">Bulunduğunuz Yer</label>
	<input type="text" name="land" id="land" value="{land}" class="wide">
</li>

kodunu bulup aşağıdaki kodu ekliyoruz.

Kod:
<tr>
  <td class="label">Arkadaşlar:</td>
  <td>
  <div class="checkbox">{friends_status_f} <label for="friends_status_f">Arkadaş davetiyelerine izin ver</label></div>
  <div class="checkbox">{friends_info_mail} <label for="friends_info_mail">Arkadaş isteklerinin bildirimlerini E-posta ile al</label></div>
  <div class="checkbox">{friends_info_pm} <label for="friends_info_pm">Arkadaşlık teklifleri hakkında bildirim al</label></div>
  <div class="checkbox">{friends_pm} <label for="friends_pm">Sadece <strong>Arkadaş Listemdeki Kişilerden</strong> Özel Mesaj Al</label></div>
  </td>
</tr>


NOT : Ben bu kısmı uygun gördüm.Siz istediğiniz, uygun gördüğünüz yere ekleyebilirsiniz.

/templates/temanız/login.tpl dosyasına girip aşağıdaki kodu buluyoruz.

Kod:
<li><a href="{profile-link}">Profilim</a></li>

altına;

Kod:
<li><a href="{friends-link}">Arkadaşlarım {request-count}</a></li>
<li><a href="{feed-link}">Arkadaşlarımın Makaleleri</a></li>

ekliyoruz.

/templates/temanız/profile_popup.tpl dosyasını açıp; aşağıdaki kodu buluyoruz.

Kod:
<li><span class="grey">Açıklama:</span> <b>{comm-num} [ {comments} ]</b></li>

altına;

Kod:
<li>{dofriends}</li>

ekliyoruz.

Ana sayfa yada blogunuzun her hangi bir yerinde göstermek istiyorsanız eğer arkadaş listenizi; aşağıdaki kodu uygun bir yere yerleştirmeniz yeterli olacaktır.

Kod:
{include file="engine/modules/friends_random.php"}

aklınıza takılan her hangi bir sorun olursa veya modülü kurmada problem yaşayan arkadaşlar bu başlık altında sorunlarını dile getirebilirler.Herkese keyifli günler dilerim.
 
Geri