SMF<==>Wordpress

Автор Daemon2006, 15 апреля 2012, 16:33:44

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Daemon2006

При регистрации в Wordpress Блоге, автоматически регистрируется в SMF форуме и наоборот. Насколько я понимаю, это называется "мост", да?

Yworld_garry


Daemon2006

Нашел модификацию для WP "SMF2WP". Теперь нужно для SMF искать? Или не нужно?

GeorG

SMF искать не нужно он есть на официальном сайте.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

AnnaVi

Подскажите, кто знает, как с помощью моста Bridge сделать так, чтобы на сайте была ссылка или кнопка на форум? Или это вручную делать надо? Оч нужно!

Bugo

Файл /Sources/Subs.php, найти блок

'home' => array(
'title' => $txt['home'],
'href' => $scripturl,
'show' => true,
'sub_buttons' => array(
),
'is_last' => $context['right_to_left'],
),

и заменить на

'site' => array(
'title' => $txt['site'],
'href' => 'http://krasavolos.com/',
'show' => true,
'sub_buttons' => array(
),
'is_last' => $context['right_to_left'],
),
'home' => array(
'title' => $txt['home'],
'href' => $scripturl,
'show' => true,
'sub_buttons' => array(
),
'is_last' => $context['right_to_left'],
),


Плюс добавить в файл Modifications.russian-utf8.php строчку:
$txt['site'] = 'Сайт';

AnnaVi

За это спасибо, мне пригодится :)
Но меня интересовала ссылка на форум именно на сайте. Не знаете в какую дверь стучать? :-\

maestrosite.ru

Цитата: AnnaVi от 25 сентября 2012, 12:58:46
Но меня интересовала ссылка на форум именно на сайте. Не знаете в какую дверь стучать? :-\
Сначала подумал, что показалось. Ан, нет, действительно, было: http://www.simplemachines.ru/index.php?topic=6926.msg118467#msg118467
В меню пробовали ссылку добавить?
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

AnnaVi

Спасибо большое, это помогло!!! Не знаю, почему я раньше на это меню внимания не обращала  ;D

AnnaVi

В файле /Sources/Subs.php в упор не вижу  :'(

Bugo


AnnaVi


maestrosite.ru

Цитата: AnnaVi от 26 сентября 2012, 13:02:04
нету...  :'( :'(
Как в анекдоте - "отолвали? потеляли? так и было? - стъянная констлукция!"

Всё на месте у вас, не волнуйтесь - http://krasavolos.com/forum/Sources/Subs.php
Смотрите папку /forum/ в корневой папке сайта. А далее уже /Sources/Subs.php
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

AnnaVi

Цитата: maestrosite.ru от 26 сентября 2012, 13:20:32Как в анекдоте - "отолвали? потеляли? так и было? - стъянная констлукция!"

ну чайник я))) нашла!! ураа!!! спасибо ;)

Bugo

А где раньше искали? :)

AnnaVi

Да не увидела, что там страничек три, че-то внимания не обратила))) сорри))

Borgius

#16
Цитата: Daemon2006 от 15 апреля 2012, 21:45:08SMF2WP

появились  косяки, кто-то перешел и создался логин на сайте из вопросов

непорядок с кодировкой и русскими никами из smf

нет идей как поправить?

код моста

<?php
/*
Plugin Name: SMF2WP
Plugin URI: http://www.forexp.net/wordpress-plugins/plugins/smf-to-wordpress-bridge-plugin-2/
Description: Login bridge from SMF, SMF based joomla, to Wordpress. Tested up to Wordpress 3.2.1 and SMF 2.0.1 RC3. Visit Plugin pages to report bugs.  
Author: JWall
Version: 2.3
Author URI: http://www.forexp.net
Demo page: http://www.forexp.net
*/

class jwall_smf2wp {
   static
$bridge_active = false; //Bridge is active or not
   
static $smf_dir = '';
   static
$reg_override = 0;
   static
$smf_dbopts = array();
   static
$smf_settings = array();

