Help - Search - Member List - Calendar
Full Version: Démarrer une intégration grâce au IPBSDK
IPBR-FR > Entraide > Forums dédiés aux mods majeures > IPB SDK
Fabien
Ce sujet s'adresse à ceux qui ont déjà installés le IPB SDK et qui ont compris comment on s'en sert. Si ce n'est pas le cas merci de reprendre la doc avant de poursuivre la lecture de cet exemple.

Notez bien que cet exemple vaut ce qu'il vaut ... qu'il y a d'autres façons de faire, que celle présentée ci-dessous est une parmis tant d'autres. Notez egalement que la solution proposée n'a pas été testée, et qu'elle est à complèter.

Quelques considérations :
- URL de mon site : http://domaine.ltd
- IPB est correctement installé dans un dossier forums/ et donc URL http://domaine.ltd/forums
- IPB SDK est installé dans un dossier ipbsdk/ smile.gif
- www/ représente le dossier racine de mon site (URL http://domaine.ltd)

Je veux ajouter quelques fonctions pour intègrer ma page d'accueil (www/index.html) et mes forums. J'ai donc réalisé un petit script pour afficher sur mes pages une barre membre, la liste des utilisateurs en ligne et la liste des derniers messages du forum. Par ailleur la CSS sera celle du skin du membre.

1
Ma page d'accueil se nomme www/index.html , je la renomme en index.php
J'ouvre www/index.php dont voici le code :
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Accueil</title>
</head>

<body>


<div align="center" style="background-color:#CCCCCC; padding:4px; border:3px dashed #FFCC66">
<h2>Bienvenue sur mon site ! </h2>
</div>
</body>
</html>



et tout au début j'ajoute :

CODE

<?php

require_once "ipbsdk/siteTOP.inc.php";
$site = new siteTOP();

?>

Ces quelques lignes permettent d'inclure le fichier contenant la classe qui se chargera des traitements liés à nos modifications. On met ça dans un fichier à part pour pouvoir l'utiliser sur n'importe qu'elle page de notre site plus facilement.


HTML
<?php

require_once "ipbsdk/siteTOP.inc.php";
$site = new siteTOP();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Accueil</title>
</head>

<body>


<div align="center" style="background-color:#CCCCCC; padding:4px; border:3px dashed #FFCC66">
<h2>Bienvenue sur mon site ! </h2>
</div>
</body>
</html>


Message d'origine créé par Forxer
Fabien
2
Maintenant on va donc créer ce fichier siteTOP.inc.php dans le dossier www/ipbsdk/
Ce fichier contient à peu près ce qui suit : (ne copiez pas ce code, je crois que le forum a effacé des caractères d'échappement; je joins le fichier au sujet, utilisez plutôt ça)
CODE
<?php


require_once "ipbsdk_class.inc.php";
$SDK =& new IPBSDK();

// URL index des forums
define('SITE_BOARD_URL', $GLOBALS['board_url']."/index.php");


// définition de la class siteTOP
class siteTOP
{
var $is_connecte = FALSE; // bool - le membre courant est-il connecté ?
var $is_admin = FALSE; // bool - le membre courant est-il admin ?
var $is_supermod = FALSE; // bool - le membre courant est-il supermoderateur ?
var $infosMembre = array(); // array - infos détaillées sur le membre courant
var $onlineInfos = array(); // array - informations utilisateurs en lignes
var $css = ""; // string - css suivant skin utilisateur

// constructor class siteTOP
function siteTOP()
{
 global $SDK;
 
  // récupère la CSS
  $this->css = $SDK->get_css(TRUE);
 
  // le membre est-il connecté ?
  $this->is_connecte = $SDK->is_loggedin();
 
  if ($this->is_connecte)
  {
   $this->infosMembre  =  $SDK->get_advinfo(); // récupèration détails membre
   
   $this->is_supermod  =  $SDK->is_supermod(); // est-il supermodo ?
   $this->is_admin  =  $SDK->is_admin(); // est-il admin ?
  }
 
 
  // récupèration de la liste des membres en ligne avec leurs détails
  $onlineUsers  =  $SDK->list_online_members("1");
 
  // récupèration de détails supplémentaires sur les comptes actifs
  $this->onlineInfos =  $SDK->get_active_count();
 
  // construction liste utilisateurs en ligne
  $this->onlineInfos['liste'] = "";
   
  if (count($onlineUsers))
  {
   foreach ($onlineUsers as $i)
   {
    // ajouter virgule ?
    if ($this->onlineInfos['liste'])
    {
     $this->onlineInfos['liste'] .= ", ";
    }
 
    $this->onlineInfos['liste'] .= '<a href="' . SITE_BOARD_URL . '?showuser=' . $i['id'] . '">' . $i['prefix'] . $i['member_name'] . $i['suffix'] . '</a>';
   }
   
  }
 
  unset($onlineUsers);
 
   
} // end constructor



// Construction de la barre membre/invité
function barreMembre()
{

 if ($this->is_connecte)
 {  
 
  $barreMembre = '
 
   <table width="100%" cellspacing="6" id="userlinks">
    <tr>
     <td><strong>Connect&eacute; en tant que : <a href="' . SITE_BOARD_URL . '?showuser=' . $this->infosMembre['id'] . '">' . $this->infosMembre['name'] . '</a></strong>
       ( <a href="' . SITE_BOARD_URL . '?act=Login&amp;CODE=03">D&eacute;connexion</a>';
   
   
  if ($this->is_admin)
  {
   $barreMembre .=  ' &middot; <strong><a href="' . SITE_BOARD_URL . '/admin.php" target="_blank">PC Admin</a></strong>';
  }
 
  if ($this->is_supermod)
  {
   $barreMembre .=  ' &middot; <strong><a href="' . SITE_BOARD_URL . '?act=modcp&amp;forum=">PC Modo</a></strong>';
  }
 
  $barreMembre .= '
      )</td>
     <td align="right"> <b><a href="' . SITE_BOARD_URL . '?act=UserCP&amp;CODE=00">Mes contr&ocirc;les</a></b> · <a href="' . SITE_BOARD_URL . '?act=Search&amp;CODE=getnew">Voir nouveaux messages forums</a></td>
    </tr>
   </table>';
   
  return $barreMembre;
 }
 
 else {
 
  $barreInvite =  '
   <table width="100%" cellspacing="6" id="userlinks">
    <tr>  
     <td align="left">
     Bienvenue invit&eacute; ( <a href="' . SITE_BOARD_URL . '?act=Login&amp;CODE=00">Connexion</a> | <a href="' . SITE_BOARD_URL . '?act=Reg&amp;CODE=00">Inscription</a> )</td>
     <td align="right"><a href="' . SITE_BOARD_URL . '?act=Reg&amp;CODE=reval">Recevoir &agrave; nouveau l\'email de validation</a></td>
    </tr>
   </table>';
 
  return $barreInvite;
 }
 
} // end fct barreMembre()



// construction derniers messages forums
function lastsPostsForums($forums="*", $limit="5", $start="0", $orderby="post_date", $order="desc", $bypass="0")
{
 global $SDK;
 
  $lastsPostsForums = $SDK->list_forum_topics($forums, array("limit" => $limit, "start" => $start, "order" => $order, "orderby" => $orderby), $bypass);
 
  $lastsPostsForumsList = "";
 
  if (count($lastsPostsForums))
  {
   foreach ($lastsPostsForums as $i)
   {
    $lastsPostsForumsList .= '•&nbsp;<a href="' . SITE_BOARD_URL . '?showtopic=' . $i['tid'] . '&amp;view=getnewpost">'.$i['title'] . '</a><br />';
   }
   
  }
  else {
   $lastsPostsForumsList = "Pas d'information.";  
  }
 
  unset($lastsPostsForums);
  return $lastsPostsForumsList;
 
} // end fct lastsPostsForums()


} // end class siteTOP


?>



Message d'origine créé par Forxer
Fabien
3
Maintenant on retourne sur le fichier de l'accueil du site et on le modifie de la façon suivante :

HTML
<?php

require_once "ipbsdk/siteTOP.inc.php";
$site = new siteTOP();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Accueil</title>

<?php
echo $site->css;
?>

</head>

<body>


<div align="center" style="background-color:#CCCCCC; padding:4px; border:3px dashed #FFCC66">
<h2>Bienvenue sur mon site ! </h2>
</div>

<?php
echo $site->barreMembre();
?>
<br />
<br />
<div class="plainborder">
<div class="maintitle">Derniers messages forums :</div>
<br />
<div class="tablepad">
<?php
echo $site->lastsPostsForums();
?>
</div>
</div>


</body>
</html>




Voilà smile.gif

Message d'origine créé par Forxer
LLaumgui
Je suis en train de rédiger un billet pour mon blog ou j'exposerais une idée :

Actuellement, j'ai reécris pas mal de fonction du sdk, ce qui m'empèche de faire des maj aiséement... Donc je pense utiliser php5 et l'héritage pour ne plus instancier SDK mais MySDK classe perso, héritant de SDK et fesant de la redéfinition...

Ainsi malgré les modification, la maj sera aisée... Faut juste que je vérifie si php permet bien tout ça smile.gif.
Bads
Merci pour ce tutorial Fabien smile.gif

Je vais l'essayer dès cet après-midi. wink.gif
Fabien
Le tuto est de Forxer, je n'ai que recopier ce qu'il avait fait smile.gif
Bads
Alors,

Merci à Forxer smile.gif
gael11
Est ce que le fichier siteTOP.inc.php est toujours bon pour utiliser avec le sdk 1.6 et ipb 2.1.1 final ?
Fabien
Il faut tester pour le savoir smile.gif
gael11
QUOTE(Fabien @ jeudi 29 septembre 2005 à 13:55)
Il faut tester pour le savoir smile.gif
*



Et bien je viens de tester et apparemment ca fonctionne. Juste un ptit message d'erreur à signaler:
CODE
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /home/www/gael11/www/forum/ips_kernel/class_db.php on line 939
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2012 Invision Power Services, Inc.