浏览代码

Users: Revamp and consolidate code, integrate ORM.

reliberate 9 年之前
父节点
当前提交
014dda0e29

+ 241 - 0
core/groups/app_config.php

@@ -0,0 +1,241 @@
+<?php
+	//application details
+		$apps[$x]['name'] = "Group Manager";
+		$apps[$x]['uuid'] = "2caf27b0-540a-43d5-bb9b-c9871a1e4f84";
+		$apps[$x]['category'] = "Core";
+		$apps[$x]['subcategory'] = "";
+		$apps[$x]['version'] = "";
+		$apps[$x]['license'] = "Mozilla Public License 1.1";
+		$apps[$x]['url'] = "http://www.fusionpbx.com";
+		$apps[$x]['description']['en-us'] = "Manage user groups and permissions.";
+		$apps[$x]['description']['es-cl'] = "Administrar grupos de usuarios y permisos.";
+		$apps[$x]['description']['de-de'] = "";
+		$apps[$x]['description']['de-ch'] = "";
+		$apps[$x]['description']['de-at'] = "";
+		$apps[$x]['description']['fr-fr'] = "Gérer les groupes d'utilisateurs et des autorisations.";
+		$apps[$x]['description']['fr-ca'] = "";
+		$apps[$x]['description']['fr-ch'] = "";
+		$apps[$x]['description']['pt-pt'] = "Gerenciar grupos de usuários e permissões.";
+		$apps[$x]['description']['pt-br'] = "Gerenciar grupos de usuários e permissões.";
+
+	//permission details
+		$y = 0;
+		$apps[$x]['permissions'][$y]['name'] = "group_view";
+		$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'group_domain';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'group_all';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_member_view";
+		$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_member_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_member_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_permissions";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_user_view";
+		$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_user_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_user_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_user_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_permission_view";
+		$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_permission_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_permission_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "group_permission_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+
+	//schema details
+		$y = 0; //table array index
+		$z = 0; //field array index
+		$apps[$x]['db'][$y]['table'] = "v_groups";
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_name";
+		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupid";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_protected";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_description";
+		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupdesc";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+
+		$y = 1; //table array index
+		$z = 0; //field array index
+		$apps[$x]['db'][$y]['table'] = "v_group_users";
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_user_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_name";
+		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupid";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_groups";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "group_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "username";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+
+		$y = 2; //table array index
+		$z = 0; //field array index
+		$apps[$x]['db'][$y]['table'] = "v_group_permissions";
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_permission_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
+		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "group_permission_name";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "permission_name";
+		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "permission_id";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_name";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+
+?>

+ 65 - 0
core/groups/app_defaults.php

