function savesel() { checkPerm('view'); require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; require_once _base_ . '/lib/lib.form.php'; $lang =& DoceboLanguage::createInstance('register', 'lms'); $mand_sym = '<span class="mandatory">*</span>'; $extra_field = new FieldList(); $GLOBALS['page']->add(getTitleArea($lang->def('_MYGROUP'), 'mygroup') . '<div class="std_block">', 'content'); $selected = array(); if (isset($_POST['group_sel'])) { $selected = $_POST['group_sel']; } elseif (isset($_POST['group_sel_implode'])) { $selected = explode(',', $_POST['group_sel_implode']); } $play_field = $extra_field->playFieldsForUser(getLogUserId(), $selected, false, false, array('readonly')); if (isset($_POST['save_field']) || $play_field === false || $play_field == '') { $re_filled = $extra_field->isFilledFieldsForUser(getLogUserId(), $selected); if (!$re_filled) { $GLOBALS['page']->add(getErrorUi($lang->def('_SOME_MANDATORY_EMPTY')), 'content'); } else { $acl =& Docebo::user()->getAcl(); $acl_man =& Docebo::user()->getAclManager(); $groups =& $acl_man->getAllGroupsId(array('free', 'moderate')); $groups_id = array_keys($groups); $user_group = $acl->getSTGroupsST(getLogUserId()); $add_groups = array_diff($selected, $user_group); $del_groups = array_diff($groups_id, $selected); $moderate_add = false; if (!empty($add_groups)) { while (list(, $idst) = each($add_groups)) { if ($groups[$idst]['type'] == 'free') { $acl_man->addToGroup($idst, getLogUserId()); } elseif ($groups[$idst]['type'] == 'moderate') { $acl_man->addToWaitingGroup($idst, getLogUserId()); $moderate_add = true; } } } if ($moderate_add === true) { require_once _base_ . '/lib/lib.eventmanager.php'; // message to user that is odified $msg_composer = new EventMessageComposer(); $msg_composer->setSubjectLangText('email', '_TO_APPROVE_GROUP_USER_SBJ', false); $msg_composer->setBodyLangText('email', '_TO_APPROVE_GROUP_USER_TEXT', array('[url]' => Get::sett('url'))); $msg_composer->setBodyLangText('sms', '_TO_APPROVE_GROUP_USER_TEXT_SMS', array('[url]' => Get::sett('url'))); $idst_approve = $acl->getRoleST('/framework/admin/directory/editgroup'); $recipients = $acl_man->getAllRoleMembers($idst_approve); createNewAlert('UserGroupModerated', 'directory', 'moderate', '1', 'User group subscription to moderate', $recipients, $msg_composer); } if (!empty($del_groups)) { while (list(, $idst_group) = each($del_groups)) { $extra_field->removeUserEntry(getLogUserId(), $idst_group); $acl_man->removeFromGroup($idst_group, getLogUserId()); } } // Save fields $extra_field->storeFieldsForUser(getLogUserId()); Util::jump_to('index.php?modname=mygroup&op=group'); } } $GLOBALS['page']->add('<div class="reg_note">' . $lang->def('_GROUPS_FIELDS') . '<ul class="reg_instruction">' . '<li>' . str_replace('[mandatory]', $mand_sym, $lang->def('_REG_MANDATORY')) . '</li>' . '</ul>' . '</div>' . Form::openForm('group_subscription', 'index.php?modname=mygroup&op=savesel') . Form::openElementSpace() . Form::getHidden('group_sel_implode', 'group_sel_implode', isset($_POST['group_sel_implode']) ? $_POST['group_sel_implode'] : implode(',', $selected)) . $play_field . Form::getBreakRow() . Form::closeElementSpace() . Form::openButtonSpace() . Form::getButton('save_field', 'save_field', $lang->def('_SAVE')) . Form::closeButtonSpace() . Form::closeForm() . '</div>', 'content'); }
/** * check the user data filled in the mod user gui * @return mixed boolean true if all is ok , else a text that describe the error */ function checkUserInfo() { require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; $extra_field = new FieldList(); if (!$this->_user_profile->godMode()) { $re_filled = $extra_field->isFilledFieldsForUser($this->_user_profile->getIdUser()); if ($re_filled !== true) { return implode('<br/>', $re_filled); } } return true; }
/** * Control the contents of the field * @param array $source the values to check * @param array $options the values needed for control * * @return array ( [error] => true o false , [msg] => error message) */ function _checkField($source, $options, $platform, $control_extra_field = true) { $lang =& DoceboLanguage::createInstance('register', $platform); // control if the inserted data is valid if ($options['privacy_policy'] == 'on') { if (!isset($source['register']['privacy'])) { return array('error' => true, 'msg' => $lang->def('_ERR_POLICY_NOT_CHECKED')); } elseif ($source['register']['privacy'] != 'ok') { return array('error' => true, 'msg' => $lang->def('_ERR_POLICY_NOT_CHECKED')); } } // control mail is correct if ($source['register']['email'] == '') { return array('error' => true, 'msg' => $lang->def('_ERR_INVALID_MAIL')); } if (!eregi("^([a-z0-9_\\-]|\\.[a-z0-9_])+@(([a-z0-9_\\-]|\\.-)+\\.)+[a-z]{2,8}\$", $source['register']['email'])) { return array('error' => true, 'msg' => $lang->def('_ERR_INVALID_MAIL')); } if (eregi("[\r\n]+", $source['register']['email'])) { return array('error' => true, 'msg' => $lang->def('_ERR_INVALID_MAIL')); } $acl_man =& Docebo::user()->getAclManager(); if ($acl_man->getUserByEmail($source['register']['email']) !== false) { return array('error' => true, 'msg' => $lang->def('_ERR_DUPLICATE_MAIL')); } if (($tuser = $acl_man->getTempUserByEmail($source['register']['email'])) !== false) { $msg = $lang->def('_ERR_DUPLICATE_RESEND'); return array('error' => true, 'msg' => $msg); } // check if userid has been inserted if ($source['register']['userid'] == '' || $source['register']['userid'] == $lang->def('_REG_USERID_DEF')) { return array('error' => true, 'msg' => $lang->def('_ERR_INVALID_USER')); } // control if userid is duplicate $user = $acl_man->getUserST($source['register']['userid']); $temp_user = $acl_man->getTempUserInfo($source['register']['userid']); if ($user !== false || $temp_user !== false) { return array('error' => true, 'msg' => $lang->def('_ERR_DUPLICATE_USER')); } // control password if (strlen($_POST['register']['pwd']) < $options['pass_min_char']) { return array('error' => true, 'msg' => $lang->def('_PASSWORD_TOO_SHORT')); } if ($_POST['register']['pwd'] != $source['register']['pwd_retype']) { return array('error' => true, 'msg' => $lang->def('_ERR_PASSWORD_NO_MATCH')); } if ($options['pass_alfanumeric'] == 'on') { if (!preg_match('/[a-z]/i', $source['register']['pwd']) || !preg_match('/[0-9]/', $source['register']['pwd'])) { return array('error' => true, 'msg' => $lang->def('_ERR_PASSWORD_MUSTBE_ALPHA')); } } if ($options['lastfirst_mandatory'] == 'on') { if (trim($source['register']['firstname']) == '' || trim($source['register']['lastname']) == '') { return array('error' => true, 'msg' => $lang->def('_SOME_MANDATORY_EMPTY')); } } if ($control_extra_field) { $extra_field = new FieldList(); $re_filled = $extra_field->isFilledFieldsForUser(0, isset($_POST['group_sel_implode']) ? explode(',', $_POST['group_sel_implode']) : false); if ($re_filled !== true) { return array('error' => true, 'msg' => implode('<br/>', $re_filled)); } } return array('error' => false, 'msg' => ''); }