Skip to content

Instantly share code, notes, and snippets.

@avoronkin
Created January 20, 2011 17:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save avoronkin/788179 to your computer and use it in GitHub Desktop.
Save avoronkin/788179 to your computer and use it in GitHub Desktop.
autoClientArea
<?php
$adminId = 1;
$polisyID = 4;
$authorityLevel = 9999;
$extendedField = 'redirect';
//resorce setings
$template = 1;
$parent = 2;
$published = 1;
//run when we save a new user
if ($modx->event->name == 'OnUserFormSave' && $scriptProperties['mode'] == 'new') {
$user = $modx->getObject('modUser', $scriptProperties['id']);
$username = $user->get('username');
//add resource group for new user
$userResourceGroup = $modx->newObject('modResourceGroup');
$userResourceGroup->set('name', $username);
$userResourceGroup->save();
$userResourceGroupID = $userResourceGroup->get('id');
//add user group for new user
$userUserGroup = $modx->newObject('modUserGroup');
$userUserGroup->set('name', $username);
$userUserGroup->save();
$userUserGroupID = $userUserGroup->get('id');
//add web context access
$webContextAccess = $modx->newObject('modAccessContext');
$webContextAccess->fromArray(array(
'principal' => $userUserGroupID,
'principal_class' => 'modUserGroup',
'target' => 'web',
'authority' => $authorityLevel,
'policy' => $polisyID,
));
$webContextAccess->save();
//add resource group access
$resourceGroupAccess = $modx->newObject('modAccessResourceGroup');
$resourceGroupAccess->fromArray(array(
'target' => $userResourceGroupID,
'principal_class' => 'modUserGroup',
'principal' => $userUserGroupID,
'authority' => $authorityLevel,
'policy' => $polisyID,
'context_key' => 'web',
));
$resourceGroupAccess->save();
//add new user to user group
$user->joinGroup($userUserGroupID);
//$member = $modx->newObject('modUserGroupMember');
//$member->set('user_group', $userUserGroupID);
//$member->set('member', $user->get('id'));
//$member->save();
//add admin user to user group
$admin = $modx->getObject('modUser', $adminId);
$admin->joinGroup($userUserGroupID);
//$admin = $modx->newObject('modUserGroupMember');
//$admin->set('user_group', $userUserGroupID);
//$admin->set('member', $adminId);
//$admin->save();
//create resource for new user
$doc = $modx->newObject('modResource');
$doc->fromArray(array(
'pagetitle' => $username,
'parent' => $parent,
'template' => $template,
'published' => $published,
));
$doc->save();
//add resource to resource group
$doc->joinGroup($userResourceGroup);
//$resourceGroupResource = $modx->newObject('modResourceGroupResource');
//$resourceGroupResource->set('document', $doc->get('id'));
//$resourceGroupResource->set('document_group', $userResourceGroupID);
//$resourceGroupResource->save();
//add extended field for new user
$profile = $user->getOne('Profile');
$newExtended = array();
$newExtended[$extendedField] = $doc->get('id');
$extended = $profile->get('extended');
$extended = is_array($extended) ? array_merge($extended, $newExtended) : $newExtended;
$profile->set('extended', $extended);
$user->save();
}​
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment