/** * @param array $predefined_data * @param array $custom_data * @param integer $id user id; if 0 a new user will be created * @param boolean $dropdown_id if true will take dropdown values as id; * else will search the id starting from the value. */ function saveFields($predefined_data, $custom_data, $id = 0, $dropdown_id = TRUE) { require_once $GLOBALS["where_crm"] . "/modules/company/lib.company.php"; // TODO: at this moment the function works only for user creation; // does not update the user if it already exists $acl =& Docebo::user()->getACL(); $acl_manager =& Docebo::user()->getAclManager(); $data = array(); $userid = $predefined_data["userid"]; $firstname = $predefined_data["firstname"]; $lastname = $predefined_data["lastname"]; $pass = $predefined_data["pass"]; $email = $predefined_data["email"]; if (!empty($userid)) { $idst = $acl_manager->registerUser($userid, $firstname, $lastname, $pass, $email, '', ''); } else { $idst = FALSE; } if ($idst !== false) { // -- Add user to registered users group if not importing into root --- $idst_oc = $acl_manager->getGroup(false, '/oc_0'); $idst_oc = $idst_oc[ACL_INFO_IDST]; $idst_ocd = $acl_manager->getGroup(false, '/ocd_0'); $idst_ocd = $idst_ocd[ACL_INFO_IDST]; $acl_manager->addToGroup($idst_oc, $idst); $acl_manager->addToGroup($idst_ocd, $idst); // -------------------------------------------------------------------| // add to group level $userlevel = $acl_manager->getGroupST(ADMIN_GROUP_USER); $acl_manager->addToGroup($userlevel, $idst); // -- Custom fields ---------------------------------------------------- require_once $GLOBALS["where_framework"] . "/lib/lib.field.php"; $res = array(); $fl = new FieldList(); $custom_fields = array_keys($this->getCustomFields(FALSE)); $field_info_arr = $fl->getFieldsFromIdst($custom_fields); foreach ($custom_fields as $field_id) { // store direct if (isset($custom_data[$field_id])) { $field_obj =& $fl->getFieldInstance($field_id); // $field_obj->setFieldEntryTable($company_entry_table); $field_obj->storeDirect($idst, $custom_data[$field_id], $dropdown_id, FALSE, TRUE); } } } return $idst; }
function connect() { require_once _base_ . '/lib/lib.userselector.php'; require_once _adm_ . '/lib/lib.field.php'; $aclManager = Docebo::user()->getACLManager(); $this->directory = new UserSelector(); $this->groupFilter_idst = $aclManager->getGroupST($this->groupFilter); // load language for fields names $lang_dir = DoceboLanguage::createInstance('admin_directory', 'framework'); $fl = new FieldList(); $this->fl = $fl; // root and root descendant $tmp = $aclManager->getGroup(false, '/oc_0'); $arr_idst[] = $tmp[0]; $this->tree_oc = $tmp[0]; $tmp = $aclManager->getGroup(false, '/ocd_0'); $arr_idst[] = $tmp[0]; $this->tree_ocd = $tmp[0]; // tree folder selected if ($this->tree != 0) { $arr_groupid = $aclManager->getGroupsId($arr_idst); foreach ($arr_groupid as $key => $val) { $arr_groupid[$key] = substr_replace($val, '/ocd', 0, 3); } $arr_result = $aclManager->getArrGroupST($arr_groupid); list($this->tree_desc) = array_values($arr_result); $arr_idst[] = $this->tree; $arr_idst[] = $this->tree_desc; } $arr_fields = $fl->getFieldsFromIdst($arr_idst); // generating cols descriptor $this->cols_descriptor = NULL; if ($this->dbconn === NULL) { $this->dbconn = $GLOBALS['dbConn']; } $query = "SHOW FIELDS FROM " . $GLOBALS['prefix_fw'] . "_user"; $rs = sql_query($query, $this->dbconn); if ($rs === FALSE) { $this->last_error = Lang::t('_OPERATION_FAILURE', 'standard') . $query . ' [' . mysql_error($this->dbconn) . ']'; return FALSE; } $this->cols_descriptor = array(); while ($field_info = mysql_fetch_array($rs)) { if (!in_array($field_info['Field'], $this->ignore_cols)) { $mandatory = in_array($field_info['Field'], $this->mandatory_cols); if (isset($this->default_cols[$field_info['Field']])) { $this->cols_descriptor[] = array(DOCEBOIMPORT_COLNAME => $lang_dir->def('_DIRECTORY_FILTER_' . $field_info['Field']), DOCEBOIMPORT_COLID => $field_info['Field'], DOCEBOIMPORT_COLMANDATORY => $mandatory, DOCEBOIMPORT_DATATYPE => $field_info['Type'], DOCEBOIMPORT_DEFAULT => $this->default_cols[$field_info['Field']]); } else { $this->cols_descriptor[] = array(DOCEBOIMPORT_COLNAME => $lang_dir->def('_DIRECTORY_FILTER_' . $field_info['Field']), DOCEBOIMPORT_COLID => $field_info['Field'], DOCEBOIMPORT_COLMANDATORY => $mandatory, DOCEBOIMPORT_DATATYPE => $field_info['Type']); } } } mysql_free_result($rs); foreach ($arr_fields as $field_id => $field_info) { if (in_array($field_info[FIELD_INFO_TYPE], $this->valid_filed_type)) { $this->cols_descriptor[] = array(DOCEBOIMPORT_COLNAME => $field_info[FIELD_INFO_TRANSLATION], DOCEBOIMPORT_COLID => $field_id, DOCEBOIMPORT_COLMANDATORY => FALSE, DOCEBOIMPORT_DATATYPE => 'text', DOCEBOIMPORT_DEFAULT => false); } } $this->cols_descriptor[] = array(DOCEBOIMPORT_COLNAME => 'tree_code', DOCEBOIMPORT_COLID => 'tree_code', DOCEBOIMPORT_COLMANDATORY => FALSE, DOCEBOIMPORT_DATATYPE => 'text'); $this->arr_fields = $arr_fields; $this->index = 0; $this->eof = true; $match = array(); $this->org_chart_name = array(); $this->org_chart_group = array(); $this->user_org_chart = array(); // cache org_chart group $this->org_chart_group = $aclManager->getBasePathGroupST('/oc'); $query = " SELECT id_dir, translation " . " FROM " . $GLOBALS['prefix_fw'] . "_org_chart" . " WHERE lang_code = '" . getLanguage() . "'"; $result = sql_query($query); while (list($id_dir, $dir_name) = sql_fetch_row($result)) { $valid = preg_match('/' . $this->preg_match_folder . '/i', $dir_name, $match); if ($valid) { $dir_name = $match[1]; } $this->org_chart_name[$dir_name] = $id_dir; $idst_group = $this->org_chart_group['/oc_' . $id_dir]; $query_idstMember = "SELECT idstMember" . " FROM " . $GLOBALS['prefix_fw'] . "_group_members " . " WHERE idst = '" . $idst_group . "'"; $re = sql_query($query_idstMember); while (list($idstMember) = sql_fetch_row($re)) { if (!isset($this->user_org_chart[$idstMember])) { $this->user_org_chart[$idstMember] = array(); } $this->user_org_chart[$idstMember][$id_dir] = $id_dir; } } return TRUE; }
function assignfields() { //check permissions if (!$this->permissions['mod_org']) { Util::jump_to('index.php?r=' . $this->link . '/show'); } require_once _base_ . '/lib/lib.table.php'; require_once _adm_ . '/lib/lib.field.php'; $id_org = Get::req('id_node', DOTY_INT, 0); $table = new Table(); $type_h = array('', 'image', 'image', 'image', 'image', 'image'); $cont_h = array(Lang::t('_FIELD_NAME', 'organization_chart'), Lang::t('_DIRECTORY_ASSIGNFIELDGROUP', 'admin_directory'), Lang::t('_ORG_CHART_INHERIT', 'organization_chart'), Lang::t('_MANDATORY', 'organization_chart'), Lang::t('_ORG_CHART_FIELD_WRITE', 'organization_chart'), Lang::t('_USER_INHERIT', 'organization_chart')); $table->addHead($cont_h, $type_h); $fl = new FieldList(); $acl = Docebo::user()->getACL(); $acl_man = Docebo::user()->getAclManager(); $body = ""; $body .= Form::openForm('assignfieldgroup', 'ajax.adm_server.php?r=' . $this->link . '/assignfields_action'); $body .= Form::getLineBox(Lang::t('_ORG_CHART_LIST_FIELDS', 'organization_chart') . ': ', $this->model->getOrgPath($id_org)); $body .= Form::getHidden('idst_group', 'idst_group', $id_org); $arr_all_fields = $fl->getAllFields(); $arr_fields_normal = $fl->getFieldsFromIdst(array($acl_man->getGroupST('oc_' . $id_org))); $arr_fields_inherit = $fl->getFieldsFromIdst(array($acl_man->getGroupST('ocd_' . $id_org))); //$body .= '<pre>'.print_r($arr_fields_normal, true).print_r($arr_fields_inherit, true).'</pre>'; foreach ($arr_all_fields as $field) { $id_field = $field[FIELD_INFO_ID]; $def_value = GROUP_FIELD_NO; if (isset($arr_fields_normal[$id_field])) { $def_value = GROUP_FIELD_NORMAL; } if (isset($arr_fields_inherit[$id_field])) { $def_value = GROUP_FIELD_INHERIT; } switch ($def_value) { case GROUP_FIELD_NORMAL: $is_mandatory = isset($arr_fields_normal[$id_field]) && $arr_fields_normal[$id_field][FIELD_INFO_MANDATORY] == 'true'; $is_invisible = isset($arr_fields_normal[$id_field]) && $arr_fields_normal[$id_field][FIELD_INFO_USERACCESS] == 'readwrite'; $is_userinherit = isset($arr_fields_normal[$id_field]) && $arr_fields_normal[$id_field][FIELD_INFO_USERINHERIT] == '1'; break; case GROUP_FIELD_INHERIT: $is_mandatory = isset($arr_fields_inherit[$id_field]) && $arr_fields_inherit[$id_field][FIELD_INFO_MANDATORY] == 'true'; $is_invisible = isset($arr_fields_inherit[$id_field]) && $arr_fields_inherit[$id_field][FIELD_INFO_USERACCESS] == 'readwrite'; $is_userinherit = isset($arr_fields_inherit[$id_field]) && $arr_fields_inherit[$id_field][FIELD_INFO_USERINHERIT] == '1'; break; default: $is_mandatory = false; $is_invisible = false; $is_userinherit = false; } $selected = $def_value != GROUP_FIELD_NO; $disabled = 'disabled="disabled"'; $line = array(); $line[] = $field[FIELD_INFO_TRANSLATION]; $line[] = Form::getInputCheckbox('fields_use_' . $id_field, 'fields_use[' . $id_field . ']', 1, $selected, ''); $line[] = Form::getInputCheckbox('fields_inherit_' . $id_field, 'fields_inherit[' . $id_field . ']', 1, $def_value == GROUP_FIELD_INHERIT, $selected ? '' : $disabled); $line[] = Form::getInputCheckbox('fields_mandatory_' . $id_field, 'fields_mandatory[' . $id_field . ']', 1, $is_mandatory, $selected ? '' : $disabled); $line[] = Form::getInputCheckbox('fields_invisible_' . $id_field, 'fields_invisible[' . $id_field . ']', 1, $is_invisible, $selected ? '' : $disabled); $line[] = Form::getInputCheckbox('fields_userinherit_' . $id_field, 'fields_userinherit[' . $id_field . ']', 1, $is_userinherit, $selected ? '' : $disabled); $table->addBody($line); } $body .= $table->getTable(); $body .= Form::closeForm(); $output = array('success' => true, 'header' => Lang::t('_ORGCHART_FOLDER_FIELD_ALT', 'organization_chart'), 'body' => $body); //$this->render('assign_fields', $params); echo $this->json->encode($output); }
/** * Assign fields mandatory and user for group **/ function loadAssignField2($groupid) { $arr_fields = $_POST[DIRECTORY_ID][DIRECTORY_OP_ADDFIELD]; $idst_group = $_POST[DIRECTORY_ID]['idst_group']; require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; if (isset($_POST[DIRECTORY_ID]['save_assignfield2'])) { $fl = new FieldList(); $arr_fields_mandatory = $_POST[DIRECTORY_ID]['field_mandatory']; $arr_fields_useraccess = $_POST[DIRECTORY_ID]['field_useraccess']; foreach ($arr_fields as $id_filed => $status) { switch ($status) { case GROUP_FIELD_NO: $fl->removeFieldFromGroup($id_filed, $idst_group); break; case GROUP_FIELD_NORMAL: $fl->addFieldToGroup($id_filed, $idst_group, isset($arr_fields_mandatory[$id_filed]) ? $arr_fields_mandatory[$id_filed] : 'false', isset($arr_fields_useraccess[$id_filed]) ? $arr_fields_useraccess[$id_filed] : 'readonly'); break; } } Util::jump_to('index.php?modname=directory&op=listgroup'); } elseif (isset($_POST[DIRECTORY_ID]['cancel_assignfield'])) { Util::jump_to('index.php?modname=directory&op=listgroup'); } $fl = new FieldList(); $arr_all_fields = $fl->getAllFields(); require_once _base_ . '/lib/lib.form.php'; $form = new Form(); $GLOBALS['page']->setWorkingZone('content'); $GLOBALS['page']->add(getTitleArea($this->lang->def('_GROUPS') . ': ' . $groupid, 'directory_group')); $GLOBALS['page']->add('<div class="std_block">'); $GLOBALS['page']->add($form->openForm('directoryassignfieldgroupmandatory', 'index.php?modname=directory&op=assignfieldmandatory')); $GLOBALS['page']->add($form->openElementSpace()); // print custom fields status $arr_fields_normal = $fl->getFieldsFromIdst(array($idst_group)); $GLOBALS['page']->add($form->getHidden(DIRECTORY_ID . '_idst_group', DIRECTORY_ID . '[idst_group]', $idst_group)); foreach ($arr_fields as $id_filed => $status) { $GLOBALS['page']->add($form->getHidden(DIRECTORY_ID . '_' . $id_filed, DIRECTORY_ID . '[' . DIRECTORY_OP_ADDFIELD . '][' . $id_filed . ']', $status)); } $GLOBALS['page']->add($form->openFormLine() . '<div class="label_effect"> </div>' . '<div class="label_head">' . $this->lang->def('_MANDATORY') . '</div>' . '<div class="label_head">' . $this->lang->def('_DIRECTORY_GROUP_FIELD_WRITE') . '</div>' . $form->closeFormLine()); // checkbox for mandatory and useraccess foreach ($arr_fields as $id_filed => $status) { if ($status == GROUP_FIELD_NORMAL) { $GLOBALS['page']->add($form->openFormLine() . '<div class="label_effect">' . $arr_all_fields[$id_filed][FIELD_INFO_TRANSLATION] . '</div>' . '<input class="label_head" type="checkbox"' . ' id="' . DIRECTORY_ID . '_' . $id_filed . '_mandatory"' . ' name="' . DIRECTORY_ID . '[field_mandatory][' . $id_filed . ']"' . ' value="true"'); if (isset($arr_fields_normal[$id_filed]) && $arr_fields_normal[$id_filed][FIELD_INFO_MANDATORY] == 'true') { $GLOBALS['page']->add(' checked="checked"'); } $GLOBALS['page']->add(' />'); $GLOBALS['page']->add($form->getLabel(DIRECTORY_ID . '_' . $id_filed . '_mandatory', $this->lang->def('_MANDATORY'), 'label_bold access-only')); // checkbox for useraccess $GLOBALS['page']->add('<input class="label_head" type="checkbox"' . ' id="' . DIRECTORY_ID . '_' . $id_filed . '_useraccess"' . ' name="' . DIRECTORY_ID . '[field_useraccess][' . $id_filed . ']"' . ' value="readwrite"'); if (isset($arr_fields_normal[$id_filed]) && $arr_fields_normal[$id_filed][FIELD_INFO_USERACCESS] == 'readwrite') { $GLOBALS['page']->add(' checked="checked"'); } $GLOBALS['page']->add(' />'); $GLOBALS['page']->add($form->getLabel(DIRECTORY_ID . '_' . $id_filed . '_useraccess', $this->lang->def('_DIRECTORY_GROUP_FIELD_WRITE'), 'label_bold access-only')); $GLOBALS['page']->add($form->closeFormLine()); } } $GLOBALS['page']->add($form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('save_assignfield2' . DIRECTORY_ID, DIRECTORY_ID . '[save_assignfield2]', $this->lang->def('_SAVE')) . $form->getButton('cancel_assignfield' . DIRECTORY_ID, DIRECTORY_ID . '[cancel_assignfield]', $this->lang->def('_UNDO')) . $form->closeButtonSpace()); }
function loadAssignField3() { $arr_fields = $_POST[$this->id]['field_set']; $idst_group = $_POST[$this->id]['idst_group']; require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; $fl = new FieldList(); $arr_all_fields = $fl->getAllFields(); $arr_fields_normal = $fl->getFieldsFromIdst(array($idst_group)); require_once _base_ . '/lib/lib.form.php'; $form = new Form(); $tree = $form->getFormHeader($this->lang->def('_ORG_CHART_LIST_FIELDS')); $tree .= $form->openElementSpace(); $tree .= $this->printState(); $tree .= $form->getHidden($this->id . '_idst_group', $this->id . '[idst_group]', $idst_group); // print custom fields status foreach ($arr_fields as $id_filed => $status) { $tree .= $form->getHidden($this->id . '_' . $id_filed, $this->id . '[field_set][' . $id_filed . ']', $status); } // first print already ordered fields foreach ($arr_fields_normal as $id_filed => $field) { } $tree .= $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('next1_assignfield' . $this->id, $this->id . '[save_assignfield]', $this->lang->def('_SAVE')) . $form->getButton($this->_getCancelId(), $this->_getCancelId(), $this->lang->def('_UNDO')) . $form->closeButtonSpace(); return $tree; }