Integrating gallery2 int hpmanage CMS: Mapping emApp users to g2

csager

Joined: 2005-10-06
Posts: 8
Posted: Thu, 2007-03-15 17:31

I receive this error whenever I want to create users or groups.

Init load: DB Error: InitLdUserGroup: DB Error: CreateGroup: Error (ERROR_STORAGE_FAILURE)
* in modules/core/classes/GalleryStorage.class at line 477 (gallerycoreapi::error)
* in modules/core/classes/Gallery.class at line 223 (mysqlstorage::search)
* in modules/core/classes/GalleryGroup.class at line 102 (gallery::search)
* in modules/core/classes/GalleryEmbed.class at line 496 (gallerygroup::create)
* in /srv/www/hpmanage/modul/g2mng/classes/gallery.inc at line 220 (galleryembed::creategroup)
* in /srv/www/hpmanage/modul/g2mng/classes/gallery.inc at line 148 (galleryw::creategroup)
* in /srv/www/hpmanage/modul/g2mng/g2_overview.inc at line 81 (galleryw::initldusergrp)
* in /srv/www/hpmanage/index.php at line 271

My question: How to get more precise info about the error

Explanation of system used and wrapper created
System runs on debian etch with apache2 2.2.3-3.3, mysql 5 5.0.32-3, php4 4.4.4-8
Multiple client homepages and one management homepage where the clients hompage data is mapped in
In client homepage gallery is installed multisite (<client url>/g2/). Installation works OK
In management homepage gallery wrapper is called by index.php?page=g2_overview&mpath=g2mng

wrapper script (interesting snippet)
//--require_once(/g2/embed.php');--//
define('GALLERY_CONFIG_DIR', $client->document_root.'g2');
require "/usr/share/gallery2/embed.php";
require_once($hpm->modul->work_path."classes/gallery.inc");

//check if init load needs doing
if($client->pluginIsInitLoad('g2mng'))
if($client->isError($res=galleryw::initLdUserGrp($client->hp_db,$client->hpm_db))){
$hpm->gui->addError('Init load: '.$res->getMessage());
return;
}

wrapper class galleryw (interesting snippets)
/*
* fullInit do a full init for gallery2
* return error object
*/
function fullInit()
{
return GalleryEmbed::init(array(
'embedUri'=>'/index.php?page=g2_overview&mpath=g2mng',
'g2Uri'=>$_SESSION[hp_url].'/g2/',
'activeUserId'=>'',
'fullInit'=>TRUE));
}

