Bon je l'avais promis... voici la solution. Je ne cache pas que j'ai du aller fouiller profond dans le code de FrontEndUsers et de l'admin de CMSMS pour trouver tous les morceaux de code nécessaire.
En résumé, mon client doit simplement ajouter un utilisateur, mon UDT fait le reste, soit :
1) Créer un dossier du nom du compte utilisateur, protégé par une page index.html
2) Ajouter un groupe d'utilisateurs dans FEU du nom de l'utilisateur
3) Ajouter les mêmes propriétés de groupes que celles d'un groupe "modèle"
4) Associer le groupe et l'utilisateur
5) Créer une page protégée du nom de l'utilisateur, sous laquelle le client ajoutera une page par projet
6) Ajouter le groupe de l'utilisateur dans les autorisations de cette page
La page du compte professionnel est placée dans l'arbo sous "Mon compte pro". Cette page affiche tous les projets de l'utilisateur connecté.
Code :
[== PHP ==]
// Get site config
$config=cmsms()->GetConfig();
// Build directory name
$gname=$params['name'];
$uid=$params['id'];
$dir_name=$config['root_path'].'/uploads/compte-pro/'.$gname;
// Create directory
mkdir($dir_name);
// Add index.html file for security reasons
$handle=fopen($dir_name.'/index.html', "w+");
fclose($handle);
// Creates group using email address
$feu=cms_utils::get_module('FrontEndUsers');
$feu->AddGroup($gname, 'Droits pour utilisateur '.$gname);
$gid=$feu->GetGroupID($gname);
$default_gid=$feu->GetGroupID('Client_Modele');// template group
foreach($feu->GetGroupPropertyRelations($default_gid) as $prop)
{
$feu->AddGroupPropertyRelation($gid, $prop['name'], $prop['sort_key'],$prop['lostunflag'], $prop['required']);
}
// Add user in this group
$feu->AssignUserToGroup($uid, $gid);
// Create user page
// --------------------------------------------------------
// Following code comes from admin/addcontent.php core file
check_login();
$userid = get_userid();
$metadata = get_site_preference('page_metadata');
$parent_id = 63; // // page mon-espace-pro
$contentops = cmsms()->GetContentOperations();
$contentobj = $contentops->CreateNewContent('Content'); // Cannot create CustomContent type
// Change content type
include_once($config['root_path']."/admin/editcontent_extra.php");
// Set access rights to this page to our new user
$params['__feu_groups__']=array($gid);
copycontentobj($contentobj, 'feu_protected_page', $params);
$contentobj->SetAddMode();
$contentobj->SetOwner($userid);
$contentobj->SetCachable("1");
$contentobj->SetActive("1");
$contentobj->SetShowInMenu("1");
$contentobj->SetLastModifiedBy($userid);
$contentobj->SetName($gname);
$contentobj->SetMenuText($gname);
$contentobj->SetAlias($gname, true);
{
$templateops = cmsms()->GetTemplateOperations();
$dflt = $templateops->LoadDefaultTemplate();
if( isset($dflt) )
{
$contentobj->SetTemplateId($dflt->id);
}
}
// this stuff should be changed somehow.
$contentobj->SetMetadata($metadata);
$contentobj->SetPropertyValue('content_en', '<p>Page du compte client'.$gname.'</p>'); // why?
if ($parent_id!=-1) $contentobj->SetParentId($parent_id);
$contentobj->SetPropertyValue('searchable', 0);
$contentobj->SetPropertyValue('extra1',
get_site_preference('page_extra1',''));
$contentobj->SetPropertyValue('extra2',
get_site_preference('page_extra2',''));
$contentobj->SetPropertyValue('extra3',
get_site_preference('page_extra3',''));
$tmp = get_site_preference('additional_editors');
$tmp2 = array();
if( !empty($tmp) )
{
$tmp2 = explode(',',$tmp);
}
$contentobj->SetAdditionalEditors($tmp2);
// End of addcontent.php code sample
// --------------------------------------------------------
$contentobj->Save();
// Generates Hierarchy Position
$contentops = cmsms()->GetContentOperations();
$contentops->SetAllHierarchyPositions();
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.