//<?php $evt = &$modx->Event; switch($evt->name){ case 'OnWebSaveUser': if($evt->params['mode']=='new'){ $dir = $modx->config['base_path'].$modx->config['rb_base_dir'].'files/'.$evt->params['username']; $folder_permissions = octdec($modx->config['new_folder_permissions']); if(! @mkdir($dir,$folder_permissions) ){ $modx->webAlert("Unable to create user folder!"); } } break; } //?>
[[!Register? &submitVar=`registerbtn` &activation=`0` &usergroups=`partner` &successMsg=`Thanks for registering!` postHooks=`generateUserDirectory` ]]
I want to automatically create a new folder for a user when he is registered via the Login.Register snippet or via MODx Usermanagement.
I found a snippet here(http://modxcms.com/forums/index.php/topic,30114.0.html) but for Evolution.//<?php $evt = &$modx->Event; switch($evt->name){ case 'OnWebSaveUser': if($evt->params['mode']=='new'){ $dir = $modx->config['base_path'].$modx->config['rb_base_dir'].'files/'.$evt->params['username']; $folder_permissions = octdec($modx->config['new_folder_permissions']); if(! @mkdir($dir,$folder_permissions) ){ $modx->webAlert("Unable to create user folder!"); } } break; } //?>
I don´t know all the API functions yet. Still much to learn. Any help appreciated.
Thank you.
$user =& $scriptProperties['register.user']; $dir = (boolean)$modx->getOption('filemanager_path_relative',null,false) ? $modx->getOption('base_path') : ''; $dir .= $modx->getOption('filemanager_path',null,'').'files/'.$user->get('username'); $folder_permissions = octdec($modx->getOption('new_folder_permissions')); if (!@mkdir($dir,$folder_permissions)) { $modx->log(modX::LOG_LEVEL_ERROR,'Could not create user directory: '.$dir); } return true;
<?php if ($modx->event->name == 'OnUserFormSave') { $username = $_REQUEST['username']; $dir = (boolean)$modx->getOption('filemanager_path_relative',null,false) ? $modx->getOption('base_path') : ''; $dir .= $modx->getOption('filemanager_path',null,'').'files/'.$username; $folder_permissions = octdec($modx->getOption('new_folder_permissions')); if (!@mkdir($dir,$folder_permissions)) { $modx->log(modX::LOG_LEVEL_ERROR,'Could not create user directory: '.$dir); } return true; } return;
$userName = $user->get('username');
If ($mode == modSystemEvent::MODE_NEW)
if ($mod->event->name == 'OnUserFormSave')
This would be a better method for getting the username:
$userName = $user->get('username');
Thats great to know.
Though when I wrapped the conditional statement [tt]if ($modx == modSystemEvent::MODE_NEW)[/tt] around the code - it no longer created the folder when adding a new user
if ($mode == modSystemEvent::MODE_NEW) { }
<?php if ($modx->event->name == 'OnUserFormSave') { $username = $_REQUEST['username']; $dir = (boolean)$modx->getOption('filemanager_path_relative',null,false) ? $modx->getOption('base_path') : ''; $dir .= $modx->getOption('filemanager_path',null,'').'files/'.$username; $folder_permissions = octdec($modx->getOption('new_folder_permissions')); if (!@mkdir($dir,$folder_permissions)) { $modx->log(modX::LOG_LEVEL_ERROR,'Could not create user directory: '.$dir); } return true; } return;
if ($mode == modSystemEvent::MODE_UDP) { $userName = $user->get('username'); $dir = (boolean)$modx->getOption('filemanager_path_relative',null,false) ? $modx->getOption('base_path') : ''; $dir .= $modx->getOption('filemanager_path',null,'').'files/'.$username; $folder_permissions = octdec($modx->getOption('new_folder_permissions')); if (!@mkdir($dir,$folder_permissions)) { $modx->log(modX::LOG_LEVEL_ERROR,'Konnte Ordner nicht erstellen: '.$dir); } return true; } return;
if ($mode == modSystemEvent::MODE_NEW) { return true; } if ($mode == modSystemEvent::MODE_UPD) { $userName = $user->get('username'); $dir = (boolean)$modx->getOption('filemanager_path_relative',null,false) ? $modx->getOption('base_path') : ''; $dir .= $modx->getOption('filemanager_path',null,'').'assets/kunden/'.$userName; $folder_permissions = octdec($modx->getOption('new_folder_permissions')); if (!@mkdir($dir,$folder_permissions)) { $modx->log(modX::LOG_LEVEL_ERROR,'Could not create user directory: '.$dir); } return true; }