Aller au contenu
Invision Board France
  • 0

Drupal -> Ip.Board + Ip.Content


Dlteck2000

Question

Bonjour,

 

Utilisateur de Drupal depuis plusieurs années, je ne suis pas entièrement satisfait par les fonctions du forum.

Dans un soucis de simplicité je ne veux pas garder Drupal pour le site en lui même et prendre IP.Content en même temps que Ip.Board.

 

Depuis plusieurs mois je lorgne sur la suite Invision mais le boulot de transfert étant énorme je me pose encore beaucoup de questions.

 

Tout d'abord, la plus importante !

- Existe il une version demo que l'on peut installer en local pour étudier la possibilité de développer mes scripts pour le transfert ?

 

J'ai bien repéré les nulled mais, ce n'est pas dans mes principes et j'ai toujours peur qu'un script cachés par le pirate se cache dans le code.

 

Je me vois très mal acheté la suite complète pour me rendre compte ensuite que le transfert est infaisable.

 

Au cas ou, j'ai cherché mais n'ai pas trouvé, quelqu'un c'est il déjà intéressé sur le transfert d'un site Drupal vers la suite Invision ?

 

Merci d'avance pour vos réponses.

Lien vers le commentaire
Partager sur d’autres sites

21 réponses à cette question

Messages recommandés

  • 0
  • Administration

Bonjour Dlteck2000,

 

Cela me semble compliqué :

1/ IPS ne fournit pas de convertisseur pour Drupal

2/ La seule version démo qui existe est hébergée sur les serveurs d'IPS

3/ Il existait avant un service de conversion payant chez IPS, mais il me semble qu'il n'existe plus.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Merci, je vais leur poser la question, même si mon Anglais n'est pas au top ;)

 

Sinon je viens de penser à une autre solution.

Quelqu'un saurait il me fournir la structure de la base de données.

Nom des différentes tables, ainsi que leur structure, plus particulièrement celles concernant les utilisateurs, les titres et contenus des forums et les réécritures de liens.

 

Pour le reste je ferais le transfert à la main.

Modifié par Dlteck2000
Lien vers le commentaire
Partager sur d’autres sites

  • 0

Hello,

 

Alors pour info une personne fort sympatique m'a prété IPB et j'ai donc pas mal avancé sur le transfert.

 

Pour cela je me sert de converters 1.2.3 auquel j'ajoute mon extension Drupal.

Pour l'instant, le transfert des membres est fonctionnel,

Le transfert des forums est fonctionnel (pas encore les posts et topics)

Le transfert des MPs ne fonctionne pas encore, un vrais casse tête :bye:

 

Voila ou j'en suis, mais apparement c'est tout a fait réalisable.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Hello,

 

J'ai presque fini :)

 

Si ca intéresse, je peux rendre la source dispo (a ajouter à IP Converters 1.2.3 ) sachant qu'il est impossible que ça fonctionne avec tous les Drupal 6.x vue le nombre de modules différents suivant les installation de Drupal.

 

Dans mon cas :

- Drupal 6.26

- Advanced Forum 6.x-1.2

- Signature for forum 6.x-1.0

- User Stats 6.x-1.0-rc1

- Smileys 6.x-1.1

 

Il ne me reste plus que les MP à convertir et la ce n'est pas gagné :drop:

Lien vers le commentaire
Partager sur d’autres sites

  • 0
  • Administration

 

Si ca intéresse, je peux rendre la source dispo (a ajouter à IP Converters 1.2.3 ) sachant qu'il est impossible que ça fonctionne avec tous les Drupal 6.x vue le nombre de modules différents suivant les installation de Drupal.

 

 

et un petit tuto aussi dans notre documentation ??? o:):ph34r:

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Bonjour,

 

Il y a tellement de configurations possibles, avec les 100enes voir les 1000er de modules différents sur Drupal qu'il est impossible de proposer un module pour tout le monde.

C'est très certainement pour ça que Invision ne propose pas de convert Drupal.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Bonjour,

 