/**
* IinitLdUsersGrp initial load of users, groups and group membership of users from hpmanage to gallery
* it assumes that only the users admin, guest reg-user have been ceated by gallery2. Only users from emapp are added to gallery users
* Parmeter $db db-object of client database
* $dbm db-object of hpmanage database
* $init argument array as used in GalleryEmbed::init($init)
* return error object
*/
function initLdUserGrp(&$db,&$dbm)
{
//--load users of hpmanage--//
//get all users of client homepage
$sql="SELECT id,user_id FROM tgroup_member where member=1";
if($db->isError($group_members=$db->getAll($sql))) return $group_members;
//get all users that are sysadmin
$sql="SELECT * FROM tadmin WHERE admin_type IN ('Sys_Admin','Web_Support')";
if($db->isError($admin_members=$dbm->getAll($sql))) return $admin_members;
//--add all system users that have access to client homepage--//
foreach($admin_members as $am){
$found=FALSE;
foreach($group_members as $gm)
if(($gm[id]==3)&&($gm[user_id]==$am[user_id])){
$found=TRUE;
break;
}
if(!$found)$group_members[]=array('id'=>3,'user_id'=>$am[user_id]);
}
//--map the g2 internal admin to an external user--//
//initialize
$ret=galleryw::fullInit();
if(isset($ret))return $db->throwError('Init:'.$ret->getAsHtml());
// get all hpmanage to g2 mappings
list ($ret, $mapsByExternalId) = GalleryEmbed::getExternalIdMap('externalId');
if ($ret) return $db->throwError('CheckExternalMap: '.$ret->getAsHtml());
if(!isset($mapsByExternalId[admin])){
//get g2 admin group id
list ($ret, $adminGroupId) = GalleryCoreApi::getPluginParameter('module', 'core', 'id.adminGroup');
if ($ret) return $db->throwError('Get Admin Group: '.$ret->getAsHtml());
// get existing g2 admins
list ($ret, $adminList) = GalleryCoreApi::fetchUsersForGroup($adminGroupId);
if ($ret) return $db->throwError('Get Admin User: '.$ret->getAsHtml());
$adminId = key($adminList);
$ret = GalleryEmbed::addExternalIdMapEntry("admin", $adminId, 'GalleryUser');
if ($ret) $db->throwError('Map admin to external user: '.$ret->getAsHtml());
}
GalleryEmbed::done(); //finish transaction

if(count($group_members)>0){
foreach($group_members as $gr_user)
if($db->isError($res=galleryw::createUser($gr_user[user_id]))) return $db->throwError("Error creating g2 user ".$res->getMessage());
}

//--load groups of hpmanage--//
//get all groups except everybody, registeredUsers
$sql="SELECT * FROM tgroup WHERE id > 2";
if($db->isError($groups=$db->getAll($sql))) return $groups;
if(count($groups)>0)
foreach($groups as $group){
//echo"add group ".$group[id].'<br>';
if($db->isError($res=galleryw::createGroup($db,$group[id],$group[group_name])))
return $db->throwError("InitLdUserGroup: ".$res->getMessage());
}
//--map users to groups--//
$sql="SELECT *FROM tgroup_member where user_id > 2";
if($db->isError($group_members=$db->getAll($sql)))return $db->throwError("Error reading group members");
if(count($group_members)>0){
foreach($group_members as $grp_member)
if($db->isError($res=galleryw::addUserToGroup($db,$grp_member[user_id],$grp_member[id])))
return $db->throwError("Error adding users to group ".$res->getMessage());
}
//--set status !pluginIsInitLoad to false--//
//is set to true when gallery is added to client homepage
$sql="UPDATE tplugin SET init=1 WHERE id='g2mng'";
if($db->isError($res=$db->query($sql))) return $db->throwError('update status pluginInitLoad: '.$res->getMessage());
}

/**
* createUser creates a new user. Assumes that no users can be added in gallery2 appart from the initial ones
* parameter $user_id id of user in hpmanage
* returns error object
*/
function createUser($user_id)
{
$hpm_db = dbClass::connectToDB(HPM_DBN);
//initialize
$ret=galleryw::fullInit();
if(isset($ret))return $hpm_db->throwError('Init:'.$ret->getAsHtml());
//check if user exists
$ret=GalleryEmbed::isExternalIdMapped($user_id,'GalleryUser');
if(isset($ret)&& $ret->getErrorCode()& ERROR_MISSING_OBJECT){

//get user parameters
$sql="SELECT * FROM tuser WHERE user_id=$user_id";
if($hpm_db->isError($user=$hpm_db->getRow($sql))) return $user;
$user_arg=array('username'=> (string)$user_id,'fullname'=>$user[first_name].' '.$user[last_name],'hashedpassword'=>$user[passwd],'hashmethod'=>'md5','email'=>$user[user_email]);
//echo"add user id:".$user_id.' user_name '.$user_arg[username].'<br>';
echo"createUser: ".$user_id." username ".$user_arg[username]."<br>";
$user_ret=GalleryEmbed::createUser($user_id,$user_arg);
}
GalleryEmbed::done(); //finish transaction
if(isset($user_ret))return $hpm_db->throwError('CreateUser: '.$user_ret->getAsHtml());
}

Any help is appreciated
Christian Sager