@@ -0,0 +1,65 @@
+<?php
+/*
+	FusionPBX
+	Version: MPL 1.1
+
+	The contents of this file are subject to the Mozilla Public License Version
+	1.1 (the "License"); you may not use this file except in compliance with
+	the License. You may obtain a copy of the License at
+	http://www.mozilla.org/MPL/
+
+	Software distributed under the License is distributed on an "AS IS" basis,
+	WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+	for the specific language governing rights and limitations under the
+	License.
+
+	The Original Code is FusionPBX
+
+	The Initial Developer of the Original Code is
+	Mark J Crane <[email protected]>
+	Portions created by the Initial Developer are Copyright (C) 2008-2012
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+if ($domains_processed == 1) {
+
+	//if the default groups do not exist add them
+		$group = new groups;
+		$group->defaults();
+
+	//find rows that have a null group_uuid and set the correct group_uuid
+		$sql = "select * from v_group_users ";
+		$sql .= "where group_uuid is null; ";
+		$prep_statement = $db->prepare(check_sql($sql));
+		if ($prep_statement) {
+			$prep_statement->execute();
+			$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+			$db->beginTransaction();
+			foreach($result as $row) {
+				if (strlen($row['group_name']) > 0) {
+					//get the group_uuid
+						$sql = "select group_uuid from v_groups ";
+						$sql .= "where group_name = '".$row['group_name']."' ";
+						$prep_statement_sub = $db->prepare($sql);
+						$prep_statement_sub->execute();
+						$sub_result = $prep_statement_sub->fetch(PDO::FETCH_ASSOC);
+						unset ($prep_statement_sub);
+						$group_uuid = $sub_result['group_uuid'];
+					//set the group_uuid
+						$sql = "update v_group_users set ";
+						$sql .= "group_uuid = '".$group_uuid."' ";
+						$sql .= "where group_user_uuid = '".$row['group_user_uuid']."'; ";
+						$db->exec($sql);
+						unset($sql);
+				}
+			}
+			$db->commit();
+			unset ($prep_statement);
+		}
+
+}
+
+?>

+ 1193 - 0
core/groups/app_languages.php

@@ -0,0 +1,1193 @@
+<?php
+
+$text['title-user_setting-edit']['en-us'] = "User Setting";
+$text['title-user_setting-edit']['es-cl'] = "Configuración de Usuario";
+$text['title-user_setting-edit']['pt-pt'] = "Definição do Utilizador";
+$text['title-user_setting-edit']['fr-fr'] = "Cadre de l'utilisateur";
+
+$text['title-user_setting-add']['en-us'] = "User Setting Add";
+$text['title-user_setting-add']['es-cl'] = "Ajuste del usuario Agregar";
+$text['title-user_setting-add']['pt-pt'] = "Usuário setting Adicionar";
+$text['title-user_setting-add']['fr-fr'] = "Cadre utilisateur Ajouter";
+
+$text['title-user_manager']['en-us'] = "User Manager";
+$text['title-user_manager']['es-cl'] = "Administración de Usuarios";
+$text['title-user_manager']['pt-pt'] = "Gestão de Utilizadores";
+$text['title-user_manager']['fr-fr'] = "Gestion des utilisateurs";
+$text['title-user_manager']['pl'] = "Menedżer użytkowników";
+$text['title-user_manager']['uk'] = "Користувачі";
+$text['title-user_manager']['sv-se'] = "Användar Inställningar";
+$text['title-user_manager']['ro'] = "";
+$text['title-user_manager']['de-at'] = "Benutzerverwaltung";
+$text['title-user_manager']['he'] = "מנהל משתמש";
+
+$text['title-user_edit']['en-us'] = "User";
+$text['title-user_edit']['es-cl'] = "Editar Usuario";
+$text['title-user_edit']['pt-pt'] = "Utilizador";
+$text['title-user_edit']['fr-fr'] = "Modifier l'utilisateur";
+$text['title-user_edit']['pl'] = "Użytkownik";
+$text['title-user_edit']['uk'] = "Користувач";
+$text['title-user_edit']['sv-se'] = "Användare";
+$text['title-user_edit']['ro'] = "Utilizator";
+$text['title-user_edit']['de-at'] = "Benutzer";
+$text['title-user_edit']['he'] = "משתמש";
+
+$text['title-user_add']['en-us'] = "User";
+$text['title-user_add']['es-cl'] = "Agregar Usuario";
+$text['title-user_add']['pt-pt'] = "Adicionar Utilizador";
+$text['title-user_add']['fr-fr'] = "Ajouter un utilisateur";
+$text['title-user_add']['pl'] = "Użytkownik";
+$text['title-user_add']['uk'] = "Користувач";
+$text['title-user_add']['sv-se'] = "Användare";
+$text['title-user_add']['ro'] = "Utilizator";
+$text['title-user_add']['de-at'] = "Benutzer";
+$text['title-user_add']['he'] = "משתמש";
+
+$text['title-group_permissions']['en-us'] = "Group Permissions";
+$text['title-group_permissions']['es-cl'] = "Permisos de Grupo";
+$text['title-group_permissions']['pt-pt'] = "Permissões do Grupo";
+$text['title-group_permissions']['fr-fr'] = "Permissions du Groupe";
+$text['title-group_permissions']['pl'] = "Uprawnienia grupy:";
+$text['title-group_permissions']['uk'] = "Привілеї групи";
+$text['title-group_permissions']['sv-se'] = "Grupp Rättigheter";
+$text['title-group_permissions']['ro'] = "Permisiuni grup";
+$text['title-group_permissions']['de-at'] = "Gruppenberechtigung";
+$text['title-group_permissions']['he'] = "הרשאות קבוצה";
+
+$text['title-group_members']['en-us'] = "Group Members";
+$text['title-group_members']['es-cl'] = "Miembros del Grupo";
+$text['title-group_members']['pt-pt'] = "Membros do Grupo";
+$text['title-group_members']['fr-fr'] = "Membres du Groupe";
+$text['title-group_members']['pl'] = "Członkowie grupy:";
+$text['title-group_members']['uk'] = "Учасники групи";
+$text['title-group_members']['sv-se'] = "Grupp Medlemmar";
+$text['title-group_members']['ro'] = "Membri grup";
+$text['title-group_members']['de-at'] = "Gruppenmitglieder";
+$text['title-group_members']['he'] = "חברי קבוצה";
+
+$text['title-group_manager']['en-us'] = "Group Manager";
+$text['title-group_manager']['es-cl'] = "Administración de Grupo";
+$text['title-group_manager']['pt-pt'] = "Gestão de Grupos";
+$text['title-group_manager']['fr-fr'] = "Gestion de Groupe";
+$text['title-group_manager']['pl'] = "Menedżer grup";
+$text['title-group_manager']['uk'] = "Групи";
+$text['title-group_manager']['sv-se'] = "Grupp Inställningar";
+$text['title-group_manager']['ro'] = "";
+$text['title-group_manager']['de-at'] = "Gruppenverwaltung";
+$text['title-group_manager']['he'] = "מנהל קבוצה";
+
+$text['title-group_edit']['en-us'] = "Edit Group";
+$text['title-group_edit']['es-cl'] = "Editar Grupo";
+$text['title-group_edit']['pt-pt'] = "Editar Grupo";
+$text['title-group_edit']['fr-fr'] = "Modifier le Groupe";
+$text['title-group_edit']['pl'] = "Edycja grupy";
+$text['title-group_edit']['uk'] = "Редагувати групу";
+$text['title-group_edit']['sv-se'] = "Editera Grupp";
+$text['title-group_edit']['ro'] = "Editare grup";
+$text['title-group_edit']['de-at'] = "Gruppe ändern";
+$text['title-group_edit']['he'] = "ערוך קבוצה";
+
+$text['title-group_add']['en-us'] = "Add Group";
+$text['title-group_add']['es-cl'] = "Agregar Grupo";
+$text['title-group_add']['pt-pt'] = "Adicionar Grupo";
+$text['title-group_add']['fr-fr'] = "Ajouter un Groupe";
+$text['title-group_add']['pl'] = "Dodaj grupę";
+$text['title-group_add']['uk'] = "Додати групу";
+$text['title-group_add']['sv-se'] = "Lägg Till Grupp";
+$text['title-group_add']['ro'] = "Adăugare grup";
+$text['title-group_add']['de-at'] = "Gruppe hinzufügen";
+$text['title-group_add']['he'] = "הוסף קבוצה";
+
+$text['option-true']['en-us'] = "True";
+$text['option-true']['es-cl'] = "Verdadero";
+$text['option-true']['pt-pt'] = "Sim";
+$text['option-true']['fr-fr'] = "Oui";
+$text['option-true']['pl'] = "Tak";
+$text['option-true']['uk'] = "Так";
+$text['option-true']['sv-se'] = "Sann";
+$text['option-true']['ro'] = "";
+$text['option-true']['de-at'] = "Ein";
+$text['option-true']['he'] = "חוקי";
+
+$text['option-on_break']['en-us'] = "On Break";
+$text['option-on_break']['es-cl'] = "En Pausa";
+$text['option-on_break']['pt-pt'] = "Em Pausa";
+$text['option-on_break']['fr-fr'] = "En Pause";
+$text['option-on_break']['pl'] = "Na przerwie";
+$text['option-on_break']['uk'] = "На перерві";
+$text['option-on_break']['sv-se'] = "På Rast";
+$text['option-on_break']['ro'] = "În pauză";
+$text['option-on_break']['de-at'] = "In Pause";
+$text['option-on_break']['he'] = "בהפסקה";
+
+$text['option-logged_out']['en-us'] = "Logged Out";
+$text['option-logged_out']['es-cl'] = "Desconectado";
+$text['option-logged_out']['pt-pt'] = "Desligado";
+$text['option-logged_out']['fr-fr'] = "Déconnecté";
+$text['option-logged_out']['pl'] = "Wylogowany";
+$text['option-logged_out']['uk'] = "Вийшов";
+$text['option-logged_out']['sv-se'] = "Utloggad";
+$text['option-logged_out']['ro'] = "";
+$text['option-logged_out']['de-at'] = "Abgemeldet";
+$text['option-logged_out']['he'] = "התנתק";
+
+$text['option-global']['en-us'] = "Global";
+$text['option-global']['es-cl'] = "Global";
+$text['option-global']['pt-pt'] = "Global";
+$text['option-global']['fr-fr'] = "Global";
+$text['option-global']['pl'] = "Ogólny";
+$text['option-global']['uk'] = "Глобально";
+$text['option-global']['sv-se'] = "Global";
+$text['option-global']['ro'] = "Global";
+$text['option-global']['de-at'] = "Global";
+$text['option-global']['he'] = "כללי";
+
+$text['option-false']['en-us'] = "False";
+$text['option-false']['es-cl'] = "Falso";
+$text['option-false']['pt-pt'] = "Não";
+$text['option-false']['fr-fr'] = "Non";
+$text['option-false']['pl'] = "Nie";
+$text['option-false']['uk'] = "Ні";
+$text['option-false']['sv-se'] = "Falsk";
+$text['option-false']['ro'] = "";
+$text['option-false']['de-at'] = "Aus";
+$text['option-false']['he'] = "לא חוקי";
+
+$text['option-do_not_disturb']['en-us'] = "Do Not Disturb";
+$text['option-do_not_disturb']['es-cl'] = "No Molestar";
+$text['option-do_not_disturb']['pt-pt'] = "Não Perturbar";
+$text['option-do_not_disturb']['fr-fr'] = "Ne pas Déranger";
+$text['option-do_not_disturb']['pl'] = "Nie przeszkadzaj (DND)";
+$text['option-do_not_disturb']['uk'] = "Не турбувати";
+$text['option-do_not_disturb']['sv-se'] = "Stör Ej";
+$text['option-do_not_disturb']['ro'] = "";
+$text['option-do_not_disturb']['de-at'] = "Bitte nicht stören";
+$text['option-do_not_disturb']['he'] = "נא לא להפריע";
+
+$text['option-available_on_demand']['en-us'] = "Available (On Demand)";
+$text['option-available_on_demand']['es-cl'] = "Disponible (A Pedido)";
+$text['option-available_on_demand']['pt-pt'] = "Disponível (A Pedido)";
+$text['option-available_on_demand']['fr-fr'] = "Disponible (sur demande)";
+$text['option-available_on_demand']['pl'] = "Dostępny (na żądanie)";
+$text['option-available_on_demand']['uk'] = "Доступний (на вимогу)";
+$text['option-available_on_demand']['sv-se'] = "Tillgänglig (På Begäran)";
+$text['option-available_on_demand']['ro'] = "";
+$text['option-available_on_demand']['de-at'] = "Verfügbar (auf Anfrage)";
+$text['option-available_on_demand']['he'] = "זמין (לפי דרישה(";
+
+$text['option-available']['en-us'] = "Available";
+$text['option-available']['es-cl'] = "Disponible";
+$text['option-available']['pt-pt'] = "Disponível";
+$text['option-available']['fr-fr'] = "Disponible";
+$text['option-available']['pl'] = "Dostępny";
+$text['option-available']['uk'] = "Доступний";
+$text['option-available']['sv-se'] = "Tillgänglig";
+$text['option-available']['ro'] = "";
+$text['option-available']['de-at'] = "Verfügbar";
+$text['option-available']['he'] = "זמין";
+
+$text['message-username_exists']['en-us'] = "Username Already Exists";
+$text['message-username_exists']['es-cl'] = "Ya existe Nombre de usuario";
+$text['message-username_exists']['pt-pt'] = "Nome de usuário já existe";
+$text['message-username_exists']['fr-fr'] = "Le nom d'utilisateur existe déjà";
+$text['message-username_exists']['pl'] = "Nazwa użytkownika już istnieje";
+$text['message-username_exists']['uk'] = "Користувач вже існує";
+$text['message-username_exists']['sv-se'] = "Användarnamnet Existerar Redan";
+$text['message-username_exists']['ro'] = "";
+$text['message-username_exists']['de-at'] = "Benutzername existiert bereits";
+$text['message-username_exists']['he'] = "שם משתמש כבר קיים";
+
+$text['message-password_mismatch']['en-us'] = "Password Mismatch";
+$text['message-password_mismatch']['es-cl'] = "Contraseñas no coinciden";
+$text['message-password_mismatch']['pt-pt'] = "As passwords não correspondem.";
+$text['message-password_mismatch']['fr-fr'] = "Les mots de passe ne correspondent pas";
+$text['message-password_mismatch']['pl'] = "Wprowadzone hasła nie są takie same";
+$text['message-password_mismatch']['uk'] = "Паролі не співпадають";
+$text['message-password_mismatch']['sv-se'] = "Lösenordet Stämmer Inte";
+$text['message-password_mismatch']['ro'] = "";
+$text['message-password_mismatch']['de-at'] = "Passwörter stimmen nicht überein.";
+$text['message-password_mismatch']['he'] = "הסיסמא לא נכונה";
+
+$text['message-password_blank']['en-us'] = "Invalid Password";
+$text['message-password_blank']['es-cl'] = "Contraseña No Válida";
+$text['message-password_blank']['pt-pt'] = "Senha Inválida";
+$text['message-password_blank']['fr-fr'] = "Mot de Passe Incorrect";
+$text['message-password_blank']['pl'] = "Nieprawidłowe hasło";
+$text['message-password_blank']['uk'] = "Неправильний пароль";
+$text['message-password_blank']['sv-se'] = "Ogiltigt Lösenord";
+$text['message-password_blank']['ro'] = "";
+$text['message-password_blank']['de-at'] = "Falsches Passwort";
+$text['message-password_blank']['he'] = "סיסמא לא קיימת";
+
+$text['message-password_requirements']['en-us'] = "Password Requirements";
+$text['message-password_requirements']['es-cl'] = "Requisitos de Contraseña";
+$text['message-password_requirements']['pt-pt'] = "Requisitos Senha";
+$text['message-password_requirements']['fr-fr'] = "Mot de passe requis";
+$text['message-password_requirements']['pl'] = "Wymagania Hasło";
+$text['message-password_requirements']['uk'] = "вимоги до паролю";
+$text['message-password_requirements']['sv-se'] = "lösenordskrav ";
+$text['message-password_requirements']['ro'] = "Cerințe privind parola";
+$text['message-password_requirements']['de-at'] = "Kennwortanforderungen ";
+$text['message-password_requirements']['he'] = "דרישות סיסמא";
+
+$text['message-new_group_name']['en-us'] = "Enter a Name for the new Group...";
+$text['message-new_group_name']['es-cl'] = "Introduzca un Nombre para el nuevo Grupo...";
+$text['message-new_group_name']['pt-pt'] = "Digite um Nome para o novo Grupo...";
+$text['message-new_group_name']['fr-fr'] = "Entrez un Nom pour le nouveau Groupe...";
+$text['message-new_group_name']['pl'] = "Wprowadź nazwę nowej grupy";
+$text['message-new_group_name']['uk'] = "Введіть назву нової групи";
+$text['message-new_group_name']['sv-se'] = "Ange ett Namn för den nya Gruppen...";
+$text['message-new_group_name']['ro'] = "";
+$text['message-new_group_name']['de-at'] = "Geben Sie den Namen der neuen Gruppe an...";
+$text['message-new_group_name']['he'] = "הכנס שם לקבוצה";
+
+$text['message-new_group_description']['en-us'] = "Enter a Description for the new Group...";
+$text['message-new_group_description']['es-cl'] = "Introduzca una Descripción para el nuevo Grupo...";
+$text['message-new_group_description']['pt-pt'] = "Digite uma Descrição para o novo grupo...";
+$text['message-new_group_description']['fr-fr'] = "Entrez une Description pour le nouveau groupe...";
+$text['message-new_group_description']['pl'] = "Wprowadź opis nowej grupy";
+$text['message-new_group_description']['uk'] = "Введіть опис нової групи";
+$text['message-new_group_description']['sv-se'] = "Ange en Beskrivning för den nya Gruppen...";
+$text['message-new_group_description']['ro'] = "";
+$text['message-new_group_description']['de-at'] = "Geben Sie eine Beschreiben für die neue Gruppe an...";
+$text['message-new_group_description']['he'] = "הכנס תאור לקבוצה";
+
+$text['message-maximum_users']['en-us'] = "Maximum Users:";
+$text['message-maximum_users']['es-cl'] = "Usuarios Máximo Permitido:";
+$text['message-maximum_users']['pt-pt'] = "Usuários Máximo Permitido:";
+$text['message-maximum_users']['fr-fr'] = "Utilisateurs Maximale Autorisée:";
+$text['message-maximum_users']['pl'] = "Maks ilość użytkowników";
+$text['message-maximum_users']['uk'] = "Максимальна кількість користувачів";
+$text['message-maximum_users']['sv-se'] = "Max Antal Användare:";
+$text['message-maximum_users']['ro'] = "";
+$text['message-maximum_users']['de-at'] = "Maximale Anzahl an Benutzern:";
+$text['message-maximum_users']['he'] = "מקסימום משתמשים";
+
+$text['message-group_exists']['en-us'] = "Group Already Exists";
+$text['message-group_exists']['es-cl'] = "El Grupo ya Existe";
+$text['message-group_exists']['pt-pt'] = "O Grupo já Existe";
+$text['message-group_exists']['fr-fr'] = "Le groupe existe déjà";
+$text['message-group_exists']['pl'] = "Grupa już istnieje";
+$text['message-group_exists']['uk'] = "Група вже існує";
+$text['message-group_exists']['sv-se'] = "Gruppen Existerar Redan";
+$text['message-group_exists']['ro'] = "";
+$text['message-group_exists']['de-at'] = "Gruppe existiert bereits";
+$text['message-group_exists']['he'] = "הקבוצה כבר קיימת";
+
+$text['message-default_system_group']['en-us'] = "Default system groups cannot be edited or deleted.";
+$text['message-default_system_group']['es-cl'] = "Grupos predeterminados del sistema no pueden ser editados o eliminados.";
+$text['message-default_system_group']['pt-pt'] = "Grupos de sistema padrão não podem ser editados ou apagados.";
+$text['message-default_system_group']['fr-fr'] = "Les groupes par défaut du système ne peuvent pas être modifiés ou supprimés.";
+$text['message-default_system_group']['pl'] = "Domyślne grupy systemowe nie mogą być edytowane lub usuwane";
+$text['message-default_system_group']['uk'] = "Системні групи за замовчуванням не можна редагувати або видаляти";
+$text['message-default_system_group']['sv-se'] = "Standard system grupper kan inte redigeras eller tas bort.";
+$text['message-default_system_group']['ro'] = "";
+$text['message-default_system_group']['de-at'] = "Systemgruppen können nicht bearbeitet oder gelöscht werden.";
+$text['message-default_system_group']['he'] = "";
+
+$text['message-copy']['en-us'] = "Copy Completed";
+$text['message-copy']['es-cl'] = "Copia Completada";
+$text['message-copy']['pt-pt'] = "Cópia Efectuada";
+$text['message-copy']['fr-fr'] = "Copie effectuée";
+$text['message-copy']['pl'] = "Skopiowano poprawnie";
+$text['message-copy']['uk'] = "Скопійовано";
+$text['message-copy']['sv-se'] = "Kopiering Slutförd";
+$text['message-copy']['ro'] = "Copiere completă";
+$text['message-copy']['de-at'] = "Kopieren erfolgreich";
+$text['message-copy']['he'] = "העתקה הושלמה";
+
+$text['message-cannot_delete_own_account']['en-us'] = "You cannot delete your own user account. Please login as a different user, then try again.";
+$text['message-cannot_delete_own_account']['es-cl'] = "No se puede eliminar su propia cuenta de usuario. Por favor, iniciar sesión como un usuario diferente, vuelva a intentarlo.";
+$text['message-cannot_delete_own_account']['pt-pt'] = "Você não pode excluir a sua própria conta de usuário. Identifique-se como um usuário diferente, em seguida, tente novamente.";
+$text['message-cannot_delete_own_account']['fr-fr'] = "Vous ne pouvez pas supprimer votre propre compte utilisateur. Veuillez vous identifier en tant qu'un utilisateur différent, puis réessayez.";
+$text['message-cannot_delete_own_account']['pl'] = "Nie można usunąć własnego konta użytkownika. Zaloguj się jako inny użytkownik i spróbuj ponownie.";
+$text['message-cannot_delete_own_account']['uk'] = "Ви не можете видалити власний обліковий запис. Будь ласка, увійдіть під іншим користувачем, потім повторіть спробу.";
+$text['message-cannot_delete_own_account']['sv-se'] = "Du kan inte ta bort ditt egna användarkonto. Logg ain som en annan användare och försök igen.";
+$text['message-cannot_delete_own_account']['ro'] = "";
+$text['message-cannot_delete_own_account']['de-at'] = "Sie können nicht ihren eigenen Benutzer löschen. Bitte melden Sie sich mit einem anderen Benutzer an und versuchen Sie es erneut.";
+$text['message-cannot_delete_own_account']['he'] = "";
+
+$text['label-web_fonts']['en-us'] = "Web Fonts";
+$text['label-web_fonts']['es-cl'] = "Fuentes web";
+$text['label-web_fonts']['pt-pt'] = "Fontes da web";
+$text['label-web_fonts']['fr-fr'] = "Polices Web";
+$text['label-web_fonts']['pt-br'] = "Polices Web";
+$text['label-web_fonts']['pl'] = "Czcionki sieci";
+$text['label-web_fonts']['he'] = "גופני אינטרנט";
+$text['label-web_fonts']['uk'] = "веб-шрифти";
+$text['label-web_fonts']['sv-se'] = "web teckensnitt";
+$text['label-web_fonts']['de-at'] = "Web Fonts";
+$text['label-web_fonts']['ro'] = "Fonturi web";
+$text['label-web_fonts']['fa'] = "";
+$text['label-web_fonts']['ar-eg'] = "الخطوط على شبكة الإنترنت";
+
+$text['label-username']['en-us'] = "Username";
+$text['label-username']['es-cl'] = "Nombre de usuario";
+$text['label-username']['pt-pt'] = "Nome de Utilizador";
+$text['label-username']['fr-fr'] = "Nom d'utilisateur";
+$text['label-username']['pl'] = "Użytkownik";
+$text['label-username']['uk'] = "Ім’я користувача";
+$text['label-username']['sv-se'] = "Användarnamn";
+$text['label-username']['ro'] = "Utilizator";
+$text['label-username']['de-at'] = "Benutzername";
+$text['label-username']['he'] = "שם משתמש";
+
+$text['label-user_language']['en-us'] = "Language";
+$text['label-user_language']['es-cl'] = "Lengua";
+$text['label-user_language']['pt-pt'] = "Língua";
+$text['label-user_language']['fr-fr'] = "Langue";
+$text['label-user_language']['pl'] = "Język";
+$text['label-user_language']['uk'] = "Мова";
+$text['label-user_language']['sv-se'] = "Språk";
+$text['label-user_language']['ro'] = "Limbă";
+$text['label-user_language']['de-at'] = "Sprache";
+$text['label-user_language']['he'] = "שפה";
+
+$text['label-user_info']['en-us'] = "User Info";
+$text['label-user_info']['es-cl'] = "Información de Usuario";
+$text['label-user_info']['pt-pt'] = "Informação do Utilizador";
+$text['label-user_info']['fr-fr'] = "Informations sur l'utilisateur";
+$text['label-user_info']['pl'] = "Informacje o użytkowniku";
+$text['label-user_info']['uk'] = "Інформація про користувача";
+$text['label-user_info']['sv-se'] = "Användar Info";
+$text['label-user_info']['ro'] = "";
+$text['label-user_info']['de-at'] = "Benutzer Information";
+$text['label-user_info']['he'] = "פרטי משתמש";
+
+$text['label-uppercase_letters']['en-us'] = "Uppercase Letters";
+$text['label-uppercase_letters']['es-cl'] = "Letras mayúsculas";
+$text['label-uppercase_letters']['pt-pt'] = "Letras maiúsculas";
+$text['label-uppercase_letters']['fr-fr'] = "Lettres capitales";
+$text['label-uppercase_letters']['pt-br'] = "Letras maiúsculas";
+$text['label-uppercase_letters']['pl'] = "Wielkie litery";
+$text['label-uppercase_letters']['he'] = "אותיות רישיות";
+$text['label-uppercase_letters']['uk'] = "Великі літери";
+$text['label-uppercase_letters']['sv-se'] = "Versala bokstäver";
+$text['label-uppercase_letters']['de-at'] = "Großbuchstaben";
+$text['label-uppercase_letters']['ro'] = "Litere mari";
+$text['label-uppercase_letters']['fa'] = "";
+$text['label-uppercase_letters']['ar-eg'] = "الأحرف الكبيرة";
+
+$text['label-top']['en-us'] = "Top";
+$text['label-top']['es-cl'] = "encima";
+$text['label-top']['pt-pt'] = "Topo";
+$text['label-top']['fr-fr'] = "Meilleur";
+$text['label-top']['pt-br'] = "Topo";
+$text['label-top']['pl'] = "Top";
+$text['label-top']['he'] = "עליון";
+$text['label-top']['uk'] = "топ";
+$text['label-top']['sv-se'] = "Topp";
+$text['label-top']['de-at'] = "Oben";
+$text['label-top']['ro'] = "Top";
+$text['label-top']['fa'] = "";
+$text['label-top']['ar-eg'] = "أعلى";
+
+$text['label-time_zone']['en-us'] = "Time Zone";
+$text['label-time_zone']['es-cl'] = "Zona Horaria";
+$text['label-time_zone']['pt-pt'] = "Fuso Horário";
+$text['label-time_zone']['fr-fr'] = "Fuseau Horaire";
+$text['label-time_zone']['pl'] = "Strefa czasowa";
+$text['label-time_zone']['uk'] = "Часовий пояс";
+$text['label-time_zone']['sv-se'] = "Tidszon";
+$text['label-time_zone']['ro'] = "";
+$text['label-time_zone']['de-at'] = "Zeitzone";
+$text['label-time_zone']['he'] = "אזור זמן";
+
+$text['label-text']['en-us'] = "Text";
+$text['label-text']['es-cl'] = "Texto";
+$text['label-text']['pt-pt'] = "Texto";
+$text['label-text']['fr-fr'] = "Texte";
+$text['label-text']['pt-br'] = "Texto";
+$text['label-text']['pl'] = "Tekst";
+$text['label-text']['he'] = "טֶקסט";
+$text['label-text']['uk'] = "текст";
+$text['label-text']['sv-se'] = "Text";
+$text['label-text']['de-at'] = "Text";
+$text['label-text']['ro'] = "Text";
+$text['label-text']['fa'] = "";
+$text['label-text']['ar-eg'] = "نص";
+
+$text['label-status']['en-us'] = "Status";
+$text['label-status']['es-cl'] = "Estado";
+$text['label-status']['pt-pt'] = "Estado";
+$text['label-status']['fr-fr'] = "Etat";
+$text['label-status']['pl'] = "Status";
+$text['label-status']['uk'] = "Статус";
+$text['label-status']['sv-se'] = "Status";
+$text['label-status']['ro'] = "Stare";
+$text['label-status']['de-at'] = "Status";
+$text['label-status']['he'] = "סטטוס";
+
+$text['label-static']['en-us'] = "Static";
+$text['label-static']['es-cl'] = "Estático";
+$text['label-static']['pt-pt'] = "Estático";
+$text['label-static']['fr-fr'] = "Statique";
+$text['label-static']['pt-br'] = "Estático";
+$text['label-static']['pl'] = "Statyczny";
+$text['label-static']['he'] = "סטָטִי";
+$text['label-static']['uk'] = "статичний";
+$text['label-static']['sv-se'] = "Statisk";
+$text['label-static']['de-at'] = "Statisch";
+$text['label-static']['ro'] = "Static";
+$text['label-static']['fa'] = "";
+$text['label-static']['ar-eg'] = "ساكن";
+
+$text['label-special_characters']['en-us'] = "Special Characters";
+$text['label-special_characters']['es-cl'] = "Caracteres especiales";
+$text['label-special_characters']['pt-pt'] = "Caracteres especiais";
+$text['label-special_characters']['fr-fr'] = "Caractères spéciaux";
+$text['label-special_characters']['pt-br'] = "Caracteres especiais";
+$text['label-special_characters']['pl'] = "Znaki specjalne";
+$text['label-special_characters']['he'] = "תווים מיוחדים";
+$text['label-special_characters']['uk'] = "спеціальні символи";
+$text['label-special_characters']['sv-se'] = "Speciella karaktärer";
+$text['label-special_characters']['de-at'] = "Spezielle Charaktere";
+$text['label-special_characters']['ro'] = "caractere speciale";
+$text['label-special_characters']['fa'] = "";
+$text['label-special_characters']['ar-eg'] = "أحرف خاصة";
+
+$text['label-right']['en-us'] = "Right";
+$text['label-right']['es-cl'] = "Derecha";
+$text['label-right']['pt-pt'] = "Certo";
+$text['label-right']['fr-fr'] = "Droite";
+$text['label-right']['pt-br'] = "Certo";
+$text['label-right']['pl'] = "Dobrze";
+$text['label-right']['he'] = "יָמִינָה";
+$text['label-right']['uk'] = "правий";
+$text['label-right']['sv-se'] = "Höger";
+$text['label-right']['de-at'] = "Recht";
+$text['label-right']['ro'] = "Dreapta";
+$text['label-right']['fa'] = "";
+$text['label-right']['ar-eg'] = "حق";
+
+$text['label-reference']['en-us'] = "See";
+$text['label-reference']['es-cl'] = "Referencia";
+$text['label-reference']['pt-pt'] = "Referência";
+$text['label-reference']['fr-fr'] = "Référence";
+$text['label-reference']['pt-br'] = "Referência";
+$text['label-reference']['pl'] = "Odniesienie";
+$text['label-reference']['he'] = "התייחסות";
+$text['label-reference']['uk'] = "посилання";
+$text['label-reference']['sv-se'] = "Referens";
+$text['label-reference']['de-at'] = "Referenz";
+$text['label-reference']['ro'] = "Referinţă";
+$text['label-reference']['fa'] = "";
+$text['label-reference']['ar-eg'] = "مرجع";
+
+$text['label-permission_permissions']['en-us'] = "Permissions";
+$text['label-permission_permissions']['es-cl'] = "Permisos";
+$text['label-permission_permissions']['pt-pt'] = "Permissões";
+$text['label-permission_permissions']['fr-fr'] = "Permissions";
+$text['label-permission_permissions']['pl'] = "Uprawnienia";
+$text['label-permission_permissions']['uk'] = "Привілеї";
+$text['label-permission_permissions']['sv-se'] = "Rättigheter";
+$text['label-permission_permissions']['ro'] = "";
+$text['label-permission_permissions']['de-at'] = "Berechtigungen";
+$text['label-permission_permissions']['he'] = "הרשאות";
+
+$text['label-permission_description']['en-us'] = "Description";
+$text['label-permission_description']['es-cl'] = "Descripción";
+$text['label-permission_description']['pt-pt'] = "Descrição";
+$text['label-permission_description']['fr-fr'] = "Description";
+$text['label-permission_description']['pl'] = "Opis";
+$text['label-permission_description']['uk'] = "Опис";
+$text['label-permission_description']['sv-se'] = "Beskrivning";
+$text['label-permission_description']['ro'] = "";
+$text['label-permission_description']['de-at'] = "Beschreibung";
+$text['label-permission_description']['he'] = "תאור";
+
+$text['label-password']['en-us'] = "Password";
+$text['label-password']['es-cl'] = "Contraseña";
+$text['label-password']['pt-pt'] = "Palavra-Passe";
+$text['label-password']['fr-fr'] = "Mot de passe";
+$text['label-password']['pl'] = "Hasło";
+$text['label-password']['uk'] = "Пароль";
+$text['label-password']['sv-se'] = "Lösenord";
+$text['label-password']['ro'] = "Parolă";
+$text['label-password']['de-at'] = "Passwort";
+$text['label-password']['he'] = "סיסמה";
+
+$text['label-other']['en-us'] = "Other";
+$text['label-other']['es-cl'] = "Otro";
+$text['label-other']['pt-pt'] = "Outro";
+$text['label-other']['fr-fr'] = "Autre";
+$text['label-other']['pt-br'] = "Outro";
+$text['label-other']['pl'] = "Inne";
+$text['label-other']['uk'] = "";
+$text['label-other']['sv-se'] = "Annat";
+$text['label-other']['de-at'] = "Andere";
+$text['label-other']['he'] = "אחר";
+
+$text['label-numbers']['en-us'] = "Numbers";
+$text['label-numbers']['es-cl'] = "Números";
+$text['label-numbers']['pt-pt'] = "Números";
+$text['label-numbers']['fr-fr'] = "Nombres";
+$text['label-numbers']['pt-br'] = "Números";
+$text['label-numbers']['pl'] = "Liczby";
+$text['label-numbers']['he'] = "מספרים";
+$text['label-numbers']['uk'] = "чисел";
+$text['label-numbers']['sv-se'] = "Tal";
+$text['label-numbers']['de-at'] = "Nummern";
+$text['label-numbers']['ro'] = "numere";
+$text['label-numbers']['fa'] = "";
+$text['label-numbers']['ar-eg'] = "أرقام";
+
+$text['label-none']['en-us'] = "None";
+$text['label-none']['es-cl'] = "Ninguna";
+$text['label-none']['pt-pt'] = "Nenhum";
+$text['label-none']['fr-fr'] = "Aucun";
+$text['label-none']['pt-br'] = "Nenhum";
+$text['label-none']['pl'] = "Żaden";
+$text['label-none']['he'] = "אף לא אחד";
+$text['label-none']['uk'] = "жоден";
+$text['label-none']['sv-se'] = "Ingen";
+$text['label-none']['de-at'] = "Keiner";
+$text['label-none']['ro'] = "Nici unul";
+$text['label-none']['fa'] = "";
+$text['label-none']['ar-eg'] = "لا شيء";
+
+$text['label-lowercase_letters']['en-us'] = "Lowercase Letters";
+$text['label-lowercase_letters']['es-cl'] = "Letras minusculas";
+$text['label-lowercase_letters']['pt-pt'] = "Letras minúsculas";
+$text['label-lowercase_letters']['fr-fr'] = "Minuscules";
+$text['label-lowercase_letters']['pt-br'] = "Letras minúsculas";
+$text['label-lowercase_letters']['pl'] = "Małe litery";
+$text['label-lowercase_letters']['he'] = "אותיות קטנות";
+$text['label-lowercase_letters']['uk'] = "Букви нижнього регістру";
+$text['label-lowercase_letters']['sv-se'] = "Gemener";
+$text['label-lowercase_letters']['de-at'] = "Kleinbuchstaben";
+$text['label-lowercase_letters']['ro'] = "Litere mici";
+$text['label-lowercase_letters']['fa'] = "";
+$text['label-lowercase_letters']['ar-eg'] = "أحرف صغيرة";
+
+$text['label-left']['en-us'] = "Left";
+$text['label-left']['es-cl'] = "Izquierda";
+$text['label-left']['pt-pt'] = "Esquerda";
+$text['label-left']['fr-fr'] = "À gauche";
+$text['label-left']['pt-br'] = "Esquerda";
+$text['label-left']['pl'] = "Lewo";
+$text['label-left']['he'] = "שְׁמֹאל";
+$text['label-left']['uk'] = "лівий";
+$text['label-left']['sv-se'] = "Vänster";
+$text['label-left']['de-at'] = "Links";
+$text['label-left']['ro'] = "Stânga";
+$text['label-left']['fa'] = "";
+$text['label-left']['ar-eg'] = "اليسار";
+
+$text['label-last_name']['en-us'] = "Last Name";
+$text['label-last_name']['es-cl'] = "Apellido";
+$text['label-last_name']['pt-pt'] = "Último Nome";
+$text['label-last_name']['fr-fr'] = "Nom";
+$text['label-last_name']['pl'] = "Nazwisko";
+$text['label-last_name']['uk'] = "Прізвище";
+$text['label-last_name']['sv-se'] = "Efternamn";
+$text['label-last_name']['ro'] = "";
+$text['label-last_name']['de-at'] = "Nachname";
+$text['label-last_name']['he'] = "שם משפחה";
+
+$text['label-inline']['en-us'] = "Inline";
+$text['label-inline']['es-cl'] = "En línea";
+$text['label-inline']['pt-pt'] = "Na linha";
+$text['label-inline']['fr-fr'] = "En ligne";
+$text['label-inline']['pt-br'] = "Na linha";
+$text['label-inline']['pl'] = "inline";
+$text['label-inline']['he'] = "בשורה";
+$text['label-inline']['uk'] = "В лінію";
+$text['label-inline']['sv-se'] = "I kö";
+$text['label-inline']['de-at'] = "In der Reihe";
+$text['label-inline']['ro'] = "In linie";
+$text['label-inline']['fa'] = "";
+$text['label-inline']['ar-eg'] = "في النسق";
+
+$text['label-image']['en-us'] = "Image";
+$text['label-image']['es-cl'] = "Imagen";
+$text['label-image']['pt-pt'] = "Imagem";
+$text['label-image']['fr-fr'] = "image";
+$text['label-image']['pt-br'] = "Imagem";
+$text['label-image']['pl'] = "Obraz";
+$text['label-image']['he'] = "תמונה";
+$text['label-image']['uk'] = "зображення";
+$text['label-image']['sv-se'] = "Bild";
+$text['label-image']['de-at'] = "Image";
+$text['label-image']['ro'] = "Imagine";
+$text['label-image']['fa'] = "";
+$text['label-image']['ar-eg'] = "صورة";
+
+$text['label-groups']['en-us'] = "Groups";
+$text['label-groups']['es-cl'] = "Grupos";
+$text['label-groups']['pt-pt'] = "Grupos";
+$text['label-groups']['fr-fr'] = "Groupes";
+$text['label-groups']['pl'] = "Grupy";
+$text['label-groups']['uk'] = "Групи";
+$text['label-groups']['sv-se'] = "Grupper";
+$text['label-groups']['ro'] = "";
+$text['label-groups']['de-at'] = "Gruppen";
+$text['label-groups']['he'] = "קבוצות";
+
+$text['label-group_tools']['en-us'] = "Tools";
+$text['label-group_tools']['es-cl'] = "Instrumentos";
+$text['label-group_tools']['pt-pt'] = "Ferramentas";
+$text['label-group_tools']['fr-fr'] = "Outils";
+$text['label-group_tools']['pl'] = "Narzędzia";
+$text['label-group_tools']['uk'] = "Інструменти";
+$text['label-group_tools']['sv-se'] = "Verktyg";
+$text['label-group_tools']['ro'] = "";
+$text['label-group_tools']['de-at'] = "Funktionen";
+$text['label-group_tools']['he'] = "כלים";
+
+$text['label-group_protected']['en-us'] = "Protected";
+$text['label-group_protected']['es-cl'] = "Protegido";
+$text['label-group_protected']['pt-pt'] = "Protegido";
+$text['label-group_protected']['fr-fr'] = "Protégé";
+$text['label-group_protected']['pl'] = "Zabezpieczony";
+$text['label-group_protected']['uk'] = "Захищено";
+$text['label-group_protected']['sv-se'] = "Skyddad";
+$text['label-group_protected']['ro'] = "";
+$text['label-group_protected']['de-at'] = "Geschützt";
+$text['label-group_protected']['he'] = "שמור";
+
+$text['label-group_permissions']['en-us'] = "Permissions";
+$text['label-group_permissions']['es-cl'] = "Permisos";
+$text['label-group_permissions']['pt-pt'] = "Permissões";
+$text['label-group_permissions']['fr-fr'] = "Permissions";
+$text['label-group_permissions']['pl'] = "Uprawnienia";
+$text['label-group_permissions']['uk'] = "Дозволи";
+$text['label-group_permissions']['sv-se'] = "Rättigheter";
+$text['label-group_permissions']['ro'] = "";
+$text['label-group_permissions']['de-at'] = "Berechtigungen";
+$text['label-group_permissions']['he'] = "הראשות";
+
+$text['label-group_name']['en-us'] = "Name";
+$text['label-group_name']['es-cl'] = "Nombre";
+$text['label-group_name']['pt-pt'] = "Nome";
+$text['label-group_name']['fr-fr'] = "Nom";
+$text['label-group_name']['pl'] = "Nazwa";
+$text['label-group_name']['uk'] = "Назва";
+$text['label-group_name']['sv-se'] = "Namn";
+$text['label-group_name']['ro'] = "";
+$text['label-group_name']['de-at'] = "Name";
+$text['label-group_name']['he'] = "שם";
+
+$text['label-group_members']['en-us'] = "Members";
+$text['label-group_members']['es-cl'] = "Miembros";
+$text['label-group_members']['pt-pt'] = "Membros";
+$text['label-group_members']['fr-fr'] = "Membres";
+$text['label-group_members']['pl'] = "Członkowie";
+$text['label-group_members']['uk'] = "Учасники";
+$text['label-group_members']['sv-se'] = "Medlemmar";
+$text['label-group_members']['ro'] = "";
+$text['label-group_members']['de-at'] = "Mitglieder";
+$text['label-group_members']['he'] = "משתמשים";
+
+$text['label-group_description']['en-us'] = "Description";
+$text['label-group_description']['es-cl'] = "Descripción";
+$text['label-group_description']['pt-pt'] = "Descrição";
+$text['label-group_description']['fr-fr'] = "Description";
+$text['label-group_description']['pl'] = "Opis";
+$text['label-group_description']['uk'] = "Опис";
+$text['label-group_description']['sv-se'] = "Beskrivning";
+$text['label-group_description']['ro'] = "";
+$text['label-group_description']['de-at'] = "Beschreibung";
+$text['label-group_description']['he'] = "תאור";
+
+$text['label-group']['en-us'] = "Group";
+$text['label-group']['es-cl'] = "Grupo";
+$text['label-group']['pt-pt'] = "Grupo";
+$text['label-group']['fr-fr'] = "Group";
+$text['label-group']['pl'] = "Grupa";
+$text['label-group']['uk'] = "Група";
+$text['label-group']['sv-se'] = "Grupp";
+$text['label-group']['ro'] = "";
+$text['label-group']['de-at'] = "Gruppe";
+$text['label-group']['he'] = "קבוצה";
+
+$text['label-global']['en-us'] = "Global";
+$text['label-global']['es-cl'] = "Global";
+$text['label-global']['pt-pt'] = "Global";
+$text['label-global']['fr-fr'] = "Global";
+$text['label-global']['pl'] = "Ogólny";
+$text['label-global']['uk'] = "Глобально";
+$text['label-global']['sv-se'] = "Global";
+$text['label-global']['ro'] = "";
+$text['label-global']['de-at'] = "Global";
+$text['label-global']['he'] = "כללי";
+
+$text['label-fixed']['en-us'] = "Fixed";
+$text['label-fixed']['es-cl'] = "Fijo";
+$text['label-fixed']['pt-pt'] = "Fixo";
+$text['label-fixed']['fr-fr'] = "Fixé";
+$text['label-fixed']['pt-br'] = "Fixo";
+$text['label-fixed']['pl'] = "Naprawiony";
+$text['label-fixed']['he'] = "קָבוּעַ";
+$text['label-fixed']['uk'] = "фіксований";
+$text['label-fixed']['sv-se'] = "Fast";
+$text['label-fixed']['de-at'] = "fest";
+$text['label-fixed']['ro'] = "Fix";
+$text['label-fixed']['fa'] = "";
+$text['label-fixed']['ar-eg'] = "ثابت";
+
+$text['label-first_name']['en-us'] = "First Name";
+$text['label-first_name']['es-cl'] = "Nombre";
+$text['label-first_name']['pt-pt'] = "Primeiro Nome";
+$text['label-first_name']['fr-fr'] = "Prénom";
+$text['label-first_name']['pl'] = "Imię";
+$text['label-first_name']['uk'] = "Ім’я";
+$text['label-first_name']['sv-se'] = "Förnamn";
+$text['label-first_name']['ro'] = "";
+$text['label-first_name']['de-at'] = "Vorname";
+$text['label-first_name']['he'] = "שם";
+
+$text['label-email']['en-us'] = "Email";
+$text['label-email']['es-cl'] = "Email";
+$text['label-email']['pt-pt'] = "Email";
+$text['label-email']['fr-fr'] = "Courriel";
+$text['label-email']['pl'] = "Email";
+$text['label-email']['uk'] = "Електронна пошта";
+$text['label-email']['sv-se'] = "E-post";
+$text['label-email']['ro'] = "";
+$text['label-email']['de-at'] = "Email";
+$text['label-email']['he'] = "אימייל";
+
+$text['label-domain']['en-us'] = "Domain";
+$text['label-domain']['es-cl'] = "Dominio";
+$text['label-domain']['pt-pt'] = "Domínio";
+$text['label-domain']['fr-fr'] = "Domaine";
+$text['label-domain']['pl'] = "Domena";
+$text['label-domain']['uk'] = "Домен";
+$text['label-domain']['sv-se'] = "Domän";
+$text['label-domain']['ro'] = "Domeniu";
+$text['label-domain']['de-at'] = "Domain";
+$text['label-domain']['he'] = "תחום";
+
+$text['label-contact']['en-us'] = "Contact";
+$text['label-contact']['es-cl'] = "Contacto";
+$text['label-contact']['pt-pt'] = "Contacto";
+$text['label-contact']['fr-fr'] = "Contact";
+$text['label-contact']['pl'] = "Kontakt";
+$text['label-contact']['uk'] = "Контакт";
+$text['label-contact']['sv-se'] = "Kontakt";
+$text['label-contact']['ro'] = "";
+$text['label-contact']['de-at'] = "Kontakt";
+$text['label-contact']['he'] = "איש קשר";
+
+$text['label-confirm_password']['en-us'] = "Confirm Password";
+$text['label-confirm_password']['es-cl'] = "Confirme Contraseña";
+$text['label-confirm_password']['pt-pt'] = "Confirmar Palavra-Passe";
+$text['label-confirm_password']['fr-fr'] = "Confirmer le mot de passe";
+$text['label-confirm_password']['pl'] = "Potwierdź hasło";
+$text['label-confirm_password']['uk'] = "Повторити пароль";
+$text['label-confirm_password']['sv-se'] = "Bekräfta Lösenord";
+$text['label-confirm_password']['ro'] = "";
+$text['label-confirm_password']['de-at'] = "Passwort bestätigen";
+$text['label-confirm_password']['he'] = "אשר סיסמא";
+
+$text['label-company_name']['en-us'] = "Company Name";
+$text['label-company_name']['es-cl'] = "Nombre de la Compañia";
+$text['label-company_name']['pt-pt'] = "Nome da Empresa";
+$text['label-company_name']['fr-fr'] = "Compagnie";
+$text['label-company_name']['pl'] = "Nazwa firmy";
+$text['label-company_name']['uk'] = "Назва компанії";
+$text['label-company_name']['sv-se'] = "Företags Namn";
+$text['label-company_name']['ro'] = "";
+$text['label-company_name']['de-at'] = "Firmenname";
+$text['label-company_name']['he'] = "שם חברה";
+
+$text['label-characters']['en-us'] = "Characters";
+$text['label-characters']['es-cl'] = "Caracteres";
+$text['label-characters']['pt-pt'] = "Personagens";
+$text['label-characters']['fr-fr'] = "Personnages";
+$text['label-characters']['pt-br'] = "Personagens";
+$text['label-characters']['pl'] = "Postacie";
+$text['label-characters']['he'] = "דמויות";
+$text['label-characters']['uk'] = "персонажі";
+$text['label-characters']['sv-se'] = "tecken";
+$text['label-characters']['de-at'] = "Figuren";
+$text['label-characters']['ro'] = "caractere";
+$text['label-characters']['fa'] = "";
+$text['label-characters']['ar-eg'] = "الشخصيات";
+
+$text['label-center']['en-us'] = "Center";
+$text['label-center']['es-cl'] = "Centrar";
+$text['label-center']['pt-pt'] = "Centro";
+$text['label-center']['fr-fr'] = "centre";
+$text['label-center']['pt-br'] = "Centro";
+$text['label-center']['pl'] = "Centrum";
+$text['label-center']['he'] = "מֶרְכָּז";
+$text['label-center']['uk'] = "центр";
+$text['label-center']['sv-se'] = "Centrum";
+$text['label-center']['de-at'] = "Center";
+$text['label-center']['ro'] = "Centru";
+$text['label-center']['fa'] = "";
+$text['label-center']['ar-eg'] = "مركز";
+
+$text['label-bottom']['en-us'] = "Bottom";
+$text['label-bottom']['es-cl'] = "Fondo";
+$text['label-bottom']['pt-pt'] = "Inferior";
+$text['label-bottom']['fr-fr'] = "Bas";
+$text['label-bottom']['pt-br'] = "Inferior";
+$text['label-bottom']['pl'] = "Dolny";
+$text['label-bottom']['he'] = "תַחתִית";
+$text['label-bottom']['uk'] = "дно";
+$text['label-bottom']['sv-se'] = "Botten";
+$text['label-bottom']['de-at'] = "Boden";
+$text['label-bottom']['ro'] = "Fund";
+$text['label-bottom']['fa'] = "";
+$text['label-bottom']['ar-eg'] = "أسفل";
+
+$text['label-api_key']['en-us'] = "API Key";
+$text['label-api_key']['es-cl'] = "API Key";
+$text['label-api_key']['pt-pt'] = "API Key";
+$text['label-api_key']['fr-fr'] = "Clé d'API";
+$text['label-api_key']['pl'] = "Klucz API";
+$text['label-api_key']['uk'] = "Ключ API";
+$text['label-api_key']['sv-se'] = "API Nyckel";
+$text['label-api_key']['ro'] = "";
+$text['label-api_key']['de-at'] = "API Key";
+$text['label-api_key']['he'] = "";
+
+$text['label-additional_info']['en-us'] = "Additional Info";
+$text['label-additional_info']['es-cl'] = "Información Adicional";
+$text['label-additional_info']['pt-pt'] = "Informação Adicional";
+$text['label-additional_info']['fr-fr'] = "Informations additionnelles";
+$text['label-additional_info']['pl'] = "Dodatkowe informacje";
+$text['label-additional_info']['uk'] = "Додаткова інформація";
+$text['label-additional_info']['sv-se'] = "Ytterligare Info";
+$text['label-additional_info']['ro'] = "";
+$text['label-additional_info']['de-at'] = "Zusätzliche Information";
+$text['label-additional_info']['he'] = "מידע נוסף";
+
+$text['label-24-hour']['en-us'] = "24-Hour";
+$text['label-24-hour']['es-cl'] = "24 horas";
+$text['label-24-hour']['pt-pt'] = "24 horas";
+$text['label-24-hour']['fr-fr'] = "24 heures";
+$text['label-24-hour']['pt-br'] = "24 horas";
+$text['label-24-hour']['pl'] = "24-godzinny";
+$text['label-24-hour']['he'] = "24 שעות";
+$text['label-24-hour']['uk'] = "24-годинний";
+$text['label-24-hour']['sv-se'] = "24-timmars";
+$text['label-24-hour']['de-at'] = "24 Stunden";
+$text['label-24-hour']['ro'] = "24 de ore";
+$text['label-24-hour']['fa'] = "";
+$text['label-24-hour']['ar-eg'] = "24 ساعة";
+
+$text['label-12-hour']['en-us'] = "12-Hour";
+$text['label-12-hour']['es-cl'] = "12 horas";
+$text['label-12-hour']['pt-pt'] = "12 horas";
+$text['label-12-hour']['fr-fr'] = "12 heures";
+$text['label-12-hour']['pt-br'] = "12 horas";
+$text['label-12-hour']['pl'] = "12-godzinny";
+$text['label-12-hour']['he'] = "12 שעות";
+$text['label-12-hour']['uk'] = "12-годинний";
+$text['label-12-hour']['sv-se'] = "12-timmars";
+$text['label-12-hour']['de-at'] = "12 Stunden";
+$text['label-12-hour']['ro'] = "12 de ore";
+$text['label-12-hour']['fa'] = "";
+$text['label-12-hour']['ar-eg'] = "12 ساعة";
+
+$text['header-user_setting-edit']['en-us'] = "User Setting";
+$text['header-user_setting-edit']['es-cl'] = "Configuración de Usuario";
+$text['header-user_setting-edit']['pt-pt'] = "Definição do Utilizador";
+$text['header-user_setting-edit']['fr-fr'] = "Cadre de l'utilisateur";
+
+$text['header-user_setting-add']['en-us'] = "User Setting Add";
+$text['header-user_setting-add']['es-cl'] = "Ajuste del usuario Agregar";
+$text['header-user_setting-add']['pt-pt'] = "Usuário setting Adicionar";
+$text['header-user_setting-add']['fr-fr'] = "Cadre utilisateur Ajouter";
+
+$text['header-user_manager']['en-us'] = "Users";
+$text['header-user_manager']['es-cl'] = "Administración de Usuario";
+$text['header-user_manager']['pt-pt'] = "Gestão de Utilizadores";
+$text['header-user_manager']['fr-fr'] = "Gestion des utilisateurs";
+$text['header-user_manager']['pl'] = "Menadżer użytkowników";
+$text['header-user_manager']['uk'] = "Користувачі";
+$text['header-user_manager']['sv-se'] = "Användar Inställningar";
+$text['header-user_manager']['ro'] = "";
+$text['header-user_manager']['de-at'] = "Benutzerverwaltung";
+$text['header-user_manager']['he'] = "מנהל משתמש";
+
+$text['header-user_edit']['en-us'] = "User";
+$text['header-user_edit']['es-cl'] = "Editar Usuario";
+$text['header-user_edit']['pt-pt'] = "Editar Utilizador";
+$text['header-user_edit']['fr-fr'] = "Modifier l'utilisateur";
+$text['header-user_edit']['pl'] = "Użytkownik";
+$text['header-user_edit']['uk'] = "Користувач";
+$text['header-user_edit']['sv-se'] = "Användare";
+$text['header-user_edit']['ro'] = "";
+$text['header-user_edit']['de-at'] = "Benutzer";
+$text['header-user_edit']['he'] = "משתמש";
+
+$text['header-user_add']['en-us'] = "User";
+$text['header-user_add']['es-cl'] = "Agregar Usuario";
+$text['header-user_add']['pt-pt'] = "Adicionar Utilizador";
+$text['header-user_add']['fr-fr'] = "Ajout d'un utilisateur";
+$text['header-user_add']['pl'] = "Użytkownik";
+$text['header-user_add']['uk'] = "Користувач";
+$text['header-user_add']['sv-se'] = "Användare";
+$text['header-user_add']['ro'] = "";
+$text['header-user_add']['de-at'] = "Benutzer";
+$text['header-user_add']['he'] = "משתמש";
+
+$text['header-group_permissions']['en-us'] = "Group Permissions: ";
+$text['header-group_permissions']['es-cl'] = "Permisos de Grupo: ";
+$text['header-group_permissions']['pt-pt'] = "Permissões do Grupo: ";
+$text['header-group_permissions']['fr-fr'] = "Permissions du Groupe: ";
+$text['header-group_permissions']['pl'] = "Uprawnienia grupy";
+$text['header-group_permissions']['uk'] = "Привілеї групи:";
+$text['header-group_permissions']['sv-se'] = "Grupp Rättigheter";
+$text['header-group_permissions']['ro'] = "";
+$text['header-group_permissions']['de-at'] = "Gruppenberechtigungen:";
+$text['header-group_permissions']['he'] = "הרשאות קבוצה";
+
+$text['header-group_members']['en-us'] = "Group Members: ";
+$text['header-group_members']['es-cl'] = "Miembros de Grupo: ";
+$text['header-group_members']['pt-pt'] = "Membros do Grupo: ";
+$text['header-group_members']['fr-fr'] = "Membres du Groupe: ";
+$text['header-group_members']['pl'] = "Członkowie grupy:";
+$text['header-group_members']['uk'] = "Учасники групи: ";
+$text['header-group_members']['sv-se'] = "Grupp Medlemmar:";
+$text['header-group_members']['ro'] = "";
+$text['header-group_members']['de-at'] = "Gruppenmitglieder:";
+$text['header-group_members']['he'] = "משתמשי קבוצה";
+
+$text['header-group_manager']['en-us'] = "Group Manager";
+$text['header-group_manager']['es-cl'] = "Administración de Grupo";
+$text['header-group_manager']['pt-pt'] = "Gestão de Grupos";
+$text['header-group_manager']['fr-fr'] = "Gestion de Groupe";
+$text['header-group_manager']['pl'] = "Menadżer  grup";
+$text['header-group_manager']['uk'] = "Групи";
+$text['header-group_manager']['sv-se'] = "Grupp Inställningar";
+$text['header-group_manager']['ro'] = "";
+$text['header-group_manager']['de-at'] = "Gruppenverwaltung";
+$text['header-group_manager']['he'] = "מנהל קבוצה";
+
+$text['header-group_edit']['en-us'] = "Edit Group";
+$text['header-group_edit']['es-cl'] = "Editar Grupo";
+$text['header-group_edit']['pt-pt'] = "Editar Grupo";
+$text['header-group_edit']['fr-fr'] = "Modifier le Groupe";
+$text['header-group_edit']['pl'] = "Edycja grupy";
+$text['header-group_edit']['uk'] = "Редагувати групу";
+$text['header-group_edit']['sv-se'] = "Editera Grupp";
+$text['header-group_edit']['ro'] = "";
+$text['header-group_edit']['de-at'] = "Gruppe bearbeiten";
+$text['header-group_edit']['he'] = "ערוך קבוצה";
+
+$text['header-group_add']['en-us'] = "Add Group";
+$text['header-group_add']['es-cl'] = "Agregar Grupo";
+$text['header-group_add']['pt-pt'] = "Adicionar Grupo";
+$text['header-group_add']['fr-fr'] = "Ajouter un Groupe";
+$text['header-group_add']['pl'] = "Dodaj grupę";
+$text['header-group_add']['uk'] = "Додати групу";
+$text['header-group_add']['sv-se'] = "Lägg Till Grupp";
+$text['header-group_add']['ro'] = "";
+$text['header-group_add']['de-at'] = "Gruppe hinzufügen";
+$text['header-group_add']['he'] = "הוסף קבוצה";
+
+$text['description-user_setting-edit']['en-us'] = "Edit a setting for this user.";
+$text['description-user_setting-edit']['es-cl'] = "Editar un escenario de este usuario.";
+$text['description-user_setting-edit']['pt-pt'] = "Editar uma configuração para este usuário.";
+$text['description-user_setting-edit']['fr-fr'] = "Modifier un réglage pour cet utilisateur.";
+
+$text['description-user_setting-add']['en-us'] = "Add a setting for this user.";
+$text['description-user_setting-add']['es-cl'] = "Añadir un entorno para este usuario.";
+$text['description-user_setting-add']['pt-pt'] = "Adicionar uma definição para esse usuário.";
+$text['description-user_setting-add']['fr-fr'] = "Ajouter un cadre pour cet utilisateur.";
+
+$text['description-user_manager']['en-us'] = "Add, edit, delete, and search users. ";
+$text['description-user_manager']['es-cl'] = "Agregar, Editar, Eliminar y Buscar Usuarios. ";
+$text['description-user_manager']['pt-pt'] = "Adicionar, editar, remover e pesquisar utilizadores. ";
+$text['description-user_manager']['fr-fr'] = "Ajouter, modifier, supprimer et chercher des utilisateurs. ";
+$text['description-user_manager']['pl'] = "Dodaj, edytuj, usuń i wyszukaj użytkowników.";
+$text['description-user_manager']['uk'] = "Додавання, редагування, видалення та пошук користувачів";
+$text['description-user_manager']['sv-se'] = "Lägg Till, editera, ta bort och sök användare.";
+$text['description-user_manager']['ro'] = "";
+$text['description-user_manager']['de-at'] = "Benutzer anlegen, editieren, löschen und suchen.";
+$text['description-user_manager']['he'] = "הוסף, ערוך, מחק וחפש משתמשים";
+
+$text['description-user_language']['en-us'] = "Select the language.";
+$text['description-user_language']['es-cl'] = "Seleccione el idioma.";
+$text['description-user_language']['pt-pt'] = "Selecione o idioma.";
+$text['description-user_language']['fr-fr'] = "Sélectionnez la langue.";
+$text['description-user_language']['pl'] = "Wybierz język";
+$text['description-user_language']['uk'] = "Виберіть мову";
+$text['description-user_language']['sv-se'] = "Välj Språk";
+$text['description-user_language']['ro'] = "Selecție limbă";
+$text['description-user_language']['de-at'] = "Sprache auswählen";
+$text['description-user_language']['he'] = "בחר שפה";
+
+$text['description-user_edit']['en-us'] = "Edit user information and group membership. ";
+$text['description-user_edit']['es-cl'] = "Editar información del usuario y pertenencia al grupo. ";
+$text['description-user_edit']['pt-pt'] = "Editar a informação do utilizador e os membros do grupo. ";
+$text['description-user_edit']['fr-fr'] = "Modifier les informations de l'utilisateur et l'appartenance au groupe.";
+$text['description-user_edit']['pl'] = "Edytuj informacje o użytkowniku i przynależności do grupy.";
+$text['description-user_edit']['uk'] = "Змініть інформацію користувача і членство в групі.";
+$text['description-user_edit']['sv-se'] = "Meditera användarinformation och grupp medlemskap.";
+$text['description-user_edit']['ro'] = "";
+$text['description-user_edit']['de-at'] = "Benutzerinformationen und Gruppen verwalten.";
+$text['description-user_edit']['he'] = "ערוך פרטי משתמש ושיוך לקבוצה";
+
+$text['description-user_add']['en-us'] = "To add a user, please fill out this form completely. All fields are required. ";
+$text['description-user_add']['es-cl'] = "Para agregar un usuario, por favor llene completamente el siguiente formulario. Todos los campos son obligatorios. ";
+$text['description-user_add']['pt-pt'] = "Para adicionar um utilizador por favor preencha este formulário. Todos os campos são de preenchimento obrigatório. ";
+$text['description-user_add']['fr-fr'] = "Afin d'ajouter des utilisateurs, remplissez complètement ce formulaire. Tous les champs sont requis. ";
+$text['description-user_add']['pl'] = "Aby dodać użytkownika, wypełnij ten formularz w całości. Wszystkie pola są wymagane.";
+$text['description-user_add']['uk'] = "Щоб додати користувача, будь ласка, заповніть цю форму повністю. Всі поля обов'язкові для заповнення.";
+$text['description-user_add']['sv-se'] = "För att lägga till en användare, fyll i hela detta formulär. Alla fält måste fyllas i.";
+$text['description-user_add']['ro'] = "";
+$text['description-user_add']['de-at'] = "Um einen Benutzer anzulegen, füllen Sie bitte dieses Formular komplett aus. Alle Felder sind erforderlich.";
+$text['description-user_add']['he'] = "בכדי להוסיף משתמש, אנא הכנס את הפרטים בכל השדות.";
+
+$text['description-time_zone']['en-us'] = "Select the default time zone.";
+$text['description-time_zone']['es-cl'] = "Seleccione la zona horaria por defecto.";
+$text['description-time_zone']['pt-pt'] = "Escolha o fuso horário por omissão.";
+$text['description-time_zone']['fr-fr'] = "Sélectionnez le fuseau horaire par défaut.";
+$text['description-time_zone']['pl'] = "Wybierz domyślną strefę czasową";
+$text['description-time_zone']['uk'] = "Виберіть часовий пояс за замовчуванням.";
+$text['description-time_zone']['sv-se'] = "Välj standard tidszon";
+$text['description-time_zone']['ro'] = "";
+$text['description-time_zone']['de-at'] = "Wählen Sie die Standard Zeitzone";
+$text['description-time_zone']['he'] = "הגדר אזור זמן";
+
+$text['description-status']['en-us'] = "Set the user's presence.";
+$text['description-status']['es-cl'] = "Configure la presencia del usuario.";
+$text['description-status']['pt-pt'] = "Escolher o estado de presença do utilizador.";
+$text['description-status']['fr-fr'] = "Sélectionnez l'état de présence de l'utilisateur.";
+$text['description-status']['pl'] = "Wybierz status użytkownika";
+$text['description-status']['uk'] = "Виберіть статус користувача";
+$text['description-status']['sv-se'] = "Välj en användarstatus.";
+$text['description-status']['ro'] = "Selectați starea utilizatorului";
+$text['description-status']['de-at'] = "Benutzerstatus auswählen";
+$text['description-status']['he'] = "בחר את סטטוס המשתמש";
+
+$text['description-group_permissions']['en-us'] = "Assign permissions for this group.";
+$text['description-group_permissions']['es-cl'] = "Asigne permisos para este grupo.";
+$text['description-group_permissions']['pt-pt'] = "Atribua permissões para este grupo.";
+$text['description-group_permissions']['fr-fr'] = "Assignez des permissions à ce groupe.";
+$text['description-group_permissions']['pl'] = "Przypisywanie uprawnień tej grupie.";
+$text['description-group_permissions']['uk'] = "Призначення привілеїв для цієї групи.";
+$text['description-group_permissions']['sv-se'] = "Tilldela rättigheter till denna grupp.";
+$text['description-group_permissions']['ro'] = "";
+$text['description-group_permissions']['de-at'] = "Ordnen Sie Berechtigungen für diese Gruppe zu.";
+$text['description-group_permissions']['he'] = "צור הרשאות לקבוצה";
+
+$text['description-group_edit']['en-us'] = "Edit the properties of the group.";
+$text['description-group_edit']['es-cl'] = "Editar las propiedades del grupo.";
+$text['description-group_edit']['pt-pt'] = "Editar as propriedades do grupo.";
+$text['description-group_edit']['fr-fr'] = "Modifier les propriétés du groupe.";
+$text['description-group_edit']['pl'] = "Edytuj właściwości grupy.";
+$text['description-group_edit']['uk'] = "Зміна властивостей групи.";
+$text['description-group_edit']['sv-se'] = "Editera inställningar för gruppen.";
+$text['description-group_edit']['ro'] = "";
+$text['description-group_edit']['de-at'] = "Bearbeiten Sie die Eigenschaften dieser Gruppe";
+$text['description-group_edit']['he'] = "";
+
+$text['description-group_add']['en-us'] = "Create a new user group.";
+$text['description-group_add']['es-cl'] = "Crear un nuevo grupo de usuarios.";
+$text['description-group_add']['pt-pt'] = "Criar um novo grupo de usuários.";
+$text['description-group_add']['fr-fr'] = "Créez un nouveau groupe d'utilisateurs.";
+$text['description-group_add']['pl'] = "Utwórz nową grupę użytkowników.";
+$text['description-group_add']['uk'] = "Створити нову групу користувачів.";
+$text['description-group_add']['sv-se'] = "Skapa en ny användargrupp.";
+$text['description-group_add']['ro'] = "";
+$text['description-group_add']['de-at'] = "Legen Sie einen neue Gruppe an.";
+$text['description-group_add']['he'] = "";
+
+$text['description-enabled']['en-us'] = "Set the status of this account.";
+$text['description-enabled']['es-cl'] = "Indique el estaso de esta cuenta.";
+$text['description-enabled']['pt-pt'] = "Escolha o estado desta conta.";
+$text['description-enabled']['fr-fr'] = "Choisir le statut de ce compte.";
+$text['description-enabled']['pl'] = "Ustaw status numeru wewnętrznego.";
+$text['description-enabled']['uk'] = "Вкажіть стан цього облікового запису.";
+$text['description-enabled']['sv-se'] = "Välj status på denna standardinställning.";
+$text['description-enabled']['ro'] = "";
+$text['description-enabled']['de-at'] = "Setzen Sie den Status dieses Kontos.";
+$text['description-enabled']['he'] = "בחר את הסטטוס לחשבון זה";
+
+$text['description-contact_view']['en-us'] = "View";
+$text['description-contact_view']['es-cl'] = "Ver";
+$text['description-contact_view']['pt-pt'] = "Ver";
+$text['description-contact_view']['fr-fr'] = "Voir";
+$text['description-contact_view']['pl'] = "Widok";
+$text['description-contact_view']['uk'] = "Перегляд";
+$text['description-contact_view']['sv-se'] = "Granska";
+$text['description-contact_view']['ro'] = "";
+$text['description-contact_view']['de-at'] = "Ansicht";
+$text['description-contact_view']['he'] = "הצג";
+
+$text['description-contact']['en-us'] = "Assign a contact to this user account.";
+$text['description-contact']['es-cl'] = "Asignar un contacto a este usuario.";
+$text['description-contact']['pt-pt'] = "Atribuir um contacto a esta conta de utilizador.";
+$text['description-contact']['fr-fr'] = "Attacher un contact à ce compte utilisateur";
+$text['description-contact']['pl'] = "Wybierz numer";
+$text['description-contact']['uk'] = "Призначити контакт в цей обліковий запис користувача.";
+$text['description-contact']['sv-se'] = "Tilldela en kontakt till detta konto.";
+$text['description-contact']['ro'] = "";
+$text['description-contact']['de-at'] = "Weisen Sie diesem Benutzer einen Kontakt zu.";
+$text['description-contact']['he'] = "שייך איש קשר לחשבון";
+
+$text['description-api_key']['en-us'] = "Enter the API key is often a UUID. The API key should be 128 bit or greater.";
+$text['description-api_key']['es-cl'] = "Indique la API key.";
+$text['description-api_key']['pt-pt'] = "";
+$text['description-api_key']['fr-fr'] = "Entrez la  clé d'API. Il s'agit souvent d'un identifiant universel unique (UUID). La clé devrait faire 128 bits ou plus de longueur.";
+$text['description-api_key']['pl'] = "Wprowadź klucz API, który jest często UUID. Klucz API powinien być 128 bitowy lub lepszy.";
+$text['description-api_key']['uk'] = "Введіть ключ API, зазвичай UUID. Ключ API повинен бути 128 біт або більше.";
+$text['description-api_key']['sv-se'] = "Ange API nyckel (ofta UUID). API nyckeln borde vara 128 bit eller mer.";
+$text['description-api_key']['ro'] = "";
+$text['description-api_key']['de-at'] = "Geben Sie den API Schlüssel an. Der API Schlüssel sollte mindestens 128 bit oder länger sein.";
+$text['description-api_key']['he'] = "";
+
+$text['confirm-delete']['en-us'] = "Do you really want to delete this?";
+$text['confirm-delete']['es-cl'] = "¿Realmente desea eliminar esto?";
+$text['confirm-delete']['pt-pt'] = "Tem a certeza que pretende remover isto?";
+$text['confirm-delete']['fr-fr'] = "Voulez-vous vraiment supprimer cela?";
+$text['confirm-delete']['pl'] = "Czy na pewno chcesz to usunąć?";
+$text['confirm-delete']['uk'] = "Ви дійсно бажаєте це видалити?";
+$text['confirm-delete']['sv-se'] = "Vill du verkligen ta bort detta?";
+$text['confirm-delete']['ro'] = "";
+$text['confirm-delete']['de-at'] = "Wollen Sie das wirklich löschen?";
+$text['confirm-delete']['he'] = "?בטוח שאתה רוצה למחוק";
+
+$text['button-show_all']['en-us'] = "Show All";
+$text['button-show_all']['es-cl'] = "Mostrar Todos";
+$text['button-show_all']['pt-pt'] = "Mostrar Todos";
+$text['button-show_all']['fr-fr'] = "Tout Montrer";
+$text['button-show_all']['pl'] = "Pokaż wszystkie";
+$text['button-show_all']['uk'] = "Показати всі";
+$text['button-show_all']['sv-se'] = "Visa Allt";
+$text['button-show_all']['ro'] = "";
+$text['button-show_all']['de-at'] = "Alle anzeigen";
+$text['button-show_all']['he'] = "הצג הכל";
+
+$text['button-generate']['en-us'] = "Generate";
+$text['button-generate']['es-cl'] = "Generar";
+$text['button-generate']['pt-pt'] = "Geração";
+$text['button-generate']['fr-fr'] = "Générer";
+$text['button-generate']['pl'] = "Generuj";
+$text['button-generate']['uk'] = "Згенерувати";
+$text['button-generate']['sv-se'] = "Generera";
+$text['button-generate']['ro'] = "";
+$text['button-generate']['de-at'] = "Generieren";
+$text['button-generate']['he'] = "יצר";
+
+$text['button-create_account']['en-us'] = "Create Account";
+$text['button-create_account']['es-cl'] = "Crear Cuenta";
+$text['button-create_account']['pt-pt'] = "Criar Conta";
+$text['button-create_account']['fr-fr'] = "Créer le Compte";
+$text['button-create_account']['pl'] = "Załóż konto";
+$text['button-create_account']['uk'] = "Створити обліковий запис";
+$text['button-create_account']['sv-se'] = "Skapa Konto";
+$text['button-create_account']['ro'] = "";
+$text['button-create_account']['de-at'] = "Konto hinzufügen";
+$text['button-create_account']['he'] = "צור חשבון";
+
+$text['button-add_member']['en-us'] = "Add Member";
+$text['button-add_member']['es-cl'] = "Agregar Miembro";
+$text['button-add_member']['pt-pt'] = "Adicionar Membro";
+$text['button-add_member']['fr-fr'] = "Ajouter un Membre";
+$text['button-add_member']['pl'] = "Dodaj członka";
+$text['button-add_member']['uk'] = "Додати учасника";
+$text['button-add_member']['sv-se'] = "Lägg Till Medlem";
+$text['button-add_member']['ro'] = "";
+$text['button-add_member']['de-at'] = "Mitglied hinzufügen";
+$text['button-add_member']['he'] = "הוסף משתמש";
+
+?>

+ 19 - 0
core/groups/app_menu.php

@@ -0,0 +1,19 @@
+<?php
+
+$apps[$x]['menu'][3]['title']['en-us'] = "Group Manager";
+$apps[$x]['menu'][3]['title']['es-cl'] = "Administración de Grupos";
+$apps[$x]['menu'][3]['title']['fr-fr'] = "Gestion des groupes";
+$apps[$x]['menu'][3]['title']['pt-pt'] = "'Gestão de Grupos";
+$apps[$x]['menu'][3]['title']['pt-br'] = "Gerenciar grupos";
+$apps[$x]['menu'][3]['title']['pl'] = "Menedżer grup";
+$apps[$x]['menu'][3]['title']['uk'] = "Групи";
+$apps[$x]['menu'][3]['title']['sv-se'] = "Grupp Inställningar";
+$apps[$x]['menu'][3]['title']['de-at'] = "Gruppenverwaltung";
+$apps[$x]['menu'][3]['title']['he'] = "מנהל קבוצה";
+$apps[$x]['menu'][3]['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
+$apps[$x]['menu'][3]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
+$apps[$x]['menu'][3]['category'] = "internal";
+$apps[$x]['menu'][3]['path'] = "/core/groups/groups.php";
+$apps[$x]['menu'][3]['groups'][] = "superadmin";
+
+?>

+ 0 - 0
core/users/group_permissions.php → core/groups/group_permissions.php


+ 0 - 0
core/users/groupadd.php → core/groups/groupadd.php


+ 0 - 0
core/users/groupdelete.php → core/groups/groupdelete.php


+ 0 - 0
core/users/groupedit.php → core/groups/groupedit.php


+ 0 - 0
core/users/groupmemberadd.php → core/groups/groupmemberadd.php


+ 0 - 0
core/users/groupmemberdelete.php → core/groups/groupmemberdelete.php


+ 0 - 0
core/users/groupmembers.php → core/groups/groupmembers.php


+ 0 - 0
core/users/groups.php → core/groups/groups.php


+ 0 - 0
core/users/permissions_copy.php → core/groups/permissions_copy.php


+ 1 - 1
core/users/permissions_default.php → core/groups/permissions_default.php

@@ -43,7 +43,7 @@
 	$text = $language->get();
 
 //permission restore default
-	require_once "core/users/resources/classes/permission.php";
+	require_once "core/groups/resources/classes/permission.php";
 	$permission = new permission;
 	$permission->db = $db;
 	$permission->restore();

+ 0 - 0
core/users/resources/classes/permission.php → core/groups/resources/classes/permission.php


+ 90 - 0
core/groups/root.php

@@ -0,0 +1,90 @@
+<?php
+/*
+	FusionPBX
+	Version: MPL 1.1
+
+	The contents of this file are subject to the Mozilla Public License Version
+	1.1 (the "License"); you may not use this file except in compliance with
+	the License. You may obtain a copy of the License at
+	http://www.mozilla.org/MPL/
+
+	Software distributed under the License is distributed on an "AS IS" basis,
+	WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+	for the specific language governing rights and limitations under the
+	License.
+
+	The Original Code is FusionPBX
+
+	The Initial Developer of the Original Code is
+	Mark J Crane <[email protected]>
+	Portions created by the Initial Developer are Copyright (C) 2008-2012
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+// make sure the PATH_SEPARATOR is defined
+	umask(2);
+	if (!defined("PATH_SEPARATOR")) {
+		if (strpos($_ENV["OS"], "Win") !== false) {
+			define("PATH_SEPARATOR", ";");
+		} else {
+			define("PATH_SEPARATOR", ":");
+		}
+	}
+
+	if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
+
+	// make sure the document_root is set
+	$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
+	if(PHP_SAPI == 'cli'){
+		chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
+		$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
+		$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
+		if (file_exists('/project_root.php')) {
+			$path = '/';
+		} else {
+			$i    = 1;
+			$path = '';
+			while ($i < count($dirs)) {
+				$path .= '/' . $dirs[$i];
+				if (file_exists($path. '/project_root.php')) {
+					break;
+				}
+				$i++;
+			}
+		}
+		$_SERVER["DOCUMENT_ROOT"] = $path;
+	}else{
+		$_SERVER["DOCUMENT_ROOT"]   = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
+	}
+	$_SERVER["DOCUMENT_ROOT"]   = realpath($_SERVER["DOCUMENT_ROOT"]);
+// try to detect if a project path is being used
+	if (!defined('PROJECT_PATH')) {
+		if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
+			define('PROJECT_PATH', '/fusionpbx');
+		} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
+			define('PROJECT_PATH', '');
+		} else {
+			$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
+			$i    = 1;
+			$path = $_SERVER["DOCUMENT_ROOT"];
+			while ($i < count($dirs)) {
+				$path .= '/' . $dirs[$i];
+				if (file_exists($path. '/project_root.php')) {
+					break;
+				}
+				$i++;
+			}
+			if(!file_exists($path. '/project_root.php')){
+				die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
+			}
+			$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
+			define('PROJECT_PATH', $project_path);
+		}
+		$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
+		set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
+	}
+
+?>

+ 11 - 11
core/upgrade/index.php

@@ -106,7 +106,7 @@
 		// restore default permissions
 		if ($do["permissions"] && permission_exists("group_edit")) {
 			$included = true;
-			require_once("core/users/permissions_default.php");
+			require_once("core/groups/permissions_default.php");
 			$response_message = "Permission Defaults Restored";
 		}
 
@@ -129,9 +129,9 @@
 	echo "<br><br>";
 	echo $text['description-upgrade'];
 	echo "<br><br>";
-	
+
 	echo "<form name='frm' method='post' action=''>\n";
-	
+
 	if (permission_exists("upgrade_source") && !is_dir("/usr/share/examples/fusionpbx") && is_writeable($_SERVER["PROJECT_ROOT"]."/.git")) {
 		echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
 		echo "<tr>\n";
@@ -144,7 +144,7 @@
 		echo "</tr>\n";
 		echo "</table>\n";
 	}
-	
+
 	if (permission_exists("upgrade_schema")) {
 		echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
 		echo "<tr>\n";
@@ -156,7 +156,7 @@
 		echo "	</td>\n";
 		echo "</tr>\n";
 		echo "</table>\n";
-	
+
 		echo "<div id='tr_data_types' style='display: none;'>\n";
 		echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
 		echo "<tr>\n";
@@ -170,7 +170,7 @@
 		echo "</table>\n";
 		echo "</div>\n";
 	}
-	
+
 	if (permission_exists("upgrade_apps")) {
 		echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
 		echo "<tr>\n";
@@ -183,7 +183,7 @@
 		echo "</tr>\n";
 		echo "</table>\n";
 	}
-	
+
 	if (permission_exists("menu_restore")) {
 		echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
 		echo "<tr>\n";
@@ -207,7 +207,7 @@
 		echo "</tr>\n";
 		echo "</table>\n";
 	}
-	
+
 	if (permission_exists("group_edit")) {
 		echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
 		echo "<tr>\n";
@@ -220,12 +220,12 @@
 		echo "</tr>\n";
 		echo "</table>\n";
 	}
-	
+
 	echo "<br>";
 	echo "<div style='text-align: right;'><input type='submit' class='btn' value='".$text['button-upgrade_execute']."'></div>";
 	echo "<br><br>";
 	echo "</form>\n";
-	
+
 	// output result of source update
 	if (sizeof($_SESSION["response_source_update"]) > 0) {
 		echo "<br />";
@@ -237,7 +237,7 @@
 		echo "<br /><br />";
 		unset($_SESSION["response_source_update"]);
 	}
-	
+
 	// output result of upgrade schema
 	if ($_SESSION["schema"]["response"] != '') {
 		echo "<br />";

+ 0 - 20
core/user_settings/app_menu.php

@@ -1,25 +1,5 @@
 <?php
 
-$apps[$x]['menu'][0]['title']['en-us'] = "Account Settings";
-$apps[$x]['menu'][0]['title']['es-cl'] = "Config de Cuenta";
-$apps[$x]['menu'][0]['title']['fr-fr'] = "Configuration du Compte";
-$apps[$x]['menu'][0]['title']['pt-pt'] = "Configurações da Conta";
-$apps[$x]['menu'][0]['title']['pt-br'] = "Configurações da conta";
-$apps[$x]['menu'][0]['title']['pl'] = "Ustawienia konta";
-$apps[$x]['menu'][0]['title']['he'] = "הגדרת חשבון";
-$apps[$x]['menu'][0]['title']['uk'] = "Обліковий запис";
-$apps[$x]['menu'][0]['title']['sv-se'] = "Kontoinställningar";
-$apps[$x]['menu'][0]['title']['de-at'] = "Kontoeinstellungen";
-$apps[$x]['menu'][0]['title']['ro'] = "Setări cont";
-$apps[$x]['menu'][0]['title']['ar-eg'] = "إعدادات الحساب";
-$apps[$x]['menu'][0]['uuid'] = "4d532f0b-c206-c39d-ff33-fc67d668fb69";
-$apps[$x]['menu'][0]['parent_uuid'] = "02194288-6d56-6d3e-0b1a-d53a2bc10788";
-$apps[$x]['menu'][0]['category'] = "internal";
-$apps[$x]['menu'][0]['path'] = "/core/user_settings/user_edit.php";
-$apps[$x]['menu'][0]['groups'][] = "user";
-$apps[$x]['menu'][0]['groups'][] = "admin";
-$apps[$x]['menu'][0]['groups'][] = "superadmin";
-
 $apps[$x]['menu'][1]['title']['en-us'] = "Dashboard";
 $apps[$x]['menu'][1]['title']['es-cl'] = "Dashboard Usuario";
 $apps[$x]['menu'][1]['title']['fr-fr'] = "Tableau de bord de l'utilisateur";

+ 0 - 532
core/user_settings/user_edit.php

@@ -1,532 +0,0 @@
-<?php
-/*
-	FusionPBX
-	Version: MPL 1.1
-
-	The contents of this file are subject to the Mozilla Public License Version
-	1.1 (the "License"); you may not use this file except in compliance with
-	the License. You may obtain a copy of the License at
-	http://www.mozilla.org/MPL/
-
-	Software distributed under the License is distributed on an "AS IS" basis,
-	WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-	for the specific language governing rights and limitations under the
-	License.
-
-	The Original Code is FusionPBX
-
-	The Initial Developer of the Original Code is
-	Mark J Crane <[email protected]>
-	Portions created by the Initial Developer are Copyright (C) 2008-2012
-	the Initial Developer. All Rights Reserved.
-
-	Contributor(s):
-	Mark J Crane <[email protected]>
-*/
-
-//includes
-	include "root.php";
-	require_once "resources/require.php";
-	require_once "resources/check_auth.php";
-
-//check permissions
-	if (permission_exists("user_account_setting_view")) {
-		//access granted
-	}
-	else {
-		echo "access denied";
-		return;
-	}
-
-//add multi-lingual support
-	$language = new text;
-	$text = $language->get();
-
-//set the username from v_users
-	$username = $_SESSION["username"];
-	$user_uuid = $_SESSION["user_uuid"];
-
-//required to be a superadmin to update an account that is a member of the superadmin group
-	$superadmin_list = superadmin_list($db);
-	if (if_superadmin($superadmin_list, $user_uuid)) {
-		if (!if_group("superadmin")) {
-			echo "access denied";
-			return;
-		}
-	}
-
-//get the user settings
-	$sql = "select * from v_user_settings ";
-	$sql .= "where user_uuid = '".$user_uuid."' ";
-	$sql .= "and user_setting_enabled = 'true' ";
-	$prep_statement = $db->prepare($sql);
-	if ($prep_statement) {
-		$prep_statement->execute();
-		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-		foreach($result as $row) {
-			$name = $row['user_setting_name'];
-			$category = $row['user_setting_category'];
-			$subcategory = $row['user_setting_subcategory'];
-			if (strlen($subcategory) == 0) {
-				//$$category[$name] = $row['domain_setting_value'];
-				$user_settings[$category][$name] = $row['user_setting_value'];
-			}
-			else {
-				$user_settings[$category][$subcategory][$name] = $row['user_setting_value'];
-			}
-		}
-	}
-
-//process http post data
-	if (count($_POST) > 0 && $_POST["persistform"] != "1") {
-	
-		//get the HTTP values and set as variables
-			$password = check_str($_POST["password"]);
-			$password_confirm = check_str($_POST["password_confirm"]);
-			$user_status = check_str($_POST["user_status"]);
-			$user_template_name = check_str($_POST["user_template_name"]);
-			$user_language = check_str($_POST["user_language"]);
-			$user_time_zone = check_str($_POST["user_time_zone"]);
-			$group_member = check_str($_POST["group_member"]);
-	
-		//check required values
-			if ($password != $password_confirm) { $msg_error = $text['message-password_mismatch']; }
-	
-			if ($msg_error != '') {
-				$_SESSION["message"] = $msg_error;
-				$_SESSION["message_mood"] = 'negative';
-				header("Location: user_edit.php");
-				exit;
-			}
-	
-			if (!check_password_strength($password, $text)) {
-				header("Location: user_edit.php");
-				exit;
-			}
-	
-		//check to see if user language is set
-			$sql = "select count(*) as num_rows from v_user_settings ";
-			$sql .= "where user_setting_category = 'domain' ";
-			$sql .= "and user_setting_subcategory = 'language' ";
-			$sql .= "and user_uuid = '".$user_uuid."' ";
-			$prep_statement = $db->prepare(check_sql($sql));
-			if ($prep_statement) {
-				$prep_statement->execute();
-				$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
-				if ($row['num_rows'] == 0) {
-					$user_setting_uuid = uuid();
-					$sql = "insert into v_user_settings ";
-					$sql .= "(";
-					$sql .= "domain_uuid, ";
-					$sql .= "user_setting_uuid, ";
-					$sql .= "user_setting_category, ";
-					$sql .= "user_setting_subcategory, ";
-					$sql .= "user_setting_name, ";
-					$sql .= "user_setting_value, ";
-					$sql .= "user_setting_enabled, ";
-					$sql .= "user_uuid ";
-					$sql .= ") ";
-					$sql .= "values ";
-					$sql .= "(";
-					$sql .= "'".$_SESSION["domain_uuid"]."', ";
-					$sql .= "'".$user_setting_uuid."', ";
-					$sql .= "'domain', ";
-					$sql .= "'language', ";
-					$sql .= "'code', ";
-					$sql .= "'".$user_language."', ";
-					$sql .= "'true', ";
-					$sql .= "'".$user_uuid."' ";
-					$sql .= ")";
-					$db->exec(check_sql($sql));
-				}
-				else {
-					if (strlen($user_language) == 0) {
-						$sql = "delete from v_user_settings ";
-						$sql .= "where user_setting_category = 'domain' ";
-						$sql .= "and user_setting_subcategory = 'language' ";
-						$sql .= "and user_uuid = '".$user_uuid."' ";
-						$db->exec(check_sql($sql));
-						unset($sql);
-					}
-					else {
-						$sql  = "update v_user_settings set ";
-						$sql .= "user_setting_value = '".$user_language."', ";
-						$sql .= "user_setting_enabled = 'true' ";
-						$sql .= "where user_setting_category = 'domain' ";
-						$sql .= "and user_setting_subcategory = 'language' ";
-						$sql .= "and user_uuid = '".$user_uuid."' ";
-						$db->exec(check_sql($sql));
-					}
-				}
-			}
-	
-		//check to see if user time_zone is set
-			$sql = "select count(*) as num_rows from v_user_settings ";
-			$sql .= "where user_setting_category = 'domain' ";
-			$sql .= "and user_setting_subcategory = 'time_zone' ";
-			$sql .= "and user_uuid = '".$user_uuid."' ";
-			$prep_statement = $db->prepare(check_sql($sql));
-			if ($prep_statement) {
-				$prep_statement->execute();
-				$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
-				if ($row['num_rows'] == 0) {
-					$user_setting_uuid = uuid();
-					$sql = "insert into v_user_settings ";
-					$sql .= "(";
-					$sql .= "domain_uuid, ";
-					$sql .= "user_setting_uuid, ";
-					$sql .= "user_setting_category, ";
-					$sql .= "user_setting_subcategory, ";
-					$sql .= "user_setting_name, ";
-					$sql .= "user_setting_value, ";
-					$sql .= "user_setting_enabled, ";
-					$sql .= "user_uuid ";
-					$sql .= ") ";
-					$sql .= "values ";
-					$sql .= "(";
-					$sql .= "'".$_SESSION["domain_uuid"]."', ";
-					$sql .= "'".$user_setting_uuid."', ";
-					$sql .= "'domain', ";
-					$sql .= "'time_zone', ";
-					$sql .= "'name', ";
-					$sql .= "'".$user_time_zone."', ";
-					$sql .= "'true', ";
-					$sql .= "'".$user_uuid."' ";
-					$sql .= ")";
-					$db->exec(check_sql($sql));
-				}
-				else {
-					if (strlen($user_time_zone) == 0) {
-						$sql = "delete from v_user_settings ";
-						$sql .= "where user_setting_category = 'domain' ";
-						$sql .= "and user_setting_subcategory = 'time_zone' ";
-						$sql .= "and user_uuid = '".$user_uuid."' ";
-						$db->exec(check_sql($sql));
-						unset($sql);
-					}
-					else {
-						$sql  = "update v_user_settings set ";
-						$sql .= "user_setting_value = '".$user_time_zone."', ";
-						$sql .= "user_setting_enabled = 'true' ";
-						$sql .= "where user_setting_category = 'domain' ";
-						$sql .= "and user_setting_subcategory = 'time_zone' ";
-						$sql .= "and user_uuid = '".$user_uuid."' ";
-						$db->exec(check_sql($sql));
-					}
-				}
-			}
-	
-		//sql update
-			$sql  = "update v_users set ";
-			if (strlen($password) > 0 && $password_confirm == $password) {
-				//salt used with the password to create a one way hash
-					$salt = generate_password('20', '4');
-				//set the password
-					$sql .= "password = '".md5($salt.$password)."', ";
-					$sql .= "salt = '".$salt."', ";
-			}
-			$sql .= "user_status = '$user_status' ";
-			$sql .= "where domain_uuid = '$domain_uuid' ";
-			$sql .= "and user_uuid = '$user_uuid' ";
-			if (permission_exists("user_account_setting_edit")) {
-				$count = $db->exec(check_sql($sql));
-			}
-	
-		//if call center app is installed then update the user_status
-			if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/call_center')) {
-				//update the user_status
-					$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
-					$switch_cmd .= "callcenter_config agent set status ".$username."@".$_SESSION['domain_name']." '".$user_status."'";
-					$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
-	
-				//update the user state
-					$cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting";
-					$response = event_socket_request($fp, $cmd);
-			}
-	
-		//redirect the browser
-			$_SESSION["message"] = $text['confirm-update'];
-			header("Location: ".PROJECT_PATH."/core/user_settings/user_edit.php");
-			return;
-	}
-	else {
-		$sql = "select * from v_users ";
-		$sql .= "where domain_uuid = '$domain_uuid' ";
-		$sql .= "and user_uuid = '$user_uuid' ";
-		$sql .= "and user_enabled = 'true' ";
-		$prep_statement = $db->prepare(check_sql($sql));
-		$prep_statement->execute();
-		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-		foreach ($result as $row) {
-			//$password = $row["password"];
-			$user_status = $row["user_status"];
-			break; //limit to 1 row
-		}
-	
-		//get the groups the user is a member of
-		//group_members function defined in config.php
-		$group_members = group_members($db, $user_uuid);
-	}
-
-//include the header
-	require_once "resources/header.php";
-
-//show the content
-	$table_width ='width="100%"';
-
-	echo "<script>\n";
-	echo "	function compare_passwords() {\n";
-	echo "		if (document.getElementById('password') === document.activeElement || document.getElementById('password_confirm') === document.activeElement) {\n";
-	echo "			if ($('#password').val() != '' || $('#password_confirm').val() != '') {\n";
-	echo "				if ($('#password').val() != $('#password_confirm').val()) {\n";
-	echo "					$('#password').removeClass('formfld_highlight_good');\n";
-	echo "					$('#password_confirm').removeClass('formfld_highlight_good');\n";
-	echo "					$('#password').addClass('formfld_highlight_bad');\n";
-	echo "					$('#password_confirm').addClass('formfld_highlight_bad');\n";
-	echo "				}\n";
-	echo "				else {\n";
-	echo "					$('#password').removeClass('formfld_highlight_bad');\n";
-	echo "					$('#password_confirm').removeClass('formfld_highlight_bad');\n";
-	echo "					$('#password').addClass('formfld_highlight_good');\n";
-	echo "					$('#password_confirm').addClass('formfld_highlight_good');\n";
-	echo "				}\n";
-	echo "			}\n";
-	echo "		}\n";
-	echo "		else {\n";
-	echo "			$('#password').removeClass('formfld_highlight_bad');\n";
-	echo "			$('#password_confirm').removeClass('formfld_highlight_bad');\n";
-	echo "			$('#password').removeClass('formfld_highlight_good');\n";
-	echo "			$('#password_confirm').removeClass('formfld_highlight_good');\n";
-	echo "		}\n";
-	echo "	}\n";
-
-	$req['length'] = $_SESSION['security']['password_length']['numeric'];
-	$req['number'] = ($_SESSION['security']['password_number']['boolean'] == 'true') ? true : false;
-	$req['lowercase'] = ($_SESSION['security']['password_lowercase']['boolean'] == 'true') ? true : false;
-	$req['uppercase'] = ($_SESSION['security']['password_uppercase']['boolean'] == 'true') ? true : false;
-	$req['special'] = ($_SESSION['security']['password_special']['boolean'] == 'true') ? true : false;
-
-	echo "	function check_password_strength(pwd) {\n";
-	echo "		if ($('#password').val() != '' || $('#password_confirm').val() != '') {\n";
-	echo "			var msg_errors = [];\n";
-	if (is_numeric($req['length']) && $req['length'] != 0) {
-		echo "		var re = /.{".$req['length'].",}/;\n"; //length
-		echo "		if (!re.test(pwd)) { msg_errors.push('".$req['length']."+ ".$text['label-characters']."'); }\n";
-	}
-	if ($req['number']) {
-		echo "		var re = /(?=.*[\d])/;\n";  //number
-		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-numbers']."'); }\n";
-	}
-	if ($req['lowercase']) {
-		echo "		var re = /(?=.*[a-z])/;\n";  //lowercase
-		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-lowercase_letters']."'); }\n";
-	}
-	if ($req['uppercase']) {
-		echo "		var re = /(?=.*[A-Z])/;\n";  //uppercase
-		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-uppercase_letters']."'); }\n";
-	}
-	if ($req['special']) {
-		echo "		var re = /(?=.*[\W])/;\n";  //special
-		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-special_characters']."'); }\n";
-	}
-	echo "			if (msg_errors.length > 0) {\n";
-	echo "				var msg = '".$text['message-password_requirements'].": ' + msg_errors.join(', ');\n";
-	echo "				display_message(msg, 'negative', '6000');\n";
-	echo "				return false;\n";
-	echo "			}\n";
-	echo "			else {\n";
-	echo "				return true;\n";
-	echo "			}\n";
-	echo "		}\n";
-	echo "		else {\n";
-	echo "			return true;\n";
-	echo "		}\n";
-	echo "	}\n";
-
-	echo "	function show_strenth_meter() {\n";
-	echo "		$('#pwstrength_progress').slideDown();\n";
-	echo "	}\n";
-	echo "</script>\n";
-
-	echo "<form name='frm' id='frm' method='post' action=''>";
-
-	echo "<table $table_width cellpadding='0' cellspacing='0' border='0'>";
-	echo "<td align='left' width='100%' nowrap><b>".$text['title']."</b></td>\n";
-	echo "<td nowrap='nowrap'>\n";
-	if (strlen($_SESSION['login']['destination']['url']) > 0) {
-		echo "	<input type='button' class='btn' onclick=\"window.location='".$_SESSION['login']['destination']['url']."'\" value='".$text['button-back']."'>";
-	}
-	echo "	<input type='button' class='btn' value='".$text['button-save']."' onclick='submit_form();'>";
-	echo "</td>\n";
-	echo "</tr>\n";
-	echo "<tr>\n";
-	echo "<td align='left' colspan='2'>\n";
-	echo "	".$text['description']." \n";
-	echo "</td>\n";
-	echo "</tr>\n";
-	echo "</table>\n";
-
-	echo "<br />\n";
-
-	echo "<table $table_width cellpadding='0' cellspacing='0' border='0'>";
-	echo "<tr>\n";
-	echo "	<th class='th' colspan='2' align='left'>".$text['table-title']."</th>\n";
-	echo "</tr>\n";
-
-	echo "	<tr>";
-	echo "		<td width='30%' class='vncellreq' valign='top'>".$text['label-username']."</td>";
-	echo "		<td width='70%' class='vtable'>";
-	echo "			".$username."<input type='hidden' id='username' value='".$username."'>\n";
-	echo "		</td>";
-	echo "	</tr>";
-
-	echo "	<tr>";
-	echo "		<td class='vncell' valign='top'>".$text['label-password']."</td>";
-	echo "		<td class='vtable'>";
-	echo "			<input type='password' autocomplete='off' class='formfld' name='password' id='password' value='' onkeypress='show_strenth_meter();' onfocus='compare_passwords();' onkeyup='compare_passwords();' onblur='compare_passwords();'>";
-	echo "			<div id='pwstrength_progress' class='pwstrength_progress'></div>";
-	echo "		</td>";
-	echo "	</tr>";
-	echo "	<tr>";
-	echo "		<td class='vncell' valign='top'>".$text['label-confirm-password']."</td>";
-	echo "		<td class='vtable'>";
-	echo "			<input type='password' autocomplete='off' class='formfld' name='password_confirm' id='password_confirm' value='' onfocus='compare_passwords();' onkeyup='compare_passwords();' onblur='compare_passwords();'>";
-	echo "		</td>";
-	echo "	</tr>";
-
-	echo "		</td>";
-	echo "	</tr>";
-
-	echo "	<tr>\n";
-	echo "	<td width='20%' class=\"vncell\" valign='top'>\n";
-	echo "		".$text['label-user_language']."\n";
-	echo "	</td>\n";
-	echo "	<td class=\"vtable\" align='left'>\n";
-	echo "		<select id='user_language' name='user_language' class='formfld' style=''>\n";
-	echo "		<option value=''></option>\n";
-	//get all language codes from database
-	$sql = "select * from v_languages order by language asc";
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	foreach ($result as &$row) {
-		$language_codes[$row["code"]] = $row["language"];
-	}
-	unset($prep_statement, $result, $row);
-	foreach ($_SESSION['app']['languages'] as $code) {
-		$selected = ($code == $user_settings['domain']['language']['code']) ? "selected='selected'" : null;
-		echo "	<option value='".$code."' ".$selected.">".$language_codes[$code]." [".$code."]</option>\n";
-	}
-	echo "		</select>\n";
-	echo "		<br />\n";
-	echo "		".$text['description-user_language']."<br />\n";
-	echo "	</td>\n";
-	echo "	</tr>\n";
-
-	echo "	<tr>\n";
-	echo "	<td width='20%' class=\"vncell\" valign='top'>\n";
-	echo "		".$text['label-time']."\n";
-	echo "	</td>\n";
-	echo "	<td class=\"vtable\" align='left'>\n";
-	echo "		<select id='user_time_zone' name='user_time_zone' class='formfld' style=''>\n";
-	echo "		<option value=''></option>\n";
-	//$list = DateTimeZone::listAbbreviations();
-	$time_zone_identifiers = DateTimeZone::listIdentifiers();
-	$previous_category = '';
-	$x = 0;
-	foreach ($time_zone_identifiers as $key => $row) {
-		$time_zone = explode("/", $row);
-		$category = $time_zone[0];
-		if ($category != $previous_category) {
-			if ($x > 0) {
-				echo "		</optgroup>\n";
-			}
-			echo "		<optgroup label='".$category."'>\n";
-		}
-		if ($row == $user_settings['domain']['time_zone']['name']) {
-			echo "			<option value='".$row."' selected='selected'>".$row."</option>\n";
-		}
-		else {
-			echo "			<option value='".$row."'>".$row."</option>\n";
-		}
-		$previous_category = $category;
-		$x++;
-	}
-	echo "		</select>\n";
-	echo "		<br />\n";
-	echo "		".$text['description-timezone']."<br />\n";
-	echo "	</td>\n";
-	echo "	</tr>\n";
-
-	if ($_SESSION['user_status_display'] == "false") {
-		//hide the user_status when it is set to false
-	}
-	else {
-		echo "	<tr>\n";
-		echo "	<td width='30%' class=\"vncell\" valign='top'>\n";
-		echo "		".$text['label-status']."\n";
-		echo "	</td>\n";
-		echo "	<td width='70%' class=\"vtable\" align='left'>\n";
-		echo "		<select id='user_status' name='user_status' class='formfld' style=''>\n";
-		echo "		<option value=''></option>\n";
-		if ($user_status == "Available") {
-			echo "		<option value='Available' selected='selected'>".$text['check-available-status']."</option>\n";
-		}
-		else {
-			echo "		<option value='Available'>".$text['check-available-status']."</option>\n";
-		}
-		if ($user_status == "Available (On Demand)") {
-			echo "		<option value='Available (On Demand)' selected='selected'>".$text['check-available-ondemand-status']."</option>\n";
-		}
-		else {
-			echo "		<option value='Available (On Demand)'>".$text['check-available-ondemand-status']."</option>\n";
-		}
-		if ($user_status == "Logged Out") {
-			echo "		<option value='Logged Out' selected='selected'>".$text['check-loggedout-status']."</option>\n";
-		}
-		else {
-			echo "		<option value='Logged Out'>".$text['check-loggedout-status']."</option>\n";
-		}
-		if ($user_status == "On Break") {
-			echo "		<option value='On Break' selected='selected'>".$text['check-onbreak-status']."</option>\n";
-		}
-		else {
-			echo "		<option value='On Break'>".$text['check-onbreak-status']."</option>\n";
-		}
-		if ($user_status == "Do Not Disturb") {
-			echo "		<option value='Do Not Disturb' selected='selected'>".$text['check-do-not-disturb-status']."</option>\n";
-		}
-		else {
-			echo "		<option value='Do Not Disturb'>".$text['check-do-not-disturb-status']."</option>\n";
-		}
-		echo "		</select>\n";
-		echo "		<br />\n";
-		echo "		".$text['description-status']."<br />\n";
-		echo "	</td>\n";
-		echo "	</tr>\n";
-	}
-
-	echo "</table>";
-	echo "<br />";
-	echo "<div align='right'><input type='button' class='btn' value='".$text['button-save']."' onclick=\"if (check_password_strength(document.getElementById('password').value)) { submit_form(); }\"></div>";
-	echo "<br />";
-	echo "</form>";
-
-	//capture enter key to submit form
-	echo "<script>\n";
-	echo "	$(window).keypress(function(event){\n";
-	echo "		if (event.which == 13) { submit_form(); }\n";
-	echo "	});\n";
-
-	// convert password fields to text
-	echo "	function submit_form() {\n";
-	echo "		$('input:password').css('visibility','hidden');\n";
-	echo "		$('input:password').attr({type:'text'});\n";
-	echo "		$('form#frm').submit();\n";
-	echo "	}\n";
-	echo "</script>\n";
-
-//include the footer
-	require_once "resources/footer.php";
-
-?>