Je suis également utilisateur de drupal depuis quelques années, et je suis également... comment dire... un peu "frustré" par les fonctionnalités du forum que j'ai mis en place sur l'un des sites dont je m'occupe, m'obligeant à "tricoter" avec des dizaines de modules pour arriver à faire la moitié de ce que je veux. (aaaah, le tricotage de modules avec drupal, c'est ce qui fait grande sa force... mais à quel prix? Au prix de beaucoup de sueur ;) )

 

J'ai décidé de franchir le pas et d'adopter pour la première fois une solution commerciale: IP.Board pour le forum, IP.Content pour les autres contenus, IP.Gallery pour la future gallerie communautaire.

 

Je suis très impressionné par l'évolution et la qualité de la plateforme d'Invision Power, j'ai acheté ma licence hier et je suis maintenant plus qu'impatient de gouter aux joies d'un système complet, fonctionnel, élégant et prêt à l'emploi :bien:

 

Si ca intéresse, je peux rendre la source dispo (a ajouter à IP Converters 1.2.3 ) sachant qu'il est impossible que ça fonctionne avec tous les Drupal 6.x vue le nombre de modules différents suivant les installation de Drupal.

 

Oooooh oui ça intéresse !!! :D :D :D

 

J'ai bien remarqué que la conversion depuis drupal ne fait pas partie de la liste énorme de convertisseurs, et sur les forums je n'ai pas encore vraiment trouvé de quoi me mettre sous la dent, toute aide serait vraiment la bienvenue :)

 

Ma configuration est un peu différente mais je suis aussi en drupal 6, ces fichiers pourraient me donner une bonne base de départ pour comprendre le fonctionnement de la conversion.

Il faudra absolument que je convertisse les MP, donc si je peux aider ce sera avec plaisir.

Il faudra également que je convertisse d'autres types de contenu (hors du forum), ainsi que les commentaires qui leurs sont associés, vers IP.Content donc a priori.

Et j'aimerais aussi faire quelque chose pour tous les liens qui vont être cassés à l'intérieur du forum.

 

Je sens que ça va pas être une mince affaire...

 

Merci d'avance! :hello:

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Bonsoir,

 

Ca tombe bien j'ai acheté une licence il y a deux heures, je vais donc pouvoir tester le convertisseur grandeur nature pour voir si tout fonctionne bien.

N'ayant pas des 100enes d'articles j'avais prévue de les transférer à la main, mais je penses qu'il n'est vraiment pas compliqué de passer par converters.

 

Le gros hic sur les forums Drupal c'est l'absence de bons outils de modération, dommage.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Le gros hic sur les forums Drupal c'est l'absence de bons outils de modération, dommage.

 

Je suis bien d'accord, c'est en grande partie ce qui m'a motivé à faire cette migration.

 

Bon courage pour les tests, j'espère que tout va bien se passer :bien:

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Bonsoir Dlteck2000,

 