   function
version() { return 2.0; }

   
/* load
    * $force: force to load, prevent overload
    */
   
function load($force = false) {
if ((self::$bridge_active) and (!$force)) return;    
if (get_option('smf2wp_setup_complete') == 1) {
   // Load the settings
   self::$smf_dir = ABSPATH.get_option('smf2wp_smfdir');
   self::$reg_override = (get_option('smf2wp_regoverride')) ? get_option('smf2wp_regoverride') : 0;
   if (file_exists(self::$smf_dir."Settings.php"))
require_once(self::$smf_dir."Settings.php");
   else {
delete_option('smf2wp_setup_complete');
return false;
    }
    if (!function_exists('smf_cookie_url'))
   require_once(dirname(__FILE__)."/smf2api.php");

   global $smf_settings;
   if ($smf_settings["globalCookies"]!="0"||$smf_settings["globalCookies"]!="0")
    {
    self::$bridge_active = false;    
    return false;
    }
    self::$bridge_active = true;
   self::$smf_dbopts['user'] = $db_user;
   self::$smf_dbopts['pass'] = $db_passwd;
   self::$smf_dbopts['host'] = $db_server;
   self::$smf_dbopts['prefix'] = "`".$db_name."`.".$db_prefix;
   self::$smf_dbopts['name'] = $db_name;
   self::$smf_settings = $smf_settings;
   return true;
} else return false;
   }

   function
add_menu() {
add_submenu_page('options-general.php','SMF2WP Settings','SMF2WP Settings',8,__FILE__,array('jwall_smf2wp','settings'));
   }

 function
settings() {
$prev_active = self::$bridge_active;
echo '<div class="wrap"><h2>SMF2WP Settings</h2></div>';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   // Save settings
   switch ($_POST['action']) {
case "save":
   if (substr($_POST['smf_relpath'],-1) != '/')
$_POST['smf_relpath'] = $_POST['smf_relpath'].'/';
   if (!get_option('smf2wp_smfdir'))
add_option('smf2wp_smfdir',$_POST['smf_relpath']);
   else
update_option('smf2wp_smfdir',$_POST['smf_relpath']);
   // Double check the bridge dir before activating
   if (file_exists(ABSPATH.get_option('smf2wp_smfdir')))
add_option('smf2wp_setup_complete',1);
   else
delete_option('smf2wp_setup_complete');
   echo '<div id="message" class="updated fade">Settings saved!</div>';
   break;
   }
   self::load(true);
   
}
if (!self::$bridge_active) {
   // Let them know we're not fully set up!
   echo '<div id="message" class="updated fade">SMF2WP has not been configured properly and is not active!</div>';
} elseif ((self::$bridge_active) && ($_SERVER['REQUEST_METHOD'] == "POST") && (!$prev_active)) {
   echo '<div id="message" class="updated fade">SMF2WP is now fully activated!</div>';
}
if ((get_option('smf2wp_smfdir')) && (!file_exists(ABSPATH.get_option('smf2wp_smfdir').'Settings.php')))
   echo '<div id="message" class="updated fade">Your SMF path is invalid - could not locate Settings.php in <em>'.ABSPATH.get_option('smf2wp_smfdir').'</em></div>';
global $smf_settings;
if ($smf_settings["globalCookies"]!="0"||$smf_settings["localCookies"]!="0")
   echo '<div id="message" class="updated fade">This plugin <span style="color:red">may not work</span>, because you did not uncheck "Enable local storage of cookies" and "Use subdomain independent cookie" in SMF settings!</div>';

?>
    <form action="<?php echo $_SERVER['REQUEST_URI']?>" method="POST">
<input type="hidden" name="action" value="save"/>
<table width="100%" cellspacing="2" cellpadding="5" class="editform">
<tr>
    <th width="33%" scope="row" valign="top">Forum Path:<br />
<font style="font-size: 8px;"><em>URI relative to Wordpress root<br />
i.e - "forum/" places your forums in <?php echo ABSPATH?>forum/</em></font>
    </th>
    <td>
    <input type="text" name="smf_relpath" value="<?php echo (get_option('smf2wp_smfdir')) ? get_option('smf2wp_smfdir') : ''?>" maxlength="256" style="width: 250px;"/>
    </td>
</tr>
<tr><th colspan="2" style="color:brown; font-size:10px">You have to uncheck "Enable local storage of cookies" and "Use subdomain independent cookie" in SMF to make this plugin works<br/>You can turn it off from Admin>Configuration>Server Settings...>Cookies and Sessions</th></tr>
<tr><td colspan="2" style="height: 18px;"></td></tr>
<tr>
    <td>&nbsp;</td>
    <td>
<input type="submit" value="Save Settings"/>
    </td>
</tr>
</table>
    </form><br />

<?php
   
}

   function