+ 0 - 216
core/users/app_config.php

@@ -43,72 +43,6 @@
 		$apps[$x]['permissions'][$y]['name'] = 'user_all';
 		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
 		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_view";
-		$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
-		$apps[$x]['permissions'][$y]['groups'][] = "admin";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_add";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_edit";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_delete";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = 'group_domain';
-		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = 'group_all';
-		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_member_view";
-		$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
-		$apps[$x]['permissions'][$y]['groups'][] = "admin";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_member_add";
-		$apps[$x]['permissions'][$y]['groups'][] = "admin";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_member_delete";
-		$apps[$x]['permissions'][$y]['groups'][] = "admin";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_permissions";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_user_view";
-		$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$apps[$x]['permissions'][$y]['groups'][] = "admin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_user_add";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$apps[$x]['permissions'][$y]['groups'][] = "admin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_user_edit";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$apps[$x]['permissions'][$y]['groups'][] = "admin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_user_delete";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$apps[$x]['permissions'][$y]['groups'][] = "admin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_permission_view";
-		$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_permission_add";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_permission_edit";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
-		$apps[$x]['permissions'][$y]['name'] = "group_permission_delete";
-		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
-		$y++;
 		$apps[$x]['permissions'][$y]['name'] = "user_setting_view";
 		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
 		$apps[$x]['permissions'][$y]['groups'][] = "admin";
@@ -218,156 +152,6 @@
 
 		$y = 1; //table array index
 		$z = 0; //field array index
-		$apps[$x]['db'][$y]['table'] = "v_groups";
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_name";
-		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupid";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_protected";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_description";
-		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupdesc";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-
-		$y = 2; //table array index
-		$z = 0; //field array index
-		$apps[$x]['db'][$y]['table'] = "v_group_users";
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_user_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_name";
-		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupid";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_groups";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "group_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "username";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-
-		$y = 3; //table array index
-		$z = 0; //field array index
-		$apps[$x]['db'][$y]['table'] = "v_group_permissions";
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_permission_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
-		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "group_permission_name";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "permission_name";
-		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "permission_id";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_name";
-		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-		$z++;
-		$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
-		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
-		$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
-		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
-
-		$y = 4; //table array index
-		$z = 0; //field array index
 		$apps[$x]['db'][$y]['table'] = "v_user_settings";
 		$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_uuid";
 		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";

+ 0 - 23
core/users/app_defaults.php

@@ -60,29 +60,6 @@ if ($domains_processed == 1) {
 			unset ($prep_statement);
 		}
 
-	//if user_enabled is null then set to enabled true
-		$sql = "select count(*) as count from v_users ";
-		$sql .= "where domain_uuid = '$domain_uuid' ";
-		$sql .= "and user_enabled is null ";
-		$prep_statement = $db->prepare($sql);
-		$prep_statement->execute();
-		$sub_result = $prep_statement->fetch(PDO::FETCH_ASSOC);
-		unset ($prep_statement);
-		if ($sub_result['count'] > 0) {
-			//begin the transaction
-				$db->beginTransaction();
-			//send output
-				if ($display_type == "text") {
-					echo "	Users:	set enabled=true\n";
-				}
-			//set the user_enabled to true
-				$sql = "update v_users set ";
-				$sql .= "user_enabled = 'true' ";
-				$db->exec($sql);
-				unset($sql);
-			//end the transaction
-				$db->commit();
-		}
 }
 
 ?>

+ 0 - 253
core/users/app_languages.php

@@ -43,61 +43,6 @@ $text['title-user_add']['ro'] = "Utilizator";
 $text['title-user_add']['de-at'] = "Benutzer";
 $text['title-user_add']['he'] = "משתמש";
 
-$text['title-group_permissions']['en-us'] = "Group Permissions";
-$text['title-group_permissions']['es-cl'] = "Permisos de Grupo";
-$text['title-group_permissions']['pt-pt'] = "Permissões do Grupo";
-$text['title-group_permissions']['fr-fr'] = "Permissions du Groupe";
-$text['title-group_permissions']['pl'] = "Uprawnienia grupy:";
-$text['title-group_permissions']['uk'] = "Привілеї групи";
-$text['title-group_permissions']['sv-se'] = "Grupp Rättigheter";
-$text['title-group_permissions']['ro'] = "Permisiuni grup";
-$text['title-group_permissions']['de-at'] = "Gruppenberechtigung";
-$text['title-group_permissions']['he'] = "הרשאות קבוצה";
-
-$text['title-group_members']['en-us'] = "Group Members";
-$text['title-group_members']['es-cl'] = "Miembros del Grupo";
-$text['title-group_members']['pt-pt'] = "Membros do Grupo";
-$text['title-group_members']['fr-fr'] = "Membres du Groupe";
-$text['title-group_members']['pl'] = "Członkowie grupy:";
-$text['title-group_members']['uk'] = "Учасники групи";
-$text['title-group_members']['sv-se'] = "Grupp Medlemmar";
-$text['title-group_members']['ro'] = "Membri grup";
-$text['title-group_members']['de-at'] = "Gruppenmitglieder";
-$text['title-group_members']['he'] = "חברי קבוצה";
-
-$text['title-group_manager']['en-us'] = "Group Manager";
-$text['title-group_manager']['es-cl'] = "Administración de Grupo";
-$text['title-group_manager']['pt-pt'] = "Gestão de Grupos";
-$text['title-group_manager']['fr-fr'] = "Gestion de Groupe";
-$text['title-group_manager']['pl'] = "Menedżer grup";
-$text['title-group_manager']['uk'] = "Групи";
-$text['title-group_manager']['sv-se'] = "Grupp Inställningar";
-$text['title-group_manager']['ro'] = "";
-$text['title-group_manager']['de-at'] = "Gruppenverwaltung";
-$text['title-group_manager']['he'] = "מנהל קבוצה";
-
-$text['title-group_edit']['en-us'] = "Edit Group";
-$text['title-group_edit']['es-cl'] = "Editar Grupo";
-$text['title-group_edit']['pt-pt'] = "Editar Grupo";
-$text['title-group_edit']['fr-fr'] = "Modifier le Groupe";
-$text['title-group_edit']['pl'] = "Edycja grupy";
-$text['title-group_edit']['uk'] = "Редагувати групу";
-$text['title-group_edit']['sv-se'] = "Editera Grupp";
-$text['title-group_edit']['ro'] = "Editare grup";
-$text['title-group_edit']['de-at'] = "Gruppe ändern";
-$text['title-group_edit']['he'] = "ערוך קבוצה";
-
-$text['title-group_add']['en-us'] = "Add Group";
-$text['title-group_add']['es-cl'] = "Agregar Grupo";
-$text['title-group_add']['pt-pt'] = "Adicionar Grupo";
-$text['title-group_add']['fr-fr'] = "Ajouter un Groupe";
-$text['title-group_add']['pl'] = "Dodaj grupę";
-$text['title-group_add']['uk'] = "Додати групу";
-$text['title-group_add']['sv-se'] = "Lägg Till Grupp";
-$text['title-group_add']['ro'] = "Adăugare grup";
-$text['title-group_add']['de-at'] = "Gruppe hinzufügen";
-$text['title-group_add']['he'] = "הוסף קבוצה";
-
 $text['option-true']['en-us'] = "True";
 $text['option-true']['es-cl'] = "Verdadero";
 $text['option-true']['pt-pt'] = "Sim";
@@ -230,28 +175,6 @@ $text['message-password_requirements']['ro'] = "Cerințe privind parola";
 $text['message-password_requirements']['de-at'] = "Kennwortanforderungen ";
 $text['message-password_requirements']['he'] = "דרישות סיסמא";
 
-$text['message-new_group_name']['en-us'] = "Enter a Name for the new Group...";
-$text['message-new_group_name']['es-cl'] = "Introduzca un Nombre para el nuevo Grupo...";
-$text['message-new_group_name']['pt-pt'] = "Digite um Nome para o novo Grupo...";
-$text['message-new_group_name']['fr-fr'] = "Entrez un Nom pour le nouveau Groupe...";
-$text['message-new_group_name']['pl'] = "Wprowadź nazwę nowej grupy";
-$text['message-new_group_name']['uk'] = "Введіть назву нової групи";
-$text['message-new_group_name']['sv-se'] = "Ange ett Namn för den nya Gruppen...";
-$text['message-new_group_name']['ro'] = "";
-$text['message-new_group_name']['de-at'] = "Geben Sie den Namen der neuen Gruppe an...";
-$text['message-new_group_name']['he'] = "הכנס שם לקבוצה";
-
-$text['message-new_group_description']['en-us'] = "Enter a Description for the new Group...";
-$text['message-new_group_description']['es-cl'] = "Introduzca una Descripción para el nuevo Grupo...";
-$text['message-new_group_description']['pt-pt'] = "Digite uma Descrição para o novo grupo...";
-$text['message-new_group_description']['fr-fr'] = "Entrez une Description pour le nouveau groupe...";
-$text['message-new_group_description']['pl'] = "Wprowadź opis nowej grupy";
-$text['message-new_group_description']['uk'] = "Введіть опис нової групи";
-$text['message-new_group_description']['sv-se'] = "Ange en Beskrivning för den nya Gruppen...";
-$text['message-new_group_description']['ro'] = "";
-$text['message-new_group_description']['de-at'] = "Geben Sie eine Beschreiben für die neue Gruppe an...";
-$text['message-new_group_description']['he'] = "הכנס תאור לקבוצה";
-
 $text['message-maximum_users']['en-us'] = "Maximum Users:";
 $text['message-maximum_users']['es-cl'] = "Usuarios Máximo Permitido:";
 $text['message-maximum_users']['pt-pt'] = "Usuários Máximo Permitido:";
@@ -263,28 +186,6 @@ $text['message-maximum_users']['ro'] = "";
 $text['message-maximum_users']['de-at'] = "Maximale Anzahl an Benutzern:";
 $text['message-maximum_users']['he'] = "מקסימום משתמשים";
 
-$text['message-group_exists']['en-us'] = "Group Already Exists";
-$text['message-group_exists']['es-cl'] = "El Grupo ya Existe";
-$text['message-group_exists']['pt-pt'] = "O Grupo já Existe";
-$text['message-group_exists']['fr-fr'] = "Le groupe existe déjà";
-$text['message-group_exists']['pl'] = "Grupa już istnieje";
-$text['message-group_exists']['uk'] = "Група вже існує";
-$text['message-group_exists']['sv-se'] = "Gruppen Existerar Redan";
-$text['message-group_exists']['ro'] = "";
-$text['message-group_exists']['de-at'] = "Gruppe existiert bereits";
-$text['message-group_exists']['he'] = "הקבוצה כבר קיימת";
-
-$text['message-default_system_group']['en-us'] = "Default system groups cannot be edited or deleted.";
-$text['message-default_system_group']['es-cl'] = "Grupos predeterminados del sistema no pueden ser editados o eliminados.";
-$text['message-default_system_group']['pt-pt'] = "Grupos de sistema padrão não podem ser editados ou apagados.";
-$text['message-default_system_group']['fr-fr'] = "Les groupes par défaut du système ne peuvent pas être modifiés ou supprimés.";
-$text['message-default_system_group']['pl'] = "Domyślne grupy systemowe nie mogą być edytowane lub usuwane";
-$text['message-default_system_group']['uk'] = "Системні групи за замовчуванням не можна редагувати або видаляти";
-$text['message-default_system_group']['sv-se'] = "Standard system grupper kan inte redigeras eller tas bort.";
-$text['message-default_system_group']['ro'] = "";
-$text['message-default_system_group']['de-at'] = "Systemgruppen können nicht bearbeitet oder gelöscht werden.";
-$text['message-default_system_group']['he'] = "";
-
 $text['message-copy']['en-us'] = "Copy Completed";
 $text['message-copy']['es-cl'] = "Copia Completada";
 $text['message-copy']['pt-pt'] = "Cópia Efectuada";
@@ -624,72 +525,6 @@ $text['label-groups']['ro'] = "";
 $text['label-groups']['de-at'] = "Gruppen";
 $text['label-groups']['he'] = "קבוצות";
 
-$text['label-group_tools']['en-us'] = "Tools";
-$text['label-group_tools']['es-cl'] = "Instrumentos";
-$text['label-group_tools']['pt-pt'] = "Ferramentas";
-$text['label-group_tools']['fr-fr'] = "Outils";
-$text['label-group_tools']['pl'] = "Narzędzia";
-$text['label-group_tools']['uk'] = "Інструменти";
-$text['label-group_tools']['sv-se'] = "Verktyg";
-$text['label-group_tools']['ro'] = "";
-$text['label-group_tools']['de-at'] = "Funktionen";
-$text['label-group_tools']['he'] = "כלים";
-
-$text['label-group_protected']['en-us'] = "Protected";
-$text['label-group_protected']['es-cl'] = "Protegido";
-$text['label-group_protected']['pt-pt'] = "Protegido";
-$text['label-group_protected']['fr-fr'] = "Protégé";
-$text['label-group_protected']['pl'] = "Zabezpieczony";
-$text['label-group_protected']['uk'] = "Захищено";
-$text['label-group_protected']['sv-se'] = "Skyddad";
-$text['label-group_protected']['ro'] = "";
-$text['label-group_protected']['de-at'] = "Geschützt";
-$text['label-group_protected']['he'] = "שמור";
-
-$text['label-group_permissions']['en-us'] = "Permissions";
-$text['label-group_permissions']['es-cl'] = "Permisos";
-$text['label-group_permissions']['pt-pt'] = "Permissões";
-$text['label-group_permissions']['fr-fr'] = "Permissions";
-$text['label-group_permissions']['pl'] = "Uprawnienia";
-$text['label-group_permissions']['uk'] = "Дозволи";
-$text['label-group_permissions']['sv-se'] = "Rättigheter";
-$text['label-group_permissions']['ro'] = "";
-$text['label-group_permissions']['de-at'] = "Berechtigungen";
-$text['label-group_permissions']['he'] = "הראשות";
-
-$text['label-group_name']['en-us'] = "Name";
-$text['label-group_name']['es-cl'] = "Nombre";
-$text['label-group_name']['pt-pt'] = "Nome";
-$text['label-group_name']['fr-fr'] = "Nom";
-$text['label-group_name']['pl'] = "Nazwa";
-$text['label-group_name']['uk'] = "Назва";
-$text['label-group_name']['sv-se'] = "Namn";
-$text['label-group_name']['ro'] = "";
-$text['label-group_name']['de-at'] = "Name";
-$text['label-group_name']['he'] = "שם";
-
-$text['label-group_members']['en-us'] = "Members";
-$text['label-group_members']['es-cl'] = "Miembros";
-$text['label-group_members']['pt-pt'] = "Membros";
-$text['label-group_members']['fr-fr'] = "Membres";
-$text['label-group_members']['pl'] = "Członkowie";
-$text['label-group_members']['uk'] = "Учасники";
-$text['label-group_members']['sv-se'] = "Medlemmar";
-$text['label-group_members']['ro'] = "";
-$text['label-group_members']['de-at'] = "Mitglieder";
-$text['label-group_members']['he'] = "משתמשים";
-
-$text['label-group_description']['en-us'] = "Description";
-$text['label-group_description']['es-cl'] = "Descripción";
-$text['label-group_description']['pt-pt'] = "Descrição";
-$text['label-group_description']['fr-fr'] = "Description";
-$text['label-group_description']['pl'] = "Opis";
-$text['label-group_description']['uk'] = "Опис";
-$text['label-group_description']['sv-se'] = "Beskrivning";
-$text['label-group_description']['ro'] = "";
-$text['label-group_description']['de-at'] = "Beschreibung";
-$text['label-group_description']['he'] = "תאור";
-
 $text['label-group']['en-us'] = "Group";
 $text['label-group']['es-cl'] = "Grupo";
 $text['label-group']['pt-pt'] = "Grupo";
@@ -927,61 +762,6 @@ $text['header-user_add']['ro'] = "";
 $text['header-user_add']['de-at'] = "Benutzer";
 $text['header-user_add']['he'] = "משתמש";
 
-$text['header-group_permissions']['en-us'] = "Group Permissions: ";
-$text['header-group_permissions']['es-cl'] = "Permisos de Grupo: ";
-$text['header-group_permissions']['pt-pt'] = "Permissões do Grupo: ";
-$text['header-group_permissions']['fr-fr'] = "Permissions du Groupe: ";
-$text['header-group_permissions']['pl'] = "Uprawnienia grupy";
-$text['header-group_permissions']['uk'] = "Привілеї групи:";
-$text['header-group_permissions']['sv-se'] = "Grupp Rättigheter";
-$text['header-group_permissions']['ro'] = "";
-$text['header-group_permissions']['de-at'] = "Gruppenberechtigungen:";
-$text['header-group_permissions']['he'] = "הרשאות קבוצה";
-
-$text['header-group_members']['en-us'] = "Group Members: ";
-$text['header-group_members']['es-cl'] = "Miembros de Grupo: ";
-$text['header-group_members']['pt-pt'] = "Membros do Grupo: ";
-$text['header-group_members']['fr-fr'] = "Membres du Groupe: ";
-$text['header-group_members']['pl'] = "Członkowie grupy:";
-$text['header-group_members']['uk'] = "Учасники групи: ";
-$text['header-group_members']['sv-se'] = "Grupp Medlemmar:";
-$text['header-group_members']['ro'] = "";
-$text['header-group_members']['de-at'] = "Gruppenmitglieder:";
-$text['header-group_members']['he'] = "משתמשי קבוצה";
-
-$text['header-group_manager']['en-us'] = "Group Manager";
-$text['header-group_manager']['es-cl'] = "Administración de Grupo";
-$text['header-group_manager']['pt-pt'] = "Gestão de Grupos";
-$text['header-group_manager']['fr-fr'] = "Gestion de Groupe";
-$text['header-group_manager']['pl'] = "Menadżer  grup";
-$text['header-group_manager']['uk'] = "Групи";
-$text['header-group_manager']['sv-se'] = "Grupp Inställningar";
-$text['header-group_manager']['ro'] = "";
-$text['header-group_manager']['de-at'] = "Gruppenverwaltung";
-$text['header-group_manager']['he'] = "מנהל קבוצה";
-
-$text['header-group_edit']['en-us'] = "Edit Group";
-$text['header-group_edit']['es-cl'] = "Editar Grupo";
-$text['header-group_edit']['pt-pt'] = "Editar Grupo";
-$text['header-group_edit']['fr-fr'] = "Modifier le Groupe";
-$text['header-group_edit']['pl'] = "Edycja grupy";
-$text['header-group_edit']['uk'] = "Редагувати групу";
-$text['header-group_edit']['sv-se'] = "Editera Grupp";
-$text['header-group_edit']['ro'] = "";
-$text['header-group_edit']['de-at'] = "Gruppe bearbeiten";
-$text['header-group_edit']['he'] = "ערוך קבוצה";
-
-$text['header-group_add']['en-us'] = "Add Group";
-$text['header-group_add']['es-cl'] = "Agregar Grupo";
-$text['header-group_add']['pt-pt'] = "Adicionar Grupo";
-$text['header-group_add']['fr-fr'] = "Ajouter un Groupe";
-$text['header-group_add']['pl'] = "Dodaj grupę";
-$text['header-group_add']['uk'] = "Додати групу";
-$text['header-group_add']['sv-se'] = "Lägg Till Grupp";
-$text['header-group_add']['ro'] = "";
-$text['header-group_add']['de-at'] = "Gruppe hinzufügen";
-$text['header-group_add']['he'] = "הוסף קבוצה";
-
 $text['description-user_setting-edit']['en-us'] = "Edit a setting for this user.";
 $text['description-user_setting-edit']['es-cl'] = "Editar un escenario de este usuario.";
 $text['description-user_setting-edit']['pt-pt'] = "Editar uma configuração para este usuário.";
@@ -1058,39 +838,6 @@ $text['description-status']['ro'] = "Selectați starea utilizatorului";
 $text['description-status']['de-at'] = "Benutzerstatus auswählen";
 $text['description-status']['he'] = "בחר את סטטוס המשתמש";
 
-$text['description-group_permissions']['en-us'] = "Assign permissions for this group.";
-$text['description-group_permissions']['es-cl'] = "Asigne permisos para este grupo.";
-$text['description-group_permissions']['pt-pt'] = "Atribua permissões para este grupo.";
-$text['description-group_permissions']['fr-fr'] = "Assignez des permissions à ce groupe.";
-$text['description-group_permissions']['pl'] = "Przypisywanie uprawnień tej grupie.";
-$text['description-group_permissions']['uk'] = "Призначення привілеїв для цієї групи.";
-$text['description-group_permissions']['sv-se'] = "Tilldela rättigheter till denna grupp.";
-$text['description-group_permissions']['ro'] = "";
-$text['description-group_permissions']['de-at'] = "Ordnen Sie Berechtigungen für diese Gruppe zu.";
-$text['description-group_permissions']['he'] = "צור הרשאות לקבוצה";
-
-$text['description-group_edit']['en-us'] = "Edit the properties of the group.";
-$text['description-group_edit']['es-cl'] = "Editar las propiedades del grupo.";
-$text['description-group_edit']['pt-pt'] = "Editar as propriedades do grupo.";
-$text['description-group_edit']['fr-fr'] = "Modifier les propriétés du groupe.";
-$text['description-group_edit']['pl'] = "Edytuj właściwości grupy.";
-$text['description-group_edit']['uk'] = "Зміна властивостей групи.";
-$text['description-group_edit']['sv-se'] = "Editera inställningar för gruppen.";
-$text['description-group_edit']['ro'] = "";
-$text['description-group_edit']['de-at'] = "Bearbeiten Sie die Eigenschaften dieser Gruppe";
-$text['description-group_edit']['he'] = "";
-
-$text['description-group_add']['en-us'] = "Create a new user group.";
-$text['description-group_add']['es-cl'] = "Crear un nuevo grupo de usuarios.";
-$text['description-group_add']['pt-pt'] = "Criar um novo grupo de usuários.";
-$text['description-group_add']['fr-fr'] = "Créez un nouveau groupe d'utilisateurs.";
-$text['description-group_add']['pl'] = "Utwórz nową grupę użytkowników.";
-$text['description-group_add']['uk'] = "Створити нову групу користувачів.";
-$text['description-group_add']['sv-se'] = "Skapa en ny användargrupp.";
-$text['description-group_add']['ro'] = "";
-$text['description-group_add']['de-at'] = "Legen Sie einen neue Gruppe an.";
-$text['description-group_add']['he'] = "";
-
 $text['description-enabled']['en-us'] = "Set the status of this account.";
 $text['description-enabled']['es-cl'] = "Indique el estaso de esta cuenta.";
 $text['description-enabled']['pt-pt'] = "Escolha o estado desta conta.";

+ 20 - 16
core/users/app_menu.php

@@ -13,24 +13,28 @@ $apps[$x]['menu'][2]['title']['he'] = "מנהל משתמש";
 $apps[$x]['menu'][2]['uuid'] = "0d57cc1e-1874-47b9-7ddd-fe1f57cec99b";
 $apps[$x]['menu'][2]['parent_uuid'] = "bc96d773-ee57-0cdd-c3ac-2d91aba61b55";
 $apps[$x]['menu'][2]['category'] = "internal";
-$apps[$x]['menu'][2]['path'] = "/core/users/index.php";
+$apps[$x]['menu'][2]['path'] = "/core/users/users.php";
 $apps[$x]['menu'][2]['groups'][] = "admin";
 $apps[$x]['menu'][2]['groups'][] = "superadmin";
 
