Salut tous le monde,
Je cherche à découper la table users en 2 parties pour pas quelle sois trop lourde,j'ai donc creer une classe qui est le clone de la classe users mais ça ne fonctionne pas et aucune erreur est generée.
Voici le code :
table sql:
CREATE TABLE usersinfo (
uid mediumint(8) unsigned NOT NULL auto_increment,
user_occ varchar(100) NOT NULL default '',
bio tinytext,
user_intrest varchar(150) NOT NULL default '',
PRIMARY KEY (uid),
KEY uiduser_occ (uid,user_occ)
) TYPE=MyISAM;
INSERT INTO `usersinfo` (`uid`, `user_occ`, `bio`, `user_intrest`) VALUES
(1, 'test user_occ', 'test bio', 'test user_intrest');
fichier kernel/userinfo.php (la classe userinfo):
class XoopsUserinfo extends XoopsObject{
function XoopsUserinfo($id = null){
$this->initVar('uid', XOBJ_DTYPE_INT, null, false);
$this->initVar('user_occ', XOBJ_DTYPE_TXTBOX, null, false, 100);
$this->initVar('bio', XOBJ_DTYPE_TXTAREA, null, false, null);
$this->initVar('user_intrest', XOBJ_DTYPE_TXTBOX, null, false, 150);
// for backward compatibility
if (isset($id)) {
if (is_array($id)) {
$this->assignVars($id);
} else {
$member_handler =& xoops_gethandler('member');
$user =& $member_handler->getUserinfo($id);
foreach ($user->vars as $k => $v) {
$this->assignVar($k, $v['value']);
}
}
}
}
function user_occ($format="S")
{
return $this->getVar("user_occ", $format);
}
function bio($format="S")
{
return $this->getVar("bio", $format);
}
function user_intrest($format="S")
{
return $this->getVar("user_intrest", $format);
}
}
class XoopsUserinfoHandler extends XoopsPersistableObjectHandler{
function __construct(&$db)
{
parent::__construct($db, "usersinfo", 'XoopsUserinfo', "uid", "user_occ");
}
}
Le code ajouté au fichier kernel/member.php
var $_iHandler;
function XoopsMemberHandler(&$db)
{
$this->_gHandler = new XoopsGroupHandler($db);
$this->_iHandler = new XoopsUserinfoHandler($db);
$this->_uHandler = new XoopsUserHandler($db);
$this->_mHandler = new XoopsMembershipHandler($db);
}
function &getUserinfo($id)
{
if (!isset($this->_members[$id])) {
$this->_members[$id] =& $this->_iHandler->get($id);
}
return $this->_members[$id];
}
Et j'ai tester l'affichage des informations dans les profils (userinfo.php) avec ce code.
$member_handler =& xoops_gethandler('member');
$thisUserinfo =& $member_handler->getUserinfo($uid);
$xoopsTpl->assign('lang_occupation', _US_OCCUPATION);
$xoopsTpl->assign('user_occupation', $thisUserinfo->getVar('user_occ'));
$xoopsTpl->assign('lang_interest', _US_INTEREST);
$xoopsTpl->assign('user_interest', $thisUserinfo->getVar('user_intrest'));
$xoopsTpl->assign('lang_extrainfo', _US_EXTRAINFO);
$var = $thisUserinfo->getVar('bio', 'N');
$xoopsTpl->assign('user_extrainfo', $myts->displayTarea( $var,0,1,1) );
Voila ca fait 2 jours que je suis coincer sur ca ,donc si vous savez pourquoi ca marche pas,n'hésitez à me le dire.