Je compte m'attaquer à la conversion de mon site dans les jours qui viennent, serait-il possible de jeter un coup d'oeil sur tes scripts, histoire de me donner une bonne base de départ dans cette lourde tâche? Ca serait vraiiiiment sympa :hello: (et ça pourrait sans doute m'éviter pas mal de prises de tête ;) )

 

Un grand MERCI d'avance! :fleur:

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Comme on ne peut pas attacher de fichier, voila le code :

 

Installer converters

 

A mettre dans admin->applications_addon->ips->concert->modules_admin->board

 

Nommer le fichier drupal.php

 

<?php
$info = array( 'key' => 'drupal',
 'name' => 'Drupal 6.x',
 'login' => true );
class admin_convert_board_drupal extends ipsCommand
{
/**
* Main class entry point
*
* @access public
* @param object ipsRegistry
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// What can this thing do?
//-----------------------------------------

// array('action' => array('action that must be completed first'))
$this->actions = array(
'emoticons' => array(),
'pfields' => array(),
'forum_perms' => array(),
'groups' => array('forum_perms'),
'members' => array('groups', 'pfields'),
'forums' => array('members'),
'topics' => array('members', 'forums'),
'posts' => array('members', 'topics', 'emoticons'),
//'pms' => array('members'),
);

//-----------------------------------------
 // Load our libraries
 //-----------------------------------------

require_once( IPS_ROOT_PATH . 'applications_addon/ips/convert/sources/lib_master.php' );
require_once( IPS_ROOT_PATH . 'applications_addon/ips/convert/sources/lib_board.php' );
$this->lib = new lib_board( $registry, $html, $this );

 $this->html = $this->lib->loadInterface();
$this->lib->sendHeader( 'Drupal 6.x → IP.Board Converter' );

//-----------------------------------------
// Are we connected?
// (in the great circle of life...)
//-----------------------------------------

$this->HB = $this->lib->connect();

//-----------------------------------------
// Parser
//-----------------------------------------

require_once( IPS_ROOT_PATH . 'sources/handlers/han_parse_bbcode.php' );
$this->parser		 = new parseBbcode( $registry );
$this->parser->parse_smilies = 1;
$this->parser->parse_bbcode = 1;
$this->parser->parsing_section = 'convert';

//-----------------------------------------
// What are we doing?
//-----------------------------------------

if (array_key_exists($this->request['do'], $this->actions) or $this->request['do'] == 'disallow')
{
call_user_func(array($this, 'convert_'.$this->request['do']));
}
else
{
$this->lib->menu();
}

//-----------------------------------------
 // Pass to CP output hander
 //-----------------------------------------

$this->sendOutput();

}

/**
* Output to screen and exit
*
* @access private
* @return void
*/
private function sendOutput()
{
$this->registry->output->html .= $this->html->convertFooter();
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
$this->registry->output->sendOutput();
exit;
}

/**
* Count rows
*
* @access private
* @param string action (e.g. 'members', 'forums', etc.)
* @return integer number of entries
**/
public function countRows($action)
{
switch ($action)
{
case 'forum_perms':
case 'groups':
 return $this->lib->countRows('role');
 break;

case 'pfields':
 return $this->lib->countRows('profile_fields');
 break;

case 'members':
 return $this->lib->countRows('users');
 break;

//case 'pms':
 //return $this->lib->countRows('pm_index');
 //break;

case 'posts':
 return $this->lib->countRows('node', "type ='forum'") + $this->lib->countRows('comments', 'pid=0');
 break;

case 'topics':
 return $this->lib->countRows('node', "type ='forum'");
 break;

case 'forums':
 return $this->lib->countRows('term_data', 'vid=1');
 break;

case 'emoticons':
 return $this->lib->countRows('smileys');
 break;

default:
 return $this->lib->countRows($action);
 break;
}
}

/**
* Check if section has configuration options
*
* @access private
* @param string action (e.g. 'members', 'forums', etc.)
* @return boolean
**/
public function checkConf($action)
{
switch ($action)
{
case 'members':
case 'groups':
case 'forum_perms':
case 'emoticons':
//case 'pfields':
 return true;
 break;

default:
 return false;
 break;
}
}

/**
* Fix post data
*
* @access private
* @param string raw post data
* @return string parsed post data
**/
private function fixPostData($text)
{
// Sort out newlines
$text = nl2br($text);

$text = str_replace( 'http://www.cap-recifal.com/sites/default/files/images/', ipsRegistry::$settings['board_url'].'/uploads/img_old_topics/users/', $text );
$text = str_replace( 'http://www.cap-recifal.com/sites/default/files/users/', ipsRegistry::$settings['board_url'].'/uploads/img_old_topics/users/', $text );
$text = str_replace( '/sites/default/files/images/', ipsRegistry::$settings['board_url'].'/uploads/img_old_topics/', $text );
$text = str_replace( '/sites/default/files/users/', ipsRegistry::$settings['board_url'].'/uploads/img_old_topics/users/', $text );

$text = str_replace("<p>", "", $text);
$text = str_replace("</p>", "", $text);
$text = str_replace("[h1]", "[size=7]", $text);
$text = str_replace("[/h1]", "[/size]", $text);
$text = str_replace("[h2]", "[size=6]", $text);
$text = str_replace("[/h2]", "[/size]", $text);
$text = str_replace("[h3]", "[size=5]", $text);
$text = str_replace("[/h3]", "[/size]", $text);
$text = str_replace("[h4]", "[size=4]", $text);
$text = str_replace("[/h4]", "[/size]", $text);
$text = str_replace("[h5]", "[size=3]", $text);
$text = str_replace("[/h5]", "[/size]", $text);
$text = str_replace("[h6]", "[size=2]", $text);
$text = str_replace("[/h6]", "[/size]", $text);
$text = str_replace("[code]", "[code=auto:0]", $text);

$text = preg_replace('#\[quote=(.+?)\]#', '[quote name="$1"]', $text);

$text = preg_replace('#\[img=(.+)\](.+)\[/img\]#', '<img src="$2">', $text);
$text = preg_replace("#\[img width=(.+)\](.+)\[/img\]#", '<img src="$2">', $text);
$text = preg_replace('#\[img\](.+)\[/img\]#', '<img src="$1">', $text);

return $text;
}

/**
* Convert forum permissions
*
* @access private
* @return void
**/
private function convert_forum_perms()
{
//-----------------------------------------
// Were we given more info?
//-----------------------------------------
$this->lib->saveMoreInfo('forum_perms', 'map');
//---------------------------
// Set up
//---------------------------
$main = array( 'select' => '*',
 'from' => 'role',
 'order' => 'rid ASC',
 );
$loop = $this->lib->load( 'forum_perms', $main, array(), array(), TRUE );
//-----------------------------------------
// We need to know how to map these
//-----------------------------------------
$this->lib->getMoreInfo('forum_perms', $loop, array('new' => '--Create new set--', 'ot' => 'Old permission set', 'nt' => 'New permission set'), '', array('idf' => 'rid', 'nf' => 'name'));
//---------------------------
// Loop
//---------------------------
foreach( $loop as $row )
{
$this->lib->convertPermSet($row['rid'], $row['name']);
}
$this->lib->next();
}

/**
* Convert groups
*
* @access private
* @return void
**/
private function convert_groups()
{
//-----------------------------------------
// Were we given more info?
//-----------------------------------------
$this->lib->saveMoreInfo('groups', 'map');
//---------------------------
// Set up
//---------------------------
$main = array( 'select' => '*',
 'from' => 'role',
 'order' => 'rid ASC',
 );
$loop = $this->lib->load( 'groups', $main, array(), array(), TRUE );
//-----------------------------------------
// We need to know how to map these
//-----------------------------------------
$this->lib->getMoreInfo('groups', $loop, array('new' => '--Create new group--', 'ot' => 'Old group', 'nt' => 'New group'), '', array('idf' => 'rid', 'nf' => 'name'));
//---------------------------
// Loop
//---------------------------
$groups = array();
// Loop
foreach( $loop as $row )
{
$save = array(
 'g_title' => $row['name'],
 'g_perm_id' => $row['rid'],
 );
$this->lib->convertGroup($row['rid'], $save);
}
// Next, please!
$this->lib->next();
}

/**
* Convert members
*
* @access private
* @return void
**/
private function convert_members()
{
//-----------------------------------------
// Were we given more info?
//-----------------------------------------

$pcpf = array(
'url' => 'Website',
);

//$this->lib->saveMoreInfo('members', array_merge(array_keys($pcpf), array('pp_path')));
$this->lib->saveMoreInfo('members', array_merge(array_keys($pcpf), array('pp_path', 'gal_path', 'avatar_salt')));
//---------------------------
// Set up
//---------------------------
$main = array( 'select' => 'u.*',
 'from' => array( 'users' => 'u' ),
 'add_join' => array(
	 array( 'select' => 'e.signature',
		 'from' => array('users_signature' => 'e'),
		 'where' => 'u.uid = e.uid',
		 'type' => 'left',
	 ),
	 array(
		 'select' => 'f.value',
		 'from' => array('user_stats_values' => 'f'),
		 'where' => 'u.uid = f.uid',
		 'type' => 'left',
	 ),
	 array(
		 'select' => 'h.rid',
		 'from' => array('users_roles' => 'h'),
		 'where' => 'u.uid = h.uid',
		 'type' => 'left',
	 ),

	 ),
 'order' => 'u.uid ASC' );

$loop = $this->lib->load('members', $main);

//-----------------------------------------
// Tell me what you know!
//-----------------------------------------
$get = unserialize($this->settings['conv_extra']);
$us = $get[$this->lib->app['name']];
$ask = array();
$ask['attach_path'] = array('type' => 'text', 'label' => 'Dossier ou les avatars sauvegardés sont stockés sur IPB (Par défaut sur Drupal : /sites/default/files/avatars):');
$ask['avatar_salt'] = array('type' => 'text', 'label' => 'Avatar salt (Chaine de caracteres precedent les fichiers Drupal (Ex : picture-XXX - Si vous ne savez pas, entrez "."): ');
// And those custom profile fields
$options = array('x' => '-Skip-');
$this->DB->build(array('select' => '*', 'from' => 'pfields_data'));
$this->DB->execute();
while ($row = $this->DB->fetch())
{
$options[$row['pf_id']] = $row['pf_title'];
}
foreach ($pcpf as $id => $name)
{
$ask[$id] = array('type' => 'dropdown', 'label' => 'Champs de profile personnalisé à récuperer- '.$name.': ', 'options' => $options, 'extra' => $extra );
}
$this->lib->getMoreInfo('members', $loop, $ask, 'path');
//-----------------------------------------
// Get our custom profile fields
//-----------------------------------------
if (isset($us['pfield_group']))
{
$this->DB->build(array('select' => '*', 'from' => 'pfields_data', 'where' => 'pf_group_id='.$us['pfield_group']));
$this->DB->execute();
$pfields = array();
while ($row = $this->DB->fetch())
{
 $pfields[] = $row;
}
}
else
{
$pfields = array();
}

//---------------------------
// Loop
//---------------------------
while ( $row = ipsRegistry::DB('hb')->fetch($this->lib->queryRes) )
{
//-----------------------------------------
// Set info
//-----------------------------------------
// Basic info
$info = array(
 'id' => $row['uid'],
 'group' => $row['rid'],
 'joined' => $row['created'],
 'username' => $row['name'],
 'email' => $row['mail'],
 'password' => $row['pass'],
 );
// Member info
$members = array(
 'posts' => $row['value'],
 'last_visit' => $row['access'],
 'last_activity' => $row['login'],
 'time_offset' => 1,
 'member_banned' => $row['status'] == '1' ? 0 : 1,
 );
// Profile

$profile = array(
 'signature' => $this->fixPostData($row['signature']),
 );
//-----------------------------------------
// Avatars
//-----------------------------------------
$path = '';
if ( $row['picture'] != '')
{
 $profile['photo_type'] = 'custom';
 $profile['photo_location'] = str_replace( 'sites/default/files/avatars/', '', $row['picture'] );
 $path = $us['attach_path'];
}
//-----------------------------------------
// Custom Profile fields
//-----------------------------------------
// Actual
foreach ($pfields as $field)
{
 ipsRegistry::DB('hb')->build(array(
		 'select' => '*',
		 'from' => array('profile_values' => 'a'),
		 'where' => "a.uid={$row['uid']}",
		 'add_join' => array(
			 array(
				 'select' => 'b.name',
				 'from' => array('profile_fields' => 'b'),
				 'where' => 'a.fid = b.fid',
				 'type' => 'left'
				 ),
			 ),
		 )
	 );

 ipsRegistry::DB('hb')->execute();
 while ($userpfields = ipsRegistry::DB('hb')->fetch())
 {
 if ($field['pf_key'] == $userpfields['name'])
 {
 if ($field['pf_type'] == 'drop')
 {
 $custom['field_'.$field['pf_id']] = $us['pfield_data'][$field['pf_key']][$userpfields['value']-1];
 }
 else
 {
 $text = $userpfields['value'];
 $text = preg_replace("#a:(.*){s:(.*):\"day\";s:(.*):\"(.*)\";s:(.*):\"month\";s:(.*):\"(.*)\";s:(.*):\"year\";s:(.*):\"(.*)\";}#", "$4/$7/$10", $text);
 $custom['field_'.$field['pf_id']] = $text;
 }
 }
 }
}
//-----------------------------------------
// And go!
//-----------------------------------------
$this->lib->convertMember($info, $members, $profile, $custom, $path);
}
$this->lib->next();
}

/**
* Convert Forums
*
* @access private
* @return void
**/
private function convert_forums()
{
//-----------------------------------------
// Were we given more info?
//-----------------------------------------
$get = unserialize($this->settings['conv_extra']);
$us = $get[$this->lib->app['name']];
$ask = array();
//$this->lib->saveMoreInfo('forums');
//---------------------------
// Set up
//---------------------------
$main = array( 'select' => 'a.*',
 'from' => array('term_data' => 'a'),
 'where' => 'vid=1',
 'order' => 'parent ASC',
 'add_join' => array(
	 array( 'select' => 'b.*',
	 'from' => array('term_hierarchy' => 'b'),
	 'where' => 'a.tid = b.tid',
	 'type' => 'left'
	 ),
	 ),
 );
$loop = $this->lib->load('forums', $main, array(), array(), TRUE );
//->lib->getMoreInfo('forums', $loop, $ask);
//---------------------------
// Loop
//---------------------------
foreach ( $loop as $row )
{
// Set info
$save = array(
	 'parent_id' => $row['parent'] == 0 ? -1 : $row['parent'],
	 'position' => $row['weight'],
	 'name' => $row['name'],
	 'description' => $row['description'],
	 'sub_can_post' => ($row['parent'] == 0) ? 0 : 1 );
// Save
$this->lib->convertForum($row['tid'], $save, array());
}

$this->lib->next();
}

/**
* Convert Topics
*
* @access private
* @return void
**/
private function convert_topics()
{
//---------------------------
// Set up
//---------------------------
$main = array( 'select' => 'a.*',
 'from' => array('term_node' => 'a'),
 'where' => "b.type='forum'",
 'order' => 'created ASC',
 'group' => 'a.nid',
 'add_join' => array(
	 array( 'select' => 'b.type, b.title, b.uid, b.status, b.created, b.comment',
	 'from' => array('node' => 'b'),
	 'where' => 'a.nid = b.nid',
	 'type' => 'left'
	 ),
	 array( 'select' => 'c.totalcount, c.timestamp',
	 'from' => array('node_counter' => 'c'),
	 'where' => 'a.nid = c.nid',
	 'type' => 'left'
	 ),
	 array( 'select' => 'd.last_comment_timestamp, d.last_comment_uid, d.comment_count',
	 'from' => array('node_comment_statistics' => 'd'),
	 'where' => 'a.nid = d.nid',
	 'type' => 'left'
	 ),
	 ),
 );

$loop = $this->lib->load('topics', $main, array('tracker'));
//---------------------------
// Loop
//---------------------------
while ( $row = ipsRegistry::DB('hb')->fetch($this->lib->queryRes) )
{

$save = array(
 'title' => $row['title'],
 'state'	 => $row['comment'] != 2 ? 'closed' : 'open',
 'posts'	 => $row['comment_count'],
 'starter_id'	 => $row['uid'],
 'starter_name' => $row['uid'],
 'start_date'	 => $row['created'],
 'last_post'	 => $row['last_comment_timestamp'],
 'last_poster_id' => $row['last_comment_uid'],
 'poll_state' => 0,
 'views'	 => $row['totalcount'],
 'forum_id' => $row['tid'],
 'approved' => $row['status'],
 'author_mode' => 1,
 'topic_hasattach' => 0 );
$this->lib->convertTopic($row['nid'], $save);
}

$save = array(
 'title' => $row['title'],
 'state'	 => $row['comment'] != 2 ? 'closed' : 'open',
 'posts'	 => $row['comment_count'],
 'starter_id'	 => $row['uid'],
 'starter_name' => $row['uid'],
 'start_date'	 => $row['created'],
 'last_post'	 => $row['last_comment_timestamp'],
 'last_poster_id' => $row['last_comment_uid'],
 'poll_state' => 0,
 'views'	 => $row['totalcount'],
 'forum_id' => $row['tid'],
 'approved' => $row['status'],
 'author_mode' => 1,
 'topic_hasattach' => 0 );
$this->lib->convertTopic($row['nid'], $save);


$this->lib->next();
}


/**
* Convert Posts
*
* @access private
* @return void
**/
private function convert_posts()
{
//---------------------------
// Set up
//---------------------------
$main = array( 'select' => 'a.nid, a.title, a.uid, a.status, a.created',
 'from' => array('node' => 'a'),
 'where' => "a.type='forum'",
 'order' => 'a.created ASC',
 'add_join' => array(
	 array( 'select' => 'b.body',
	 'from' => array('node_revisions' => 'b'),
	 'where' => 'a.nid = b.nid',
	 'type' => 'left',
	 'group' => 'a.nid'
	 ),
	 ),
);
$loop = $this->lib->load('posts', $main);
//---------------------------
// Loop
//---------------------------
while ( $row = ipsRegistry::DB('hb')->fetch($this->lib->queryRes) )
{
 $save = array(
 'author_id' => $row['uid'],
 'author_name' => $row['uid'],
 'use_sig'	 => 1,
 'use_emo'	 => 1,
 'ip_address' => '127.0.0.1',
 'post_date' => $row['created'],
 'post' => $this->fixPostData($row['body']),
 'queued'	 => $row['status'] == '1' ? 0 : 1,
 'topic_id' => $row['nid'],
 'post_title' => $row['subject'],
 );
$this->lib->convertPost($row['nid'], $save);
ipsRegistry::DB('hb')->build( array( 'select' => '*', 'from' => 'comments', 'where' => "nid='{$row['nid']}'" ) );
$groupRes = ipsRegistry::DB('hb')->execute();
$groups = array();
while( $group = ipsRegistry::DB('hb')->fetch($groupRes) )
 {
 $save1 = array(
 'author_id' => $group['uid'],
 'author_name' => $group['uid'],
 'use_sig'	 => 1,
 'use_emo'	 => 1,
 'ip_address' => $group['hostname'],
 'post_date' => $group['timestamp'],
 'post' => $this->fixPostData($group['comment']),
 'queued'	 => $group['status'],
 'topic_id' => $group['nid'],
 'post_title' => $group['subject'],
 );

 $this->lib->convertPost($group['cid'], $save1);
 }
}


$this->lib->next();
}

/**
* Convert Emoticons
*
* @access private
* @return void
**/
private function convert_emoticons()
{
//-----------------------------------------
// Were we given more info?
//-----------------------------------------
$this->lib->saveMoreInfo('emoticons', array('emo_path', 'emo_opt'));
//---------------------------
// Set up
//---------------------------
$main = array( 'select' => '*',
 'from' => 'smileys',
 'order' => 'id ASC',
 );
$loop = $this->lib->load('emoticons', $main);
//-----------------------------------------
// We need to know the path and how to handle duplicates
//-----------------------------------------
$this->lib->getMoreInfo('emoticons', $loop, array('emo_path' => array('type' => 'text', 'label' => 'The path to the folder where emoticons are saved (no trailing slash - usually sites/all/modules/smileys/packs/):'), 'emo_opt' => array('type' => 'dupes', 'label' => 'How do you want to handle duplicate emoticons?') ), 'path' );
$get = unserialize($this->settings['conv_extra']);
$us = $get[$this->lib->app['name']];
IPSLib::updateSettings(array('conv_extra' => serialize($get)));
$path = $us['emo_path'];
//-----------------------------------------
// Check all is well
//-----------------------------------------
if (!is_writable(DOC_IPS_ROOT_PATH.'public/style_emoticons/'))
{
$this->lib->error('Your IP.Board emoticons path is not writeable. '.DOC_IPS_ROOT_PATH.'public/style_emoticons/');
}
if (!is_readable($path))
{
$this->lib->error('Your remote emoticons path is not readable.');
}
//---------------------------
// Loop
//---------------------------
$i = 1;
while ( $row = ipsRegistry::DB('hb')->fetch($this->lib->queryRes) )
{
$row['image'] = preg_replace('/(.*)\/(.*)\.(.*)/', '$2.$3', $row['image']);
$save = array(
 'typed' => $row['acronyms'],
 'image' => $row['image'],
 'clickable' => 0,
 'emo_set' => 'default',
 'emo_position' => $i
 );
$i++;
$done = $this->lib->convertEmoticon($row['id'], $save, $us['emo_opt'], $path);
}
$this->lib->next();
}

/**
* Convert custom profile fields
*
* @access private
* @return void
**/
private function convert_pfields()
{
//---------------------------
// Set up
//---------------------------
$main = array( 'select' => '*',
 'from' => 'profile_fields',
 'order' => 'fid ASC',
 );
$loop = $this->lib->load('pfields', $main, array('pfields_groups'));
$get = unserialize($this->settings['conv_extra']);
$us = $get[$this->lib->app['name']];
if (!$this->request['st'])
{
$us['pfield_group'] = null;
IPSLib::updateSettings(array('conv_extra' => serialize($us)));
}
//-----------------------------------------
// Do we have a group
//-----------------------------------------
if (!$us['pfield_group'])
{
$group = $this->lib->convertPFieldGroup(1, array('pf_group_name' => 'Converted', 'pf_group_key' => 'drupal'), true);
if (!$group)
{
 $this->lib->error('There was a problem creating the profile field group');
}
$us['pfield_group'] = $group;
$get[$this->lib->app['name']] = $us;
IPSLib::updateSettings(array('conv_extra' => serialize($get)));
}
//---------------------------
// Loop
//---------------------------
while ( $row = ipsRegistry::DB('hb')->fetch($this->lib->queryRes) )
{
$content = '';
$type = '';
// What kind of field is this
if ($row['type'] == 'url' or $row['type'] == 'date' or $row['type'] == 'textfield')
{
 $type = 'input';
}
elseif ($row['type'] == 'selection')
{
 $type = 'drop';
}
else
{
 $type = 'input';
}

//$position = str_replace('-', '', $row['weight']);
//$position = $position + 1;
// Insert?
$save = array(
 'pf_title' => $row['title'],
 'pf_desc' => $row['explanation'],
 'pf_content' => $row['options'],
 'pf_type' => $type,
 'pf_not_null' => $row['required'],
 'pf_member_hide' => 0,
 'pf_member_edit' => 1,
 //'pf_position' => $position,
 'pf_topic_format' => '',
 'pf_group_id' => $group,
 'pf_icon' => '',
 'pf_input_format' => '',
 'pf_key' => $row['name'],
 );
$this->lib->convertPField($row['fid'], $save);
}
// Save pfield_data
$get[$this->lib->app['name']] = $us;
IPSLib::updateSettings(array('conv_extra' => serialize($get)));
// Next, please!
$this->lib->next();
}
}

 

Attention, la fonction convert_members() est très lourde il faut pas trop dépasser les 200 membres par cycle.

Modifié par Dlteck2000
  • J’aime 1
Lien vers le commentaire
Partager sur d’autres sites

  • 0

Ensuite ajouter dans le fichier newauth.php ( admin->sources->loginauth->convert )

 

/**
 * Drupal!
 */
private function drupal ( $username, $email, $password )
{
 if ( $this->parent->_memberData['conv_password'] == md5 ( $password . $this->parent->_memberData['misc'] ) )
 {
  return true;
 }
 else
 {
  return false;
 }
}

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Il est certain que tout ne fonctionnera pas avec ta version, il faudra surtout revoir la fonction fixPostData($text) et pleins d'autres petits détails (certains id tapé en dure) car c'était prévu pour une utilisation perso au départ ;)

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Mille mercis !!! :fleur:

 

C'est sur que je vais sans doute avoir pas mal de choses à modifier/ajouter pour adapter tout ça à mon site (je sens que cette histoire de messages privés va être un peu prise de tête), mais ce qui est encore plus sur c'est qu'entre ça et démarrer à partir de rien, y a pas photo !

 

Encore un grand MERCI !!

:bien::hello:

  • J’aime 1
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à cette question…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...

Information importante

En utilisant ce site, vous êtes d’accords avec nos Conditions d’utilisation. Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookies, sinon nous supposerons que vous êtes d’accord pour continuer.