-$apps[$x]['menu'][3]['title']['en-us'] = "Group Manager";
-$apps[$x]['menu'][3]['title']['es-cl'] = "Administración de Grupos";
-$apps[$x]['menu'][3]['title']['fr-fr'] = "Gestion des groupes";
-$apps[$x]['menu'][3]['title']['pt-pt'] = "'Gestão de Grupos";
-$apps[$x]['menu'][3]['title']['pt-br'] = "Gerenciar grupos";
-$apps[$x]['menu'][3]['title']['pl'] = "Menedżer grup";
-$apps[$x]['menu'][3]['title']['uk'] = "Групи";
-$apps[$x]['menu'][3]['title']['sv-se'] = "Grupp Inställningar";
-$apps[$x]['menu'][3]['title']['de-at'] = "Gruppenverwaltung";
-$apps[$x]['menu'][3]['title']['he'] = "מנהל קבוצה";
-$apps[$x]['menu'][3]['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
-$apps[$x]['menu'][3]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
-$apps[$x]['menu'][3]['category'] = "internal";
-$apps[$x]['menu'][3]['path'] = "/core/users/groups.php";
-$apps[$x]['menu'][3]['groups'][] = "superadmin";
+$apps[$x]['menu'][0]['title']['en-us'] = "Account Settings";
+$apps[$x]['menu'][0]['title']['es-cl'] = "Config de Cuenta";
+$apps[$x]['menu'][0]['title']['fr-fr'] = "Configuration du Compte";
+$apps[$x]['menu'][0]['title']['pt-pt'] = "Configurações da Conta";
+$apps[$x]['menu'][0]['title']['pt-br'] = "Configurações da conta";
+$apps[$x]['menu'][0]['title']['pl'] = "Ustawienia konta";
+$apps[$x]['menu'][0]['title']['he'] = "הגדרת חשבון";
+$apps[$x]['menu'][0]['title']['uk'] = "Обліковий запис";
+$apps[$x]['menu'][0]['title']['sv-se'] = "Kontoinställningar";
+$apps[$x]['menu'][0]['title']['de-at'] = "Kontoeinstellungen";
+$apps[$x]['menu'][0]['title']['ro'] = "Setări cont";
+$apps[$x]['menu'][0]['title']['ar-eg'] = "إعدادات الحساب";
+$apps[$x]['menu'][0]['uuid'] = "4d532f0b-c206-c39d-ff33-fc67d668fb69";
+$apps[$x]['menu'][0]['parent_uuid'] = "02194288-6d56-6d3e-0b1a-d53a2bc10788";
+$apps[$x]['menu'][0]['category'] = "internal";
+$apps[$x]['menu'][0]['path'] = "/core/users/user_edit.php?id=user";
+$apps[$x]['menu'][0]['groups'][] = "user";
+$apps[$x]['menu'][0]['groups'][] = "admin";
+$apps[$x]['menu'][0]['groups'][] = "superadmin";
 
 ?>

+ 0 - 55
core/users/index.php

@@ -1,55 +0,0 @@
-<?php
-/*
-	FusionPBX
-	Version: MPL 1.1
-
-	The contents of this file are subject to the Mozilla Public License Version
-	1.1 (the "License"); you may not use this file except in compliance with
-	the License. You may obtain a copy of the License at
-	http://www.mozilla.org/MPL/
-
-	Software distributed under the License is distributed on an "AS IS" basis,
-	WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-	for the specific language governing rights and limitations under the
-	License.
-
-	The Original Code is FusionPBX
-
-	The Initial Developer of the Original Code is
-	Mark J Crane <[email protected]>
-	Portions created by the Initial Developer are Copyright (C) 2008-2013
-	the Initial Developer. All Rights Reserved.
-
-	Contributor(s):
-	Mark J Crane <[email protected]>
-*/
-
-//includes
-	include "root.php";
-	require_once "resources/require.php";
-	require_once "resources/check_auth.php";
-
-//check permissions
-	if (permission_exists('user_view') || if_group("superadmin")) {
-		//access allowed
-	}
-	else {
-		echo "access denied";
-		return;
-	}
-
-//add multi-lingual support
-	$language = new text;
-	$text = $language->get();
-
-//include the header
-	require_once "resources/header.php";
-	$document['title'] = $text['title-user_manager'];
-
-//show the user list
-	require_once "users.php";
-
-//include the footer
-	include "resources/footer.php";
-
-?>

+ 0 - 376
core/users/signup.php

@@ -1,376 +0,0 @@
-<?php
-/*
-	FusionPBX
-	Version: MPL 1.1
-
-	The contents of this file are subject to the Mozilla Public License Version
-	1.1 (the "License"); you may not use this file except in compliance with
-	the License. You may obtain a copy of the License at
-	http://www.mozilla.org/MPL/
-
-	Software distributed under the License is distributed on an "AS IS" basis,
-	WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-	for the specific language governing rights and limitations under the
-	License.
-
-	The Original Code is FusionPBX
-
-	The Initial Developer of the Original Code is
-	Mark J Crane <[email protected]>
-	Portions created by the Initial Developer are Copyright (C) 2008-2015
-	the Initial Developer. All Rights Reserved.
-
-	Contributor(s):
-	Mark J Crane <[email protected]>
-*/
-
-//includes
-	include "root.php";
-	require_once "resources/require.php";
-	require_once "resources/check_auth.php";
-
-//check permissions
-	if (if_group("admin") || if_group("superadmin")) {
-		//access allowed
-	}
-	else {
-		echo "access denied";
-		return;
-	}
-
-//add multi-lingual support
-	$language = new text;
-	$text = $language->get();
-
-//get total user count from the database, check limit, if defined
-	if ($_SESSION['limit']['users']['numeric'] != '') {
-		$sql = "select count(*) as num_rows from v_users where domain_uuid = '".$_SESSION['domain_uuid']."' ";
-		$prep_statement = $db->prepare($sql);
-		if ($prep_statement) {
-			$prep_statement->execute();
-			$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
-			$total_users = $row['num_rows'];
-		}
-		unset($prep_statement, $row);
-		if ($total_users >= $_SESSION['limit']['users']['numeric']) {
-			$_SESSION['message_mood'] = 'negative';
-			$_SESSION['message'] = $text['message-maximum_users'].' '.$_SESSION['limit']['users']['numeric'];
-			header('Location: index.php');
-			return;
-		}
-	}
-
-//get the values from http and set as variables
-	if (sizeof($_POST) > 0) {
-		$username = check_str($_POST["username"]);
-		$password = check_str($_POST["password"]);
-		$confirmpassword = check_str($_POST["confirmpassword"]);
-		$group_uuid_name = check_str($_POST["group_uuid_name"]);
-		$user_email = check_str($_POST["user_email"]);
-		$contact_organization = check_str($_POST["contact_organization"]);
-		$contact_name_given = check_str($_POST["contact_name_given"]);
-		$contact_name_family = check_str($_POST["contact_name_family"]);
-
-		if ($group_uuid_name != '') {
-			$group_data = explode('|', $group_uuid_name);
-			$group_uuid = $group_data[0];
-			$group_name = $group_data[1];
-		}
-	}
-
-
-if (count($_POST) > 0 && check_str($_POST["persistform"]) != "1") {
-
-	$msg = '';
-
-	//--- begin captcha verification ---------------------
-		//ini_set("session.cookie_httponly", True); //session_start(); //make sure sessions are started
-		if (strtolower($_SESSION["captcha"]) != strtolower($_REQUEST["captcha"]) || strlen($_SESSION["captcha"]) == 0) {
-			//$msg .= "Captcha Verification Failed<br>\n";
-		}
-		else {
-			//echo "verified";
-		}
-	//--- end captcha verification -----------------------
-
-	//username is already used.
-	if (strlen($username) == 0) {
-		$msg .= $text['message-required'].$text['label-username']."<br>\n";
-	}
-	else {
-		$sql = "select * from v_users ";
-		$sql .= "where username = '$username' ";
-		if ($_SESSION["user"]["unique"]["text"] != "global") {
-			$sql .= "and domain_uuid = '".$_SESSION['domain_uuid']."' ";
-		}
-		//$sql .= "and user_enabled = 'true' ";
-		$prep_statement = $db->prepare(check_sql($sql));
-		$prep_statement->execute();
-		if (count($prep_statement->fetchAll(PDO::FETCH_NAMED)) > 0) {
-			$msg .= $text['message-username_exists'];
-		}
-	}
-
-	if (strlen($password) == 0) { $msg .= $text['message-password_blank']."<br>\n"; }
-	if ($password != $confirmpassword) { $msg .= $text['message-password_mismatch']."<br>\n"; }
-	//if (strlen($contact_organization) == 0) { $msg .= $text['message-required'].$text['label-company_name']."<br>\n"; }
-	//if (strlen($contact_name_given) == 0) { $msg .= $text['message-required'].$text['label-first_name']."<br>\n"; }
-	//if (strlen($contact_name_family) == 0) { $msg .= $text['message-required'].$text['label-last_name']."<br>\n"; }
-	if (strlen($user_email) == 0) { $msg .= $text['message-required'].$text['label-email']."<br>\n"; }
-	if (strlen($group_uuid_name) == 0) { $msg .= $text['message-required'].$text['label-group']."<br>\n"; }
-
-	if (strlen($msg) > 0) {
-		require_once "resources/header.php";
-		echo "<div align='center'>";
-		echo "<table><tr><td>";
-		echo $msg;
-		echo "</td></tr></table>";
-		require_once "resources/persist_form.php";
-		echo persistform($_POST);
-		echo "</div>";
-		require_once "resources/footer.php";
-		return;
-	}
-
-	//salt used with the password to create a one way hash
-	$salt = uuid();
-
-	//prepare the uuids
-	$user_uuid = uuid();
-	$group_user_uuid = uuid();
-	$contact_uuid = uuid();
-	$contact_email_uuid = uuid();
-
-	//add the user
-	$sql = "insert into v_users ";
-	$sql .= "(";
-	$sql .= "domain_uuid, ";
-	$sql .= "user_uuid, ";
-	$sql .= "contact_uuid, ";
-	$sql .= "username, ";
-	$sql .= "password, ";
-	$sql .= "salt, ";
-	$sql .= "add_date, ";
-	$sql .= "add_user, ";
-	$sql .= "user_enabled ";
-	$sql .= ") ";
-	$sql .= "values ";
-	$sql .= "(";
-	$sql .= "'".$_SESSION['domain_uuid']."', ";
-	$sql .= "'".$user_uuid."', ";
-	$sql .= "'".$contact_uuid."', ";
-	$sql .= "'".$username."', ";
-	$sql .= "'".md5($salt.$password)."', ";
-	$sql .= "'".$salt."', ";
-	$sql .= "now(), ";
-	$sql .= "'".$_SESSION["username"]."', ";
-	$sql .= "'true' ";
-	$sql .= ")";
-	$db->exec(check_sql($sql));
-	unset($sql);
-
-	//add the user to the group
-	if (strlen($group_uuid) > 0) {
-		if ( ($group_name == "superadmin" && if_group("superadmin")) || $group_name != "superadmin") {
-			$sql = "insert into v_group_users ";
-			$sql .= "( ";
-			$sql .= "group_user_uuid, ";
-			$sql .= "domain_uuid, ";
-			$sql .= "group_name, ";
-			$sql .= "group_uuid, ";
-			$sql .= "user_uuid ";
-			$sql .= ") ";
-			$sql .= "values ";
-			$sql .= "(";
-			$sql .= "'".$group_user_uuid."', ";
-			$sql .= "'".$_SESSION['domain_uuid']."', ";
-			$sql .= "'".$group_name."', ";
-			$sql .= "'".$group_uuid."', ";
-			$sql .= "'".$user_uuid."' ";
-			$sql .= ")";
-			$db->exec(check_sql($sql));
-			unset($sql);
-		}
-	}
-
-	//add to contacts
-	$sql = "insert into v_contacts ";
-	$sql .= "(";
-	$sql .= "domain_uuid, ";
-	$sql .= "contact_uuid, ";
-	$sql .= "contact_type, ";
-	$sql .= "contact_organization, ";
-	$sql .= "contact_name_given, ";
-	$sql .= "contact_name_family, ";
-	$sql .= "contact_nickname ";
-	$sql .= ") ";
-	$sql .= "values ";
-	$sql .= "(";
-	$sql .= "'".$_SESSION['domain_uuid']."', ";
-	$sql .= "'".$contact_uuid."', ";
-	$sql .= "'user', ";
-	$sql .= "'".$contact_organization."', ";
-	$sql .= "'".$contact_name_given."', ";
-	$sql .= "'".$contact_name_family."', ";
-	$sql .= "'".$username."' ";
-	$sql .= ")";
-	$db->exec(check_sql($sql));
-	unset($sql);
-
-	//add to emails
-	$sql = "insert into v_contact_emails ";
-	$sql .= "(";
-	$sql .= "contact_email_uuid, ";
-	$sql .= "domain_uuid, ";
-	$sql .= "contact_uuid, ";
-	$sql .= "email_address, ";
-	$sql .= "email_primary ";
-	$sql .= ") ";
-	$sql .= "values ";
-	$sql .= "(";
-	$sql .= "'".$contact_email_uuid."', ";
-	$sql .= "'".$_SESSION['domain_uuid']."', ";
-	$sql .= "'".$contact_uuid."', ";
-	$sql .= "'".$user_email."', ";
-	$sql .= "1 ";
-	$sql .= ")";
-	$db->exec(check_sql($sql));
-	unset($sql);
-
-	//log the success
-	//$log_type = 'user'; $log_status='add'; $log_add_user=$_SESSION["username"]; $log_desc= "username: ".$username." user added.";
-	//log_add($db, $log_type, $log_status, $log_desc, $log_add_user, $_SERVER["REMOTE_ADDR"]);
-
-	$_SESSION["message"] = $text['message-add'];
-	header("Location: index.php");
-	return;
-}
-
-//show the header
-	require_once "resources/header.php";
-	$document['title'] = $text['title-user_add'];
-
-//show the content
-	echo "<script>";
-	echo "	function compare_passwords() {";
-	echo "		if (document.getElementById('password') === document.activeElement || document.getElementById('confirmpassword') === document.activeElement) {";
-	echo "			if (document.getElementById('password').value != '' || document.getElementById('confirmpassword').value != '') {";
-	echo "				if (document.getElementById('password').value != document.getElementById('confirmpassword').value) {";
-	echo "					$('#password').removeClass('formfld_highlight_good');";
-	echo "					$('#confirmpassword').removeClass('formfld_highlight_good');";
-	echo "					$('#password').addClass('formfld_highlight_bad');";
-	echo "					$('#confirmpassword').addClass('formfld_highlight_bad');";
-	echo "				}";
-	echo "				else {";
-	echo "					$('#password').removeClass('formfld_highlight_bad');";
-	echo "					$('#confirmpassword').removeClass('formfld_highlight_bad');";
-	echo "					$('#password').addClass('formfld_highlight_good');";
-	echo "					$('#confirmpassword').addClass('formfld_highlight_good');";
-	echo "				}";
-	echo "			}";
-	echo "		}";
-	echo "		else {";
-	echo "			if (document.getElementById('password').value == document.getElementById('confirmpassword').value) {";
-	echo "				$('#password').removeClass('formfld_highlight_bad');";
-	echo "				$('#confirmpassword').removeClass('formfld_highlight_bad');";
-	echo "				$('#password').removeClass('formfld_highlight_good');";
-	echo "				$('#confirmpassword').removeClass('formfld_highlight_good');";
-	echo "			}";
-	echo "		}";
-	echo "	}";
-	echo "</script>";
-
-	$tablewidth ='width="100%"';
-	echo "<form name='frm' id='frm' method='post' action=''>";
-
-	echo "<table border='0' $tablewidth cellpadding='0' cellspacing='0'>";
-	echo "	<tr>\n";
-	echo "		<td width='80%' valign='top'>\n";
-	echo "			<b>".$text['header-user_add']."</b>\n";
-	echo "			<br><br>\n";
-	echo "			".$text['description-user_add']."\n";
-	echo "			<br><br>\n";
-	echo "		</td>\n";
-	echo "		<td width='20%' valign='top' align='right'>\n";
-	echo "			<input type='button' class='btn' name='back' alt='".$text['button-back']."' onclick=\"document.location.href='index.php';\" value='".$text['button-back']."'>\n";
-	echo "		</td>\n";
-	echo "	</tr>\n";
-	echo "</table>\n";
-
-	echo "<table border='0' $tablewidth cellpadding='0' cellspacing='0'>";
-	echo "	<tr>";
-	echo "		<td class='vncellreq' width='30%'>".$text['label-username']."</td>";
-	echo "		<td class='vtable' width='70%'><input style='display:none;' type='password' name='autocomplete'><input type='text' class='formfld' autocomplete='off' name='username' value='$username'></td>";
-	echo "	</tr>";
-
-	echo "	<tr>";
-	echo "		<td class='vncellreq'>".$text['label-password']."</td>";
-	echo "		<td class='vtable'><input style='display:none;' type='password' name='autocomplete'><input type='password' class='formfld' autocomplete='off' name='password' id='password' value='$password' onfocus='compare_passwords();' onkeyup='compare_passwords();' onblur='compare_passwords();'></td>";
-	echo "	</tr>";
-	echo "	<tr>";
-	echo "		<td class='vncellreq'>".$text['label-confirm_password']."</td>";
-	echo "		<td class='vtable'><input type='password' class='formfld' autocomplete='off' name='confirmpassword' id='confirmpassword' value='$confirmpassword' onfocus='compare_passwords();' onkeyup='compare_passwords();' onblur='compare_passwords();'></td>";
-	echo "	</tr>";
-	echo "	<tr>";
-	echo "		<td class='vncellreq'>".$text['label-email']."</td>";
-	echo "		<td class='vtable'><input type='text' class='formfld' name='user_email' value='$user_email'></td>";
-	echo "	</tr>";
-
-	echo "	<tr>";
-	echo "		<td class='vncellreq' valign='top'>".$text['label-group']."</td>";
-	echo "		<td class='vtable'>";
-
-	$sql = "select * from v_groups ";
-	$sql .= "where (domain_uuid = '".$_SESSION['domain_uuid']."' or domain_uuid is null) ";
-	$sql .= "order by domain_uuid desc, group_name asc ";
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	echo "			<select name='group_uuid_name' class='formfld' style='width: auto; margin-right: 3px;'>\n";
-	echo "				<option value=''></option>\n";
-	foreach($result as $field) {
-		if ($field['group_name'] == "superadmin" && !if_group("superadmin")) { continue; } //only show the superadmin group to other superadmins
-		if ($field['group_name'] == "admin" && (!if_group("superadmin") && !if_group("admin") )) { continue; }	//only show the admin group to other admins
-		echo "			<option value='".$field['group_uuid']."|".$field['group_name']."'>".$field['group_name'].(($field['domain_uuid'] != '') ? "@".$_SESSION['domains'][$field['domain_uuid']]['domain_name'] : null)."</option>\n";
-	}
-	echo "			</select>";
-	unset($sql, $prep_statement, $result);
-
-	echo "		</td>";
-	echo "	</tr>";
-	echo "	<tr>";
-	echo "		<td class='vncell'>".$text['label-first_name']."</td>";
-	echo "		<td class='vtable'><input type='text' class='formfld' name='contact_name_given' value='$contact_name_given'></td>";
-	echo "	</tr>";
-	echo "	<tr>";
-	echo "		<td class='vncell'>".$text['label-last_name']."</td>";
-	echo "		<td class='vtable'><input type='text' class='formfld' name='contact_name_family' value='$contact_name_family'></td>";
-	echo "	</tr>";
-	echo "	<tr>";
-	echo "		<td class='vncell'>".$text['label-company_name']."</td>";
-	echo "		<td class='vtable'><input type='text' class='formfld' name='contact_organization' value='$contact_organization'></td>";
-	echo "	</tr>";
-	echo "	<tr>";
-	echo "		<td colspan='2' align='right'>";
-	echo "      	<br><input type='button' class='btn' value='".$text['button-create_account']."' onclick='submit_form();'>";
-	echo "		</td>";
-	echo "	</tr>";
-	echo "</table>";
-	echo "</form>";
-
-	echo "<script>\n";
-//capture enter key to submit form
-	echo "	$(window).keypress(function(event){\n";
-	echo "		if (event.which == 13) { submit_form(); }\n";
-	echo "	});\n";
-// convert password fields to
-	echo "	function submit_form() {\n";
-	echo "		$('input:password').css('visibility','hidden');\n";
-	echo "		$('input:password').attr({type:'text'});\n";
-	echo "		$('form#frm').submit();\n";
-	echo "	}\n";
-	echo "</script>\n";
-
-//show the footer
-	require_once "resources/footer.php";
-?>

+ 1 - 1
core/users/userdelete.php → core/users/user_delete.php

@@ -103,6 +103,6 @@
 
 //redirect the user
 	$_SESSION["message"] = $text['message-delete'];
-	header("Location: index.php");
+	header("Location: users.php");
 
 ?>

+ 947 - 0
core/users/user_edit.php

@@ -0,0 +1,947 @@
+<?php
+/*
+	FusionPBX
+	Version: MPL 1.1
+
+	The contents of this file are subject to the Mozilla Public License Version
+	1.1 (the "License"); you may not use this file except in compliance with
+	the License. You may obtain a copy of the License at
+	http://www.mozilla.org/MPL/
+
+	Software distributed under the License is distributed on an "AS IS" basis,
+	WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+	for the specific language governing rights and limitations under the
+	License.
+
+	The Original Code is FusionPBX
+
+	The Initial Developer of the Original Code is
+	Mark J Crane <[email protected]>
+	Portions created by the Initial Developer are Copyright (C) 2008-2016
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+	Luis Daniel Lucio Quiroz <[email protected]>
+*/
+
+//includes
+	include "root.php";
+	require_once "resources/require.php";
+	require_once "resources/check_auth.php";
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//get user uuid
+	if (
+		(is_uuid($_REQUEST["id"]) && permission_exists('user_edit')) ||
+		(is_uuid($_REQUEST["id"]) && $_REQUEST["id"] == $_SESSION['user_uuid'])
+		)  {
+		$user_uuid = check_str($_REQUEST["id"]);
+		$action = 'edit';
+	}
+	else if (permission_exists('user_add') && $_REQUEST["id"] == '') {
+		$user_uuid = uuid();
+		$action = 'add';
+	}
+	else {
+		// load users own account
+			header("Location: user_edit.php?id=".$_SESSION['user_uuid']);
+			exit;
+	}
+
+//get total user count from the database, check limit, if defined
+	if (permission_exists('user_add') && $action == 'add' && $_SESSION['limit']['users']['numeric'] != '') {
+		$sql = "select count(user_uuid) as num_rows from v_users where domain_uuid = '".$_SESSION['domain_uuid']."' ";
+		$prep_statement = $db->prepare($sql);
+		if ($prep_statement) {
+			$prep_statement->execute();
+			$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
+			$total_users = $row['num_rows'];
+		}
+		unset($prep_statement, $row);
+		if ($total_users >= $_SESSION['limit']['users']['numeric']) {
+			$_SESSION['message_mood'] = 'negative';
+			$_SESSION['message'] = $text['message-maximum_users'].' '.$_SESSION['limit']['users']['numeric'];
+			header('Location: users.php');
+			exit;
+		}
+	}
+
+//required to be a superadmin to update an account that is a member of the superadmin group
+	if (permission_exists('user_edit') && $action == 'edit') {
+		$superadmins = superadmin_list($db);
+		if (if_superadmin($superadmins, $user_uuid)) {
+			if (!if_group("superadmin")) {
+				echo "access denied";
+				exit;
+			}
+		}
+	}
+
+//delete the group from the user
+	if ($_GET["a"] == "delete" && permission_exists("user_delete")) {
+		//set the variables
+			$group_uuid = check_str($_GET["group_uuid"]);
+		//delete the group from the users
+			$sql = "delete from v_group_users ";
+			$sql .= "where group_uuid = '".$group_uuid."' ";
+			$sql .= "and user_uuid = '".$user_uuid."' ";
+			$db->exec(check_sql($sql));
+		//redirect the user
+			$_SESSION["message"] = $text['message-update'];
+			header("Location: user_edit.php?id=".$user_uuid);
+			return;
+	}
+
+if (count($_POST) > 0 && $_POST["persistform"] != "1") {
+
+	//get the HTTP values and set as variables
+		if (permission_exists('user_edit') && $action == 'edit') {
+			$user_uuid = $_REQUEST["id"];
+			$username_old = check_str($_POST["username_old"]);
+		}
+		$domain_uuid = check_str($_POST["domain_uuid"]);
+		$username = check_str($_POST["username"]);
+		$password = check_str($_POST["password"]);
+		$password_confirm = check_str($_POST["password_confirm"]);
+		$user_status = check_str($_POST["user_status"]);
+		$user_language = check_str($_POST["user_language"]);
+		$user_time_zone = check_str($_POST["user_time_zone"]);
+		if (permission_exists('user_edit') && $action == 'edit') {
+			$contact_uuid = check_str($_POST["contact_uuid"]);
+		}
+		else if (permission_exists('user_add') && $action == 'add') {
+			$user_email = check_str($_POST["user_email"]);
+			$contact_organization = check_str($_POST["contact_organization"]);
+			$contact_name_given = check_str($_POST["contact_name_given"]);
+			$contact_name_family = check_str($_POST["contact_name_family"]);
+		}
+		$group_uuid_name = check_str($_POST["group_uuid_name"]);
+		$user_enabled = check_str($_POST["user_enabled"]);
+		$api_key = check_str($_POST["api_key"]);
+
+	//check required values
+		if ($username == '') { $msg_error = $text['message-required'].$text['label-username']; }
+		if (permission_exists('user_edit') && $action == 'edit') {
+			if ($username != $username_old && $username != '') {
+				$sql = "select count(user_uuid) as num_rows from v_users where domain_uuid = '".$domain_uuid."' and username = '".$username."'";
+				$prep_statement = $db->prepare(check_sql($sql));
+				if ($prep_statement) {
+					$prep_statement->execute();
+					$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
+					if (0 < $row['num_rows']) {
+						$msg_error = $text['message-username_exists'];
+					}
+				}
+				unset($sql);
+			}
+		}
+		if ($password != '' && $password != $password_confirm) { $msg_error = $text['message-password_mismatch']; }
+		if (permission_exists('user_add') && $action == 'add') {
+			if ($password == '') { $msg_error = $text['message-password_blank']; }
+			if ($user_email == '') { $msg_error = $text['message-required'].$text['label-email']; }
+			if ($group_uuid_name == '') { $msg_error = $text['message-required'].$text['label-group']; }
+		}
+
+		if ($msg_error != '') {
+			$_SESSION["message"] = $msg_error;
+			$_SESSION["message_mood"] = 'negative';
+			if ($action == 'edit') {
+				header("Location: user_edit.php?id=".$user_uuid);
+			}
+			else {
+				header("Location: user_edit.php");
+			}
+			exit;
+		}
+
+		if (!check_password_strength($password, $text)) {
+			if ($action == 'edit') {
+				header("Location: user_edit.php?id=".$user_uuid);
+			}
+			else {
+				header("Location: user_edit.php");
+			}
+			exit;
+		}
+
+	//set initial array indexes
+		$i = $n = $x = $c = 0;
+
+	//check to see if user language is set
+		$sql = "select user_setting_uuid, user_setting_value from v_user_settings ";
+		$sql .= "where user_setting_category = 'domain' ";
+		$sql .= "and user_setting_subcategory = 'language' ";
+		$sql .= "and user_uuid = '".$user_uuid."' ";
+		$prep_statement = $db->prepare(check_sql($sql));
+		if ($prep_statement) {
+			$prep_statement->execute();
+			$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
+			if ($row['user_setting_uuid'] == '' && $user_language != '') {
+				//add user setting to array for insert
+					$array['user_settings'][$i]['user_setting_uuid'] = uuid();
+					$array['user_settings'][$i]['user_uuid'] = $user_uuid;
+					$array['user_settings'][$i]['domain_uuid'] = $domain_uuid;
+					$array['user_settings'][$i]['user_setting_category'] = 'domain';
+					$array['user_settings'][$i]['user_setting_subcategory'] = 'language';
+					$array['user_settings'][$i]['user_setting_name'] = 'code';
+					$array['user_settings'][$i]['user_setting_value'] = $user_language;
+					$array['user_settings'][$i]['user_setting_enabled'] = 'true';
+					$i++;
+			}
+			else {
+				if ($row['user_setting_value'] == '' || $user_language == '') {
+					$sql = "delete from v_user_settings ";
+					$sql .= "where user_setting_category = 'domain' ";
+					$sql .= "and user_setting_subcategory = 'language' ";
+					$sql .= "and user_uuid = '".$user_uuid."' ";
+					$db->exec(check_sql($sql));
+					unset($sql);
+				}
+				else {
+					//add user setting to array for update
+						$array['user_settings'][$i]['user_setting_uuid'] = $row['user_setting_uuid'];
+						$array['user_settings'][$i]['user_uuid'] = $user_uuid;
+						$array['user_settings'][$i]['domain_uuid'] = $domain_uuid;
+						$array['user_settings'][$i]['user_setting_category'] = 'domain';
+						$array['user_settings'][$i]['user_setting_subcategory'] = 'language';
+						$array['user_settings'][$i]['user_setting_name'] = 'code';
+						$array['user_settings'][$i]['user_setting_value'] = $user_language;
+						$array['user_settings'][$i]['user_setting_enabled'] = 'true';
+						$i++;
+				}
+			}
+		}
+		unset($sql, $prep_statement, $row);
+
+	//check to see if user time zone is set
+		$sql = "select user_setting_uuid, user_setting_value from v_user_settings ";
+		$sql .= "where user_setting_category = 'domain' ";
+		$sql .= "and user_setting_subcategory = 'time_zone' ";
+		$sql .= "and user_uuid = '".$user_uuid."' ";
+		$prep_statement = $db->prepare(check_sql($sql));
+		if ($prep_statement) {
+			$prep_statement->execute();
+			$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
+			if ($row['user_setting_uuid'] == '' && $user_time_zone != '') {
+				//add user setting to array for insert
+					$array['user_settings'][$i]['user_setting_uuid'] = uuid();
+					$array['user_settings'][$i]['user_uuid'] = $user_uuid;
+					$array['user_settings'][$i]['domain_uuid'] = $domain_uuid;
+					$array['user_settings'][$i]['user_setting_category'] = 'domain';
+					$array['user_settings'][$i]['user_setting_subcategory'] = 'time_zone';
+					$array['user_settings'][$i]['user_setting_name'] = 'name';
+					$array['user_settings'][$i]['user_setting_value'] = $user_time_zone;
+					$array['user_settings'][$i]['user_setting_enabled'] = 'true';
+					$i++;
+			}
+			else {
+				if ($row['user_setting_value'] == '' || $user_time_zone == '') {
+					$sql = "delete from v_user_settings ";
+					$sql .= "where user_setting_category = 'domain' ";
+					$sql .= "and user_setting_subcategory = 'time_zone' ";
+					$sql .= "and user_uuid = '".$user_uuid."' ";
+					$db->exec(check_sql($sql));
+					unset($sql);
+				}
+				else {
+					//add user setting to array for update
+						$array['user_settings'][$i]['user_setting_uuid'] = $row['user_setting_uuid'];
+						$array['user_settings'][$i]['user_uuid'] = $user_uuid;
+						$array['user_settings'][$i]['domain_uuid'] = $domain_uuid;
+						$array['user_settings'][$i]['user_setting_category'] = 'domain';
+						$array['user_settings'][$i]['user_setting_subcategory'] = 'time_zone';
+						$array['user_settings'][$i]['user_setting_name'] = 'name';
+						$array['user_settings'][$i]['user_setting_value'] = $user_time_zone;
+						$array['user_settings'][$i]['user_setting_enabled'] = 'true';
+						$i++;
+				}
+			}
+		}
+
+	//assign the user to the group
+		if ((permission_exists('user_add') || permission_exists('user_edit')) && $_REQUEST["group_uuid_name"] != '') {
+			$group_data = explode('|', $group_uuid_name);
+			$group_uuid = $group_data[0];
+			$group_name = $group_data[1];
+			//only a superadmin can add other superadmins or admins, admins can only add other admins
+				switch ($group_name) {
+					case "superadmin": if (!if_group("superadmin")) { break; }
+					case "admin": if (!if_group("superadmin") && !if_group("admin")) { break; }
+					default: //add group user to array for insert
+						$array['group_users'][$n]['group_user_uuid'] = uuid();
+						$array['group_users'][$n]['domain_uuid'] = $domain_uuid;
+						$array['group_users'][$n]['group_name'] = $group_name;
+						$array['group_users'][$n]['group_uuid'] = $group_uuid;
+						$array['group_users'][$n]['user_uuid'] = $user_uuid;
+						$n++;
+				}
+		}
+
+	//update domain, if changed
+		if ((permission_exists('user_add') || permission_exists('user_edit')) && permission_exists('user_domain')) {
+			//adjust group user records
+				$sql = "select group_user_uuid from v_group_users ";
+				$sql .= "where user_uuid = '".$user_uuid."' ";
+				$prep_statement = $db->prepare(check_sql($sql));
+				if ($prep_statement) {
+					$prep_statement->execute();
+					$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
+					foreach ($result as $row) {
+						//add group user to array for update
+							$array['group_users'][$n]['group_user_uuid'] = $row['group_user_uuid'];
+							$array['group_users'][$n]['domain_uuid'] = $domain_uuid;
+							$n++;
+					}
+				}
+				unset($sql, $prep_statement, $result, $row);
+			//adjust user setting records
+				$sql = "select user_setting_uuid from v_user_settings ";
+				$sql .= "where user_uuid = '".$user_uuid."' ";
+				$prep_statement = $db->prepare(check_sql($sql));
+				if ($prep_statement) {
+					$prep_statement->execute();
+					$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
+					foreach ($result as $row) {
+						//add user setting to array for update
+							$array['user_settings'][$i]['user_setting_uuid'] = $row['user_setting_uuid'];
+							$array['user_settings'][$i]['domain_uuid'] = $domain_uuid;
+							$i++;
+					}
+				}
+				unset($sql, $prep_statement, $result, $row);
+			//unassign any foreign domain groups
+				$sql = "delete from v_group_users where ";
+				$sql .= "domain_uuid = '".$domain_uuid."' ";
+				$sql .= "and user_uuid = '".$user_uuid."' ";
+				$sql .= "and group_uuid not in (";
+				$sql .= "	select group_uuid from v_groups where domain_uuid = '".$domain_uuid."' or domain_uuid is null ";
+				$sql .= ") ";
+				$db->exec(check_sql($sql));
+				unset($sql);
+		}
+
+	//add contact to array for insert
+		if ($action == 'add' && permission_exists('user_add') && permission_exists('contact_add')) {
+			$contact_uuid = uuid();
+			$array['contacts'][$c]['domain_uuid'] = $domain_uuid;
+			$array['contacts'][$c]['contact_uuid'] = $contact_uuid;
+			$array['contacts'][$c]['contact_type'] = 'user';
+			$array['contacts'][$c]['contact_organization'] = $contact_organization;
+			$array['contacts'][$c]['contact_name_given'] = $contact_name_given;
+			$array['contacts'][$c]['contact_name_family'] = $contact_name_family;
+			$array['contacts'][$c]['contact_nickname'] = $username;
+			$c++;
+			if (permission_exists('contact_email_add')) {
+				$contact_email_uuid = uuid();
+				$array['contact_emails'][$c]['contact_email_uuid'] = $contact_email_uuid;
+				$array['contact_emails'][$c]['domain_uuid'] = $domain_uuid;
+				$array['contact_emails'][$c]['contact_uuid'] = $contact_uuid;
+				$array['contact_emails'][$c]['email_address'] = $user_email;
+				$array['contact_emails'][$c]['email_primary'] = '1';
+				$c++;
+			}
+		}
+
+	//add user setting to array for update
+		$array['users'][$x]['user_uuid'] = $user_uuid;
+		$array['users'][$x]['domain_uuid'] = $domain_uuid;
+		if ($username != '' && $username != $username_old) {
+			$array['users'][$x]['username'] = $username;
+		}
+		if ($password != '' && $password == $password_confirm) {
+			$salt = uuid();
+			$array['users'][$x]['password'] = md5($salt.$password);
+			$array['users'][$x]['salt'] = $salt;
+		}
+		$array['users'][$x]['user_status'] = $user_status;
+		if (permission_exists('user_add') || permission_exists('user_edit')) {
+			$array['users'][$x]['api_key'] = ($api_key != '') ? $api_key : null;
+			$array['users'][$x]['user_enabled'] = $user_enabled;
+			$array['users'][$x]['contact_uuid'] = ($contact_uuid != '') ? $contact_uuid : null;
+			if ($action == 'add') {
+				$array['users'][$x]['add_user'] = $_SESSION["user"]["username"];
+				$array['users'][$x]['add_date'] = date("Y-m-d H:i:s.uO");
+			}
+		}
+		$x++;
+
+	//if call center installed
+		if (
+			$action == 'edit' &&
+			permission_exists('user_edit') &&
+			$username != $username_old &&
+			file_exists($_SERVER["PROJECT_ROOT"]."/app/call_center/app_config.php")
+			) {
+
+			//update call center agent table
+				$sql = "select call_center_agent_uuid from v_call_center_agents ";
+				$sql .= "where domain_uuid = '".$domain_uuid."' ";
+				$sql .= "and agent_name = '".$username_old."' ";
+				$prep_statement = $db->prepare(check_sql($sql));
+				if ($prep_statement) {
+					$prep_statement->execute();
+					$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
+					$a = 0;
+					foreach ($result as $row) {
+						$array['call_center_agents'][$a]['call_center_agent_uuid'] = $row['call_center_agent_uuid'];
+						$array['call_center_agents'][$a]['agent_name'] = $username;
+						$a++;
+					}
+				}
+				unset($sql, $prep_statement, $result);
+
+			//update call center tiers table
+				$sql = "select call_center_tier_uuid from v_call_center_tiers ";
+				$sql .= "where domain_uuid = '".$domain_uuid."' ";
+				$sql .= "and agent_name = '".$username_old."' ";
+				$prep_statement = $db->prepare(check_sql($sql));
+				if ($prep_statement) {
+					$prep_statement->execute();
+					$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
+					$t = 0;
+					foreach ($result as $row) {
+						$array['call_center_tiers'][$t]['call_center_tier_uuid'] = $row['call_center_tier_uuid'];
+						$array['call_center_tiers'][$t]['agent_name'] = $username;
+						$t++;
+					}
+				}
+				unset($sql, $prep_statement, $result);
+
+		}
+
+	//add the user_edit permission
+		$p = new permissions;
+		$p->add("user_setting_add", "temp");
+		$p->add("user_setting_edit", "temp");
+		$p->add("user_edit", "temp");
+
+	//save the data
+		$orm = new orm;
+		$orm->app_name = 'users';
+		$orm->app_uuid = '112124b3-95c2-5352-7e9d-d14c0b88f207';
+		$orm->save($array);
+		//$message = $orm->message;
+
+	//remove the temporary permission
+		$p->delete("user_setting_add", "temp");
+		$p->delete("user_setting_edit", "temp");
+		$p->delete("user_edit", "temp");
+
+	//if call center installed
+		if (
+			$action == 'edit' &&
+			permission_exists('user_edit') &&
+			$username != $username_old &&
+			file_exists($_SERVER["PROJECT_ROOT"]."/app/call_center/app_config.php")
+			) {
+
+			//syncrhonize the configuration
+				save_call_center_xml();
+
+			//update the user_status
+				$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
+				$switch_cmd .= "callcenter_config agent set status ".$username."@".$_SESSION['domains'][$domain_uuid]['domain_name']." '".$user_status."'";
+				$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
+
+			//update the user state
+				$cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domains'][$domain_uuid]['domain_name']." Waiting";
+				$response = event_socket_request($fp, $cmd);
+
+		}
+
+	//redirect the browser
+		$_SESSION["message"] = $text['message-update'];
+		if ($_REQUEST['action'] == $text['button-add'] || !permission_exists('user_edit')) {
+			header("Location: user_edit.php?id=".$user_uuid);
+		}
+		else {
+			header("Location: users.php");
+		}
+		return;
+
+}
+
+//pre-populate the form
+	if ($action == 'edit') {
+		//get user data
+			$sql = "select * from v_users where user_uuid = '".$user_uuid."' ";
+			if (!permission_exists('user_all')) {
+				$sql .= "and domain_uuid = '".$domain_uuid."' ";
+			}
+			$prep_statement = $db->prepare(check_sql($sql));
+			$prep_statement->execute();
+			$row = $prep_statement->fetch(PDO::FETCH_NAMED);
+			if (is_array($row) && sizeof($row) > 0) {
+				$domain_uuid = $row["domain_uuid"];
+				$user_uuid = $row["user_uuid"];
+				$username = $row["username"];
+				$password = $row["password"];
+				$api_key = $row["api_key"];
+				$user_enabled = $row["user_enabled"];
+				$contact_uuid = $row["contact_uuid"];
+				$user_status = $row["user_status"];
+			}
+			else {
+				header("Location: user_edit.php?id=".$_SESSION['user_uuid']);
+				exit;
+			}
+			unset($sql, $prep_statement, $row);
+
+		//get user settings
+			$sql = "select * from v_user_settings ";
+			$sql .= "where user_uuid = '".$user_uuid."' ";
+			$sql .= "and user_setting_enabled = 'true' ";
+			$prep_statement = $db->prepare($sql);
+			if ($prep_statement) {
+				$prep_statement->execute();
+				$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+				foreach($result as $row) {
+					$name = $row['user_setting_name'];
+					$category = $row['user_setting_category'];
+					$subcategory = $row['user_setting_subcategory'];
+					if (strlen($subcategory) == 0) {
+						//$$category[$name] = $row['domain_setting_value'];
+						$user_settings[$category][$name] = $row['user_setting_value'];
+					}
+					else {
+						$user_settings[$category][$subcategory][$name] = $row['user_setting_value'];
+					}
+				}
+			}
+	}
+
+//include the header
+	require_once "resources/header.php";
+	$document['title'] = $text['title-user_edit'];
+
+//show the content
+	echo "<script>\n";
+	echo "	function compare_passwords() {\n";
+	echo "		if (document.getElementById('password') === document.activeElement || document.getElementById('password_confirm') === document.activeElement) {\n";
+	echo "			if ($('#password').val() != '' || $('#password_confirm').val() != '') {\n";
+	echo "				if ($('#password').val() != $('#password_confirm').val()) {\n";
+	echo "					$('#password').removeClass('formfld_highlight_good');\n";
+	echo "					$('#password_confirm').removeClass('formfld_highlight_good');\n";
+	echo "					$('#password').addClass('formfld_highlight_bad');\n";
+	echo "					$('#password_confirm').addClass('formfld_highlight_bad');\n";
+	echo "				}\n";
+	echo "				else {\n";
+	echo "					$('#password').removeClass('formfld_highlight_bad');\n";
+	echo "					$('#password_confirm').removeClass('formfld_highlight_bad');\n";
+	echo "					$('#password').addClass('formfld_highlight_good');\n";
+	echo "					$('#password_confirm').addClass('formfld_highlight_good');\n";
+	echo "				}\n";
+	echo "			}\n";
+	echo "		}\n";
+	echo "		else {\n";
+	echo "			$('#password').removeClass('formfld_highlight_bad');\n";
+	echo "			$('#password_confirm').removeClass('formfld_highlight_bad');\n";
+	echo "			$('#password').removeClass('formfld_highlight_good');\n";
+	echo "			$('#password_confirm').removeClass('formfld_highlight_good');\n";
+	echo "		}\n";
+	echo "	}\n";
+
+	$req['length'] = $_SESSION['security']['password_length']['numeric'];
+	$req['number'] = ($_SESSION['security']['password_number']['boolean'] == 'true') ? true : false;
+	$req['lowercase'] = ($_SESSION['security']['password_lowercase']['boolean'] == 'true') ? true : false;
+	$req['uppercase'] = ($_SESSION['security']['password_uppercase']['boolean'] == 'true') ? true : false;
+	$req['special'] = ($_SESSION['security']['password_special']['boolean'] == 'true') ? true : false;
+
+	echo "	function check_password_strength(pwd) {\n";
+	echo "		if ($('#password').val() != '' || $('#password_confirm').val() != '') {\n";
+	echo "			var msg_errors = [];\n";
+	if (is_numeric($req['length']) && $req['length'] != 0) {
+		echo "		var re = /.{".$req['length'].",}/;\n"; //length
+		echo "		if (!re.test(pwd)) { msg_errors.push('".$req['length']."+ ".$text['label-characters']."'); }\n";
+	}
+	if ($req['number']) {
+		echo "		var re = /(?=.*[\d])/;\n";  //number
+		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-numbers']."'); }\n";
+	}
+	if ($req['lowercase']) {
+		echo "		var re = /(?=.*[a-z])/;\n";  //lowercase
+		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-lowercase_letters']."'); }\n";
+	}
+	if ($req['uppercase']) {
+		echo "		var re = /(?=.*[A-Z])/;\n";  //uppercase
+		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-uppercase_letters']."'); }\n";
+	}
+	if ($req['special']) {
+		echo "		var re = /(?=.*[\W])/;\n";  //special
+		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-special_characters']."'); }\n";
+	}
+	echo "			if (msg_errors.length > 0) {\n";
+	echo "				var msg = '".$text['message-password_requirements'].": ' + msg_errors.join(', ');\n";
+	echo "				display_message(msg, 'negative', '6000');\n";
+	echo "				return false;\n";
+	echo "			}\n";
+	echo "			else {\n";
+	echo "				return true;\n";
+	echo "			}\n";
+	echo "		}\n";
+	echo "		else {\n";
+	echo "			return true;\n";
+	echo "		}\n";
+	echo "	}\n";
+
+	echo "	function show_strenth_meter() {\n";
+	echo "		$('#pwstrength_progress').slideDown();\n";
+	echo "	}\n";
+	echo "</script>\n";
+
+	echo "<form name='frm' id='frm' method='post'>\n";
+	echo "<input type='hidden' name='action' id='action' value=''>\n";
+
+	echo "<table cellpadding='0' cellspacing='0' border='0' width='100%'>";
+	echo "<td align='left' width='90%' valign='top' nowrap><b>".$text['header-user_edit']."</b></td>\n";
+	echo "<td align='right' nowrap>\n";
+	if (permission_exists('user_add') || permission_exists('user_edit')) {
+		echo "	<input type='button' class='btn' onclick=\"window.location='users.php'\" value='".$text['button-back']."'>";
+	}
+	echo "	<input type='button' class='btn' value='".$text['button-save']."' onclick=\"document.getElementById('action').value = '".$text['button-save']."'; submit_form();\">";
+	echo "</td>\n";
+	echo "</tr>\n";
+	echo "<tr>\n";
+	echo "<td align='left' colspan='2'>\n";
+	echo "	".$text['description-user_edit']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+	echo "</table>\n";
+
+	echo "<br />\n";
+
+	echo "<table cellpadding='0' cellspacing='0' border='0' width='100%'>";
+
+	echo "	<tr>";
+	echo "		<td width='30%' class='vncellreq' valign='top'>".$text['label-username']."</td>";
+	echo "		<td width='70%' class='vtable'>";
+	if (permission_exists("user_edit")) {
+		echo "		<input type='text' class='formfld' name='username' id='username' value='".$username."' required='required'>\n";
+	}
+	else {
+		echo "		".$username."\n";
+		echo "		<input type='hidden' name='username' id='username' value='".$username."'>\n";
+	}
+	echo "		</td>";
+	echo "	</tr>";
+
+	echo "	<tr>";
+	echo "		<td class='vncell".(($action == 'add') ? 'req' : null)."' valign='top'>".$text['label-password']."</td>";
+	echo "		<td class='vtable'>";
+	echo "			<input style='display: none;' type='password'>";
+	echo "			<input type='password' autocomplete='off' class='formfld' name='password' id='password' value='' onkeypress='show_strenth_meter();' onfocus='compare_passwords();' onkeyup='compare_passwords();' onblur='compare_passwords();'>";
+	echo "			<div id='pwstrength_progress' class='pwstrength_progress'></div>";
+	echo "		</td>";
+	echo "	</tr>";
+	echo "	<tr>";
+	echo "		<td class='vncell".(($action == 'add') ? 'req' : null)."' valign='top'>".$text['label-confirm_password']."</td>";
+	echo "		<td class='vtable'>";
+	echo "			<input type='password' autocomplete='off' class='formfld' name='password_confirm' id='password_confirm' value='' onfocus='compare_passwords();' onkeyup='compare_passwords();' onblur='compare_passwords();'>";
+	echo "		</td>";
+	echo "	</tr>";
+
+	echo "	<tr>\n";
+	echo "	<td width='20%' class=\"vncell\" valign='top'>\n";
+	echo "		".$text['label-user_language']."\n";
+	echo "	</td>\n";
+	echo "	<td class=\"vtable\" align='left'>\n";
+	echo "		<select id='user_language' name='user_language' class='formfld' style=''>\n";
+	echo "		<option value=''></option>\n";
+	//get all language codes from database
+	$sql = "select * from v_languages order by language asc";
+	$prep_statement = $db->prepare(check_sql($sql));
+	$prep_statement->execute();
+	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+	foreach ($result as &$row) {
+		$language_codes[$row["code"]] = $row["language"];
+	}
+	unset($prep_statement, $result, $row);
+	foreach ($_SESSION['app']['languages'] as $code) {
+		$selected = ($code == $user_settings['domain']['language']['code']) ? "selected='selected'" : null;
+		echo "	<option value='".$code."' ".$selected.">".$language_codes[$code]." [".$code."]</option>\n";
+	}
+	echo "		</select>\n";
+	echo "		<br />\n";
+	echo "		".$text['description-user_language']."<br />\n";
+	echo "	</td>\n";
+	echo "	</tr>\n";
+
+	echo "	<tr>\n";
+	echo "	<td width='20%' class=\"vncell\" valign='top'>\n";
+	echo "		".$text['label-time_zone']."\n";
+	echo "	</td>\n";
+	echo "	<td class=\"vtable\" align='left'>\n";
+	echo "		<select id='user_time_zone' name='user_time_zone' class='formfld' style=''>\n";
+	echo "		<option value=''></option>\n";
+	//$list = DateTimeZone::listAbbreviations();
+    $time_zone_identifiers = DateTimeZone::listIdentifiers();
+	$previous_category = '';
+	$x = 0;
+	foreach ($time_zone_identifiers as $key => $row) {
+		$time_zone = explode("/", $row);
+		$category = $time_zone[0];
+		if ($category != $previous_category) {
+			if ($x > 0) {
+				echo "		</optgroup>\n";
+			}
+			echo "		<optgroup label='".$category."'>\n";
+		}
+		if ($row == $user_settings['domain']['time_zone']['name']) {
+			echo "			<option value='".$row."' selected='selected'>".$row."</option>\n";
+		}
+		else {
+			echo "			<option value='".$row."'>".$row."</option>\n";
+		}
+		$previous_category = $category;
+		$x++;
+	}
+	echo "		</select>\n";
+	echo "		<br />\n";
+	echo "		".$text['description-time_zone']."<br />\n";
+	echo "	</td>\n";
+	echo "	</tr>\n";
+
+	if ($_SESSION['user_status_display'] != "false") {
+		echo "	<tr>\n";
+		echo "	<td width='20%' class=\"vncell\" valign='top'>\n";
+		echo "		".$text['label-status']."\n";
+		echo "	</td>\n";
+		echo "	<td class=\"vtable\">\n";
+		$cmd = "'".PROJECT_PATH."/app/calls_active/v_calls_exec.php?cmd=callcenter_config+agent+set+status+".$username."@".$_SESSION['domains'][$domain_uuid]['domain_name']."+'+this.value";
+		echo "		<select id='user_status' name='user_status' class='formfld' style='' onchange=\"send_cmd($cmd);\">\n";
+		echo "			<option value=''></option>\n";
+		echo "			<option value='Available' ".(($user_status == "Available") ? "selected='selected'" : null).">".$text['option-available']."</option>\n";
+		echo "			<option value='Available (On Demand)' ".(($user_status == "Available (On Demand)") ? "selected='selected'" : null).">".$text['option-available_on_demand']."</option>\n";
+		echo "			<option value='Logged Out' ".(($user_status == "Logged Out") ? "selected='selected'" : null).">".$text['option-logged_out']."</option>\n";
+		echo "			<option value='On Break' ".(($user_status == "On Break") ? "selected='selected'" : null).">".$text['option-on_break']."</option>\n";
+		echo "			<option value='Do Not Disturb' ".(($user_status == "Do Not Disturb") ? "selected='selected'" : null).">".$text['option-do_not_disturb']."</option>\n";
+		echo "		</select>\n";
+		echo "		<br />\n";
+		echo "		".$text['description-status']."<br />\n";
+		echo "	</td>\n";
+		echo "	</tr>\n";
+	}
+
+	if ($action == 'edit' && permission_exists("user_edit")) {
+		echo "	<tr>";
+		echo "		<td class='vncell' valign='top'>".$text['label-contact']."</td>";
+		echo "		<td class='vtable'>\n";
+		$sql = " select contact_uuid, contact_organization, contact_name_given, contact_name_family, contact_nickname from v_contacts ";
+		$sql .= " where domain_uuid = '".$domain_uuid."' ";
+		$sql .= " order by contact_organization desc, contact_name_family asc, contact_name_given asc, contact_nickname asc ";
+		$prep_statement = $db->prepare(check_sql($sql));
+		$prep_statement->execute();
+		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+		unset ($prep_statement, $sql);
+		echo "<select name=\"contact_uuid\" id=\"contact_uuid\" class=\"formfld\">\n";
+		echo "<option value=\"\"></option>\n";
+		foreach($result as $row) {
+				$contact_name = array();
+				if ($row['contact_organization'] != '') { $contact_name[] = $row['contact_organization']; }
+				if ($row['contact_name_family'] != '') { $contact_name[] = $row['contact_name_family']; }
+				if ($row['contact_name_given'] != '') { $contact_name[] = $row['contact_name_given']; }
+				if ($row['contact_name_family'] == '' && $row['contact_name_family'] == '' && $row['contact_nickname'] != '') { $contact_name[] = $row['contact_nickname']; }
+				echo "<option value='".$row['contact_uuid']."' ".(($row['contact_uuid'] == $contact_uuid) ? "selected='selected'" : null).">".implode(', ', $contact_name)."</option>\n";
+		}
+		unset($sql, $result, $row_count);
+		echo "</select>\n";
+		echo "<br />\n";
+		echo $text['description-contact']."\n";
+		if (strlen($contact_uuid) > 0) {
+			echo "			<a href=\"".PROJECT_PATH."/app/contacts/contact_edit.php?id=$contact_uuid\">".$text['description-contact_view']."</a>\n";
+		}
+		echo "		</td>";
+		echo "	</tr>";
+	}
+	else if ($action == 'add' && permission_exists("user_add")) {
+		echo "	<tr>";
+		echo "		<td class='vncellreq'>".$text['label-email']."</td>";
+		echo "		<td class='vtable'><input type='text' class='formfld' name='user_email' value='".$user_email."'></td>";
+		echo "	</tr>";
+		echo "	<tr>";
+		echo "		<td class='vncell'>".$text['label-first_name']."</td>";
+		echo "		<td class='vtable'><input type='text' class='formfld' name='contact_name_given' value='".$contact_name_given."'></td>";
+		echo "	</tr>";
+		echo "	<tr>";
+		echo "		<td class='vncell'>".$text['label-last_name']."</td>";
+		echo "		<td class='vtable'><input type='text' class='formfld' name='contact_name_family' value='".$contact_name_family."'></td>";
+		echo "	</tr>";
+		echo "	<tr>";
+		echo "		<td class='vncell'>".$text['label-company_name']."</td>";
+		echo "		<td class='vtable'><input type='text' class='formfld' name='contact_organization' value='".$contact_organization."'></td>";
+		echo "	</tr>";
+	}
+
+	if ((permission_exists("user_add") && $action == 'add') || (permission_exists("user_edit") && $action == 'edit')) {
+		echo "	<tr>";
+		echo "		<td class='vncellreq' valign='top'>".$text['label-group'.(($action == 'edit') ? 's' : null)]."</td>";
+		echo "		<td class='vtable'>";
+
+		$sql = "select ";
+		$sql .= "	gu.*, g.domain_uuid as group_domain_uuid ";
+		$sql .= "from ";
+		$sql .= "	v_group_users as gu, ";
+		$sql .= "	v_groups as g ";
+		$sql .= "where ";
+		$sql .= "	gu.group_uuid = g.group_uuid ";
+		$sql .= "	and (";
+		$sql .= "		g.domain_uuid = :domain_uuid ";
+		$sql .= "		or g.domain_uuid is null ";
+		$sql .= "	) ";
+		$sql .= "	and gu.domain_uuid = :domain_uuid ";
+		$sql .= "	and gu.user_uuid = :user_uuid ";
+		$sql .= "order by ";
+		$sql .= "	g.domain_uuid desc, ";
+		$sql .= "	g.group_name asc ";
+		$prep_statement = $db->prepare(check_sql($sql));
+		$prep_statement->bindParam(':domain_uuid', $domain_uuid);
+		$prep_statement->bindParam(':user_uuid', $user_uuid);
+		$prep_statement->execute();
+		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+		$result_count = count($result);
+		if ($result_count > 0) {
+			echo "<table cellpadding='0' cellspacing='0' border='0'>\n";
+			foreach($result as $field) {
+				if (strlen($field['group_name']) > 0) {
+					echo "<tr>\n";
+					echo "	<td class='vtable' style='white-space: nowrap; padding-right: 30px;' nowrap='nowrap'>";
+					echo $field['group_name'].(($field['group_domain_uuid'] != '') ? "@".$_SESSION['domains'][$field['group_domain_uuid']]['domain_name'] : null);
+					echo "	</td>\n";
+					if ($result_count > 1) {
+						if (permission_exists('group_member_delete') || if_group("superadmin")) {
+							echo "	<td class='list_control_icons' style='width: 25px;'>\n";
+							echo "		<a href='user_edit.php?id=".$user_uuid."&domain_uuid=".$domain_uuid."&group_uuid=".$field['group_uuid']."&a=delete' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>\n";
+							echo "	</td>\n";
+						}
+					}
+					echo "</tr>\n";
+					$assigned_groups[] = $field['group_uuid'];
+				}
+			}
+			echo "</table>\n";
+		}
+		unset($sql, $prep_statement, $result, $result_count);
+
+		$sql = "select * from v_groups ";
+		$sql .= "where (domain_uuid = '".$domain_uuid."' or domain_uuid is null) ";
+		if (sizeof($assigned_groups) > 0) {
+			$sql .= "and group_uuid not in ('".implode("','",$assigned_groups)."') ";
+		}
+		$sql .= "order by domain_uuid desc, group_name asc ";
+		$prep_statement = $db->prepare(check_sql($sql));
+		$prep_statement->execute();
+		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+		$result_count = count($result);
+		if ($result_count > 0) {
+			if (isset($assigned_groups)) { echo "<br />\n"; }
+			echo "<select name='group_uuid_name' class='formfld' style='width: auto; margin-right: 3px;'>\n";
+			echo "	<option value=''></option>\n";
+			foreach($result as $field) {
+				if ($field['group_name'] == "superadmin" && !if_group("superadmin")) { continue; }	//only show the superadmin group to other superadmins
+				if ($field['group_name'] == "admin" && (!if_group("superadmin") && !if_group("admin") )) { continue; }	//only show the admin group to other admins
+				if ( !isset($assigned_groups) || (isset($assigned_groups) && !in_array($field["group_uuid"], $assigned_groups)) ) {
+					echo "	<option value='".$field['group_uuid']."|".$field['group_name']."'>".$field['group_name'].(($field['domain_uuid'] != '') ? "@".$_SESSION['domains'][$field['domain_uuid']]['domain_name'] : null)."</option>\n";
+				}
+			}
+			echo "</select>";
+			if ($action == 'edit') {
+				echo "<input type='button' class='btn' value=\"".$text['button-add']."\" onclick=\"document.getElementById('action').value = '".$text['button-add']."'; submit_form();\">\n";
+			}
+		}
+		unset($sql, $prep_statement, $result);
+
+		echo "		</td>";
+		echo "	</tr>";
+
+		if (permission_exists('user_domain')) {
+			echo "<tr>\n";
+			echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+			echo "	".$text['label-domain']."\n";
+			echo "</td>\n";
+			echo "<td class='vtable' align='left'>\n";
+			echo "    <select class='formfld' name='domain_uuid'>\n";
+			foreach ($_SESSION['domains'] as $row) {
+				echo "	<option value='".$row['domain_uuid']."' ".(($row['domain_uuid'] == $domain_uuid) ? "selected='selected'" : null).">".$row['domain_name']."</option>\n";
+			}
+			echo "    </select>\n";
+			echo "<br />\n";
+			echo $text['description-domain_name']."\n";
+			echo "</td>\n";
+			echo "</tr>\n";
+		}
+		else {
+			echo "<input type='hidden' name='domain_uuid' value='".$domain_uuid."'>";
+		}
+
+		if (file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/api/app_config.php')) {
+			echo "	<tr>";
+			echo "		<td class='vncell' valign='top'>".$text['label-api_key']."</td>";
+			echo "		<td class='vtable'>\n";
+			echo "			<input type=\"text\" class='formfld' name=\"api_key\" id='api_key' value=\"".$api_key."\" >";
+			echo "			<input type='button' class='btn' value='".$text['button-generate']."' onclick=\"getElementById('api_key').value='".uuid()."';\">";
+			if (strlen($text['description-api_key']) > 0) {
+				echo "			<br />".$text['description-api_key']."<br />\n";
+			}
+			echo "		</td>";
+			echo "	</tr>";
+		}
+
+		echo "<tr>\n";
+		echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+		echo "	".$text['label-enabled']."\n";
+		echo "</td>\n";
+		echo "<td class='vtable' align='left'>\n";
+		echo "	<select class='formfld' name='user_enabled'>\n";
+		echo "		<option value='true'>".$text['option-true']."</option>\n";
+		echo "		<option value='false' ".(($user_enabled != "true") ? "selected='selected'" : null).">".$text['option-false']."</option>\n";
+		echo "	</select>\n";
+		echo "<br />\n";
+		echo $text['description-enabled']."\n";
+		echo "</td>\n";
+		echo "</tr>\n";
+	}
+	else {
+		echo "<input type='hidden' name='domain_uuid' value='".$domain_uuid."'>";
+	}
+
+	echo "	<tr>";
+	echo "		<td colspan='2' align='right'>";
+	if ($action == 'edit') {
+		echo "		<input type='hidden' name='id' value=\"$user_uuid\">";
+		if (permission_exists("user_edit")) {
+			echo "	<input type='hidden' name='username_old' value=\"$username\">";
+		}
+	}
+	echo "			<br>";
+	echo "			<input type='button' class='btn' value='".$text['button-save']."' onclick=\"document.getElementById('action').value = '".$text['button-save']."'; if (check_password_strength(document.getElementById('password').value)) { submit_form(); }\">";
+	echo "		</td>";
+	echo "	</tr>";
+	echo "</table>";
+	echo "<br><br>";
+	echo "</form>";
+
+	echo "<script>\n";
+	//capture enter key to submit form
+		echo "	$(window).keypress(function(event){\n";
+		echo "		if (event.which == 13) { submit_form(); }\n";
+		echo "	});\n";
+	// convert password fields to text
+		echo "	function submit_form() {\n";
+		echo "		$('input:password').css('visibility','hidden');\n";
+		echo "		$('input:password').attr({type:'text'});\n";
+		echo "		$('form#frm').submit();\n";
+		echo "	}\n";
+	echo "</script>\n";
+
+	if (permission_exists("user_edit") && permission_exists('user_setting_view') && $action == 'edit') {
+		require "user_settings.php";
+	}
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 1 - 1
core/users/user_setting_delete.php

