Sorucevap içerik yönetim sistemi olan Question2Answer'ın Drupal 7 entegrasyonu için gerekli olan işlemleri adımlar halinde açıklayalım. Question2Answer kurulumunu drupal kurulu dizine qa adında bir dizin oluşturarak kurulumu tamamladıktan sonra aşağıdaki adımları takip ediniz.
1.Adım: Drupal sitenin settings.php dosyasına (sites/default/settings.php) aşağıdaki kodu ekleyin.
$cookie_domain = '.siteadı.net';
2.Adım: Question2Answer kurduğumuz dizinde bulunan qa-external-example dizininin adını qa-external olarak yeniden adlandırın.
3.Adım: qa dizinindeki Question2Answer'ın ayarlardosyasına (qa-config.php) aşağıdaki kodları ekleyiniz.
// Database (for login/stats integration)
define('EXT_WEBADDRESS', 'http://siteadı.net/');
//define('DRUPAL_ROOT', dirname(getcwd() ).'\\');
define('DRUPAL_ROOT', 'kök dizin yolu'); // /home/site/public_html/ gibi
//$current_path = getcwd();
//define('DRUPAL_ROOT', dirname(getcwd() ).'\\');
chdir(DRUPAL_ROOT);
require_once DRUPAL_ROOT . 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
4.Adım: qa-config.php dosyasında "define('QA_EXTERNAL_USERS', false);" ifadesini bulunuz ve aşağıdaki gibi değiştiriniz.
define('QA_EXTERNAL_USERS', true);
6.Adım: qa-external dizini içindeki qa-external-users.php dosyasını açıp aşağıdaki işlemleri yapınız.
function qa_get_mysql_user_column_type()
{
return 'INT UNSIGNED';
}
function qa_get_login_links($relative_url_prefix, $redirect_back_to_url)
{
return array(
'login' => EXT_WEBADDRESS.'user/',
'register' => EXT_WEBADDRESS.'user/register',
'logout' => EXT_WEBADDRESS.'user/logout'
);
}
function qa_get_logged_in_user()
{
global $user;
//print_r($user -> roles);
//print_r($user -> uid);
foreach($user -> roles as $key => $value)
{
if ( strstr(trim($value),"administrator"))//
{
$user_is_admin=true;
print_r($value);
}
}
if ($user -> uid==0)
return null;
else
{
if ($user_is_admin)
$level=QA_USER_LEVEL_ADMIN;
else
$level=QA_USER_LEVEL_BASIC;
/*
elseif (current_user_can('editor'))
$level=QA_USER_LEVEL_EDITOR;
elseif (current_user_can('contributor'))
$level=QA_USER_LEVEL_EXPERT;
else
$level=QA_USER_LEVEL_BASIC;
*/
return array(
'userid' => $user->uid,
'publicusername' => $user->name,
'email' => $user->mail,
'level' => $level,
);
}
function qa_get_user_email($userid)
{
$thisUser = user_load(array('uid' => $userid));
return $thisUser->mail;
}
function qa_get_userids_from_public($publicusernames)
{
if (count($publicusernames))
return qa_db_read_all_assoc(qa_db_query_sub(
'SELECT name, uid FROM users WHERE name IN ($)',
$publicusernames
), 'name', 'uid');
else
return array();
}
function qa_get_public_from_userids($userids)
{
if (count($userids)) {
$useridtopublic=array();
$qa_user_emails=array();
$userfields=qa_db_read_all_assoc(qa_db_query_sub(
'SELECT uid, name, mail FROM users WHERE uid IN (#)',
$userids
), 'uid');
foreach ($userfields as $id => $fields) {
$useridtopublic[$id]=$fields['name'];
$qa_user_emails[$id]=$fields['mail'];
}
return $useridtopublic;
} else
return array();
}
function qa_get_logged_in_user_html($logged_in_user, $relative_url_prefix)
{
$publicusername=$logged_in_user['publicusername'];
return '<A HREF="'.htmlspecialchars($relative_url_prefix.'user/'.urlencode($publicusername)).
'" CLASS="qa-user-link">'.htmlspecialchars($publicusername).'</A>';
}
function qa_get_users_html($userids, $should_include_link, $relative_url_prefix)
{
$useridtopublic=qa_get_public_from_userids($userids);
$usershtml=array();
foreach ($userids as $userid) {
$publicusername=$useridtopublic[$userid];
$usershtml[$userid]=htmlspecialchars($publicusername);
if ($should_include_link)
$usershtml[$userid]='<A HREF="'.htmlspecialchars($relative_url_prefix.'user/'.urlencode($publicusername)).
'" CLASS="qa-user-link">'.$usershtml[$userid].'</A>';
}
return $usershtml;
}
function qa_avatar_html_from_userid($userid, $size, $padding)
{
return null; // show no avatars by default
}
function qa_user_report_action($userid, $action)
{
print_r($userid);
print_r($action);
}
7.Adım : Bu işlemleri yaptıktan sonra Drupal ile giriş yapılabilir fakat soru sorma cevaplama, oylama yaparken hatalar ile karılaşacaksınız. Bu hatalarıda yok etmek için Question2Answer'ın veritabanına PHPMyAdmin ekranından veritabanını seçip sorgu bölümüne aşağıdaki sorguları çalıştırıp yabancıl anahtar ilişkilerini kaldırmak gerekiyor.
ALTER TABLE `qa_posts` DROP FOREIGN KEY `qa_posts_ibfk_1`
ALTER TABLE `qa_userlimits` DROP FOREIGN KEY `qa_userlimits_ibfk_1`
ALTER TABLE `qa_uservotes` DROP FOREIGN KEY `qa_uservotes_ibfk_2`
ALTER TABLE `qa_userevents` DROP FOREIGN KEY `qa_userevents_ibfk_1`
Yorum ekle