logout() {
if (!self::$bridge_active) return;
if (smf_authenticateUser()) {
global $smf_user_info;
//var_dump($smf_user_info);die();
$current_user = wp_get_current_user();
if ( 0 != $current_user->ID) {
 
 smf_LogoutByIdMember($smf_user_info['id_member']);
}
   }
 }

 function
syncprofile($username, $password) {    
   
global $wpdb;
if (!self::$bridge_active) return;
 
   $smf_cxn = mysql_connect(self::$smf_dbopts['host'],self::$smf_dbopts['user'],self::$smf_dbopts['pass']) or trigger_error(mysql_error(),E_USER_ERROR);

$SQL = "SELECT real_name, email_address FROM ".self::$smf_dbopts['prefix']."members WHERE member_name = '$username'";
if (!$rs = mysql_query($SQL,$smf_cxn)) trigger_error(mysql_error(),E_USER_ERROR);
if (mysql_num_rows($rs) > 0) {
   list($rName,$eAdress) = mysql_fetch_array($rs, MYSQL_NUM);
   //$pass = md5($password);
   $pass = wp_hash_password($password);
}

$user_exists = $wpdb->get_row("SELECT id, user_pass FROM $wpdb->users WHERE user_login = '$username'");
if ($user_exists) {
 // If user exists and password is true (Not changing) then return quietly
 if (wp_check_password($password, $user_exists->user_pass)) return true;      
         
// Or that user may have changed password in Forum...

 
     $SQL = $wpdb->prepare("UPDATE $wpdb->users SET user_pass = %s, user_nicename = %s, user_email = %s, display_name = %s WHERE user_login = %s LIMIT 1",$pass, $username, $eAdress, $rName, $username);
$wpdb->query($SQL);
} else {
  $SQL = $wpdb->prepare("INSERT INTO $wpdb->users (user_login, user_pass, user_nicename, user_email, display_name) VALUES ('%s', '%s','%s','%s','%s')",$username,$pass,$username,$eAdress,$rName);
$wpdb->query($SQL);
$subscriber = 'a:1:{s:10:"subscriber";b:1;}';
 
$user_exists = $wpdb->get_row("SELECT id FROM $wpdb->users WHERE user_login = '$username'");
  $uid = $user_exists->id;
  $SQL = $wpdb->prepare("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ('%s', '%s','%s')",$uid,'wp_capabilities',$subscriber);
$wpdb->query($SQL);
  $SQL = $wpdb->prepare("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ('%s', '%s','%s')",$uid,'nickname',$username);
$wpdb->query($SQL);    
}
 }


 function
checklogin() {
 
   
//Because "init" is called before "plugins_loaded", must call load()
   
self::load();
if (!self::$bridge_active) return;
global $smf_user_info,$scheme,$auth_cookie_name,$wpdb;

if (smf_authenticateUser()) {    
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID || $current_user->user_login!=$smf_user_info["member_name"]) {
 self::syncprofile($smf_user_info['member_name'],wp_generate_password( 12, false ));
     if ($user=get_userdatabylogin($smf_user_info["member_name"])){
   // The user does not exist in the WP database - let's sync and try again
    if (!$user=get_userdatabylogin($smf_user_info["member_name"])) die("MYSQL Error");
   //Set user & Cookie  
   
  wp_set_auth_cookie($user->ID);
       
do_action('wp_login', $user->user_login);
       
wp_set_current_user($user->ID, $user->user_login);
   
//wp_redirect( home_url()."/wp-admin/" );
 
   }
}
} else {
if (is_user_logged_in()){
wp_logout();
wp_redirect( home_url() );
exit;
}
}
 }

 function
import_auth(&$user, &$pass) {
 
global $wpdb;
   if (!
$user) return;
if (smf_authenticate_password($user,$pass)) {
   
// Sync the password into WordPress
  self::syncprofile($user,$pass);
   smf_LoginById($user);
   wp_redirect(home_url());
}
 }
}

/* Associate the necessary action and filter hooks */
add_action('admin_menu',array('jwall_smf2wp','add_menu'));
add_action('plugins_loaded',array('jwall_smf2wp','load'));
add_action('init',array('jwall_smf2wp','checklogin'));
add_action('wp_authenticate',array('jwall_smf2wp','import_auth'),1,2);
add_action('wp_logout',array('jwall_smf2wp','logout'));
?>

Borgius

похоже придется вводить запрет на регистрацию русских логинов..