@@ -64,7 +64,7 @@
 		$_SESSION["message_mood"] = "negative";
 	}
 
-	header("Location: usersupdate.php?id=".check_str($_REQUEST["user_uuid"]));
+	header("Location: user_edit.php?id=".check_str($_REQUEST["user_uuid"]));
 	exit;
 
 ?>

+ 2 - 2
core/users/user_setting_edit.php

@@ -324,7 +324,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
 				if ($action == "add") {
 					$_SESSION["message"] = $text['message-add'];
 				}
-				header("Location: usersupdate.php?id=".$user_uuid);
+				header("Location: user_edit.php?id=".$user_uuid);
 				return;
 		} //if ($_POST["persistformvar"] != "true")
 } //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
@@ -373,7 +373,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
 	}
 	echo "</b></td>\n";
 	echo "<td width='70%' align='right' valign='top'>";
-	echo "	<input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='usersupdate.php?id=$user_uuid'\" value='".$text['button-back']."'>";
+	echo "	<input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='user_edit.php?id=$user_uuid'\" value='".$text['button-back']."'>";
 	echo "	<input type='button' class='btn' value='".$text['button-save']."' onclick='submit_form();'>\n";
 	echo "</td>\n";
 	echo "</tr>\n";

+ 1 - 1
core/users/user_settings.php

@@ -53,7 +53,7 @@
 			unset($sql);
 
 			$_SESSION["message"] = $text['message-update'];
-			header("Location: usersupdate.php?id=".$user_uuid);
+			header("Location: user_edit.php?id=".$user_uuid);
 			exit;
 		}
 	}

+ 21 - 11
core/users/users.php

@@ -17,7 +17,7 @@
 
 	The Initial Developer of the Original Code is
 	Mark J Crane <[email protected]>
-	Portions created by the Initial Developer are Copyright (C) 2008-2015
+	Portions created by the Initial Developer are Copyright (C) 2008-2016
 	the Initial Developer. All Rights Reserved.
 
 	Contributor(s):
@@ -25,9 +25,10 @@
 */
 
 //includes
-	require_once "root.php";
+	include "root.php";
 	require_once "resources/require.php";
 	require_once "resources/check_auth.php";
+	require_once "resources/paging.php";
 
 //check permissions
 	if (permission_exists("user_view") || if_group("superadmin")) {
@@ -38,8 +39,13 @@
 		exit;
 	}
 
-//additional includes
-	require_once "resources/paging.php";
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//include the header
+	require_once "resources/header.php";
+	$document['title'] = $text['title-user_manager'];
 
 //set the variables
 	$order_by = check_str($_GET["order_by"]);
@@ -145,11 +151,11 @@
 	echo "<td align='right' nowrap='nowrap'>";
 	if (permission_exists('user_all')) {
 		if ($_GET['showall'] == 'true') {
-			echo "<input type='button' class='btn' value='".$text['button-back']."' onclick=\"window.location='index.php';\">\n";
+			echo "<input type='button' class='btn' value='".$text['button-back']."' onclick=\"window.location='users.php';\">\n";
 			echo "<input type='hidden' name='showall' value='true'>";
 		}
 		else {
-			echo "<input type='button' class='btn' value='".$text['button-show_all']."' onclick=\"window.location='index.php?showall=true';\">\n";
+			echo "<input type='button' class='btn' value='".$text['button-show_all']."' onclick=\"window.location='users.php?showall=true';\">\n";
 		}
 	}
 	echo 	"<input type='text' class='txt' style='width: 150px; margin-right: 3px;' name='search_value' value=\"".$search_value."\">";
@@ -184,7 +190,7 @@
 	echo "<td class='list_control_icons'>";
 	if (permission_exists('user_add')) {
 		if ($_SESSION['limit']['users']['numeric'] == '' || ($_SESSION['limit']['users']['numeric'] != '' && $total_users < $_SESSION['limit']['users']['numeric'])) {
-			echo "<a href='signup.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>";
+			echo "<a href='user_edit.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>";
 		}
 	}
 	echo "</td>\n";
