name)) or profiles filtered * * @param mixed Array with filter conditions to retrieve profiles or false. * * @return array List of all profiles */ function profile_get_profiles($filter=false) { if ($filter === false) { $profiles = db_get_all_rows_in_table('tperfil', 'name'); } else { $profiles = db_get_all_rows_filter('tperfil', $filter); } $return = []; if ($profiles === false) { return $return; } foreach ($profiles as $profile) { $return[$profile['id_perfil']] = $profile['name']; } return $return; } /** * Create Profile for User * * @param string User ID * @param int Profile ID (default 1 => AR) * @param int Group ID (default 1 => All) * @param string Assign User who assign the profile to user. * @param string tags where the view of the user in this group will be restricted * @param bool Profile is marked to not provide hierarchy * * @return mixed Number id if succesful, false if not */ function profile_create_user_profile( $id_user, $id_profile=1, $id_group=0, $assignUser=false, $tags='', $no_hierarchy=false ) { global $config; if (empty($id_profile) || $id_group < 0) { return false; } // Checks if the user exists $result_user = users_get_user_by_id($id_user); if (!$result_user) { return false; } if (isset($config['id_user'])) { // Usually this is set unless we call it while logging in (user known by auth scheme but not by pandora) $assign = $config['id_user']; } else { $assign = $id_user; } if ($assignUser !== false) { $assign = $assignUser; } $insert = [ 'id_usuario' => $id_user, 'id_perfil' => $id_profile, 'id_grupo' => $id_group, 'tags' => $tags, 'assigned_by' => $assign, 'no_hierarchy' => $no_hierarchy ? 1 : 0, ]; return db_process_sql_insert('tusuario_perfil', $insert); } /** * Delete user profile from database * * @param string User ID * @param int Profile ID * * @return boolean Whether or not it's deleted */ function profile_delete_user_profile($id_user, $id_profile) { $where = [ 'id_usuario' => $id_user, 'id_up' => $id_profile, ]; return (bool) db_process_sql_delete('tusuario_perfil', $where); } /** * Delete profile from database (not user-profile link (tusuario_perfil), but the actual profile (tperfil)) * * @param int Profile ID * * @return boolean Whether or not it's deleted */ function profile_delete_profile($id_profile) { return (bool) db_process_sql_delete('tperfil', ['id_perfil' => $id_profile]); } /** * Delete profile from database and remove from the assigned users (tusuario_perfil) * * @param int Profile ID * * @return boolean Whether or not it's deleted in both tables */ function profile_delete_profile_and_clean_users($id_profile) { $profile_deletion = (bool) db_process_sql_delete('tperfil', ['id_perfil' => $id_profile]); // Delete in tusuario_perfil only if is needed if (!(bool) db_get_value('id_perfil', 'tusuario_perfil', 'id_perfil', $id_profile)) { return $profile_deletion; } return $profile_deletion && (bool) db_process_sql_delete('tusuario_perfil', ['id_perfil' => $id_profile]); } /** * Print the table to display, create and delete profiles * * @param int User id * @param bool Show the tags select or not */ function profile_print_profile_table($id) { global $config; $title = __('Profiles/Groups assigned to this user'); $table = new stdClass(); $table->width = '100%'; $table->class = 'databox data'; if (defined('METACONSOLE')) { $table->head_colspan[0] = 0; $table->width = '100%'; $table->class = 'databox_tactical data'; $table->title = $title; } else { echo '