Titre du sujet : Re: classGenerator -> méthode insert ne fonctionne pas par zoullou sur 04/08/2005 00:21:39
Je vient de regarder ton code, mais je n'ai pas trouvé d'ou venait l'erreur, cependant, ce code est bien compliqué et n'utilise pas toutes les possibilitées de XOOPS. La version 2.2 de XOOPS introduit une nouvelle classe : XoopsPersistableObjectHandler qui simplifie grandement le travail des développeurs. Si ton module n'est pas destiné exclusivement a cette version de XOOPS, tu peut toujours copier dans un fichier qui sera inclue dans ton module cette classe. Voila un classe qui l'utilise :
class ExtcalEventmember extends XoopsObject
{
function ExtcalEventmember()
{
$this->initVar('eventmember_id', XOBJ_DTYPE_INT, null, false);
$this->initVar('event_id', XOBJ_DTYPE_INT, null, true);
$this->initVar('uid', XOBJ_DTYPE_INT, null, true);
}
}
class ExtcalEventmemberHandler extends XoopsPersistableObjectHandler
{
function ExtcalEventmemberHandler(&$db)
{
$this->XoopsPersistableObjectHandler($db, 'extcal_eventmember', 'ExtcalEventmember', array('event_id', 'uid'));
}
function createEventmember($var_arr)
{
$eventmember = $this->create();
$eventmember->setVars($var_arr);
return $this->insert($eventmember, true);
}
function deleteEventmember($key)
{
$eventmember = $this->get($key);
return $this->delete($eventmember, true);
}
function getMembers($eventId)
{
$memberHandler = xoops_gethandler('member');
$criteria = new Criteria('event_id', $eventId);
$eventMember = $this->getObjects($criteria);
$count = count($eventMember);
if($count > 0) {
$in = '('.$eventMember[0]->getVar('uid');
array_shift($eventMember);
foreach($eventMember as $member) {
$in .= ','.$member->getVar('uid');
}
$in .= ')';
$criteria = new Criteria('uid', $in, 'IN');
} else {
$criteria = new Criteria('uid', '(0)', 'IN');
}
$ret = array('memberNb'=>$count, 'member'=>$memberHandler->getUserList($criteria));
return $ret;
}
}
Cette classe est trés simple, et utilise peu XoopsPersistableObjectHandler, mais je te conseille de regarder de plus prés cette classe. Si tu a des questions n'hésite surtout pas.
A+
|