@@ -195,14 +201,14 @@
 			if (if_superadmin($superadmins, $row['user_uuid']) && !if_group("superadmin")) {
 				//hide
 			} else {
-				$tr_link = (permission_exists('user_edit')) ? "href='usersupdate.php?id=".$row['user_uuid']."'" : null;
+				$tr_link = (permission_exists('user_edit')) ? "href='user_edit.php?id=".$row['user_uuid']."'" : null;
 				echo "<tr ".$tr_link.">\n";
 				if (permission_exists('user_all') && $_GET['showall'] == 'true') {
 					echo "	<td valign='top' class='".$row_style[$c]."'>".$_SESSION['domains'][$row['domain_uuid']]['domain_name']."</td>\n";
 				}
 				echo "	<td valign='top' class='".$row_style[$c]."'>";
 				if (permission_exists('user_edit')) {
-					echo "<a href='usersupdate.php?id=".$row['user_uuid']."'>".$row['username']."</a>";
+					echo "<a href='user_edit.php?id=".$row['user_uuid']."'>".$row['username']."</a>";
 				}
 				else {
 					echo $row['username'];
@@ -223,11 +229,11 @@
 				echo "&nbsp;</td>\n";
 				echo "	<td valign='top' align='right' class='tr_link_void'>";
 				if (permission_exists('user_edit')) {
-					echo "<a href='usersupdate.php?id=".$row['user_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
+					echo "<a href='user_edit.php?id=".$row['user_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
 				}
 				if (permission_exists('user_delete')) {
 					if ($_SESSION["user"]["user_uuid"] != $row['user_uuid']) {
-						echo "<a href='userdelete.php?id=".$row['user_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">".$v_link_label_delete."</a>";
+						echo "<a href='user_delete.php?id=".$row['user_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">".$v_link_label_delete."</a>";
 					}
 					else {
 						echo "<span onclick=\"alert('".$text['message-cannot_delete_own_account']."');\">".str_replace("list_control_icon", "list_control_icon_disabled", $v_link_label_delete)."</span>";
@@ -248,4 +254,8 @@
 	echo $paging_controls."\n";
 	echo "<br /><br />\n";
 
+//include the footer
+	include "resources/footer.php";
+
+
 ?>

+ 0 - 823
core/users/usersupdate.php

@@ -1,823 +0,0 @@
-<?php
-/*
-	FusionPBX
-	Version: MPL 1.1
-
-	The contents of this file are subject to the Mozilla Public License Version
-	1.1 (the "License"); you may not use this file except in compliance with
-	the License. You may obtain a copy of the License at
-	http://www.mozilla.org/MPL/
-
-	Software distributed under the License is distributed on an "AS IS" basis,
-	WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-	for the specific language governing rights and limitations under the
-	License.
-
-	The Original Code is FusionPBX
-
-	The Initial Developer of the Original Code is
-	Mark J Crane <[email protected]>
-	Portions created by the Initial Developer are Copyright (C) 2008-2013
-	the Initial Developer. All Rights Reserved.
-
-	Contributor(s):
-	Mark J Crane <[email protected]>
-	Luis Daniel Lucio Quiroz <[email protected]>
-*/
-
-//includes
-	include "root.php";
-	require_once "resources/require.php";
-	require_once "resources/check_auth.php";
-
-//check permisions
-	if (permission_exists("user_add") ||
-		permission_exists("user_edit") ||
-		permission_exists("user_delete") ||
-		if_group("superadmin")) {
-		//access allowed
-	}
-	else {
-		echo "access denied";
-		return;
-	}
-
-//add multi-lingual support
-	$language = new text;
-	$text = $language->get();
-
-//get data from the db
-	if (strlen($_REQUEST["id"]) > 0) {
-		$user_uuid = $_REQUEST["id"];
-	}
-
-//required to be a superadmin to update an account that is a member of the superadmin group
-	$superadmins = superadmin_list($db);
-	if (if_superadmin($superadmins, $user_uuid)) {
-		if (!if_group("superadmin")) {
-			echo "access denied";
-			exit;
-		}
-	}
-
-//delete the group from the user
-	if ($_GET["a"] == "delete" && permission_exists("user_delete")) {
-		//set the variables
-			$group_uuid = check_str($_GET["group_uuid"]);
-		//delete the group from the users
-			$sql = "delete from v_group_users where 1 = 1 ";
-			$sql .= "and group_uuid = '".$group_uuid."' ";
-			$sql .= "and user_uuid = '".$user_uuid."' ";
-			$db->exec(check_sql($sql));
-		//redirect the user
-			$_SESSION["message"] = $text['message-update'];
-			header("Location: usersupdate.php?id=".$user_uuid);
-			return;
-	}
-
-//get the user settings
-	$sql = "select * from v_user_settings ";
-	$sql .= "where user_uuid = '".$user_uuid."' ";
-	$sql .= "and user_setting_enabled = 'true' ";
-	$prep_statement = $db->prepare($sql);
-	if ($prep_statement) {
-		$prep_statement->execute();
-		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-		foreach($result as $row) {
-			$name = $row['user_setting_name'];
-			$category = $row['user_setting_category'];
-			$subcategory = $row['user_setting_subcategory'];
-			if (strlen($subcategory) == 0) {
-				//$$category[$name] = $row['domain_setting_value'];
-				$user_settings[$category][$name] = $row['user_setting_value'];
-			}
-			else {
-				$user_settings[$category][$subcategory][$name] = $row['user_setting_value'];
-			}
-		}
-	}
-
-if (count($_POST) > 0 && $_POST["persistform"] != "1") {
-
-	//get the HTTP values and set as variables
-		$user_uuid = $_REQUEST["id"];
-		$domain_uuid = check_str($_POST["domain_uuid"]);
-		$username_old = check_str($_POST["username_old"]);
-		$username = check_str($_POST["username"]);
-		$password = check_str($_POST["password"]);
-		$password_confirm = check_str($_POST["password_confirm"]);
-		$user_status = check_str($_POST["user_status"]);
-		$user_language = check_str($_POST["user_language"]);
-		$user_time_zone = check_str($_POST["user_time_zone"]);
-		$contact_uuid = check_str($_POST["contact_uuid"]);
-		$group_member = check_str($_POST["group_member"]);
-		$user_enabled = check_str($_POST["user_enabled"]);
-		$api_key = check_str($_POST["api_key"]);
-
-	//check required values
-		if ($username != $username_old) {
-			$sql = "select count(*) as num_rows from v_users where domain_uuid = '".$domain_uuid."' and username = '".$username."'";
-			$prep_statement = $db->prepare(check_sql($sql));
-			if ($prep_statement) {
-				$prep_statement->execute();
-				$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
-				if (0 < $row['num_rows']) {
-					$msg_error = $text['message-username_exists'];
-				}
-			}
-			unset($sql);
-		}
-
-		if ($password != $password_confirm) { $msg_error = $text['message-password_mismatch']; }
-
-		if ($msg_error != '') {
-			$_SESSION["message"] = $msg_error;
-			$_SESSION["message_mood"] = 'negative';
-			header("Location: usersupdate.php?id=".$user_uuid);
-			exit;
-		}
-
-		if (!check_password_strength($password, $text)) {
-			header("Location: usersupdate.php?id=".$user_uuid);
-			exit;
-		}
-
-	//check to see if user language is set
-		$sql = "select count(*) as num_rows from v_user_settings ";
-		$sql .= "where user_setting_category = 'domain' ";
-		$sql .= "and user_setting_subcategory = 'language' ";
-		$sql .= "and user_uuid = '".$user_uuid."' ";
-		$prep_statement = $db->prepare(check_sql($sql));
-		if ($prep_statement) {
-			$prep_statement->execute();
-			$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
-			if ($row['num_rows'] == 0) {
-				$user_setting_uuid = uuid();
-				$sql = "insert into v_user_settings ";
-				$sql .= "(";
-				$sql .= "domain_uuid, ";
-				$sql .= "user_setting_uuid, ";
-				$sql .= "user_setting_category, ";
-				$sql .= "user_setting_subcategory, ";
-				$sql .= "user_setting_name, ";
-				$sql .= "user_setting_value, ";
-				$sql .= "user_setting_enabled, ";
-				$sql .= "user_uuid ";
-				$sql .= ") ";
-				$sql .= "values ";
-				$sql .= "(";
-				$sql .= "'".$domain_uuid."', ";
-				$sql .= "'".$user_setting_uuid."', ";
-				$sql .= "'domain', ";
-				$sql .= "'language', ";
-				$sql .= "'code', ";
-				$sql .= "'".$user_language."', ";
-				$sql .= "'true', ";
-				$sql .= "'".$user_uuid."' ";
-				$sql .= ")";
-				$db->exec(check_sql($sql));
-			}
-			else {
-				if (strlen($user_language) == 0) {
-					$sql = "delete from v_user_settings ";
-					$sql .= "where user_setting_category = 'domain' ";
-					$sql .= "and user_setting_subcategory = 'language' ";
-					$sql .= "and user_uuid = '".$user_uuid."' ";
-					$db->exec(check_sql($sql));
-					unset($sql);
-				}
-				else {
-					$sql  = "update v_user_settings set ";
-					$sql .= "user_setting_value = '".$user_language."', ";
-					$sql .= "user_setting_enabled = 'true' ";
-					$sql .= "where user_setting_category = 'domain' ";
-					$sql .= "and user_setting_subcategory = 'language' ";
-					$sql .= "and user_uuid = '".$user_uuid."' ";
-					$db->exec(check_sql($sql));
-				}
-			}
-		}
-
-	//get the number of rows in v_user_settings
-		$sql = "select count(*) as num_rows from v_user_settings ";
-		$sql .= "where user_setting_category = 'domain' ";
-		$sql .= "and user_setting_subcategory = 'time_zone' ";
-		$sql .= "and user_uuid = '".$user_uuid."' ";
-		$prep_statement = $db->prepare(check_sql($sql));
-		if ($prep_statement) {
-			$prep_statement->execute();
-			$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
-			if ($row['num_rows'] == 0) {
-				$user_setting_uuid = uuid();
-				$sql = "insert into v_user_settings ";
-				$sql .= "(";
-				$sql .= "domain_uuid, ";
-				$sql .= "user_setting_uuid, ";
-				$sql .= "user_setting_category, ";
-				$sql .= "user_setting_subcategory, ";
-				$sql .= "user_setting_name, ";
-				$sql .= "user_setting_value, ";
-				$sql .= "user_setting_enabled, ";
-				$sql .= "user_uuid ";
-				$sql .= ") ";
-				$sql .= "values ";
-				$sql .= "(";
-				$sql .= "'".$domain_uuid."', ";
-				$sql .= "'".$user_setting_uuid."', ";
-				$sql .= "'domain', ";
-				$sql .= "'time_zone', ";
-				$sql .= "'name', ";
-				$sql .= "'".$user_time_zone."', ";
-				$sql .= "'true', ";
-				$sql .= "'".$user_uuid."' ";
-				$sql .= ")";
-				$db->exec(check_sql($sql));
-				unset($sql);
-			}
-			else {
-				if (strlen($user_time_zone) == 0) {
-					$sql = "delete from v_user_settings ";
-					$sql .= "where user_setting_category = 'domain' ";
-					$sql .= "and user_setting_subcategory = 'time_zone' ";
-					$sql .= "and user_uuid = '".$user_uuid."' ";
-					$db->exec(check_sql($sql));
-					unset($sql);
-				}
-				else {
-					$sql  = "update v_user_settings set ";
-					$sql .= "user_setting_value = '".$user_time_zone."', ";
-					$sql .= "user_setting_enabled = 'true' ";
-					$sql .= "where user_setting_category = 'domain' ";
-					$sql .= "and user_setting_subcategory = 'time_zone' ";
-					$sql .= "and user_uuid = '".$user_uuid."' ";
-					$db->exec(check_sql($sql));
-					unset($sql);
-				}
-			}
-		}
-
-	//assign the user to the group
-		if (strlen($_REQUEST["group_uuid_name"]) > 0) {
-			$group_data = explode('|', $_REQUEST["group_uuid_name"]);
-			$group_uuid = $group_data[0];
-			$group_name = $group_data[1];
-			$sql_insert = "insert into v_group_users ";
-			$sql_insert .= "(";
-			$sql_insert .= "group_user_uuid, ";
-			$sql_insert .= "domain_uuid, ";
-			$sql_insert .= "group_name, ";
-			$sql_insert .= "group_uuid, ";
-			$sql_insert .= "user_uuid ";
-			$sql_insert .= ") ";
-			$sql_insert .= "values ";
-			$sql_insert .= "( ";
-			$sql_insert .= "'".uuid()."', ";
-			$sql_insert .= "'".$domain_uuid."', ";
-			$sql_insert .= "'".$group_name."', ";
-			$sql_insert .= "'".$group_uuid."', ";
-			$sql_insert .= "'".$user_uuid."' ";
-			$sql_insert .= ")";
-			//only a superadmin can add other superadmins or admins, admins can only add other admins
-			switch ($group_name) {
-				case "superadmin" :
-					if (!if_group("superadmin")) { break; }
-				case "admin" :
-					if (!if_group("superadmin") && !if_group("admin")) { break; }
-				default :
-					$db->exec($sql_insert);
-			}
-		}
-
-	//change domain_uuid in group users and user settings tables, and unassign any foreign domain groups
-		if (permission_exists('user_domain')) {
-			$sql = "update v_group_users set ";
-			$sql .= "domain_uuid = '".$domain_uuid."' ";
-			$sql .= "where user_uuid = '".$user_uuid."' ";
-			$db->exec(check_sql($sql));
-			unset($sql);
-
-			$sql = "update v_user_settings set ";
-			$sql .= "domain_uuid = '".$domain_uuid."' ";
-			$sql .= "where user_uuid = '".$user_uuid."' ";
-			$db->exec(check_sql($sql));
-			unset($sql);
-
-			$sql = "delete from v_group_users where ";
-			$sql .= "domain_uuid = '".$domain_uuid."' ";
-			$sql .= "and user_uuid = '".$user_uuid."' ";
-			$sql .= "and group_uuid not in (";
-			$sql .= "	select group_uuid from v_groups where domain_uuid = '".$domain_uuid."' or domain_uuid is null ";
-			$sql .= ") ";
-			$db->exec(check_sql($sql));
-			unset($sql);
-		}
-
-	//sql update
-		$sql  = "update v_users set ";
-		if (permission_exists('user_domain')) {
-			$sql .= "domain_uuid = '".$domain_uuid."', ";
-		}
-		if (strlen($username) > 0 && $username != $username_old) {
-			$sql .= "username = '".$username."', ";
-		}
-		if (strlen($password) > 0 && $password_confirm == $password) {
-			//salt used with the password to create a one way hash
-				$salt = uuid();
-			//set the password
-				$sql .= "password = '".md5($salt.$password)."', ";
-				$sql .= "salt = '".$salt."', ";
-		}
-		if (strlen($api_key) > 0) {
-			$sql .= "api_key = '".$api_key."', ";
-		}
-		else {
-			$sql .= "api_key = null, ";
-		}
-		$sql .= "user_status = '".$user_status."', ";
-		$sql .= "user_enabled = '".$user_enabled."', ";
-		if (strlen($contact_uuid) == 0) {
-			$sql .= "contact_uuid = null ";
-		}
-		else {
-			$sql .= "contact_uuid = '".$contact_uuid."' ";
-		}
-		$sql .= "where ";
-		if (!permission_exists('user_domain')) {
-			$sql .= "domain_uuid = '".$domain_uuid."' and ";
-		}
-		$sql .= "user_uuid = '".$user_uuid."' ";
-		$db->exec(check_sql($sql));
-
-
-	// if call center installed
-	if (file_exists($_SERVER["PROJECT_ROOT"]."/app/call_center/app_config.php")) {
-
-		// update agent and tiers tables
-			$sql  = "update v_call_center_agents set agent_name = '".$username."' where domain_uuid = '".$domain_uuid."' and agent_name = '".$username_old."' ";
-			$db->exec(check_sql($sql));
-			unset($sql);
-
-			$sql  = "update v_call_center_tiers set agent_name = '".$username."' where domain_uuid = '".$domain_uuid."' and agent_name = '".$username_old."' ";
-			$db->exec(check_sql($sql));
-			unset($sql);
-
-		//syncrhonize the configuration
-			save_call_center_xml();
-
-		//update the user_status
-			$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
-			$switch_cmd .= "callcenter_config agent set status ".$username."@".$_SESSION['domains'][$domain_uuid]['domain_name']." '".$user_status."'";
-			$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
-
-		//update the user state
-			$cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domains'][$domain_uuid]['domain_name']." Waiting";
-			$response = event_socket_request($fp, $cmd);
-
-	}
-
-	//redirect the browser
-		$_SESSION["message"] = $text['message-update'];
-		if ($_REQUEST['action'] == $text['button-add']) {
-			header("Location: usersupdate.php?id=".$user_uuid);
-		}
-		else {
-			header("Location: index.php");
-		}
-		return;
-
-}
-
-
-//pre-populate the form
-	$sql = "select * from v_users ";
-	$sql .= "where user_uuid = '".$user_uuid."' ";
- 	if (!permission_exists('user_all')) {
- 		$sql .= "and domain_uuid = '".$domain_uuid."' ";
- 	}
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	foreach ($result as &$row) {
-		$domain_uuid = $row["domain_uuid"];
-		$user_uuid = $row["user_uuid"];
-		$username = $row["username"];
-		$password = $row["password"];
-		$api_key = $row["api_key"];
-		$user_enabled = $row["user_enabled"];
-		$contact_uuid = $row["contact_uuid"];
-		$user_status = $row["user_status"];
-	}
-
-//include the header
-	require_once "resources/header.php";
-	$document['title'] = $text['title-user_edit'];
-
-//show the content
-	$table_width ='width="100%"';
-
-	echo "<script>\n";
-	echo "	function compare_passwords() {\n";
-	echo "		if (document.getElementById('password') === document.activeElement || document.getElementById('password_confirm') === document.activeElement) {\n";
-	echo "			if ($('#password').val() != '' || $('#password_confirm').val() != '') {\n";
-	echo "				if ($('#password').val() != $('#password_confirm').val()) {\n";
-	echo "					$('#password').removeClass('formfld_highlight_good');\n";
-	echo "					$('#password_confirm').removeClass('formfld_highlight_good');\n";
-	echo "					$('#password').addClass('formfld_highlight_bad');\n";
-	echo "					$('#password_confirm').addClass('formfld_highlight_bad');\n";
-	echo "				}\n";
-	echo "				else {\n";
-	echo "					$('#password').removeClass('formfld_highlight_bad');\n";
-	echo "					$('#password_confirm').removeClass('formfld_highlight_bad');\n";
-	echo "					$('#password').addClass('formfld_highlight_good');\n";
-	echo "					$('#password_confirm').addClass('formfld_highlight_good');\n";
-	echo "				}\n";
-	echo "			}\n";
-	echo "		}\n";
-	echo "		else {\n";
-	echo "			$('#password').removeClass('formfld_highlight_bad');\n";
-	echo "			$('#password_confirm').removeClass('formfld_highlight_bad');\n";
-	echo "			$('#password').removeClass('formfld_highlight_good');\n";
-	echo "			$('#password_confirm').removeClass('formfld_highlight_good');\n";
-	echo "		}\n";
-	echo "	}\n";
-
-	$req['length'] = $_SESSION['security']['password_length']['numeric'];
-	$req['number'] = ($_SESSION['security']['password_number']['boolean'] == 'true') ? true : false;
-	$req['lowercase'] = ($_SESSION['security']['password_lowercase']['boolean'] == 'true') ? true : false;
-	$req['uppercase'] = ($_SESSION['security']['password_uppercase']['boolean'] == 'true') ? true : false;
-	$req['special'] = ($_SESSION['security']['password_special']['boolean'] == 'true') ? true : false;
-
-	echo "	function check_password_strength(pwd) {\n";
-	echo "		if ($('#password').val() != '' || $('#password_confirm').val() != '') {\n";
-	echo "			var msg_errors = [];\n";
-	if (is_numeric($req['length']) && $req['length'] != 0) {
-		echo "		var re = /.{".$req['length'].",}/;\n"; //length
-		echo "		if (!re.test(pwd)) { msg_errors.push('".$req['length']."+ ".$text['label-characters']."'); }\n";
-	}
-	if ($req['number']) {
-		echo "		var re = /(?=.*[\d])/;\n";  //number
-		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-numbers']."'); }\n";
-	}
-	if ($req['lowercase']) {
-		echo "		var re = /(?=.*[a-z])/;\n";  //lowercase
-		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-lowercase_letters']."'); }\n";
-	}
-	if ($req['uppercase']) {
-		echo "		var re = /(?=.*[A-Z])/;\n";  //uppercase
-		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-uppercase_letters']."'); }\n";
-	}
-	if ($req['special']) {
-		echo "		var re = /(?=.*[\W])/;\n";  //special
-		echo "		if (!re.test(pwd)) { msg_errors.push('1+ ".$text['label-special_characters']."'); }\n";
-	}
-	echo "			if (msg_errors.length > 0) {\n";
-	echo "				var msg = '".$text['message-password_requirements'].": ' + msg_errors.join(', ');\n";
-	echo "				display_message(msg, 'negative', '6000');\n";
-	echo "				return false;\n";
-	echo "			}\n";
-	echo "			else {\n";
-	echo "				return true;\n";
-	echo "			}\n";
-	echo "		}\n";
-	echo "		else {\n";
-	echo "			return true;\n";
-	echo "		}\n";
-	echo "	}\n";
-
-	echo "	function show_strenth_meter() {\n";
-	echo "		$('#pwstrength_progress').slideDown();\n";
-	echo "	}\n";
-	echo "</script>\n";
-
-	echo "<form name='frm' id='frm' method='post' action=''>\n";
-	echo "<input type='hidden' name='action' id='action' value=''>\n";
-	echo "<table $table_width cellpadding='0' cellspacing='0' border='0'>";
-	echo "<td align='left' width='90%' nowrap><b>".$text['header-user_edit']."</b></td>\n";
-	echo "<td align='right' nowrap>\n";
-	echo "	<input type='button' class='btn' onclick=\"window.location='index.php'\" value='".$text['button-back']."'>";
-	echo "	<input type='button' class='btn' value='".$text['button-save']."' onclick=\"document.getElementById('action').value = '".$text['button-save']."'; submit_form();\">";
-	echo "</td>\n";
-	echo "</tr>\n";
-	echo "<tr>\n";
-	echo "<td align='left' colspan='2'>\n";
-	echo "	".$text['description-user_edit']."\n";
-	echo "</td>\n";
-	echo "</tr>\n";
-	echo "</table>\n";
-
-	echo "<br />\n";
-
-	echo "<table $table_width cellpadding='0' cellspacing='0' border='0'>";
-	echo "<tr>\n";
-	echo "	<th class='th' colspan='2' align='left'>".$text['label-user_info']."</th>\n";
-	echo "</tr>\n";
-
-	echo "	<tr>";
-	echo "		<td width='30%' class='vncellreq' valign='top'>".$text['label-username']."</td>";
-	echo "		<td width='70%' class='vtable'>";
-	if (if_group("admin") || if_group("superadmin")) {
-		echo "		<input type='text' class='formfld' name='username' id='username' value='".$username."' required='required'>";
-	}
-	else {
-		echo "		".$username;
-	}
-	echo "		</td>";
-	echo "	</tr>";
-
-	echo "	<tr>";
-	echo "		<td class='vncell' valign='top'>".$text['label-password']."</td>";
-	echo "		<td class='vtable'>";
-	echo "			<input style='display: none;' type='password'>";
-	echo "			<input type='password' autocomplete='off' class='formfld' name='password' id='password' value='' onkeypress='show_strenth_meter();' onfocus='compare_passwords();' onkeyup='compare_passwords();' onblur='compare_passwords();'>";
-	echo "			<div id='pwstrength_progress' class='pwstrength_progress'></div>";
-	echo "		</td>";
-	echo "	</tr>";
-	echo "	<tr>";
-	echo "		<td class='vncell' valign='top'>".$text['label-confirm_password']."</td>";
-	echo "		<td class='vtable'>";
-	echo "			<input type='password' autocomplete='off' class='formfld' name='password_confirm' id='password_confirm' value='' onfocus='compare_passwords();' onkeyup='compare_passwords();' onblur='compare_passwords();'>";
-	echo "		</td>";
-	echo "	</tr>";
-
-	if (permission_exists('user_domain')) {
-		echo "<tr>\n";
-		echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
-		echo "	".$text['label-domain']."\n";
-		echo "</td>\n";
-		echo "<td class='vtable' align='left'>\n";
-		echo "    <select class='formfld' name='domain_uuid'>\n";
-		foreach ($_SESSION['domains'] as $row) {
-			echo "	<option value='".$row['domain_uuid']."' ".(($row['domain_uuid'] == $domain_uuid) ? "selected='selected'" : null).">".$row['domain_name']."</option>\n";
-		}
-		echo "    </select>\n";
-		echo "<br />\n";
-		echo $text['description-domain_name']."\n";
-		echo "</td>\n";
-		echo "</tr>\n";
-	}
-	else {
-		echo "<input type='hidden' name='domain_uuid' value='".$domain_uuid."'>";
-	}
-
-	echo "	<tr>";
-	echo "		<td class='vncellreq' valign='top'>".$text['label-groups']."</td>";
-	echo "		<td class='vtable'>";
-
-	$sql = "select ";
-	$sql .= "	gu.*, g.domain_uuid as group_domain_uuid ";
-	$sql .= "from ";
-	$sql .= "	v_group_users as gu, ";
-	$sql .= "	v_groups as g ";
-	$sql .= "where ";
-	$sql .= "	gu.group_uuid = g.group_uuid ";
-	$sql .= "	and (";
-	$sql .= "		g.domain_uuid = :domain_uuid ";
-	$sql .= "		or g.domain_uuid is null ";
-	$sql .= "	) ";
-	$sql .= "	and gu.domain_uuid = :domain_uuid ";
-	$sql .= "	and gu.user_uuid = :user_uuid ";
-	$sql .= "order by ";
-	$sql .= "	g.domain_uuid desc, ";
-	$sql .= "	g.group_name asc ";
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->bindParam(':domain_uuid', $domain_uuid);
-	$prep_statement->bindParam(':user_uuid', $user_uuid);
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	$result_count = count($result);
-	if ($result_count > 0) {
-		echo "<table cellpadding='0' cellspacing='0' border='0'>\n";
-		foreach($result as $field) {
-			if (strlen($field['group_name']) > 0) {
-				echo "<tr>\n";
-				echo "	<td class='vtable' style='white-space: nowrap; padding-right: 30px;' nowrap='nowrap'>";
-				echo $field['group_name'].(($field['group_domain_uuid'] != '') ? "@".$_SESSION['domains'][$field['group_domain_uuid']]['domain_name'] : null);
-				echo "	</td>\n";
-				if ($result_count > 1) {
-					if (permission_exists('group_member_delete') || if_group("superadmin")) {
-						echo "	<td class='list_control_icons' style='width: 25px;'>\n";
-						echo "		<a href='usersupdate.php?id=".$user_uuid."&domain_uuid=".$domain_uuid."&group_uuid=".$field['group_uuid']."&a=delete' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>\n";
-						echo "	</td>\n";
-					}
-				}
-				echo "</tr>\n";
-				$assigned_groups[] = $field['group_uuid'];
-			}
-		}
-		echo "</table>\n";
-	}
-	unset($sql, $prep_statement, $result, $result_count);
-
-	$sql = "select * from v_groups ";
-	$sql .= "where (domain_uuid = '".$domain_uuid."' or domain_uuid is null) ";
-	if (sizeof($assigned_groups) > 0) {
-		$sql .= "and group_uuid not in ('".implode("','",$assigned_groups)."') ";
-	}
-	$sql .= "order by domain_uuid desc, group_name asc ";
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	$result_count = count($result);
-	if ($result_count > 0) {
-		if (isset($assigned_groups)) { echo "<br />\n"; }
-		echo "<select name='group_uuid_name' class='formfld' style='width: auto; margin-right: 3px;'>\n";
-		echo "	<option value=''></option>\n";
-		foreach($result as $field) {
-			if ($field['group_name'] == "superadmin" && !if_group("superadmin")) { continue; }	//only show the superadmin group to other superadmins
-			if ($field['group_name'] == "admin" && (!if_group("superadmin") && !if_group("admin") )) { continue; }	//only show the admin group to other admins
-			if ( !isset($assigned_groups) || (isset($assigned_groups) && !in_array($field["group_uuid"], $assigned_groups)) ) {
-				echo "	<option value='".$field['group_uuid']."|".$field['group_name']."'>".$field['group_name'].(($field['domain_uuid'] != '') ? "@".$_SESSION['domains'][$field['domain_uuid']]['domain_name'] : null)."</option>\n";
-			}
-		}
-		echo "</select>";
-		echo "<input type='button' class='btn' value=\"".$text['button-add']."\" onclick=\"document.getElementById('action').value = '".$text['button-add']."'; submit_form();\">\n";
-	}
-	unset($sql, $prep_statement, $result);
-
-	echo "		</td>";
-	echo "	</tr>";
-	echo "</table>";
-
-	echo "<br>";
-	echo "<br>";
-
-	echo "<table $table_width cellpadding='0' cellspacing='0'>";
-	echo "	<tr>\n";
-	echo "	<th class='th' colspan='2' align='left'>".$text['label-additional_info']."</th>\n";
-	echo "	</tr>\n";
-
-	echo "	<tr>";
-	echo "		<td width='30%' class='vncell' valign='top'>".$text['label-contact']."</td>";
-	echo "		<td width='70%' class='vtable'>\n";
-	$sql = " select contact_uuid, contact_organization, contact_name_given, contact_name_family, contact_nickname from v_contacts ";
-	$sql .= " where domain_uuid = '".$domain_uuid."' ";
-	$sql .= " order by contact_organization desc, contact_name_family asc, contact_name_given asc, contact_nickname asc ";
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	unset ($prep_statement, $sql);
-	echo "<select name=\"contact_uuid\" id=\"contact_uuid\" class=\"formfld\">\n";
-	echo "<option value=\"\"></option>\n";
-	foreach($result as $row) {
-			$contact_name = array();
-			if ($row['contact_organization'] != '') { $contact_name[] = $row['contact_organization']; }
-			if ($row['contact_name_family'] != '') { $contact_name[] = $row['contact_name_family']; }
-			if ($row['contact_name_given'] != '') { $contact_name[] = $row['contact_name_given']; }
-			if ($row['contact_name_family'] == '' && $row['contact_name_family'] == '' && $row['contact_nickname'] != '') { $contact_name[] = $row['contact_nickname']; }
-			echo "<option value='".$row['contact_uuid']."' ".(($row['contact_uuid'] == $contact_uuid) ? "selected='selected'" : null).">".implode(', ', $contact_name)."</option>\n";
-	}
-	unset($sql, $result, $row_count);
-	echo "</select>\n";
-	echo "<br />\n";
-	echo $text['description-contact']."\n";
-	if (strlen($contact_uuid) > 0) {
-		echo "			<a href=\"".PROJECT_PATH."/app/contacts/contact_edit.php?id=$contact_uuid\">".$text['description-contact_view']."</a>\n";
-	}
-	echo "		</td>";
-	echo "	</tr>";
-
-	if ($_SESSION['user_status_display'] == "false") {
-		//hide the user_status when it is set to false
-	}
-	else {
-		echo "	<tr>\n";
-		echo "	<td width='20%' class=\"vncell\" valign='top'>\n";
-		echo "		".$text['label-status']."\n";
-		echo "	</td>\n";
-		echo "	<td class=\"vtable\">\n";
-		$cmd = "'".PROJECT_PATH."/app/calls_active/v_calls_exec.php?cmd=callcenter_config+agent+set+status+".$username."@".$_SESSION['domains'][$domain_uuid]['domain_name']."+'+this.value";
-		echo "		<select id='user_status' name='user_status' class='formfld' style='' onchange=\"send_cmd($cmd);\">\n";
-		echo "			<option value=''></option>\n";
-		echo "			<option value='Available' ".(($user_status == "Available") ? "selected='selected'" : null).">".$text['option-available']."</option>\n";
-		echo "			<option value='Available (On Demand)' ".(($user_status == "Available (On Demand)") ? "selected='selected'" : null).">".$text['option-available_on_demand']."</option>\n";
-		echo "			<option value='Logged Out' ".(($user_status == "Logged Out") ? "selected='selected'" : null).">".$text['option-logged_out']."</option>\n";
-		echo "			<option value='On Break' ".(($user_status == "On Break") ? "selected='selected'" : null).">".$text['option-on_break']."</option>\n";
-		echo "			<option value='Do Not Disturb' ".(($user_status == "Do Not Disturb") ? "selected='selected'" : null).">".$text['option-do_not_disturb']."</option>\n";
-		echo "		</select>\n";
-		echo "		<br />\n";
-		echo "		".$text['description-status']."<br />\n";
-		echo "	</td>\n";
-		echo "	</tr>\n";
-	}
-
-	echo "	<tr>\n";
-	echo "	<td width='20%' class=\"vncell\" valign='top'>\n";
-	echo "		".$text['label-user_language']."\n";
-	echo "	</td>\n";
-	echo "	<td class=\"vtable\" align='left'>\n";
-	echo "		<select id='user_language' name='user_language' class='formfld' style=''>\n";
-	echo "		<option value=''></option>\n";
-	//get all language codes from database
-	$sql = "select * from v_languages order by language asc";
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	foreach ($result as &$row) {
-		$language_codes[$row["code"]] = $row["language"];
-	}
-	unset($prep_statement, $result, $row);
-	foreach ($_SESSION['app']['languages'] as $code) {
-		$selected = ($code == $user_settings['domain']['language']['code']) ? "selected='selected'" : null;
-		echo "	<option value='".$code."' ".$selected.">".$language_codes[$code]." [".$code."]</option>\n";
-	}
-	echo "		</select>\n";
-	echo "		<br />\n";
-	echo "		".$text['description-user_language']."<br />\n";
-	echo "	</td>\n";
-	echo "	</tr>\n";
-
-	echo "	<tr>\n";
-	echo "	<td width='20%' class=\"vncell\" valign='top'>\n";
-	echo "		".$text['label-time_zone']."\n";
-	echo "	</td>\n";
-	echo "	<td class=\"vtable\" align='left'>\n";
-	echo "		<select id='user_time_zone' name='user_time_zone' class='formfld' style=''>\n";
-	echo "		<option value=''></option>\n";
-	//$list = DateTimeZone::listAbbreviations();
-    $time_zone_identifiers = DateTimeZone::listIdentifiers();
-	$previous_category = '';
-	$x = 0;
-	foreach ($time_zone_identifiers as $key => $row) {
-		$time_zone = explode("/", $row);
-		$category = $time_zone[0];
-		if ($category != $previous_category) {
-			if ($x > 0) {
-				echo "		</optgroup>\n";
-			}
-			echo "		<optgroup label='".$category."'>\n";
-		}
-		if ($row == $user_settings['domain']['time_zone']['name']) {
-			echo "			<option value='".$row."' selected='selected'>".$row."</option>\n";
-		}
-		else {
-			echo "			<option value='".$row."'>".$row."</option>\n";
-		}
-		$previous_category = $category;
-		$x++;
-	}
-	echo "		</select>\n";
-	echo "		<br />\n";
-	echo "		".$text['description-time_zone']."<br />\n";
-	echo "	</td>\n";
-	echo "	</tr>\n";
-
-	if (file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/api/app_config.php')) {
-		echo "	<tr>";
-		echo "		<td class='vncell' valign='top'>".$text['label-api_key']."</td>";
-		echo "		<td class='vtable'>\n";
-		echo "			<input type=\"text\" class='formfld' name=\"api_key\" id='api_key' value=\"".$api_key."\" >";
-		echo "			<input type='button' class='btn' value='".$text['button-generate']."' onclick=\"getElementById('api_key').value='".uuid()."';\">";
-		if (strlen($text['description-api_key']) > 0) {
-			echo "			<br />".$text['description-api_key']."<br />\n";
-		}
-		echo "		</td>";
-		echo "	</tr>";
-	}
-
-	echo "<tr>\n";
-	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
-	echo "	".$text['label-enabled']."\n";
-	echo "</td>\n";
-	echo "<td class='vtable' align='left'>\n";
-	echo "	<select class='formfld' name='user_enabled'>\n";
-	echo "		<option value='true'>".$text['option-true']."</option>\n";
-	echo "		<option value='false' ".(($user_enabled != "true") ? "selected='selected'" : null).">".$text['option-false']."</option>\n";
-	echo "	</select>\n";
-	echo "<br />\n";
-	echo $text['description-enabled']."\n";
-	echo "</td>\n";
-	echo "</tr>\n";
-
-	echo "	<tr>";
-	echo "		<td colspan='2' align='right'>";
-	echo "			<input type='hidden' name='id' value=\"$user_uuid\">";
-	echo "			<input type='hidden' name='username_old' value=\"$username\">";
-	echo "			<br>";
-	echo "			<input type='button' class='btn' value='".$text['button-save']."' onclick=\"document.getElementById('action').value = '".$text['button-save']."'; if (check_password_strength(document.getElementById('password').value)) { submit_form(); }\">";
-	echo "		</td>";
-	echo "	</tr>";
-	echo "</table>";
-	echo "<br><br>";
-	echo "</form>";
-
-	echo "<script>\n";
-	//capture enter key to submit form
-		echo "	$(window).keypress(function(event){\n";
-		echo "		if (event.which == 13) { submit_form(); }\n";
-		echo "	});\n";
-	// convert password fields to text
-		echo "	function submit_form() {\n";
-		echo "		$('input:password').css('visibility','hidden');\n";
-		echo "		$('input:password').attr({type:'text'});\n";
-		echo "		$('form#frm').submit();\n";
-		echo "	}\n";
-	echo "</script>\n";
-
-	if (permission_exists('user_setting_view')) {
-		require "user_settings.php";
-	}
-
-//include the footer
-	require_once "resources/footer.php";
-
-?>