Tutorial Avanzati V1

Buddyfriends Hack >> Gestire sistema di liste amici

Categoria: Articoli XoopsItalia
Autore: hpquiz
Data: 15/3/2008
Sommario: Questo hack parte dal modulo buddyfriends 2.3 ed elimina la funzionalità di Instant Messenger per approfondire la gestione delle liste amici.
Permette di:
Visualizzare la lista amici di ogni utente nel suo profilo.
Ogni utente può visualizzare la propria lista amici, con avviso utente online/offline, invio mp.
L'utente può verificare chi lo ha aggiunto alla propria lista ed eventualmente ricambiare.
Attraverso un blocco avere sempre a disposizione una lista degli amici online.

1) Installa buddyfriends 2.3 come ogni altro modulo di xoops.

2) Sostituisci il file index.php con questo





3) Modifica il file userinfo.php


Cerca

$myts =& MyTextSanitizer::getInstance();
if ( is_object($xoopsUser) && $isAdmin ) {
    $xoopsTpl->assign('lang_editprofile', _US_EDITPROFILE);
    $xoopsTpl->assign('lang_deleteaccount', _US_DELACCOUNT);
    $xoopsTpl->assign('user_uid', $thisUser->getVar('uid'));
}


e incolla subito sotto:

////////////////////Hack lista amici/////////////////////////////////////////

$uname = $thisUser->getVar('uname');
$myid = $thisUser->getVar('uid');
$idd =$xoopsUser->getVar("uid", "E");
$sql = $xoopsDB->query("SELECT * FROM ".$xoopsDB->prefix("priv_msgs")." WHERE to_userid = '$idd' AND read_msg='0'");
	$isadmin = 0;
//##
$sqlstr="SELECT fuid FROM ".$xoopsDB->prefix("buddyfriends")." WHERE uid=$myid";
//count my friends
$sqlstr2="SELECT Count(*) FROM ".$xoopsDB->prefix("buddyfriends")." WHERE uid=$myid";
$result2 = $xoopsDB->query($sqlstr2) or die($xoopsDB->error() );
while (list($rep) = $xoopsDB->fetchRow($result2)) {
        $numfriends = $rep;
        }
$resultzz = $xoopsDB->query($sqlstr) or die($xoopsDB->error() );
	$onoff=0;
while ($userinfo = $xoopsDB->fetchArray($resultzz) ) {
      $userinfo = new XoopsUser($userinfo['fuid']);
		$zuid=$userinfo->uid();
        $zuname=$userinfo->uname();
        $zavatar=$userinfo->user_avatar();
        $friends .= "<tr valign="\"middle\""><td align="center" class="\"odd\"" width="30"><a href="\"".XOOPS_URL."/userinfo.php?uid=$zuid\""><img src="\"".XOOPS_URL."/uploads/$zavatar\"" width="\"30\"" /></a></td><td class="\"head\"" align="center" valign="\"middle\""><a href="\"".XOOPS_URL."/userinfo.php?uid=$zuid\"">".ucfirst($zuname)."</a></td><td class="\"even\"" align="center" valign="\"middle\""><a><img src="\"".XOOPS_URL."/images/icons/pm_small.gif\"" border="\"0\"" width="\"27\"" height="\"17\"" alt="\"\"" /></a></td></tr>"; 
}
$friends_table = "$friends";

  //////////////// HAck lista amici  /////////////////



4) Modifica il file di template system_userinfo.html


Cerca:

        <tr valign="top">
          <td class="head"><{$lang_extrainfo}></td>
          <td class="even"><{$user_extrainfo}></td>
        </tr>
      


E incolla sotto

<br />
 <table valign="\"middle\"" class="outer" cellpadding="4" cellspacing="1" width="100%">
        <tr valign="top">
          <th colspan="3" align="center"><{$lang_amici}></th>
        </tr>
          <{$user_friends}>
      </table>


5) Copia le icone necessarie nella cartella buddyfriends

A questo punto è fatta. Volendo puoi inserire anche un blocco per visualizzare gli amici online. Purtroppo al momento non sono riuscita ad integrare il blocco nel modulo (non ho mai fatto un modulo prima e nel creare il blocco mi sono persa! Ogni suggerimento è super gradito!), quindi ecco il codice per creare un blocco personalizzato in php

global $xoopsConfig, $xoopsDB, $xoopsUser, $xoopsTheme, $xoopsLogger, $xoopsMF;
$ModName="Messenger";
$idd =$xoopsUser->getVar("uid", "E");
$sql = $xoopsDB->query("SELECT * FROM ".$xoopsDB->prefix("priv_msgs")." WHERE to_userid = '$idd' 

AND read_msg='0'");
	$isadmin = 0;
$myid=$xoopsUser->uid();

//##
$sqlstr="SELECT fuid FROM ".$xoopsDB->prefix("buddyfriends")." WHERE uid=$myid";
//count my friends
$sqlstr2="SELECT Count(*) FROM ".$xoopsDB->prefix("buddyfriends")." WHERE uid=$myid";
$result2 = $xoopsDB->query($sqlstr2) or die($xoopsDB->error() );
while (list($rep) = $xoopsDB->fetchRow($result2)) {
        $numfriends = $rep;
        }
$resultzz = $xoopsDB->query($sqlstr) or die($xoopsDB->error() );
// jordi onoff switch
	$onoff=0;
//
while ($userinfo = $xoopsDB->fetchArray($resultzz) ) {
        $userinfo = new XoopsUser($userinfo['fuid']);
	$zuid=$userinfo->uid();
        $zuname=$userinfo->uname();

	if ( $userinfo->isOnline() ) {
            echo " <a href="\"".XOOPS_URL."/userinfo.php?uid=$zuid\""><font size="2">".ucfirst

($zuname)."</font></a><br />";
            }
	    else { 
 }

        }
echo "<br />";
echo "<center><a href="modules/buddyfriends" title="Tutta" la="la" lista="lista">[ Tutta la lista ]</a></center>";
echo "";



E' tutto...
Le icone sono le meravigliose Silk Icon di FamFam (http://www.famfamfam.com/lab/icons/silk/) rilasciate con licenza Creative Commons. E' richiesto un linkback.

Nello .zip sono compresi, il file index.php, la traduzione italiana con le aggiunte necessarie e le icone. Scarica il file zip

Per una demo puoi visitare il mio sito sul quale il modulo è attivo (http://www.hpquiz.it) per visualizzarlo però è necessario registrarsi
Tutorial Avanzati V1
URL: http://www.xoopsitalia.org/modules/article/view.article.php/c1/55