瀏覽代碼

Move contacts from the app to core directory

markjcrane 8 月之前
父節點
當前提交
71d0871d41
共有 50 個文件被更改,包括 20523 次插入0 次删除
  1. 1226 0
      core/contacts/app_config.php
  2. 7 0
      core/contacts/app_defaults.php
  3. 7713 0
      core/contacts/app_languages.php
  4. 38 0
      core/contacts/app_menu.php
  5. 473 0
      core/contacts/contact_address_edit.php
  6. 125 0
      core/contacts/contact_addresses.php
  7. 98 0
      core/contacts/contact_addresses_view.php
  8. 86 0
      core/contacts/contact_attachment.php
  9. 283 0
      core/contacts/contact_attachment_edit.php
  10. 149 0
      core/contacts/contact_attachments.php
  11. 102 0
      core/contacts/contact_attachments_view.php
  12. 120 0
      core/contacts/contact_auth.php
  13. 2754 0
      core/contacts/contact_edit.php
  14. 327 0
      core/contacts/contact_email_edit.php
  15. 112 0
      core/contacts/contact_emails.php
  16. 68 0
      core/contacts/contact_emails_view.php
  17. 111 0
      core/contacts/contact_extensions.php
  18. 90 0
      core/contacts/contact_extensions_view.php
  19. 535 0
      core/contacts/contact_import.php
  20. 608 0
      core/contacts/contact_import_google.php
  21. 170 0
      core/contacts/contact_json.php
  22. 230 0
      core/contacts/contact_note_edit.php
  23. 114 0
      core/contacts/contact_notes.php
  24. 68 0
      core/contacts/contact_notes_view.php
  25. 412 0
      core/contacts/contact_phone_edit.php
  26. 146 0
      core/contacts/contact_phones.php
  27. 95 0
      core/contacts/contact_phones_view.php
  28. 382 0
      core/contacts/contact_relation_edit.php
  29. 126 0
      core/contacts/contact_relations.php
  30. 82 0
      core/contacts/contact_relations_view.php
  31. 370 0
      core/contacts/contact_setting_edit.php
  32. 135 0
      core/contacts/contact_settings.php
  33. 249 0
      core/contacts/contact_time_edit.php
  34. 361 0
      core/contacts/contact_timer.php
  35. 60 0
      core/contacts/contact_timer_inc.php
  36. 131 0
      core/contacts/contact_times.php
  37. 80 0
      core/contacts/contact_times_view.php
  38. 332 0
      core/contacts/contact_url_edit.php
  39. 114 0
      core/contacts/contact_urls.php
  40. 68 0
      core/contacts/contact_urls_view.php
  41. 550 0
      core/contacts/contact_view.php
  42. 471 0
      core/contacts/contacts.php
  43. 258 0
      core/contacts/contacts_vcard.php
  44. 282 0
      core/contacts/resources/classes/contacts.php
  45. 42 0
      core/contacts/resources/dashboard/config.php
  46. 116 0
      core/contacts/resources/functions/google_get_contacts.php
  47. 54 0
      core/contacts/resources/functions/google_get_groups.php
  48. 二進制
      core/contacts/resources/images/icon_gcontacts.png
  49. 二進制
      core/contacts/resources/images/icon_gmaps.png
  50. 二進制
      core/contacts/resources/images/icon_timer.png

+ 1226 - 0
core/contacts/app_config.php

@@ -0,0 +1,1226 @@
+<?php
+
+	//application details
+		$apps[$x]['name'] = "Contacts";
+		$apps[$x]['uuid'] = "04481e0e-a478-c559-adad-52bd4174574c";
+		$apps[$x]['category'] = "CRM";
+		$apps[$x]['subcategory'] = "";
+		$apps[$x]['version'] = "2.0";
+		$apps[$x]['license'] = "Mozilla Public License 1.1";
+		$apps[$x]['contact_url'] = "http://www.fusionpbx.com";
+		$apps[$x]['description']['en-us'] = "Provides a place to store contact information for individuals and organizations.";
+		$apps[$x]['description']['en-gb'] = "Provides a place to store contact information for individuals and organizations.";
+		$apps[$x]['description']['ar-eg'] = "";
+		$apps[$x]['description']['de-at'] = "Bietet einen Ort um Kontaktinformationen von Personen und Firmen zu speichern.";
+		$apps[$x]['description']['de-ch'] = "";
+		$apps[$x]['description']['de-de'] = "Bietet einen Ort um Kontaktinformationen von Personen und Firmen zu speichern.";
+		$apps[$x]['description']['es-cl'] = "Provee un lugar para almacenar información de los contactos, para individuos u organizaciones";
+		$apps[$x]['description']['es-mx'] = "";
+		$apps[$x]['description']['fr-ca'] = "C'est un endroit pour posser information des contacts, personnes ou organizations.";
+		$apps[$x]['description']['fr-fr'] = "Place pour stocker les information des contacts, personnes ou organizations.";
+		$apps[$x]['description']['he-il'] = "";
+		$apps[$x]['description']['it-it'] = "";
+		$apps[$x]['description']['ka-ge'] = "ადგილი კონტაქტის ინფორმაციის დასამახსოვრებლად პიროვნებებისა და ორგანიზაციებისთვის.";
+		$apps[$x]['description']['nl-nl'] = "Kontacten";
+		$apps[$x]['description']['pl-pl'] = "";
+		$apps[$x]['description']['pt-br'] = "";
+		$apps[$x]['description']['pt-pt'] = "Fornece um local para armazenar informações de contato para indivíduos e organizações.";
+		$apps[$x]['description']['ro-ro'] = "";
+		$apps[$x]['description']['ru-ru'] = "";
+		$apps[$x]['description']['sv-se'] = "";
+		$apps[$x]['description']['uk-ua'] = "";
+
+	//permission details
+		$y=0;
+		$apps[$x]['permissions'][$y]['name'] = "contact_view";
+		$apps[$x]['permissions'][$y]['menu']['uuid'] = "f14e6ab6-6565-d4e6-cbad-a51d2e3e8ec6";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_all";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_upload";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_domain_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_address_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_address_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_address_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_address_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_phone_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_phone_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_phone_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_phone_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_note_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_note_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_note_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_note_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_group_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_group_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_group_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_group_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_user_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_user_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_user_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_user_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_email_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_email_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_email_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_email_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_url_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_url_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_url_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_url_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_setting_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_setting_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_setting_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_setting_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_relation_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_relation_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_relation_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_relation_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_extension_view";
+		//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		//$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_time_view";
+		//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_time_add";
+		//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_time_edit";
+		//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_time_delete";
+		//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_attachment_view";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_attachment_add";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_attachment_edit";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = "contact_attachment_delete";
+		$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+		$apps[$x]['permissions'][$y]['groups'][] = "admin";
+
+	//schema details
+		$y=0;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contacts";
+		$apps[$x]['db'][$y]['table']['parent'] = "";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_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'] = "contact_parent_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_type";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the type.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_organization";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the organization.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_name_prefix";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the name prefix.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_name_given";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the given name.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_name_middle";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the middle name.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_name_family";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the family name.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_name_suffix";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the name suffix.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_nickname";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the nickname.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_title";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the title.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_role";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the role.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_category";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the category.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_url";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the website address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_time_zone";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the time zone.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_note";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the notes.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "last_mod_date";
+		$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'] = "last_mod_user";
+		$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'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_addresses";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_address_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'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_type";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Used for vCard format.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_label";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Custom label for an address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_primary";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Designate a primary address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_street";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the street address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_extended";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the extended address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_community";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the community.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_locality";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the city.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_region";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the state or province.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_postal_code";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the postal code.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_country";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the country.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_latitude";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the latitude.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_longitude";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the longitude.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "address_description";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the description.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_phones";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_phone_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'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_label";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Custom label for the number";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_type_voice";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Number is used for voice calls.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_type_fax";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Number is used for fax calls.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_type_video";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Number is used for video calls.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_type_text";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Number is used for text messages.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_speed_dial";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the speed dial.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_country_code";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the country code.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_number";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the number.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_extension";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the extension.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_primary";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Designate a primary number.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "phone_description";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the description.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_notes";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_note_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'] = "contact_id";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Contact ID";
+		$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "contact_note";
+		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "notes";
+		$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'] = "last_mod_date";
+		$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'] = "last_mod_user";
+		$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'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_users";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_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'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$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]['key']['reference']['table'] = "v_users";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "user_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_groups";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "contact_group_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "contact_groups_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'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$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'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_settings";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_setting_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";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$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";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_setting_category";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the category.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_setting_subcategory";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the subcategory.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_setting_name";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the name.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_setting_value";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the value.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_setting_order";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_setting_enabled";
+		$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'] = "contact_setting_description";
+		$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'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_relations";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_relation_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";
+		$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";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "relation_label";
+		$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'] = "relation_contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_emails";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_email_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'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "email_label";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Custom label for the email address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "email_primary";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Designate a primary address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "email_address";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the email address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "email_description";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the email description.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_urls";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_url_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'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "url_type";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Defines the purpose or protocol for the URL.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "url_label";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Custom label for the url.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "url_primary";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Designate a primary address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "url_address";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "The actual URL address.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "url_description";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the URL description.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_times";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$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";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_time_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";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$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]['key']['reference']['table'] = "v_users";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "user_uuid";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "time_start";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "timestamptz";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "timestamp";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Start";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "time_stop";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "timestamptz";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "timestamp";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Stop";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "time_description";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Description";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_contact_attachments";
+		$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_attachment_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'] = "contact_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_contacts";
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "attachment_primary";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Primary attachments are used as the Contact photo and sent with Messages.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "attachment_filename";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "The attachment filename.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "attachment_content";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "The attachment content.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "attachment_description";
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the description.";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'attachment_uploaded_date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'timestamp';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'The date the attachment was uploaded.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'attachment_uploaded_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]['key']['reference']['table'] = 'v_users';
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'user_uuid';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
+		$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]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
+		$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]['description']['en-us'] = "";
+
+	//default settings
+		$y=0;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "38a67445-577d-483d-a176-09549cfdaa69";
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = "contact";
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "allowed_attachment_types";
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = '{"jpg":"image\/jpg","jpeg":"image\/jpg","gif":"image\/gif","png":"image\/png","pdf":"application\/pdf","doc":"application\/vnd.ms-word","docx":"application\/vnd.openxmlformats-officedocument.wordprocessingml.document","xls":"application\/vnd.ms-excel","xlsx":"application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet","zip":"application\/zip","rar":"application\/x-rar-compressed","7z":"application\/x-7z-compressed","txt":"text\/plain","pcap":"application\/vnd.tcpdump.pcap"}';
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = "Define the allowed file attachment extensions and their mime types in a JSON array.";
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d8998b7f-c27c-43ac-ad1b-a9c66187bb10";
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = "contact";
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "permissions";
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = "false";
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
+
+?>

+ 7 - 0
core/contacts/app_defaults.php

@@ -0,0 +1,7 @@
+<?php
+
+	if ($domains_processed == 1) {
+
+	}
+	
+?>

+ 7713 - 0
core/contacts/app_languages.php

@@ -0,0 +1,7713 @@
+<?php
+
+$text['title-contacts_import_google']['en-us'] = "Import Google Contacts";
+$text['title-contacts_import_google']['en-gb'] = "Import Google Contacts";
+$text['title-contacts_import_google']['ar-eg'] = "استيراد جهات اتصال جوجل";
+$text['title-contacts_import_google']['de-at'] = "Google Kontakte importieren";
+$text['title-contacts_import_google']['de-ch'] = "Google Kontakte importieren";
+$text['title-contacts_import_google']['de-de'] = "Google Kontakte importieren";
+$text['title-contacts_import_google']['el-gr'] = "Εισαγωγή επαφών Google";
+$text['title-contacts_import_google']['es-cl'] = "Importar Contactos de Google";
+$text['title-contacts_import_google']['es-mx'] = "Importar Contactos de Google";
+$text['title-contacts_import_google']['fr-ca'] = "Importer les Contacts Google";
+$text['title-contacts_import_google']['fr-fr'] = "Importer les Contacts Google";
+$text['title-contacts_import_google']['he-il'] = "ייבא אנשי קשר מגוגל";
+$text['title-contacts_import_google']['it-it'] = "Importa Contatti Google";
+$text['title-contacts_import_google']['ka-ge'] = "Google-ის კონტაქტების იმპორტი";
+$text['title-contacts_import_google']['nl-nl'] = "Importeer Google contacten";
+$text['title-contacts_import_google']['pl-pl'] = "Importuj kontakty z Google.";
+$text['title-contacts_import_google']['pt-br'] = "Importar contatos do google";
+$text['title-contacts_import_google']['pt-pt'] = "Importar Contatos do Google";
+$text['title-contacts_import_google']['ro-ro'] = "Importați Agenda Google";
+$text['title-contacts_import_google']['ru-ru'] = "Импортировать контакты Google";
+$text['title-contacts_import_google']['sv-se'] = "Importera Google Kontakter";
+$text['title-contacts_import_google']['uk-ua'] = "Імпортувати контакти Google";
+$text['title-contacts_import_google']['zh-cn'] = "导入谷歌通讯录";
+$text['title-contacts_import_google']['ja-jp'] = "Google コンタクトのインポート";
+$text['title-contacts_import_google']['ko-kr'] = "Google 주소록 가져오기";
+
+$text['title-contacts_import']['en-us'] = "Import Contacts";
+$text['title-contacts_import']['en-gb'] = "Import Contacts";
+$text['title-contacts_import']['ar-eg'] = "استيراد جهات الاتصال";
+$text['title-contacts_import']['de-at'] = "Kontakte importieren";
+$text['title-contacts_import']['de-ch'] = "Kontakte importieren";
+$text['title-contacts_import']['de-de'] = "Kontakte importieren";
+$text['title-contacts_import']['el-gr'] = "Εισαγωγή Επαφών";
+$text['title-contacts_import']['es-cl'] = "Importar Contactos";
+$text['title-contacts_import']['es-mx'] = "Importar Contactos";
+$text['title-contacts_import']['fr-ca'] = "Importer Contacts";
+$text['title-contacts_import']['fr-fr'] = "Importe des Contacts";
+$text['title-contacts_import']['he-il'] = "ייבא אנשי קשר";
+$text['title-contacts_import']['it-it'] = "Importa Contatti";
+$text['title-contacts_import']['ka-ge'] = "კონტაქტების იმპორტი";
+$text['title-contacts_import']['nl-nl'] = "Importeer contacten";
+$text['title-contacts_import']['pl-pl'] = "Importuj kontakty ";
+$text['title-contacts_import']['pt-br'] = "Importar contatos";
+$text['title-contacts_import']['pt-pt'] = "Importar Contactos";
+$text['title-contacts_import']['ro-ro'] = "Importați contacte";
+$text['title-contacts_import']['ru-ru'] = "Импортировать Контакты";
+$text['title-contacts_import']['sv-se'] = "Importera Kontakter";
+$text['title-contacts_import']['uk-ua'] = "Імпортувати контакти";
+$text['title-contacts_import']['zh-cn'] = "导入联系人";
+$text['title-contacts_import']['ja-jp'] = "連絡先のインポート";
+$text['title-contacts_import']['ko-kr'] = "연락처 가져오기";
+
+$text['title-contacts']['en-us'] = "Contacts";
+$text['title-contacts']['en-gb'] = "Contacts";
+$text['title-contacts']['ar-eg'] = "جهات الاتصال";
+$text['title-contacts']['de-at'] = "Kontakte";
+$text['title-contacts']['de-ch'] = "Kontakte";
+$text['title-contacts']['de-de'] = "Kontakte";
+$text['title-contacts']['el-gr'] = "Επαφές";
+$text['title-contacts']['es-cl'] = "Contactos";
+$text['title-contacts']['es-mx'] = "Contactos";
+$text['title-contacts']['fr-ca'] = "Contacts";
+$text['title-contacts']['fr-fr'] = "Contacts";
+$text['title-contacts']['he-il'] = "אנשי קשר";
+$text['title-contacts']['it-it'] = "Contatti";
+$text['title-contacts']['ka-ge'] = "კონტაქტები";
+$text['title-contacts']['nl-nl'] = "Kontacten";
+$text['title-contacts']['pl-pl'] = "Kontakty";
+$text['title-contacts']['pt-br'] = "Conttos";
+$text['title-contacts']['pt-pt'] = "Contactos";
+$text['title-contacts']['ro-ro'] = "Contacte";
+$text['title-contacts']['ru-ru'] = "Контакты";
+$text['title-contacts']['sv-se'] = "Kontakter";
+$text['title-contacts']['uk-ua'] = "Контакти";
+$text['title-contacts']['zh-cn'] = "联系人";
+$text['title-contacts']['ja-jp'] = "連絡先";
+$text['title-contacts']['ko-kr'] = "콘택트 렌즈";
+
+$text['title-contact_properties']['en-us'] = "Contact Properties";
+$text['title-contact_properties']['en-gb'] = "Contact Properties";
+$text['title-contact_properties']['ar-eg'] = "خصائص الاتصال";
+$text['title-contact_properties']['de-at'] = "Kontakt Eigenschaften";
+$text['title-contact_properties']['de-ch'] = "Kontakt Eigenschaften";
+$text['title-contact_properties']['de-de'] = "Kontakt Eigenschaften";
+$text['title-contact_properties']['el-gr'] = "Propiedades de contacto";
+$text['title-contact_properties']['es-cl'] = "Propiedades de contacto";
+$text['title-contact_properties']['es-mx'] = "Contact Properties";
+$text['title-contact_properties']['fr-ca'] = "Propriétés de Contact";
+$text['title-contact_properties']['fr-fr'] = "Propriétés de Contact";
+$text['title-contact_properties']['he-il'] = "צור קשר עם נכסים";
+$text['title-contact_properties']['it-it'] = "Proprietà del contatto";
+$text['title-contact_properties']['ka-ge'] = "კონტაქტის თვისებები";
+$text['title-contact_properties']['nl-nl'] = "Contacteigenschappen";
+$text['title-contact_properties']['pl-pl'] = "Właściwości kontaktu";
+$text['title-contact_properties']['pt-br'] = "Propriedades do contato";
+$text['title-contact_properties']['pt-pt'] = "Propriedades do contato";
+$text['title-contact_properties']['ro-ro'] = "Contactați Proprietăți";
+$text['title-contact_properties']['ru-ru'] = "Свойства контакта";
+$text['title-contact_properties']['sv-se'] = "Kontakta Fastigheter";
+$text['title-contact_properties']['uk-ua'] = "Контактні властивості";
+$text['title-contact_properties']['zh-cn'] = "联系属性";
+$text['title-contact_properties']['ja-jp'] = "連絡先のプロパティ";
+$text['title-contact_properties']['ko-kr'] = "연락처 속성";
+
+$text['title-contact_email-edit']['en-us'] = "Contact Email Edit";
+$text['title-contact_email-edit']['en-gb'] = "Contact Email Edit";
+$text['title-contact_email-edit']['ar-eg'] = "تحرير البريد الإلكتروني لجهة الاتصال";
+$text['title-contact_email-edit']['de-at'] = "Email des Kontakts bearbeiten";
+$text['title-contact_email-edit']['de-ch'] = "Email des Kontakts bearbeiten";
+$text['title-contact_email-edit']['de-de'] = "Email des Kontakts bearbeiten";
+$text['title-contact_email-edit']['el-gr'] = "Επεξεργασία e-mail επαφής";
+$text['title-contact_email-edit']['es-cl'] = "Correo electrónico de contacto Editar";
+$text['title-contact_email-edit']['es-mx'] = "Correo electrónico de contacto Editar";
+$text['title-contact_email-edit']['fr-ca'] = "Courriel de Contact Modifier";
+$text['title-contact_email-edit']['fr-fr'] = "Contact Courriel Modifier";
+$text['title-contact_email-edit']['he-il'] = "עריכת דואל ליצירת קשר";
+$text['title-contact_email-edit']['it-it'] = "Modifica Email Contatto";
+$text['title-contact_email-edit']['ka-ge'] = "კონტაქტის ელფოსტის ჩასწორება";
+$text['title-contact_email-edit']['nl-nl'] = "Kontact E-mail bewerken";
+$text['title-contact_email-edit']['pl-pl'] = "Edutuj adres mailowy kontaktu";
+$text['title-contact_email-edit']['pt-br'] = "Editar email do contato";
+$text['title-contact_email-edit']['pt-pt'] = "Email de Contato Editar";
+$text['title-contact_email-edit']['ro-ro'] = "Editare e-mail de contact";
+$text['title-contact_email-edit']['ru-ru'] = "Редактировать контактный адрес электронной почты";
+$text['title-contact_email-edit']['sv-se'] = "Ändra Kontakt E-post";
+$text['title-contact_email-edit']['uk-ua'] = "Контактна адреса електронної пошти Редагувати";
+$text['title-contact_email-edit']['zh-cn'] = "联系人电子邮件编辑";
+$text['title-contact_email-edit']['ja-jp'] = "連絡先メール編集";
+$text['title-contact_email-edit']['ko-kr'] = "연락처 이메일 편집";
+
+$text['title-contact_email-add']['en-us'] = "Contact Email Add";
+$text['title-contact_email-add']['en-gb'] = "Contact Email Add";
+$text['title-contact_email-add']['ar-eg'] = "إضافة البريد الإلكتروني لجهة الاتصال";
+$text['title-contact_email-add']['de-at'] = "Email zum Kontakt hinzufügen";
+$text['title-contact_email-add']['de-ch'] = "Email zum Kontakt hinzufügen";
+$text['title-contact_email-add']['de-de'] = "Email zum Kontakt hinzufügen";
+$text['title-contact_email-add']['el-gr'] = "Προσθήκη e-mail επαφής";
+$text['title-contact_email-add']['es-cl'] = "Correo electrónico de contacto Agregar";
+$text['title-contact_email-add']['es-mx'] = "Correo electrónico de contacto Agregar";
+$text['title-contact_email-add']['fr-ca'] = "Courriel de Contact Ajouter";
+$text['title-contact_email-add']['fr-fr'] = "Contactez-mail Ajouter";
+$text['title-contact_email-add']['he-il'] = "אימייל ליצירת קשר הוסף";
+$text['title-contact_email-add']['it-it'] = "Inserisci Email Contatto";
+$text['title-contact_email-add']['ka-ge'] = "კონტაქტის ელფოსტის დამატება";
+$text['title-contact_email-add']['nl-nl'] = "Kontact E-mail toevoegen";
+$text['title-contact_email-add']['pl-pl'] = "Dodaj adres mailowy kontaktu";
+$text['title-contact_email-add']['pt-br'] = "Adicionar email de contato";
+$text['title-contact_email-add']['pt-pt'] = "Contato e-mail Adicionar";
+$text['title-contact_email-add']['ro-ro'] = "Contact Email Adaugă";
+$text['title-contact_email-add']['ru-ru'] = "Добавить контактный адрес электронной почты";
+$text['title-contact_email-add']['sv-se'] = "Lägg Till Kontakt E-post";
+$text['title-contact_email-add']['uk-ua'] = "Контактна адреса електронної пошти Додати";
+$text['title-contact_email-add']['zh-cn'] = "联系邮箱 添加";
+$text['title-contact_email-add']['ja-jp'] = "連絡先メールアドレス追加";
+$text['title-contact_email-add']['ko-kr'] = "연락처 이메일 추가";
+
+$text['title-contact_url-edit']['en-us'] = "Contact URL Edit";
+$text['title-contact_url-edit']['en-gb'] = "Contact URL Edit";
+$text['title-contact_url-edit']['ar-eg'] = "تحرير عنوان URL لجهة الاتصال";
+$text['title-contact_url-edit']['de-at'] = "URL bearbeiten";
+$text['title-contact_url-edit']['de-ch'] = "URL bearbeiten";
+$text['title-contact_url-edit']['de-de'] = "URL bearbeiten";
+$text['title-contact_url-edit']['el-gr'] = "Επεξεργασία συνδέσμου URL επαφής";
+$text['title-contact_url-edit']['es-cl'] = "Correo electrónico de contacto Editar";
+$text['title-contact_url-edit']['es-mx'] = "Correo electrónico de contacto Editar";
+$text['title-contact_url-edit']['fr-ca'] = "URL de Contact Modifier";
+$text['title-contact_url-edit']['fr-fr'] = "Contact Courriel Modifier";
+$text['title-contact_url-edit']['he-il'] = "ערוך כתובת אתר ליצירת קשר";
+$text['title-contact_url-edit']['it-it'] = "Modifica URL Contatto";
+$text['title-contact_url-edit']['ka-ge'] = "კონტაქტის URL-ის ჩასწორება";
+$text['title-contact_url-edit']['nl-nl'] = "Kontact URL bewerken";
+$text['title-contact_url-edit']['pl-pl'] = "Edytuj kontakt URL ";
+$text['title-contact_url-edit']['pt-br'] = "Editar URL de contato";
+$text['title-contact_url-edit']['pt-pt'] = "URL de Contato Editar";
+$text['title-contact_url-edit']['ro-ro'] = "Modificare URL de contact";
+$text['title-contact_url-edit']['ru-ru'] = "Адрес для связи (URL): Изменить";
+$text['title-contact_url-edit']['sv-se'] = "Ändra Kontakt URL";
+$text['title-contact_url-edit']['uk-ua'] = "Змінити URL-адресу контакту";
+$text['title-contact_url-edit']['zh-cn'] = "联系网址编辑";
+$text['title-contact_url-edit']['ja-jp'] = "連絡先 URL 編集";
+$text['title-contact_url-edit']['ko-kr'] = "연락처 URL 편집";
+
+$text['title-contact_url-add']['en-us'] = "Contact URL Add";
+$text['title-contact_url-add']['en-gb'] = "Contact URL Add";
+$text['title-contact_url-add']['ar-eg'] = "إضافة عنوان URL لجهة الاتصال";
+$text['title-contact_url-add']['de-at'] = "URL hinzufügen";
+$text['title-contact_url-add']['de-ch'] = "URL hinzufügen";
+$text['title-contact_url-add']['de-de'] = "URL hinzufügen";
+$text['title-contact_url-add']['el-gr'] = "Προσθήκη συνδέσμου URL επαφής";
+$text['title-contact_url-add']['es-cl'] = "Correo electrónico de contacto Agregar";
+$text['title-contact_url-add']['es-mx'] = "Correo electrónico de contacto Agregar";
+$text['title-contact_url-add']['fr-ca'] = "URL de Contact Ajouter";
+$text['title-contact_url-add']['fr-fr'] = "Contactez-mail Ajouter";
+$text['title-contact_url-add']['he-il'] = "כתובת אתר ליצירת קשר הוסף";
+$text['title-contact_url-add']['it-it'] = "Inserisci URL Contatto";
+$text['title-contact_url-add']['ka-ge'] = "კონტაქტის URL-ის დამატება";
+$text['title-contact_url-add']['nl-nl'] = "Kontact URL toevoegen";
+$text['title-contact_url-add']['pl-pl'] = "Dodaj kontakt URL ";
+$text['title-contact_url-add']['pt-br'] = "Adicionar contato de e-mail";
+$text['title-contact_url-add']['pt-pt'] = "Contato e-mail Adicionar";
+$text['title-contact_url-add']['ro-ro'] = "Adresa URL de contact Adăugați";
+$text['title-contact_url-add']['ru-ru'] = "Адрес для связи (URL): Добавить";
+$text['title-contact_url-add']['sv-se'] = "Lägg Till Kontakt URL";
+$text['title-contact_url-add']['uk-ua'] = "Контакт URL Додати";
+$text['title-contact_url-add']['zh-cn'] = "联系网址 添加";
+$text['title-contact_url-add']['ja-jp'] = "連絡先 URL 追加";
+$text['title-contact_url-add']['ko-kr'] = "연락처 URL 추가";
+
+$text['title-contact_time_edit']['en-us'] = "Time Edit";
+$text['title-contact_time_edit']['en-gb'] = "Time Edit";
+$text['title-contact_time_edit']['ar-eg'] = "تحرير الوقت";
+$text['title-contact_time_edit']['de-at'] = "Zeit bearbeiten";
+$text['title-contact_time_edit']['de-ch'] = "Zeit bearbeiten";
+$text['title-contact_time_edit']['de-de'] = "Zeit bearbeiten";
+$text['title-contact_time_edit']['el-gr'] = "Επεξεργασία Ώρας";
+$text['title-contact_time_edit']['es-cl'] = "Tiempo de Redacción";
+$text['title-contact_time_edit']['es-mx'] = "Tiempo de Redacción";
+$text['title-contact_time_edit']['fr-ca'] = "Modifier Temps";
+$text['title-contact_time_edit']['fr-fr'] = "Modifier Temps";
+$text['title-contact_time_edit']['he-il'] = "עידכון זמן";
+$text['title-contact_time_edit']['it-it'] = "Modifica Tempo";
+$text['title-contact_time_edit']['ka-ge'] = "დროის ჩასწორება";
+$text['title-contact_time_edit']['nl-nl'] = "Tijd bewerken";
+$text['title-contact_time_edit']['pl-pl'] = "Czas Edycja";
+$text['title-contact_time_edit']['pt-br'] = "Tempo Editar";
+$text['title-contact_time_edit']['pt-pt'] = "Tempo Editar";
+$text['title-contact_time_edit']['ro-ro'] = "Time Edit";
+$text['title-contact_time_edit']['ru-ru'] = "Редактировать время";
+$text['title-contact_time_edit']['sv-se'] = "Redigera Tid";
+$text['title-contact_time_edit']['uk-ua'] = "час Редагувати";
+$text['title-contact_time_edit']['zh-cn'] = "时间编辑";
+$text['title-contact_time_edit']['ja-jp'] = "時間編集";
+$text['title-contact_time_edit']['ko-kr'] = "시간 편집";
+
+$text['title-contact_time_add']['en-us'] = "Time Add";
+$text['title-contact_time_add']['en-gb'] = "Time Add";
+$text['title-contact_time_add']['ar-eg'] = "تحرير الوقت";
+$text['title-contact_time_add']['de-at'] = "Zeit hinzufügen";
+$text['title-contact_time_add']['de-ch'] = "Zeit hinzufügen";
+$text['title-contact_time_add']['de-de'] = "Zeit hinzufügen";
+$text['title-contact_time_add']['el-gr'] = "Προσθήκη Ώρας";
+$text['title-contact_time_add']['es-cl'] = "Tiempo Agregar";
+$text['title-contact_time_add']['es-mx'] = "Tiempo Agregar";
+$text['title-contact_time_add']['fr-ca'] = "Ajouter Temps";
+$text['title-contact_time_add']['fr-fr'] = "Ajouter Temps";
+$text['title-contact_time_add']['he-il'] = "הוספת זמן";
+$text['title-contact_time_add']['it-it'] = "Inserisci Tempo";
+$text['title-contact_time_add']['ka-ge'] = "დროის დამატება";
+$text['title-contact_time_add']['nl-nl'] = "Tijd toevoegen";
+$text['title-contact_time_add']['pl-pl'] = "Czas Dodawania";
+$text['title-contact_time_add']['pt-br'] = "Time Adicionar";
+$text['title-contact_time_add']['pt-pt'] = "Time Adicionar";
+$text['title-contact_time_add']['ro-ro'] = "Time Edit";
+$text['title-contact_time_add']['ru-ru'] = "Добавить Время";
+$text['title-contact_time_add']['sv-se'] = "Lägg Till Tid";
+$text['title-contact_time_add']['uk-ua'] = "час додавання";
+$text['title-contact_time_add']['zh-cn'] = "时间添加";
+$text['title-contact_time_add']['ja-jp'] = "時間追加";
+$text['title-contact_time_add']['ko-kr'] = "시간 추가";
+
+$text['title-contact_setting_edit']['en-us'] = "Contact Setting Edit";
+$text['title-contact_setting_edit']['en-gb'] = "Contact Setting Edit";
+$text['title-contact_setting_edit']['ar-eg'] = "تحرير إعداد الاتصال";
+$text['title-contact_setting_edit']['de-at'] = "Einstellungen bearbeiten";
+$text['title-contact_setting_edit']['de-ch'] = "Einstellungen bearbeiten";
+$text['title-contact_setting_edit']['de-de'] = "Einstellungen bearbeiten";
+$text['title-contact_setting_edit']['el-gr'] = "Επεξεργασία Ρυθμίσεων Επαφών";
+$text['title-contact_setting_edit']['es-cl'] = "Configuraciones de contacto";
+$text['title-contact_setting_edit']['es-mx'] = "Configuraciones de contacto";
+$text['title-contact_setting_edit']['fr-ca'] = "Paramètres du Contact";
+$text['title-contact_setting_edit']['fr-fr'] = "Paramètres du Contact";
+$text['title-contact_setting_edit']['he-il'] = "עריכת הגדרות איש קשר";
+$text['title-contact_setting_edit']['it-it'] = "Modifica Parametri Contatto";
+$text['title-contact_setting_edit']['ka-ge'] = "კონტაქტის პარამეტრის ჩასწორება";
+$text['title-contact_setting_edit']['nl-nl'] = "Kontact instellingen bewerken";
+$text['title-contact_setting_edit']['pl-pl'] = "Edytuj ustawienia kontaktu";
+$text['title-contact_setting_edit']['pt-br'] = "Definição do contato";
+$text['title-contact_setting_edit']['pt-pt'] = "Definições do Contacto";
+$text['title-contact_setting_edit']['ro-ro'] = "Editare setări de contact";
+$text['title-contact_setting_edit']['ru-ru'] = "Редактировать Параметры Контакта";
+$text['title-contact_setting_edit']['sv-se'] = "Ändra Kontakt Inställning";
+$text['title-contact_setting_edit']['uk-ua'] = "Редагування налаштувань контакту";
+$text['title-contact_setting_edit']['zh-cn'] = "联系人设置编辑";
+$text['title-contact_setting_edit']['ja-jp'] = "連絡先設定編集";
+$text['title-contact_setting_edit']['ko-kr'] = "연락처 설정 편집";
+
+$text['title-contact_setting_add']['en-us'] = "Contact Setting Add";
+$text['title-contact_setting_add']['en-gb'] = "Contact Setting Add";
+$text['title-contact_setting_add']['ar-eg'] = "إضافة إعداد الاتصال";
+$text['title-contact_setting_add']['de-at'] = "Einstellungen hinzufügen";
+$text['title-contact_setting_add']['de-ch'] = "Einstellungen hinzufügen";
+$text['title-contact_setting_add']['de-de'] = "Einstellungen hinzufügen";
+$text['title-contact_setting_add']['el-gr'] = "Προσθήκη Ρυθμίσεων Επαφών";
+$text['title-contact_setting_add']['es-cl'] = "Agregar Configuración de Contacto";
+$text['title-contact_setting_add']['es-mx'] = "Agregar Configuración de Contacto";
+$text['title-contact_setting_add']['fr-ca'] = "Ajouter un paramètre au Contact";
+$text['title-contact_setting_add']['fr-fr'] = "Ajouter un paramètre au Contact";
+$text['title-contact_setting_add']['he-il'] = "הגדרת איש קשר הוסף";
+$text['title-contact_setting_add']['it-it'] = "Inserisci Parametri Contatto";
+$text['title-contact_setting_add']['ka-ge'] = "კონტაქტის პარამეტრის დამატება";
+$text['title-contact_setting_add']['nl-nl'] = "Kontact Instellingen toevoegen";
+$text['title-contact_setting_add']['pl-pl'] = "Dodaj ustawienia kontaktu";
+$text['title-contact_setting_add']['pt-br'] = "Adicionar configurações a essa usuários";
+$text['title-contact_setting_add']['pt-pt'] = "Adicionar Definição ao Contacto";
+$text['title-contact_setting_add']['ro-ro'] = "Contact Setări Adăugare";
+$text['title-contact_setting_add']['ru-ru'] = "Добавить Параметры Контакта";
+$text['title-contact_setting_add']['sv-se'] = "Lägg Till Kontakt Inställning";
+$text['title-contact_setting_add']['uk-ua'] = "Налаштування контакту Додати";
+$text['title-contact_setting_add']['zh-cn'] = "联系人设置添加";
+$text['title-contact_setting_add']['ja-jp'] = "連絡先設定追加";
+$text['title-contact_setting_add']['ko-kr'] = "연락처 설정 추가";
+
+$text['title-contact_relation']['en-us'] = "Contact Relation";
+$text['title-contact_relation']['en-gb'] = "Contact Relation";
+$text['title-contact_relation']['ar-eg'] = "علاقات الاتصال";
+$text['title-contact_relation']['de-at'] = "Beziehung";
+$text['title-contact_relation']['de-ch'] = "Beziehung";
+$text['title-contact_relation']['de-de'] = "Beziehung";
+$text['title-contact_relation']['el-gr'] = "Συσχετίσεις Επαφών";
+$text['title-contact_relation']['es-cl'] = "Contacto Relación";
+$text['title-contact_relation']['es-mx'] = "Contacto Relación";
+$text['title-contact_relation']['fr-ca'] = "Relation de Contact";
+$text['title-contact_relation']['fr-fr'] = "Contactez Relation";
+$text['title-contact_relation']['he-il'] = "צור קשר";
+$text['title-contact_relation']['it-it'] = "Relazioni Contatto";
+$text['title-contact_relation']['ka-ge'] = "საკონტაქტო პირი";
+$text['title-contact_relation']['nl-nl'] = "Kontact relatie";
+$text['title-contact_relation']['pl-pl'] = "Relacja kontaktowa";
+$text['title-contact_relation']['pt-br'] = "Contato Relação";
+$text['title-contact_relation']['pt-pt'] = "Contato Relação";
+$text['title-contact_relation']['ro-ro'] = "Relația de contact";
+$text['title-contact_relation']['ru-ru'] = "Контактное лицо";
+$text['title-contact_relation']['sv-se'] = "Kontakt Relation";
+$text['title-contact_relation']['uk-ua'] = "Контактні відносини";
+$text['title-contact_relation']['zh-cn'] = "联系关系";
+$text['title-contact_relation']['ja-jp'] = "連絡先";
+$text['title-contact_relation']['ko-kr'] = "연락처 관계";
+
+$text['title-contact_phones-edit']['en-us'] = "Contact Number Edit";
+$text['title-contact_phones-edit']['en-gb'] = "Contact Number Edit";
+$text['title-contact_phones-edit']['ar-eg'] = "تحرير رقم الاتصال";
+$text['title-contact_phones-edit']['de-at'] = "Nummer bearbeiten";
+$text['title-contact_phones-edit']['de-ch'] = "Nummer bearbeiten";
+$text['title-contact_phones-edit']['de-de'] = "Nummer bearbeiten";
+$text['title-contact_phones-edit']['el-gr'] = "Επεξεργασία Αριθμού Επαφής";
+$text['title-contact_phones-edit']['es-cl'] = "Editar Número de Contacto";
+$text['title-contact_phones-edit']['es-mx'] = "Editar Número de Contacto";
+$text['title-contact_phones-edit']['fr-ca'] = "Numéro de Contact Modifier";
+$text['title-contact_phones-edit']['fr-fr'] = "Editer le téléphone du Contact";
+$text['title-contact_phones-edit']['he-il'] = "עריכת מספר איש קשר";
+$text['title-contact_phones-edit']['it-it'] = "Modifica Numero Contatto";
+$text['title-contact_phones-edit']['ka-ge'] = "კონტაქტის ნომრის ჩასწორება";
+$text['title-contact_phones-edit']['nl-nl'] = "Kontact nummer bewerken";
+$text['title-contact_phones-edit']['pl-pl'] = "Edytuj numer kontaktu";
+$text['title-contact_phones-edit']['pt-br'] = "Editar contato telefônico";
+$text['title-contact_phones-edit']['pt-pt'] = "Editar contacto telefónico";
+$text['title-contact_phones-edit']['ro-ro'] = "Editare număr de contact";
+$text['title-contact_phones-edit']['ru-ru'] = "Редактирование контактного номера";
+$text['title-contact_phones-edit']['sv-se'] = "Ändra Kontakt Nummer";
+$text['title-contact_phones-edit']['uk-ua'] = "Редагувати контактний номер";
+$text['title-contact_phones-edit']['zh-cn'] = "联系电话 编辑";
+$text['title-contact_phones-edit']['ja-jp'] = "連絡先番号の編集";
+$text['title-contact_phones-edit']['ko-kr'] = "연락처 편집";
+
+$text['title-contact_phones-add']['en-us'] = "Contact Number Add";
+$text['title-contact_phones-add']['en-gb'] = "Contact Number Add";
+$text['title-contact_phones-add']['ar-eg'] = "إضافة رقم الاتصال";
+$text['title-contact_phones-add']['de-at'] = "Nummer hinzufügen";
+$text['title-contact_phones-add']['de-ch'] = "Nummer hinzufügen";
+$text['title-contact_phones-add']['de-de'] = "Nummer hinzufügen";
+$text['title-contact_phones-add']['el-gr'] = "Προσθήκη Αριθμού Επαφής";
+$text['title-contact_phones-add']['es-cl'] = "Agregar Número de Contacto";
+$text['title-contact_phones-add']['es-mx'] = "Agregar Número de Contacto";
+$text['title-contact_phones-add']['fr-ca'] = "Numéro de Contact Ajouter";
+$text['title-contact_phones-add']['fr-fr'] = "Ajouter un téléphone au Contact";
+$text['title-contact_phones-add']['he-il'] = "מספר איש קשר הוסף";
+$text['title-contact_phones-add']['it-it'] = "Inserire Numero Contatto";
+$text['title-contact_phones-add']['ka-ge'] = "კონტაქტის ნომრის დამატება";
+$text['title-contact_phones-add']['nl-nl'] = "Kontact nummer toevoegen";
+$text['title-contact_phones-add']['pl-pl'] = "Dodaj numer kontaktu";
+$text['title-contact_phones-add']['pt-br'] = "Adicionar contato telefônico";
+$text['title-contact_phones-add']['pt-pt'] = "Adicionar contacto telefónico";
+$text['title-contact_phones-add']['ro-ro'] = "Adăugați numărul de contact";
+$text['title-contact_phones-add']['ru-ru'] = "Контактный номер Добавить";
+$text['title-contact_phones-add']['sv-se'] = "Lägg Till Kontakt Nummer";
+$text['title-contact_phones-add']['uk-ua'] = "Контактний номер Додати";
+$text['title-contact_phones-add']['zh-cn'] = "联系电话 添加";
+$text['title-contact_phones-add']['ja-jp'] = "連絡先番号の追加";
+$text['title-contact_phones-add']['ko-kr'] = "연락처 추가";
+
+$text['title-contact_notes-edit']['en-us'] = "Contact Note Edit";
+$text['title-contact_notes-edit']['en-gb'] = "Contact Note Edit";
+$text['title-contact_notes-edit']['ar-eg'] = "تحرير ملاحظة جهة الاتصال";
+$text['title-contact_notes-edit']['de-at'] = "Notiz bearbeiten";
+$text['title-contact_notes-edit']['de-ch'] = "Notiz bearbeiten";
+$text['title-contact_notes-edit']['de-de'] = "Notiz bearbeiten";
+$text['title-contact_notes-edit']['el-gr'] = "Επεξεργασία Σημείωσης Επαφής";
+$text['title-contact_notes-edit']['es-cl'] = "Editar Nota de Contactos";
+$text['title-contact_notes-edit']['es-mx'] = "Editar Nota de Contactos";
+$text['title-contact_notes-edit']['fr-ca'] = "Note du Contact Modifier";
+$text['title-contact_notes-edit']['fr-fr'] = "Editer la note du contact";
+$text['title-contact_notes-edit']['he-il'] = "עריכת הערה ליצירת קשר";
+$text['title-contact_notes-edit']['it-it'] = "Modifica Note Contatto";
+$text['title-contact_notes-edit']['ka-ge'] = "კონტაქტის შენიშვნის ჩასწორება";
+$text['title-contact_notes-edit']['nl-nl'] = "Kontact notitie bewerken";
+$text['title-contact_notes-edit']['pl-pl'] = "Edytuj notatkę o kontakcie";
+$text['title-contact_notes-edit']['pt-br'] = "Editar notas de contato";
+$text['title-contact_notes-edit']['pt-pt'] = "Editar notas de contacto";
+$text['title-contact_notes-edit']['ro-ro'] = "Editare notă de contact";
+$text['title-contact_notes-edit']['ru-ru'] = "Редактировать контактную информацию";
+$text['title-contact_notes-edit']['sv-se'] = "Ändra Kontakt Notering";
+$text['title-contact_notes-edit']['uk-ua'] = "Примітка до контакту Редагувати";
+$text['title-contact_notes-edit']['zh-cn'] = "联系人备注编辑";
+$text['title-contact_notes-edit']['ja-jp'] = "連絡先メモの編集";
+$text['title-contact_notes-edit']['ko-kr'] = "연락처 메모 편집";
+
+$text['title-contact_notes-add']['en-us'] = "Contact Note Add";
+$text['title-contact_notes-add']['en-gb'] = "Contact Note Add";
+$text['title-contact_notes-add']['ar-eg'] = "إضافة ملاحظة جهة الاتصال";
+$text['title-contact_notes-add']['de-at'] = "Notiz hinzufügen";
+$text['title-contact_notes-add']['de-ch'] = "Notiz hinzufügen";
+$text['title-contact_notes-add']['de-de'] = "Notiz hinzufügen";
+$text['title-contact_notes-add']['el-gr'] = "Προσθήκη Σημείωσης Επαφής";
+$text['title-contact_notes-add']['es-cl'] = "Agregar Nota de Contacto";
+$text['title-contact_notes-add']['es-mx'] = "Agregar Nota de Contacto";
+$text['title-contact_notes-add']['fr-ca'] = "Ajouter une note au contact";
+$text['title-contact_notes-add']['fr-fr'] = "Ajouter une note au contact";
+$text['title-contact_notes-add']['he-il'] = "הערה ליצירת קשר הוסף";
+$text['title-contact_notes-add']['it-it'] = "Inserisci Note Contatto";
+$text['title-contact_notes-add']['ka-ge'] = "კონტაქტის შენიშვნის დამატება";
+$text['title-contact_notes-add']['nl-nl'] = "Kontact notitie toevoegen";
+$text['title-contact_notes-add']['pl-pl'] = "Dodaj notatkę o kontakcie";
+$text['title-contact_notes-add']['pt-br'] = "Adicionar nota de contato";
+$text['title-contact_notes-add']['pt-pt'] = "Adicionar nota de contacto";
+$text['title-contact_notes-add']['ro-ro'] = "Notă de contact Adăugați";
+$text['title-contact_notes-add']['ru-ru'] = "Контакт Добавить Примечание";
+$text['title-contact_notes-add']['sv-se'] = "Lägg Till Kontakts Notering";
+$text['title-contact_notes-add']['uk-ua'] = "Контактна інформація Дод";
+$text['title-contact_notes-add']['zh-cn'] = "联系人备注添加";
+$text['title-contact_notes-add']['ja-jp'] = "連絡先メモの追加";
+$text['title-contact_notes-add']['ko-kr'] = "연락처 메모 추가";
+
+$text['title-contact_addresses-edit']['en-us'] = "Contact Address Edit";
+$text['title-contact_addresses-edit']['en-gb'] = "Contact Address Edit";
+$text['title-contact_addresses-edit']['ar-eg'] = "تحرير عنوان جهة الاتصال";
+$text['title-contact_addresses-edit']['de-at'] = "Adresse bearbeiten";
+$text['title-contact_addresses-edit']['de-ch'] = "Adresse bearbeiten";
+$text['title-contact_addresses-edit']['de-de'] = "Adresse bearbeiten";
+$text['title-contact_addresses-edit']['el-gr'] = "Επεξεργασία Διεύθυνσης Επαφής";
+$text['title-contact_addresses-edit']['es-cl'] = "Editar Dirección de Contacto";
+$text['title-contact_addresses-edit']['es-mx'] = "Editar Dirección de Contacto";
+$text['title-contact_addresses-edit']['fr-ca'] = "Modifier l'adresse du contact";
+$text['title-contact_addresses-edit']['fr-fr'] = "Editer l'adresse du contact";
+$text['title-contact_addresses-edit']['he-il'] = "עריכת כתובת איש קשר";
+$text['title-contact_addresses-edit']['it-it'] = "Modifica Indirizzo Contatto";
+$text['title-contact_addresses-edit']['ka-ge'] = "კონტაქტის მისამართის ჩასწორება";
+$text['title-contact_addresses-edit']['nl-nl'] = "Kontact adres bewerken";
+$text['title-contact_addresses-edit']['pl-pl'] = "Edytuj adres kontaktu";
+$text['title-contact_addresses-edit']['pt-br'] = "Editar endereço de contato";
+$text['title-contact_addresses-edit']['pt-pt'] = "Editar endereço do contacto";
+$text['title-contact_addresses-edit']['ro-ro'] = "Editare adresa de contact";
+$text['title-contact_addresses-edit']['ru-ru'] = "Редактировать контактный адрес";
+$text['title-contact_addresses-edit']['sv-se'] = "Ändra Kontakt Adress";
+$text['title-contact_addresses-edit']['uk-ua'] = "Змінити контактну адресу";
+$text['title-contact_addresses-edit']['zh-cn'] = "联络地址编辑";
+$text['title-contact_addresses-edit']['ja-jp'] = "連絡先住所編集";
+$text['title-contact_addresses-edit']['ko-kr'] = "연락처 주소 편집";
+
+$text['title-contact_addresses-add']['en-us'] = "Contact Address Add";
+$text['title-contact_addresses-add']['en-gb'] = "Contact Address Add";
+$text['title-contact_addresses-add']['ar-eg'] = "إضافة عنوان الاتصال";
+$text['title-contact_addresses-add']['de-at'] = "Adresse hinzufügen";
+$text['title-contact_addresses-add']['de-ch'] = "Adresse hinzufügen";
+$text['title-contact_addresses-add']['de-de'] = "Adresse hinzufügen";
+$text['title-contact_addresses-add']['el-gr'] = "Προσθήκη Διεύθυνσης Επαφής";
+$text['title-contact_addresses-add']['es-cl'] = "Agregar Dirección de Contacto";
+$text['title-contact_addresses-add']['es-mx'] = "Agregar Dirección de Contacto";
+$text['title-contact_addresses-add']['fr-ca'] = "Ajouter une adresse au contact";
+$text['title-contact_addresses-add']['fr-fr'] = "Ajouter une adresse au contact";
+$text['title-contact_addresses-add']['he-il'] = "כתובת איש קשר הוסף";
+$text['title-contact_addresses-add']['it-it'] = "Inserisci Indirizzo Contatto";
+$text['title-contact_addresses-add']['ka-ge'] = "კონტაქტის მისამართის დამატება";
+$text['title-contact_addresses-add']['nl-nl'] = "Kontact adres toevoegen";
+$text['title-contact_addresses-add']['pl-pl'] = "Dodaj adres kontaktu";
+$text['title-contact_addresses-add']['pt-br'] = "Adicionar endereço do contato";
+$text['title-contact_addresses-add']['pt-pt'] = "Adicionar endereço do contacto";
+$text['title-contact_addresses-add']['ro-ro'] = "Adresa de contact Adaugă";
+$text['title-contact_addresses-add']['ru-ru'] = "Добавить Адрес для связи: ";
+$text['title-contact_addresses-add']['sv-se'] = "Lägg Till Kontakt Adress";
+$text['title-contact_addresses-add']['uk-ua'] = "Контактна адреса Додати";
+$text['title-contact_addresses-add']['zh-cn'] = "联系地址 添加";
+$text['title-contact_addresses-add']['ja-jp'] = "連絡先追加";
+$text['title-contact_addresses-add']['ko-kr'] = "연락처 주소 추가";
+
+$text['title-contact_attachment-edit']['en-us'] = "Contact Attachment Edit";
+$text['title-contact_attachment-edit']['en-gb'] = "Contact Attachment Edit";
+$text['title-contact_attachment-edit']['ar-eg'] = "تحرير مرفق جهة الاتصال";
+$text['title-contact_attachment-edit']['de-at'] = "Kontaktanhang bearbeiten";
+$text['title-contact_attachment-edit']['de-ch'] = "Kontaktanhang bearbeiten";
+$text['title-contact_attachment-edit']['de-de'] = "Kontaktanhang bearbeiten";
+$text['title-contact_attachment-edit']['el-gr'] = "Επεξεργασία Επισύναψης Επαφής";
+$text['title-contact_attachment-edit']['es-cl'] = "Adjunto de contacto Editar";
+$text['title-contact_attachment-edit']['es-mx'] = "Adjunto de contacto Editar";
+$text['title-contact_attachment-edit']['fr-ca'] = "Pièce jointe de Contact Modifier";
+$text['title-contact_attachment-edit']['fr-fr'] = "Pièce jointe de Contact Modifier";
+$text['title-contact_attachment-edit']['he-il'] = "עריכת קובץ מצורף ליצירת קשר";
+$text['title-contact_attachment-edit']['it-it'] = "Contatto Modifica allegato";
+$text['title-contact_attachment-edit']['ka-ge'] = "კონტაქტზე მიმაგრებული ფაილის ჩასწორება";
+$text['title-contact_attachment-edit']['nl-nl'] = "Kontact aanhangsel bewerken";
+$text['title-contact_attachment-edit']['pl-pl'] = "Edycja załącznika kontaktowego";
+$text['title-contact_attachment-edit']['pt-br'] = "Editar anexo de contato";
+$text['title-contact_attachment-edit']['pt-pt'] = "Editar anexo de contato";
+$text['title-contact_attachment-edit']['ro-ro'] = "Editare atașament de contact";
+$text['title-contact_attachment-edit']['ru-ru'] = "Контактное приложение Править";
+$text['title-contact_attachment-edit']['sv-se'] = "Kontakta Bilaga Redigera";
+$text['title-contact_attachment-edit']['uk-ua'] = "Редагування вкладення контакту";
+$text['title-contact_attachment-edit']['zh-cn'] = "联系人附件编辑";
+$text['title-contact_attachment-edit']['ja-jp'] = "連絡先の添付ファイルの編集";
+$text['title-contact_attachment-edit']['ko-kr'] = "연락처 편집";
+
+$text['title-contact_attachment-add']['en-us'] = "Contact Attachment Add";
+$text['title-contact_attachment-add']['en-gb'] = "Contact Attachment Add";
+$text['title-contact_attachment-add']['ar-eg'] = "إضافة مرفق الاتصال";
+$text['title-contact_attachment-add']['de-at'] = "Kontaktanhang hinzufügen";
+$text['title-contact_attachment-add']['de-ch'] = "Kontaktanhang hinzufügen";
+$text['title-contact_attachment-add']['de-de'] = "Kontaktanhang hinzufügen";
+$text['title-contact_attachment-add']['el-gr'] = "Προσθήκη Επισύναψης Επαφής";
+$text['title-contact_attachment-add']['es-cl'] = "Adjunto de contacto Agregar";
+$text['title-contact_attachment-add']['es-mx'] = "Adjunto de contacto Agregar";
+$text['title-contact_attachment-add']['fr-ca'] = "Pièce jointe de Contact Ajouter";
+$text['title-contact_attachment-add']['fr-fr'] = "Pièce jointe de Contact Ajouter";
+$text['title-contact_attachment-add']['he-il'] = "צור קשר הוסף";
+$text['title-contact_attachment-add']['it-it'] = "Contatto allegato Aggiungi";
+$text['title-contact_attachment-add']['ka-ge'] = "კონტაქტზე მიმაგრებული ფაილის დამატება";
+$text['title-contact_attachment-add']['nl-nl'] = "Kontact aanhangsel toevoegen";
+$text['title-contact_attachment-add']['pl-pl'] = "Kontakt Załącznik Dodaj";
+$text['title-contact_attachment-add']['pt-br'] = "Adicionar anexo de contato";
+$text['title-contact_attachment-add']['pt-pt'] = "Adicionar anexo de contato";
+$text['title-contact_attachment-add']['ro-ro'] = "Atașament de contact Adaugă";
+$text['title-contact_attachment-add']['ru-ru'] = "Добавить вложение в контакт";
+$text['title-contact_attachment-add']['sv-se'] = "Kontaktbilaga Lägg till";
+$text['title-contact_attachment-add']['uk-ua'] = "Вкладення контакту Дод";
+$text['title-contact_attachment-add']['zh-cn'] = "联系人附件添加";
+$text['title-contact_attachment-add']['ja-jp'] = "連絡先添付追加";
+$text['title-contact_attachment-add']['ko-kr'] = "연락처 첨부 추가";
+
+$text['title-contact-edit']['en-us'] = "Contact";
+$text['title-contact-edit']['en-gb'] = "Contact";
+$text['title-contact-edit']['ar-eg'] = "اتصال";
+$text['title-contact-edit']['de-at'] = "Kontakt";
+$text['title-contact-edit']['de-ch'] = "Kontakt";
+$text['title-contact-edit']['de-de'] = "Kontakt";
+$text['title-contact-edit']['el-gr'] = "Επαφή";
+$text['title-contact-edit']['es-cl'] = "Contacto";
+$text['title-contact-edit']['es-mx'] = "Contacto";
+$text['title-contact-edit']['fr-ca'] = "Contact";
+$text['title-contact-edit']['fr-fr'] = "Contact";
+$text['title-contact-edit']['he-il'] = "איש קשר";
+$text['title-contact-edit']['it-it'] = "Contatto";
+$text['title-contact-edit']['ka-ge'] = "კონტაქტი";
+$text['title-contact-edit']['nl-nl'] = "Kontact";
+$text['title-contact-edit']['pl-pl'] = "Kontakt";
+$text['title-contact-edit']['pt-br'] = "Contato";
+$text['title-contact-edit']['pt-pt'] = "Contacto";
+$text['title-contact-edit']['ro-ro'] = "a lua legatura";
+$text['title-contact-edit']['ru-ru'] = "Контакт";
+$text['title-contact-edit']['sv-se'] = "Kontakt";
+$text['title-contact-edit']['uk-ua'] = "Контакт";
+$text['title-contact-edit']['zh-cn'] = "接触";
+$text['title-contact-edit']['ja-jp'] = "コンタクト";
+$text['title-contact-edit']['ko-kr'] = "연락하다";
+
+$text['title-contact-add']['en-us'] = "Contact Add";
+$text['title-contact-add']['en-gb'] = "Contact Add";
+$text['title-contact-add']['ar-eg'] = "إضافة جهة اتصال";
+$text['title-contact-add']['de-at'] = "Kontakt hinzufügen";
+$text['title-contact-add']['de-ch'] = "Kontakt hinzufügen";
+$text['title-contact-add']['de-de'] = "Kontakt hinzufügen";
+$text['title-contact-add']['el-gr'] = "Προσθήκη Επαφής";
+$text['title-contact-add']['es-cl'] = "Agregar Contacto";
+$text['title-contact-add']['es-mx'] = "Agregar Contacto";
+$text['title-contact-add']['fr-ca'] = "Ajouter Contact";
+$text['title-contact-add']['fr-fr'] = "Ajouter Contact";
+$text['title-contact-add']['he-il'] = "הוספת איש קשר";
+$text['title-contact-add']['it-it'] = "Inserisci Contatto";
+$text['title-contact-add']['ka-ge'] = "კონტაქტის დამატება";
+$text['title-contact-add']['nl-nl'] = "Kontact toevoegen";
+$text['title-contact-add']['pl-pl'] = "Dodaj kontakt";
+$text['title-contact-add']['pt-br'] = "Adicionar contato";
+$text['title-contact-add']['pt-pt'] = "Adicionar Contacto";
+$text['title-contact-add']['ro-ro'] = "Contact Adaugă";
+$text['title-contact-add']['ru-ru'] = "Контакты Добавить";
+$text['title-contact-add']['sv-se'] = "Lägg Till Kontakt";
+$text['title-contact-add']['uk-ua'] = "Додавання контакта";
+$text['title-contact-add']['zh-cn'] = "联系人添加";
+$text['title-contact-add']['ja-jp'] = "連絡先の追加";
+$text['title-contact-add']['ko-kr'] = "연락처 추가";
+
+$text['option-work']['en-us'] = "Work";
+$text['option-work']['en-gb'] = "Work";
+$text['option-work']['ar-eg'] = "عمل";
+$text['option-work']['de-at'] = "Arbeit";
+$text['option-work']['de-ch'] = "Arbeit";
+$text['option-work']['de-de'] = "Arbeit";
+$text['option-work']['el-gr'] = "Εργασία";
+$text['option-work']['es-cl'] = "Lugar de Trabajo";
+$text['option-work']['es-mx'] = "Lugar de Trabajo";
+$text['option-work']['fr-ca'] = "Travail";
+$text['option-work']['fr-fr'] = "En Milieu de Travail";
+$text['option-work']['he-il'] = "עבודה";
+$text['option-work']['it-it'] = "Lavoro";
+$text['option-work']['ka-ge'] = "სამუშაო";
+$text['option-work']['nl-nl'] = "Werk";
+$text['option-work']['pl-pl'] = "Praca";
+$text['option-work']['pt-br'] = "Local de trabalho";
+$text['option-work']['pt-pt'] = "Local de Trabalho";
+$text['option-work']['ro-ro'] = "Muncă";
+$text['option-work']['ru-ru'] = "Работа";
+$text['option-work']['sv-se'] = "Arbete";
+$text['option-work']['uk-ua'] = "Робота";
+$text['option-work']['zh-cn'] = "工作";
+$text['option-work']['ja-jp'] = "仕事";
+$text['option-work']['ko-kr'] = "일하다";
+
+$text['option-voicemail']['en-us'] = "Voicemail";
+$text['option-voicemail']['en-gb'] = "Voicemail";
+$text['option-voicemail']['ar-eg'] = "البريد الصوتي";
+$text['option-voicemail']['de-at'] = "Mailbox";
+$text['option-voicemail']['de-ch'] = "Mailbox";
+$text['option-voicemail']['de-de'] = "Mailbox";
+$text['option-voicemail']['el-gr'] = "Φωνοκιβώτιο";
+$text['option-voicemail']['es-cl'] = "Correo de Voz";
+$text['option-voicemail']['es-mx'] = "Correo de Voz";
+$text['option-voicemail']['fr-ca'] = "Messagerie Vocale";
+$text['option-voicemail']['fr-fr'] = "Messagerie Vocale";
+$text['option-voicemail']['he-il'] = "תא קולי";
+$text['option-voicemail']['it-it'] = "Casella Vocale";
+$text['option-voicemail']['ka-ge'] = "ხმოვანი ფოსტა";
+$text['option-voicemail']['nl-nl'] = "Antwoord apparaat";
+$text['option-voicemail']['pl-pl'] = "Poczta głosowa";
+$text['option-voicemail']['pt-br'] = "Correio de Voz";
+$text['option-voicemail']['pt-pt'] = "Voicemail";
+$text['option-voicemail']['ro-ro'] = "Mesageria vocală";
+$text['option-voicemail']['ru-ru'] = "Голосовая почта";
+$text['option-voicemail']['sv-se'] = "Röstbrevlåda";
+$text['option-voicemail']['uk-ua'] = "Голосова пошта";
+$text['option-voicemail']['zh-cn'] = "语音信箱";
+$text['option-voicemail']['ja-jp'] = "ボイスメール";
+$text['option-voicemail']['ko-kr'] = "음성사서함";
+
+$text['option-true']['en-us'] = "True";
+$text['option-true']['en-gb'] = "True";
+$text['option-true']['ar-eg'] = "صحيح";
+$text['option-true']['de-at'] = "Ein";
+$text['option-true']['de-ch'] = "Ein";
+$text['option-true']['de-de'] = "Ein";
+$text['option-true']['el-gr'] = "Ναι";
+$text['option-true']['es-cl'] = "Verdadero";
+$text['option-true']['es-mx'] = "Verdadero";
+$text['option-true']['fr-ca'] = "vrai";
+$text['option-true']['fr-fr'] = "Oui";
+$text['option-true']['he-il'] = "חוקי";
+$text['option-true']['it-it'] = "Vero";
+$text['option-true']['ka-ge'] = "ჭეშმარიტი";
+$text['option-true']['nl-nl'] = "Ja";
+$text['option-true']['pl-pl'] = "Tak";
+$text['option-true']['pt-br'] = "Sim";
+$text['option-true']['pt-pt'] = "Sim";
+$text['option-true']['ro-ro'] = "Adevărat";
+$text['option-true']['ru-ru'] = "Да";
+$text['option-true']['sv-se'] = "Sann";
+$text['option-true']['uk-ua'] = "Так";
+$text['option-true']['zh-cn'] = "真的";
+$text['option-true']['ja-jp'] = "真実";
+$text['option-true']['ko-kr'] = "진실";
+
+$text['option-text']['en-us'] = "Text";
+$text['option-text']['en-gb'] = "Text";
+$text['option-text']['ar-eg'] = "نص";
+$text['option-text']['de-at'] = "Text";
+$text['option-text']['de-ch'] = "Text";
+$text['option-text']['de-de'] = "Text";
+$text['option-text']['el-gr'] = "Κείμενο";
+$text['option-text']['es-cl'] = "Texto";
+$text['option-text']['es-mx'] = "Texto";
+$text['option-text']['fr-ca'] = "Texte";
+$text['option-text']['fr-fr'] = "Texte";
+$text['option-text']['he-il'] = "טקסט";
+$text['option-text']['it-it'] = "Testo";
+$text['option-text']['ka-ge'] = "ტექსტი";
+$text['option-text']['nl-nl'] = "Tekst";
+$text['option-text']['pl-pl'] = "Tekst";
+$text['option-text']['pt-br'] = "Texto";
+$text['option-text']['pt-pt'] = "Texto";
+$text['option-text']['ro-ro'] = "Text";
+$text['option-text']['ru-ru'] = "Текст";
+$text['option-text']['sv-se'] = "Text";
+$text['option-text']['uk-ua'] = "Текст";
+$text['option-text']['zh-cn'] = "文本";
+$text['option-text']['ja-jp'] = "文章";
+$text['option-text']['ko-kr'] = "텍스트";
+
+$text['option-shipping']['en-us'] = "Shipping";
+$text['option-shipping']['en-gb'] = "Shipping";
+$text['option-shipping']['ar-eg'] = "شحن";
+$text['option-shipping']['de-at'] = "Versand";
+$text['option-shipping']['de-ch'] = "Versand";
+$text['option-shipping']['de-de'] = "Versand";
+$text['option-shipping']['el-gr'] = "Αποστολή";
+$text['option-shipping']['es-cl'] = "Envío";
+$text['option-shipping']['es-mx'] = "Envío";
+$text['option-shipping']['fr-ca'] = "Livraison";
+$text['option-shipping']['fr-fr'] = "Livraison";
+$text['option-shipping']['he-il'] = "משלוח";
+$text['option-shipping']['it-it'] = "Spedizione";
+$text['option-shipping']['ka-ge'] = "მიტანა";
+$text['option-shipping']['nl-nl'] = "Versturen";
+$text['option-shipping']['pl-pl'] = "Adres wysyłkowy";
+$text['option-shipping']['pt-br'] = "Remessa";
+$text['option-shipping']['pt-pt'] = "Remessa";
+$text['option-shipping']['ro-ro'] = "Transport";
+$text['option-shipping']['ru-ru'] = "Доставка";
+$text['option-shipping']['sv-se'] = "Leverans";
+$text['option-shipping']['uk-ua'] = "Доставка";
+$text['option-shipping']['zh-cn'] = "船运";
+$text['option-shipping']['ja-jp'] = "運送";
+$text['option-shipping']['ko-kr'] = "배송";
+
+$text['option-pref']['en-us'] = "Preferred";
+$text['option-pref']['en-gb'] = "Preferred";
+$text['option-pref']['ar-eg'] = "يفضل";
+$text['option-pref']['de-at'] = "Bevorzugt";
+$text['option-pref']['de-ch'] = "Bevorzugt";
+$text['option-pref']['de-de'] = "Bevorzugt";
+$text['option-pref']['el-gr'] = "Προτιμώμενο";
+$text['option-pref']['es-cl'] = "Preferido";
+$text['option-pref']['es-mx'] = "Preferido";
+$text['option-pref']['fr-ca'] = "Préféré";
+$text['option-pref']['fr-fr'] = "Préféré";
+$text['option-pref']['he-il'] = "מועדף";
+$text['option-pref']['it-it'] = "Preferito";
+$text['option-pref']['ka-ge'] = "რჩეული";
+$text['option-pref']['nl-nl'] = "Voorkeur";
+$text['option-pref']['pl-pl'] = "Preferowany";
+$text['option-pref']['pt-br'] = "Perferido";
+$text['option-pref']['pt-pt'] = "Preferido";
+$text['option-pref']['ro-ro'] = "Preferat";
+$text['option-pref']['ru-ru'] = "Предпочтительный";
+$text['option-pref']['sv-se'] = "Föredragen";
+$text['option-pref']['uk-ua'] = "Бажано";
+$text['option-pref']['zh-cn'] = "首选";
+$text['option-pref']['ja-jp'] = "優先";
+$text['option-pref']['ko-kr'] = "우선의";
+
+$text['option-postal']['en-us'] = "Postal";
+$text['option-postal']['en-gb'] = "Postal";
+$text['option-postal']['ar-eg'] = "بريدي";
+$text['option-postal']['de-at'] = "Postalisch";
+$text['option-postal']['de-ch'] = "Postalisch";
+$text['option-postal']['de-de'] = "Postalisch";
+$text['option-postal']['el-gr'] = "Ταχυδρομικός";
+$text['option-postal']['es-cl'] = "Postal";
+$text['option-postal']['es-mx'] = "Postal";
+$text['option-postal']['fr-ca'] = "Postal";
+$text['option-postal']['fr-fr'] = "Postal";
+$text['option-postal']['he-il'] = "דואר";
+$text['option-postal']['it-it'] = "Postale";
+$text['option-postal']['ka-ge'] = "საფოსტო";
+$text['option-postal']['nl-nl'] = "per post";
+$text['option-postal']['pl-pl'] = "Adres pocztowy";
+$text['option-postal']['pt-br'] = "Postal";
+$text['option-postal']['pt-pt'] = "Postal";
+$text['option-postal']['ro-ro'] = "Poştal";
+$text['option-postal']['ru-ru'] = "Почтовый";
+$text['option-postal']['sv-se'] = "Postkod";
+$text['option-postal']['uk-ua'] = "Поштовий";
+$text['option-postal']['zh-cn'] = "邮政";
+$text['option-postal']['ja-jp'] = "郵便";
+$text['option-postal']['ko-kr'] = "우편 엽서";
+
+$text['option-physical']['en-us'] = "Physical";
+$text['option-physical']['en-gb'] = "Physical";
+$text['option-physical']['ar-eg'] = "بدني";
+$text['option-physical']['de-at'] = "Physikalisch";
+$text['option-physical']['de-ch'] = "Physikalisch";
+$text['option-physical']['de-de'] = "Physikalisch";
+$text['option-physical']['el-gr'] = "Φυσικό";
+$text['option-physical']['es-cl'] = "Físico";
+$text['option-physical']['es-mx'] = "Físico";
+$text['option-physical']['fr-ca'] = "Physique";
+$text['option-physical']['fr-fr'] = "Physique";
+$text['option-physical']['he-il'] = "גוּפָנִי";
+$text['option-physical']['it-it'] = "Fisico";
+$text['option-physical']['ka-ge'] = "ფიზიკური";
+$text['option-physical']['nl-nl'] = "Fysiek";
+$text['option-physical']['pl-pl'] = "Fizyczny";
+$text['option-physical']['pt-br'] = "Fisico";
+$text['option-physical']['pt-pt'] = "Físico";
+$text['option-physical']['ro-ro'] = "Fizic";
+$text['option-physical']['ru-ru'] = "Физический";
+$text['option-physical']['sv-se'] = "Fysisk";
+$text['option-physical']['uk-ua'] = "фізичний";
+$text['option-physical']['zh-cn'] = "身体的";
+$text['option-physical']['ja-jp'] = "物理的";
+$text['option-physical']['ko-kr'] = "물리적";
+
+$text['option-personal']['en-us'] = "Personal";
+$text['option-personal']['en-gb'] = "Personal";
+$text['option-personal']['ar-eg'] = "شخصي";
+$text['option-personal']['de-at'] = "Privat";
+$text['option-personal']['de-ch'] = "Privat";
+$text['option-personal']['de-de'] = "Privat";
+$text['option-personal']['el-gr'] = "Προσωπικό";
+$text['option-personal']['es-cl'] = "Personal";
+$text['option-personal']['es-mx'] = "Personal";
+$text['option-personal']['fr-ca'] = "Personnel";
+$text['option-personal']['fr-fr'] = "Personnel";
+$text['option-personal']['he-il'] = "פרטי";
+$text['option-personal']['it-it'] = "Personale";
+$text['option-personal']['ka-ge'] = "პერსონალური";
+$text['option-personal']['nl-nl'] = "Persoonlijk";
+$text['option-personal']['pl-pl'] = "Osobisty";
+$text['option-personal']['pt-br'] = "Pessoal";
+$text['option-personal']['pt-pt'] = "Pessoal";
+$text['option-personal']['ro-ro'] = "Personal";
+$text['option-personal']['ru-ru'] = "Персональный";
+$text['option-personal']['sv-se'] = "Personlig";
+$text['option-personal']['uk-ua'] = "Особистий";
+$text['option-personal']['zh-cn'] = "个人的";
+$text['option-personal']['ja-jp'] = "個人的";
+$text['option-personal']['ko-kr'] = "개인의";
+
+$text['option-parcel']['en-us'] = "Parcel";
+$text['option-parcel']['en-gb'] = "Parcel";
+$text['option-parcel']['ar-eg'] = "قطعة";
+$text['option-parcel']['de-at'] = "Paket";
+$text['option-parcel']['de-ch'] = "Paket";
+$text['option-parcel']['de-de'] = "Paket";
+$text['option-parcel']['el-gr'] = "Δέμα";
+$text['option-parcel']['es-cl'] = "Parcela";
+$text['option-parcel']['es-mx'] = "Parcela";
+$text['option-parcel']['fr-ca'] = "Parcelle";
+$text['option-parcel']['fr-fr'] = "Parcelle";
+$text['option-parcel']['he-il'] = "חֲבִילָה";
+$text['option-parcel']['it-it'] = "Collo";
+$text['option-parcel']['ka-ge'] = "ამანათი";
+$text['option-parcel']['nl-nl'] = "Pakket";
+$text['option-parcel']['pl-pl'] = "Paczka";
+$text['option-parcel']['pt-br'] = "Parcela";
+$text['option-parcel']['pt-pt'] = "Parcela";
+$text['option-parcel']['ro-ro'] = "Colet";
+$text['option-parcel']['ru-ru'] = "Пакет";
+$text['option-parcel']['sv-se'] = "Paket";
+$text['option-parcel']['uk-ua'] = "Посилка";
+$text['option-parcel']['zh-cn'] = "包裹";
+$text['option-parcel']['ja-jp'] = "小包";
+$text['option-parcel']['ko-kr'] = "소포";
+
+$text['option-pager']['en-us'] = "Pager";
+$text['option-pager']['en-gb'] = "Pager";
+$text['option-pager']['ar-eg'] = "بيجر";
+$text['option-pager']['de-at'] = "Pager";
+$text['option-pager']['de-ch'] = "Pager";
+$text['option-pager']['de-de'] = "Pager";
+$text['option-pager']['el-gr'] = "Βομβητής";
+$text['option-pager']['es-cl'] = "Buscapersonas";
+$text['option-pager']['es-mx'] = "Buscapersonas";
+$text['option-pager']['fr-ca'] = "Pager";
+$text['option-pager']['fr-fr'] = "Pager";
+$text['option-pager']['he-il'] = "ביפר";
+$text['option-pager']['it-it'] = "Cercapersone";
+$text['option-pager']['ka-ge'] = "პეიჯერი";
+$text['option-pager']['nl-nl'] = "Pager";
+$text['option-pager']['pl-pl'] = "Pager ";
+$text['option-pager']['pt-br'] = "Página";
+$text['option-pager']['pt-pt'] = "Pager";
+$text['option-pager']['ro-ro'] = "Pager";
+$text['option-pager']['ru-ru'] = "Пейджер";
+$text['option-pager']['sv-se'] = "Personsökare";
+$text['option-pager']['uk-ua'] = "Пейджер";
+$text['option-pager']['zh-cn'] = "寻呼机";
+$text['option-pager']['ja-jp'] = "ページャ";
+$text['option-pager']['ko-kr'] = "휴대용 소형 무선 호출기";
+
+$text['option-other']['en-us'] = "Other";
+$text['option-other']['en-gb'] = "Other";
+$text['option-other']['ar-eg'] = "آخر";
+$text['option-other']['de-at'] = "Andere";
+$text['option-other']['de-ch'] = "Andere";
+$text['option-other']['de-de'] = "Andere";
+$text['option-other']['el-gr'] = "Άλλα";
+$text['option-other']['es-cl'] = "Otro";
+$text['option-other']['es-mx'] = "Otro";
+$text['option-other']['fr-ca'] = "Autre";
+$text['option-other']['fr-fr'] = "Autre";
+$text['option-other']['he-il'] = "אחר";
+$text['option-other']['it-it'] = "Altro";
+$text['option-other']['ka-ge'] = "სხვა";
+$text['option-other']['nl-nl'] = "Anders";
+$text['option-other']['pl-pl'] = "Inne";
+$text['option-other']['pt-br'] = "Outro";
+$text['option-other']['pt-pt'] = "Outro";
+$text['option-other']['ro-ro'] = "Alte";
+$text['option-other']['ru-ru'] = "Другие";
+$text['option-other']['sv-se'] = "Annat";
+$text['option-other']['uk-ua'] = "Інший";
+$text['option-other']['zh-cn'] = "其他";
+$text['option-other']['ja-jp'] = "他の";
+$text['option-other']['ko-kr'] = "다른";
+
+$text['option-mobile']['en-us'] = "Mobile";
+$text['option-mobile']['en-gb'] = "Mobile";
+$text['option-mobile']['ar-eg'] = "متحرك";
+$text['option-mobile']['de-at'] = "Mobil";
+$text['option-mobile']['de-ch'] = "Mobil";
+$text['option-mobile']['de-de'] = "Mobil";
+$text['option-mobile']['el-gr'] = "Κινητό";
+$text['option-mobile']['es-cl'] = "Celular";
+$text['option-mobile']['es-mx'] = "Celular";
+$text['option-mobile']['fr-ca'] = "Cellulaire";
+$text['option-mobile']['fr-fr'] = "Cellulaire";
+$text['option-mobile']['he-il'] = "נייד";
+$text['option-mobile']['it-it'] = "Mobile";
+$text['option-mobile']['ka-ge'] = "მობილური";
+$text['option-mobile']['nl-nl'] = "Mobiel";
+$text['option-mobile']['pl-pl'] = "Tel komórkowy";
+$text['option-mobile']['pt-br'] = "Celular";
+$text['option-mobile']['pt-pt'] = "Celular";
+$text['option-mobile']['ro-ro'] = "Mobil";
+$text['option-mobile']['ru-ru'] = "Мобильний";
+$text['option-mobile']['sv-se'] = "Mobil";
+$text['option-mobile']['uk-ua'] = "Мобільний";
+$text['option-mobile']['zh-cn'] = "移动的";
+$text['option-mobile']['ja-jp'] = "モバイル";
+$text['option-mobile']['ko-kr'] = "이동하는";
+
+$text['option-main']['en-us'] = "Main";
+$text['option-main']['en-gb'] = "Main";
+$text['option-main']['ar-eg'] = "رئيسي";
+$text['option-main']['de-at'] = "Vorrangig";
+$text['option-main']['de-ch'] = "Vorrangig";
+$text['option-main']['de-de'] = "Vorrangig";
+$text['option-main']['el-gr'] = "Κύριο";
+$text['option-main']['es-cl'] = "Principal";
+$text['option-main']['es-mx'] = "Principal";
+$text['option-main']['fr-ca'] = "Principal";
+$text['option-main']['fr-fr'] = "Principal";
+$text['option-main']['he-il'] = "ראשי";
+$text['option-main']['it-it'] = "Principale";
+$text['option-main']['ka-ge'] = "მთავარი";
+$text['option-main']['nl-nl'] = "Hoofd";
+$text['option-main']['pl-pl'] = "Główny";
+$text['option-main']['pt-br'] = "Principal";
+$text['option-main']['pt-pt'] = "Principal";
+$text['option-main']['ro-ro'] = "Principal";
+$text['option-main']['ru-ru'] = "Главный";
+$text['option-main']['sv-se'] = "Huvud";
+$text['option-main']['uk-ua'] = "Основний";
+$text['option-main']['zh-cn'] = "主要的";
+$text['option-main']['ja-jp'] = "主要";
+$text['option-main']['ko-kr'] = "기본";
+
+$text['option-mailing']['en-us'] = "Mailing";
+$text['option-mailing']['en-gb'] = "Mailing";
+$text['option-mailing']['ar-eg'] = "المراسلات";
+$text['option-mailing']['de-at'] = "Postalisch";
+$text['option-mailing']['de-ch'] = "Postalisch";
+$text['option-mailing']['de-de'] = "Postalisch";
+$text['option-mailing']['el-gr'] = "Ταχυδρομικός";
+$text['option-mailing']['es-cl'] = "Mailing";
+$text['option-mailing']['es-mx'] = "Mailing";
+$text['option-mailing']['fr-ca'] = "Postale";
+$text['option-mailing']['fr-fr'] = "Postale";
+$text['option-mailing']['he-il'] = "דיוור";
+$text['option-mailing']['it-it'] = "Posta";
+$text['option-mailing']['ka-ge'] = "საფოსტო";
+$text['option-mailing']['nl-nl'] = "per post";
+$text['option-mailing']['pl-pl'] = "Mailing";
+$text['option-mailing']['pt-br'] = "Correspondência";
+$text['option-mailing']['pt-pt'] = "Mailing";
+$text['option-mailing']['ro-ro'] = "Poștă";
+$text['option-mailing']['ru-ru'] = "Почтовый";
+$text['option-mailing']['sv-se'] = "Utskick";
+$text['option-mailing']['uk-ua'] = "Пошта";
+$text['option-mailing']['zh-cn'] = "邮寄";
+$text['option-mailing']['ja-jp'] = "郵送";
+$text['option-mailing']['ko-kr'] = "메일링";
+
+$text['option-intl']['en-us'] = "International";
+$text['option-intl']['en-gb'] = "International";
+$text['option-intl']['ar-eg'] = "دولي";
+$text['option-intl']['de-at'] = "International";
+$text['option-intl']['de-ch'] = "International";
+$text['option-intl']['de-de'] = "International";
+$text['option-intl']['el-gr'] = "Διεθνής";
+$text['option-intl']['es-cl'] = "Internacional";
+$text['option-intl']['es-mx'] = "Internacional";
+$text['option-intl']['fr-ca'] = "International";
+$text['option-intl']['fr-fr'] = "International";
+$text['option-intl']['he-il'] = "בילאומי";
+$text['option-intl']['it-it'] = "Internazionale";
+$text['option-intl']['ka-ge'] = "საერთაშორისო";
+$text['option-intl']['nl-nl'] = "Internationaal";
+$text['option-intl']['pl-pl'] = "Międzynarodowy";
+$text['option-intl']['pt-br'] = "Internacional";
+$text['option-intl']['pt-pt'] = "Internacional";
+$text['option-intl']['ro-ro'] = "Internaţional";
+$text['option-intl']['ru-ru'] = "Международный";
+$text['option-intl']['sv-se'] = "Internationell";
+$text['option-intl']['uk-ua'] = "Міжнародний";
+$text['option-intl']['zh-cn'] = "国际的";
+$text['option-intl']['ja-jp'] = "国際的";
+$text['option-intl']['ko-kr'] = "국제적인";
+
+$text['option-import_duplicates_skip']['en-us'] = "Skip";
+$text['option-import_duplicates_skip']['en-gb'] = "Skip";
+$text['option-import_duplicates_skip']['ar-eg'] = "يتخطى";
+$text['option-import_duplicates_skip']['de-at'] = "Überspringen";
+$text['option-import_duplicates_skip']['de-ch'] = "Überspringen";
+$text['option-import_duplicates_skip']['de-de'] = "Überspringen";
+$text['option-import_duplicates_skip']['el-gr'] = "Παράβλεψη";
+$text['option-import_duplicates_skip']['es-cl'] = "Omitir";
+$text['option-import_duplicates_skip']['es-mx'] = "Omitir";
+$text['option-import_duplicates_skip']['fr-ca'] = "Sauter";
+$text['option-import_duplicates_skip']['fr-fr'] = "Sauter";
+$text['option-import_duplicates_skip']['he-il'] = "דלג";
+$text['option-import_duplicates_skip']['it-it'] = "Salta";
+$text['option-import_duplicates_skip']['ka-ge'] = "გამოტოვება";
+$text['option-import_duplicates_skip']['nl-nl'] = "Overslaan";
+$text['option-import_duplicates_skip']['pl-pl'] = "Pomiń";
+$text['option-import_duplicates_skip']['pt-br'] = "Pular";
+$text['option-import_duplicates_skip']['pt-pt'] = "Pular";
+$text['option-import_duplicates_skip']['ro-ro'] = "Ocolire";
+$text['option-import_duplicates_skip']['ru-ru'] = "Пропустить";
+$text['option-import_duplicates_skip']['sv-se'] = "Skippa";
+$text['option-import_duplicates_skip']['uk-ua'] = "Пропустити";
+$text['option-import_duplicates_skip']['zh-cn'] = "跳过";
+$text['option-import_duplicates_skip']['ja-jp'] = "スキップ";
+$text['option-import_duplicates_skip']['ko-kr'] = "건너뛰다";
+
+$text['option-import_duplicates_replace']['en-us'] = "Replace";
+$text['option-import_duplicates_replace']['en-gb'] = "Replace";
+$text['option-import_duplicates_replace']['ar-eg'] = "يستبدل";
+$text['option-import_duplicates_replace']['de-at'] = "Ersetzen";
+$text['option-import_duplicates_replace']['de-ch'] = "Ersetzen";
+$text['option-import_duplicates_replace']['de-de'] = "Ersetzen";
+$text['option-import_duplicates_replace']['el-gr'] = "Αντικατάσταση";
+$text['option-import_duplicates_replace']['es-cl'] = "Reemplazar";
+$text['option-import_duplicates_replace']['es-mx'] = "Reemplazar";
+$text['option-import_duplicates_replace']['fr-ca'] = "Remplacer";
+$text['option-import_duplicates_replace']['fr-fr'] = "Remplacer";
+$text['option-import_duplicates_replace']['he-il'] = "החלף";
+$text['option-import_duplicates_replace']['it-it'] = "Sostituisci";
+$text['option-import_duplicates_replace']['ka-ge'] = "ჩანაცვლება";
+$text['option-import_duplicates_replace']['nl-nl'] = "Vervangen";
+$text['option-import_duplicates_replace']['pl-pl'] = "Zastąp";
+$text['option-import_duplicates_replace']['pt-br'] = "Substituir";
+$text['option-import_duplicates_replace']['pt-pt'] = "Substituir";
+$text['option-import_duplicates_replace']['ro-ro'] = "A inlocui";
+$text['option-import_duplicates_replace']['ru-ru'] = "Заменить";
+$text['option-import_duplicates_replace']['sv-se'] = "Byt Ut";
+$text['option-import_duplicates_replace']['uk-ua'] = "Замінити";
+$text['option-import_duplicates_replace']['zh-cn'] = "代替";
+$text['option-import_duplicates_replace']['ja-jp'] = "交換";
+$text['option-import_duplicates_replace']['ko-kr'] = "바꾸다";
+
+$text['option-home']['en-us'] = "Home";
+$text['option-home']['en-gb'] = "Home";
+$text['option-home']['ar-eg'] = "بيت";
+$text['option-home']['de-at'] = "Privat";
+$text['option-home']['de-ch'] = "Privat";
+$text['option-home']['de-de'] = "Privat";
+$text['option-home']['el-gr'] = "Αρχική";
+$text['option-home']['es-cl'] = "Casa";
+$text['option-home']['es-mx'] = "Casa";
+$text['option-home']['fr-ca'] = "Domicile";
+$text['option-home']['fr-fr'] = "Maison";
+$text['option-home']['he-il'] = "בית";
+$text['option-home']['it-it'] = "Casa";
+$text['option-home']['ka-ge'] = "საწყისი";
+$text['option-home']['nl-nl'] = "Huis";
+$text['option-home']['pl-pl'] = "Dom";
+$text['option-home']['pt-br'] = "Casa";
+$text['option-home']['pt-pt'] = "Casa";
+$text['option-home']['ro-ro'] = "Acasă";
+$text['option-home']['ru-ru'] = "Главная";
+$text['option-home']['sv-se'] = "Hem";
+$text['option-home']['uk-ua'] = "Домашній";
+$text['option-home']['zh-cn'] = "家";
+$text['option-home']['ja-jp'] = "家";
+$text['option-home']['ko-kr'] = "집";
+
+$text['option-fax']['en-us'] = "Fax";
+$text['option-fax']['en-gb'] = "Fax";
+$text['option-fax']['ar-eg'] = "فاكس";
+$text['option-fax']['de-at'] = "Fax";
+$text['option-fax']['de-ch'] = "Fax";
+$text['option-fax']['de-de'] = "Fax";
+$text['option-fax']['el-gr'] = "Τηλεομοιότυπο";
+$text['option-fax']['es-cl'] = "Facsímil";
+$text['option-fax']['es-mx'] = "Facsímil";
+$text['option-fax']['fr-ca'] = "Télécopie";
+$text['option-fax']['fr-fr'] = "Télécopie";
+$text['option-fax']['he-il'] = "פקס";
+$text['option-fax']['it-it'] = "Fax";
+$text['option-fax']['ka-ge'] = "ფაქსი";
+$text['option-fax']['nl-nl'] = "Fax";
+$text['option-fax']['pl-pl'] = "Faks";
+$text['option-fax']['pt-br'] = "FAX";
+$text['option-fax']['pt-pt'] = "Fax";
+$text['option-fax']['ro-ro'] = "Fax";
+$text['option-fax']['ru-ru'] = "Факс";
+$text['option-fax']['sv-se'] = "Fax";
+$text['option-fax']['uk-ua'] = "Факс";
+$text['option-fax']['zh-cn'] = "传真";
+$text['option-fax']['ja-jp'] = "ファックス";
+$text['option-fax']['ko-kr'] = "팩스";
+
+$text['option-false']['en-us'] = "False";
+$text['option-false']['en-gb'] = "False";
+$text['option-false']['ar-eg'] = "خطأ شنيع";
+$text['option-false']['de-at'] = "Aus";
+$text['option-false']['de-ch'] = "Aus";
+$text['option-false']['de-de'] = "Aus";
+$text['option-false']['el-gr'] = "Όχι";
+$text['option-false']['es-cl'] = "Falso";
+$text['option-false']['es-mx'] = "Falso";
+$text['option-false']['fr-ca'] = "Faux";
+$text['option-false']['fr-fr'] = "Non";
+$text['option-false']['he-il'] = "לא חוקי";
+$text['option-false']['it-it'] = "Falso";
+$text['option-false']['ka-ge'] = "ცრუ";
+$text['option-false']['nl-nl'] = "Nee";
+$text['option-false']['pl-pl'] = "Nie";
+$text['option-false']['pt-br'] = "Não";
+$text['option-false']['pt-pt'] = "Não";
+$text['option-false']['ro-ro'] = "Fals";
+$text['option-false']['ru-ru'] = "Нет";
+$text['option-false']['sv-se'] = "Falsk";
+$text['option-false']['uk-ua'] = "Ні";
+$text['option-false']['zh-cn'] = "错误的";
+$text['option-false']['ja-jp'] = "間違い";
+$text['option-false']['ko-kr'] = "거짓";
+
+$text['option-dom']['en-us'] = "Domestic";
+$text['option-dom']['en-gb'] = "Domestic";
+$text['option-dom']['ar-eg'] = "محلي";
+$text['option-dom']['de-at'] = "Lokal";
+$text['option-dom']['de-ch'] = "Lokal";
+$text['option-dom']['de-de'] = "Lokal";
+$text['option-dom']['el-gr'] = "Τοπικό";
+$text['option-dom']['es-cl'] = "Doméstico";
+$text['option-dom']['es-mx'] = "Doméstico";
+$text['option-dom']['fr-ca'] = "Domestique";
+$text['option-dom']['fr-fr'] = "Domestique";
+$text['option-dom']['he-il'] = "בֵּיתִי";
+$text['option-dom']['it-it'] = "Domestico";
+$text['option-dom']['ka-ge'] = "საშინაო/ადგილობრივი";
+$text['option-dom']['nl-nl'] = "Lokaal";
+$text['option-dom']['pl-pl'] = "Krajowy";
+$text['option-dom']['pt-br'] = "Doméstico";
+$text['option-dom']['pt-pt'] = "Doméstico";
+$text['option-dom']['ro-ro'] = "Intern";
+$text['option-dom']['ru-ru'] = "Внутренние";
+$text['option-dom']['sv-se'] = "Inhemsk";
+$text['option-dom']['uk-ua'] = "Домашній";
+$text['option-dom']['zh-cn'] = "国内的";
+$text['option-dom']['ja-jp'] = "国内";
+$text['option-dom']['ko-kr'] = "국내의";
+
+$text['option-contact_type_volunteer']['en-us'] = "Volunteer";
+$text['option-contact_type_volunteer']['en-gb'] = "Volunteer";
+$text['option-contact_type_volunteer']['ar-eg'] = "متطوع";
+$text['option-contact_type_volunteer']['de-at'] = "Freiwilliger Helfer";
+$text['option-contact_type_volunteer']['de-ch'] = "Freiwilliger Helfer";
+$text['option-contact_type_volunteer']['de-de'] = "Freiwilliger Helfer";
+$text['option-contact_type_volunteer']['el-gr'] = "Εθελοντής";
+$text['option-contact_type_volunteer']['es-cl'] = "Voluntario";
+$text['option-contact_type_volunteer']['es-mx'] = "Voluntario";
+$text['option-contact_type_volunteer']['fr-ca'] = "Bénévole";
+$text['option-contact_type_volunteer']['fr-fr'] = "Bénévole";
+$text['option-contact_type_volunteer']['he-il'] = "לְהִתְנַדֵב";
+$text['option-contact_type_volunteer']['it-it'] = "Volontario";
+$text['option-contact_type_volunteer']['ka-ge'] = "მოხალისე";
+$text['option-contact_type_volunteer']['nl-nl'] = "Vrijwilliger";
+$text['option-contact_type_volunteer']['pl-pl'] = "Wolontariusz";
+$text['option-contact_type_volunteer']['pt-br'] = "Voluntário";
+$text['option-contact_type_volunteer']['pt-pt'] = "Voluntário";
+$text['option-contact_type_volunteer']['ro-ro'] = "Voluntar";
+$text['option-contact_type_volunteer']['ru-ru'] = "Волонтер";
+$text['option-contact_type_volunteer']['sv-se'] = "Frivillig";
+$text['option-contact_type_volunteer']['uk-ua'] = "Волонтер";
+$text['option-contact_type_volunteer']['zh-cn'] = "志愿者";
+$text['option-contact_type_volunteer']['ja-jp'] = "ボランティア";
+$text['option-contact_type_volunteer']['ko-kr'] = "자원 봉사자";
+
+$text['option-contact_type_user']['en-us'] = "User";
+$text['option-contact_type_user']['en-gb'] = "User";
+$text['option-contact_type_user']['ar-eg'] = "مستخدم";
+$text['option-contact_type_user']['de-at'] = "Benutzer";
+$text['option-contact_type_user']['de-ch'] = "Benutzer";
+$text['option-contact_type_user']['de-de'] = "Benutzer";
+$text['option-contact_type_user']['el-gr'] = "Χρήστης";
+$text['option-contact_type_user']['es-cl'] = "Usuario";
+$text['option-contact_type_user']['es-mx'] = "Usuario";
+$text['option-contact_type_user']['fr-ca'] = "Utilisateur";
+$text['option-contact_type_user']['fr-fr'] = "Utilisateur";
+$text['option-contact_type_user']['he-il'] = "משתמש";
+$text['option-contact_type_user']['it-it'] = "Utente";
+$text['option-contact_type_user']['ka-ge'] = "მომხმარებელი";
+$text['option-contact_type_user']['nl-nl'] = "Gebruiker";
+$text['option-contact_type_user']['pl-pl'] = "Użytkownik";
+$text['option-contact_type_user']['pt-br'] = "Usuário";
+$text['option-contact_type_user']['pt-pt'] = "Usuário";
+$text['option-contact_type_user']['ro-ro'] = "Utilizator";
+$text['option-contact_type_user']['ru-ru'] = "Пользователь";
+$text['option-contact_type_user']['sv-se'] = "Användare";
+$text['option-contact_type_user']['uk-ua'] = "Користувач";
+$text['option-contact_type_user']['zh-cn'] = "用户";
+$text['option-contact_type_user']['ja-jp'] = "ユーザー";
+$text['option-contact_type_user']['ko-kr'] = "사용자";
+
+$text['option-contact_type_supplier']['en-us'] = "Supplier";
+$text['option-contact_type_supplier']['en-gb'] = "Supplier";
+$text['option-contact_type_supplier']['ar-eg'] = "المورد";
+$text['option-contact_type_supplier']['de-at'] = "Lieferant";
+$text['option-contact_type_supplier']['de-ch'] = "Lieferant";
+$text['option-contact_type_supplier']['de-de'] = "Lieferant";
+$text['option-contact_type_supplier']['el-gr'] = "Προμηθευτής";
+$text['option-contact_type_supplier']['es-cl'] = "Proveedor";
+$text['option-contact_type_supplier']['es-mx'] = "Proveedor";
+$text['option-contact_type_supplier']['fr-ca'] = "Fournisseur";
+$text['option-contact_type_supplier']['fr-fr'] = "Fournisseur";
+$text['option-contact_type_supplier']['he-il'] = "ספק";
+$text['option-contact_type_supplier']['it-it'] = "Fornitore";
+$text['option-contact_type_supplier']['ka-ge'] = "მომმარაგებელი";
+$text['option-contact_type_supplier']['nl-nl'] = "Leverancier";
+$text['option-contact_type_supplier']['pl-pl'] = "Dostawca";
+$text['option-contact_type_supplier']['pt-br'] = "Fornecedor";
+$text['option-contact_type_supplier']['pt-pt'] = "Fornecedor";
+$text['option-contact_type_supplier']['ro-ro'] = "Furnizor";
+$text['option-contact_type_supplier']['ru-ru'] = "Поставщик";
+$text['option-contact_type_supplier']['sv-se'] = "Leverantör";
+$text['option-contact_type_supplier']['uk-ua'] = "Постачальник";
+$text['option-contact_type_supplier']['zh-cn'] = "供应商";
+$text['option-contact_type_supplier']['ja-jp'] = "サプライヤー";
+$text['option-contact_type_supplier']['ko-kr'] = "공급자";
+
+$text['option-contact_type_subscriber']['en-us'] = "Subscriber";
+$text['option-contact_type_subscriber']['en-gb'] = "Subscriber";
+$text['option-contact_type_subscriber']['ar-eg'] = "مشترك";
+$text['option-contact_type_subscriber']['de-at'] = "Teilnehmer";
+$text['option-contact_type_subscriber']['de-ch'] = "Teilnehmer";
+$text['option-contact_type_subscriber']['de-de'] = "Teilnehmer";
+$text['option-contact_type_subscriber']['el-gr'] = "Συνδρομητής";
+$text['option-contact_type_subscriber']['es-cl'] = "Suscriptor";
+$text['option-contact_type_subscriber']['es-mx'] = "Suscriptor";
+$text['option-contact_type_subscriber']['fr-ca'] = "Abonné";
+$text['option-contact_type_subscriber']['fr-fr'] = "Abonné";
+$text['option-contact_type_subscriber']['he-il'] = "מנוי";
+$text['option-contact_type_subscriber']['it-it'] = "Abbonato";
+$text['option-contact_type_subscriber']['ka-ge'] = "გამომწერი";
+$text['option-contact_type_subscriber']['nl-nl'] = "Abonnee";
+$text['option-contact_type_subscriber']['pl-pl'] = "Abonent";
+$text['option-contact_type_subscriber']['pt-br'] = "Assinante";
+$text['option-contact_type_subscriber']['pt-pt'] = "Assinante";
+$text['option-contact_type_subscriber']['ro-ro'] = "Abonat";
+$text['option-contact_type_subscriber']['ru-ru'] = "Подписчик";
+$text['option-contact_type_subscriber']['sv-se'] = "Abonnent";
+$text['option-contact_type_subscriber']['uk-ua'] = "Абонент";
+$text['option-contact_type_subscriber']['zh-cn'] = "订户";
+$text['option-contact_type_subscriber']['ja-jp'] = "購読者";
+$text['option-contact_type_subscriber']['ko-kr'] = "구독자";
+
+$text['option-contact_type_provider']['en-us'] = "Provider";
+$text['option-contact_type_provider']['en-gb'] = "Provider";
+$text['option-contact_type_provider']['ar-eg'] = "مزود";
+$text['option-contact_type_provider']['de-at'] = "Anbieter";
+$text['option-contact_type_provider']['de-ch'] = "Anbieter";
+$text['option-contact_type_provider']['de-de'] = "Anbieter";
+$text['option-contact_type_provider']['el-gr'] = "Πάροχος";
+$text['option-contact_type_provider']['es-cl'] = "Proveedor";
+$text['option-contact_type_provider']['es-mx'] = "Proveedor";
+$text['option-contact_type_provider']['fr-ca'] = "Fournisseur";
+$text['option-contact_type_provider']['fr-fr'] = "Fournisseur";
+$text['option-contact_type_provider']['he-il'] = "ספק שירות";
+$text['option-contact_type_provider']['it-it'] = "Servizi";
+$text['option-contact_type_provider']['ka-ge'] = "პროვაიდერი";
+$text['option-contact_type_provider']['nl-nl'] = "Beschikbaarsteller";
+$text['option-contact_type_provider']['pl-pl'] = "Dostawca";
+$text['option-contact_type_provider']['pt-br'] = "Provedor";
+$text['option-contact_type_provider']['pt-pt'] = "Provedor";
+$text['option-contact_type_provider']['ro-ro'] = "Furnizor";
+$text['option-contact_type_provider']['ru-ru'] = "Провайдер";
+$text['option-contact_type_provider']['sv-se'] = "Leverantör";
+$text['option-contact_type_provider']['uk-ua'] = "Провайдер";
+$text['option-contact_type_provider']['zh-cn'] = "供应商";
+$text['option-contact_type_provider']['ja-jp'] = "プロバイダー";
+$text['option-contact_type_provider']['ko-kr'] = "공급자";
+
+$text['option-contact_type_member']['en-us'] = "Member";
+$text['option-contact_type_member']['en-gb'] = "Member";
+$text['option-contact_type_member']['ar-eg'] = "عضو";
+$text['option-contact_type_member']['de-at'] = "Teilnehmer";
+$text['option-contact_type_member']['de-ch'] = "Teilnehmer";
+$text['option-contact_type_member']['de-de'] = "Teilnehmer";
+$text['option-contact_type_member']['el-gr'] = "Μέλος";
+$text['option-contact_type_member']['es-cl'] = "Miembro";
+$text['option-contact_type_member']['es-mx'] = "Miembro";
+$text['option-contact_type_member']['fr-ca'] = "Membre";
+$text['option-contact_type_member']['fr-fr'] = "Membre";
+$text['option-contact_type_member']['he-il'] = "חבר";
+$text['option-contact_type_member']['it-it'] = "Membro";
+$text['option-contact_type_member']['ka-ge'] = "წევრი";
+$text['option-contact_type_member']['nl-nl'] = "Lid";
+$text['option-contact_type_member']['pl-pl'] = "Członek";
+$text['option-contact_type_member']['pt-br'] = "Membro";
+$text['option-contact_type_member']['pt-pt'] = "Membro";
+$text['option-contact_type_member']['ro-ro'] = "Membru";
+$text['option-contact_type_member']['ru-ru'] = "Участник";
+$text['option-contact_type_member']['sv-se'] = "Medlem";
+$text['option-contact_type_member']['uk-ua'] = "Учасник";
+$text['option-contact_type_member']['zh-cn'] = "成员";
+$text['option-contact_type_member']['ja-jp'] = "メンバー";
+$text['option-contact_type_member']['ko-kr'] = "회원";
+
+$text['option-contact_type_lead']['en-us'] = "Lead";
+$text['option-contact_type_lead']['en-gb'] = "Lead";
+$text['option-contact_type_lead']['ar-eg'] = "يقود";
+$text['option-contact_type_lead']['de-at'] = "Vorgesetzter";
+$text['option-contact_type_lead']['de-ch'] = "Vorgesetzter";
+$text['option-contact_type_lead']['de-de'] = "Vorgesetzter";
+$text['option-contact_type_lead']['el-gr'] = "Επόπτης";
+$text['option-contact_type_lead']['es-cl'] = "Supervisor";
+$text['option-contact_type_lead']['es-mx'] = "Supervisor";
+$text['option-contact_type_lead']['fr-ca'] = "Superviseur";
+$text['option-contact_type_lead']['fr-fr'] = "Superviseur";
+$text['option-contact_type_lead']['he-il'] = "הזדמנות";
+$text['option-contact_type_lead']['it-it'] = "Contatto Interno";
+$text['option-contact_type_lead']['ka-ge'] = "ხელმძღვანელი";
+$text['option-contact_type_lead']['nl-nl'] = "Hoofd";
+$text['option-contact_type_lead']['pl-pl'] = "Szef";
+$text['option-contact_type_lead']['pt-br'] = "Supervisor";
+$text['option-contact_type_lead']['pt-pt'] = "Supervisor";
+$text['option-contact_type_lead']['ro-ro'] = "Conduce";
+$text['option-contact_type_lead']['ru-ru'] = "Руководитель";
+$text['option-contact_type_lead']['sv-se'] = "'Lead'";
+$text['option-contact_type_lead']['uk-ua'] = "Вести";
+$text['option-contact_type_lead']['zh-cn'] = "带领";
+$text['option-contact_type_lead']['ja-jp'] = "鉛";
+$text['option-contact_type_lead']['ko-kr'] = "선두";
+
+$text['option-contact_type_friend']['en-us'] = "Friend";
+$text['option-contact_type_friend']['en-gb'] = "Friend";
+$text['option-contact_type_friend']['ar-eg'] = "صديق";
+$text['option-contact_type_friend']['de-at'] = "Freund";
+$text['option-contact_type_friend']['de-ch'] = "Freund";
+$text['option-contact_type_friend']['de-de'] = "Freund";
+$text['option-contact_type_friend']['el-gr'] = "Φίλος";
+$text['option-contact_type_friend']['es-cl'] = "Amigo";
+$text['option-contact_type_friend']['es-mx'] = "Amigo";
+$text['option-contact_type_friend']['fr-ca'] = "Ami";
+$text['option-contact_type_friend']['fr-fr'] = "Ami";
+$text['option-contact_type_friend']['he-il'] = "חבר";
+$text['option-contact_type_friend']['it-it'] = "Amico";
+$text['option-contact_type_friend']['ka-ge'] = "მეგობარი";
+$text['option-contact_type_friend']['nl-nl'] = "Vriend";
+$text['option-contact_type_friend']['pl-pl'] = "Kolega";
+$text['option-contact_type_friend']['pt-br'] = "Amigo";
+$text['option-contact_type_friend']['pt-pt'] = "Amigo";
+$text['option-contact_type_friend']['ro-ro'] = "Prietene";
+$text['option-contact_type_friend']['ru-ru'] = "Друг";
+$text['option-contact_type_friend']['sv-se'] = "Vän";
+$text['option-contact_type_friend']['uk-ua'] = "Друг";
+$text['option-contact_type_friend']['zh-cn'] = "朋友";
+$text['option-contact_type_friend']['ja-jp'] = "友達";
+$text['option-contact_type_friend']['ko-kr'] = "친구";
+
+$text['option-contact_type_family']['en-us'] = "Family";
+$text['option-contact_type_family']['en-gb'] = "Family";
+$text['option-contact_type_family']['ar-eg'] = "عائلة";
+$text['option-contact_type_family']['de-at'] = "Familie";
+$text['option-contact_type_family']['de-ch'] = "Familie";
+$text['option-contact_type_family']['de-de'] = "Familie";
+$text['option-contact_type_family']['el-gr'] = "Οικογένεια";
+$text['option-contact_type_family']['es-cl'] = "Familia";
+$text['option-contact_type_family']['es-mx'] = "Familia";
+$text['option-contact_type_family']['fr-ca'] = "Famille";
+$text['option-contact_type_family']['fr-fr'] = "Famille";
+$text['option-contact_type_family']['he-il'] = "משפחה";
+$text['option-contact_type_family']['it-it'] = "Famiglia";
+$text['option-contact_type_family']['ka-ge'] = "ოჯახი";
+$text['option-contact_type_family']['nl-nl'] = "Familie";
+$text['option-contact_type_family']['pl-pl'] = "Rodzina";
+$text['option-contact_type_family']['pt-br'] = "Familia";
+$text['option-contact_type_family']['pt-pt'] = "Família";
+$text['option-contact_type_family']['ro-ro'] = "Familie";
+$text['option-contact_type_family']['ru-ru'] = "Семейный";
+$text['option-contact_type_family']['sv-se'] = "Familj";
+$text['option-contact_type_family']['uk-ua'] = "Сім'я";
+$text['option-contact_type_family']['zh-cn'] = "家庭";
+$text['option-contact_type_family']['ja-jp'] = "家族";
+$text['option-contact_type_family']['ko-kr'] = "가족";
+
+$text['option-contact_type_customer']['en-us'] = "Customer";
+$text['option-contact_type_customer']['en-gb'] = "Customer";
+$text['option-contact_type_customer']['ar-eg'] = "عميل";
+$text['option-contact_type_customer']['de-at'] = "Kunde";
+$text['option-contact_type_customer']['de-ch'] = "Kunde";
+$text['option-contact_type_customer']['de-de'] = "Kunde";
+$text['option-contact_type_customer']['el-gr'] = "Πελάτης";
+$text['option-contact_type_customer']['es-cl'] = "Cliente";
+$text['option-contact_type_customer']['es-mx'] = "Cliente";
+$text['option-contact_type_customer']['fr-ca'] = "Client";
+$text['option-contact_type_customer']['fr-fr'] = "Client";
+$text['option-contact_type_customer']['he-il'] = "לקוח";
+$text['option-contact_type_customer']['it-it'] = "Cliente";
+$text['option-contact_type_customer']['ka-ge'] = "კლიენტი";
+$text['option-contact_type_customer']['nl-nl'] = "Klant";
+$text['option-contact_type_customer']['pl-pl'] = "Klient";
+$text['option-contact_type_customer']['pt-br'] = "Cliente ";
+$text['option-contact_type_customer']['pt-pt'] = "Cliente";
+$text['option-contact_type_customer']['ro-ro'] = "Client";
+$text['option-contact_type_customer']['ru-ru'] = "Клиент";
+$text['option-contact_type_customer']['sv-se'] = "Kund";
+$text['option-contact_type_customer']['uk-ua'] = "Замовник";
+$text['option-contact_type_customer']['zh-cn'] = "顾客";
+$text['option-contact_type_customer']['ja-jp'] = "お客様";
+$text['option-contact_type_customer']['ko-kr'] = "고객";
+
+$text['option-contact_type_contractor']['en-us'] = "Contractor";
+$text['option-contact_type_contractor']['en-gb'] = "Contractor";
+$text['option-contact_type_contractor']['ar-eg'] = "مقاول";
+$text['option-contact_type_contractor']['de-at'] = "Vertragspartner";
+$text['option-contact_type_contractor']['de-ch'] = "Vertragspartner";
+$text['option-contact_type_contractor']['de-de'] = "Vertragspartner";
+$text['option-contact_type_contractor']['el-gr'] = "Ανάδοχος";
+$text['option-contact_type_contractor']['es-cl'] = "Contratista";
+$text['option-contact_type_contractor']['es-mx'] = "Contratista";
+$text['option-contact_type_contractor']['fr-ca'] = "Entrepreneur";
+$text['option-contact_type_contractor']['fr-fr'] = "Entrepreneur";
+$text['option-contact_type_contractor']['he-il'] = "ספק";
+$text['option-contact_type_contractor']['it-it'] = "A Contratto";
+$text['option-contact_type_contractor']['ka-ge'] = "კონტრაქტორი";
+$text['option-contact_type_contractor']['nl-nl'] = "Uitvoerder";
+$text['option-contact_type_contractor']['pl-pl'] = "Kontrahent";
+$text['option-contact_type_contractor']['pt-br'] = "Contratante";
+$text['option-contact_type_contractor']['pt-pt'] = "Contratante";
+$text['option-contact_type_contractor']['ro-ro'] = "Contractant";
+$text['option-contact_type_contractor']['ru-ru'] = "Подрядчик";
+$text['option-contact_type_contractor']['sv-se'] = "Entreprenör";
+$text['option-contact_type_contractor']['uk-ua'] = "Підрядник";
+$text['option-contact_type_contractor']['zh-cn'] = "承包商";
+$text['option-contact_type_contractor']['ja-jp'] = "請負業者";
+$text['option-contact_type_contractor']['ko-kr'] = "계약자";
+
+$text['option-billing']['en-us'] = "Billing";
+$text['option-billing']['en-gb'] = "Billing";
+$text['option-billing']['ar-eg'] = "الفواتير";
+$text['option-billing']['de-at'] = "Verrechnung";
+$text['option-billing']['de-ch'] = "Verrechnung";
+$text['option-billing']['de-de'] = "Verrechnung";
+$text['option-billing']['el-gr'] = "Χρεώσεις";
+$text['option-billing']['es-cl'] = "Facturación";
+$text['option-billing']['es-mx'] = "Facturación";
+$text['option-billing']['fr-ca'] = "Facturation";
+$text['option-billing']['fr-fr'] = "Facturation";
+$text['option-billing']['he-il'] = "חיוב";
+$text['option-billing']['it-it'] = "Fatturazione";
+$text['option-billing']['ka-ge'] = "ბილინგი";
+$text['option-billing']['nl-nl'] = "Verrekening";
+$text['option-billing']['pl-pl'] = "Rozliczenia";
+$text['option-billing']['pt-br'] = "Faturamento";
+$text['option-billing']['pt-pt'] = "Faturamento";
+$text['option-billing']['ro-ro'] = "Facturare";
+$text['option-billing']['ru-ru'] = "Биллинг";
+$text['option-billing']['sv-se'] = "Fakturering";
+$text['option-billing']['uk-ua'] = "Білінг";
+$text['option-billing']['zh-cn'] = "计费";
+$text['option-billing']['ja-jp'] = "請求する";
+$text['option-billing']['ko-kr'] = "결제";
+
+$text['message_contacts_imported_skipped']['en-us'] = "Skipped:";
+$text['message_contacts_imported_skipped']['en-gb'] = "Skipped:";
+$text['message_contacts_imported_skipped']['ar-eg'] = "تم تخطيه:";
+$text['message_contacts_imported_skipped']['de-at'] = "Übersprungen:";
+$text['message_contacts_imported_skipped']['de-ch'] = "Übersprungen:";
+$text['message_contacts_imported_skipped']['de-de'] = "Übersprungen:";
+$text['message_contacts_imported_skipped']['el-gr'] = "Αγνοήθηκαν:";
+$text['message_contacts_imported_skipped']['es-cl'] = "Saltado:";
+$text['message_contacts_imported_skipped']['es-mx'] = "Saltado:";
+$text['message_contacts_imported_skipped']['fr-ca'] = "Arrêté:";
+$text['message_contacts_imported_skipped']['fr-fr'] = "Arrêté:";
+$text['message_contacts_imported_skipped']['he-il'] = "דילגו";
+$text['message_contacts_imported_skipped']['it-it'] = "Saltato:";
+$text['message_contacts_imported_skipped']['ka-ge'] = "გამოტოვებულია:";
+$text['message_contacts_imported_skipped']['nl-nl'] = "Overgeslagen:";
+$text['message_contacts_imported_skipped']['pl-pl'] = "Pominięte";
+$text['message_contacts_imported_skipped']['pt-br'] = "Ignorados";
+$text['message_contacts_imported_skipped']['pt-pt'] = "Ignorados:";
+$text['message_contacts_imported_skipped']['ro-ro'] = "Omis:";
+$text['message_contacts_imported_skipped']['ru-ru'] = "Пропущено:";
+$text['message_contacts_imported_skipped']['sv-se'] = "Skippad:";
+$text['message_contacts_imported_skipped']['uk-ua'] = "Пропущено:";
+$text['message_contacts_imported_skipped']['zh-cn'] = "跳过:";
+$text['message_contacts_imported_skipped']['ja-jp'] = "スキップ:";
+$text['message_contacts_imported_skipped']['ko-kr'] = "건너뛴:";
+
+$text['message_contacts_imported_replaced']['en-us'] = "Replaced:";
+$text['message_contacts_imported_replaced']['en-gb'] = "Replaced:";
+$text['message_contacts_imported_replaced']['ar-eg'] = "تم استبداله:";
+$text['message_contacts_imported_replaced']['de-at'] = "Ersetzt:";
+$text['message_contacts_imported_replaced']['de-ch'] = "Ersetzt:";
+$text['message_contacts_imported_replaced']['de-de'] = "Ersetzt:";
+$text['message_contacts_imported_replaced']['el-gr'] = "Αντικαταστάθηκαν:";
+$text['message_contacts_imported_replaced']['es-cl'] = "Sustituido:";
+$text['message_contacts_imported_replaced']['es-mx'] = "Sustituido:";
+$text['message_contacts_imported_replaced']['fr-ca'] = "Remplacé:";
+$text['message_contacts_imported_replaced']['fr-fr'] = "Remplacé:";
+$text['message_contacts_imported_replaced']['he-il'] = "הוחלפו";
+$text['message_contacts_imported_replaced']['it-it'] = "Sostituito:";
+$text['message_contacts_imported_replaced']['ka-ge'] = "ჩანაცვლებულია:";
+$text['message_contacts_imported_replaced']['nl-nl'] = "Vervangen:";
+$text['message_contacts_imported_replaced']['pl-pl'] = "Zastąpiono";
+$text['message_contacts_imported_replaced']['pt-br'] = "Substituido";
+$text['message_contacts_imported_replaced']['pt-pt'] = "Substituído:";
+$text['message_contacts_imported_replaced']['ro-ro'] = "Înlocuit:";
+$text['message_contacts_imported_replaced']['ru-ru'] = "Заменено:";
+$text['message_contacts_imported_replaced']['sv-se'] = "Utbytt:";
+$text['message_contacts_imported_replaced']['uk-ua'] = "Замінено:";
+$text['message_contacts_imported_replaced']['zh-cn'] = "更换:";
+$text['message_contacts_imported_replaced']['ja-jp'] = "置換:";
+$text['message_contacts_imported_replaced']['ko-kr'] = "교체됨:";
+
+$text['message-update']['en-us'] = "Update Completed";
+$text['message-update']['en-gb'] = "Update Completed";
+$text['message-update']['ar-eg'] = "تحديث الانتهاء";
+$text['message-update']['de-at'] = "Aktualisierung durchgeführt";
+$text['message-update']['de-ch'] = "Aktualisierung durchgeführt";
+$text['message-update']['de-de'] = "Aktualisierung durchgeführt";
+$text['message-update']['el-gr'] = "Η ενημέρωση ολοκληρώθηκε";
+$text['message-update']['es-cl'] = "Actualización Completada";
+$text['message-update']['es-mx'] = "Actualización Completada";
+$text['message-update']['fr-ca'] = "Mis à jour";
+$text['message-update']['fr-fr'] = "Mis à jour";
+$text['message-update']['he-il'] = "העדכון הושלם";
+$text['message-update']['it-it'] = "Aggiornamento Completato";
+$text['message-update']['ka-ge'] = "განახლება დასრულდა";
+$text['message-update']['nl-nl'] = "Bijwerken gereed";
+$text['message-update']['pl-pl'] = "Zaktualizowano pomyślnie";
+$text['message-update']['pt-br'] = "Atualização Efetuada";
+$text['message-update']['pt-pt'] = "Actualização Efectuada";
+$text['message-update']['ro-ro'] = "Actualizare finalizată";
+$text['message-update']['ru-ru'] = "Обновление завершено";
+$text['message-update']['sv-se'] = "Uppdatering Klar";
+$text['message-update']['uk-ua'] = "Оновлення завершено";
+$text['message-update']['zh-cn'] = "更新完成";
+$text['message-update']['ja-jp'] = "アップデート完了";
+$text['message-update']['ko-kr'] = "업데이트 완료";
+
+$text['message-results']['en-us'] = "The following contacts were successfully imported from the uploaded CSV file:";
+$text['message-results']['en-gb'] = "The following contacts were successfully imported from the uploaded CSV file:";
+$text['message-results']['ar-eg'] = "تم استيراد جهات الاتصال التالية بنجاح من ملف CSV الذي تم تحميله:";
+$text['message-results']['de-at'] = "Die folgenden Kontakte wurden erfolgreich aus der hochgeladenen CSV Datei importiert:";
+$text['message-results']['de-ch'] = "Die folgenden Kontakte wurden erfolgreich aus der hochgeladenen CSV Datei importiert:";
+$text['message-results']['de-de'] = "Die folgenden Kontakte wurden erfolgreich aus der hochgeladenen CSV Datei importiert:";
+$text['message-results']['el-gr'] = "Ολοκληρώθηκε με επιτυχία η εισαγωγή των παρακάτω επαφών από το αρχείο CSV:";
+$text['message-results']['es-cl'] = "Los siguientes contactos fueron importados exitosamente desde el archivo CSV:";
+$text['message-results']['es-mx'] = "Los siguientes contactos fueron importados exitosamente desde el archivo CSV:";
+$text['message-results']['fr-ca'] = "Les contacts suivants ont été téléchargés correctement à partir di fichier CSV:";
+$text['message-results']['fr-fr'] = "Les contacts suivants ont été téléchargés correctement à partir di fichier CSV:";
+$text['message-results']['he-il'] = "אנשי הקשר הבאים יובאו בהצלחה מקובץ ה-CSV שהועלה:";
+$text['message-results']['it-it'] = "I seguenti contatti sono stati importati con successo dal file CSV:";
+$text['message-results']['ka-ge'] = "შემდეგი კონტაქტების იმპორტი წარმატებით დასრულდა ატვირთული CSV ფაილიდან:";
+$text['message-results']['nl-nl'] = "De volgende kontacten zijn succesvol geimporteer uit het opgestuurde CSV bestand";
+$text['message-results']['pl-pl'] = "Poniższe kontakty zostały pomyślnie zaimportowane z pliku CSV.";
+$text['message-results']['pt-br'] = "Os seguintes contatos foram importados com sucesso a partir do ficheiro CSV escolhido";
+$text['message-results']['pt-pt'] = "Os seguintes contactos foram importados com sucesso a partir do ficheiro CSV submetido:";
+$text['message-results']['ro-ro'] = "Următoarele persoane de contact au fost importate cu succes din fișierul CSV încărcat:";
+$text['message-results']['ru-ru'] = "Следующие контакты были успешно импортированы из загруженного CSV-файла:";
+$text['message-results']['sv-se'] = "Följande kontakter importerades från den uppladdade CSV filen:";
+$text['message-results']['uk-ua'] = "Наступні контакти було успішно імпортовано із завантаженого файлу CSV:";
+$text['message-results']['zh-cn'] = "已从上传的 CSV 文件中成功导入以下联系人:";
+$text['message-results']['ja-jp'] = "次の連絡先は、アップロードされた CSV ファイルから正常にインポートされました:";
+$text['message-results']['ko-kr'] = "업로드된 CSV 파일에서 다음 연락처를 성공적으로 가져왔습니다.";
+
+$text['message-required']['en-us'] = "Please provide: ";
+$text['message-required']['en-gb'] = "Please provide: ";
+$text['message-required']['ar-eg'] = "يرجى تقديم: ";
+$text['message-required']['de-at'] = "Bitte geben Sie folgendes an:";
+$text['message-required']['de-ch'] = "Bitte geben Sie folgendes an:";
+$text['message-required']['de-de'] = "Bitte geben Sie folgendes an:";
+$text['message-required']['el-gr'] = "Παρακαλούμε εισάγετε:";
+$text['message-required']['es-cl'] = "Por favor ingrese: ";
+$text['message-required']['es-mx'] = "Por favor ingrese: ";
+$text['message-required']['fr-ca'] = "Merci d'indiquer: ";
+$text['message-required']['fr-fr'] = "Merci d'indiquer: ";
+$text['message-required']['he-il'] = "נא ספק";
+$text['message-required']['it-it'] = "Prego fornire:";
+$text['message-required']['ka-ge'] = "შეიყვანეთ: ";
+$text['message-required']['nl-nl'] = "aub. geef:";
+$text['message-required']['pl-pl'] = "Wpisz:";
+$text['message-required']['pt-br'] = "Por favor Indique:";
+$text['message-required']['pt-pt'] = "Por favor indique: ";
+$text['message-required']['ro-ro'] = "Vă rugăm să oferiți: ";
+$text['message-required']['ru-ru'] = "Пожалуйста укажите: ";
+$text['message-required']['sv-se'] = "Var god uppge:";
+$text['message-required']['uk-ua'] = "Будь ласка, вкажіть:";
+$text['message-required']['zh-cn'] = "请提供:";
+$text['message-required']['ja-jp'] = "どうか提供してください:";
+$text['message-required']['ko-kr'] = "제공 부탁드립니다:";
+
+$text['message-invalid_credentials']['en-us'] = "Invalid Credentials";
+$text['message-invalid_credentials']['en-gb'] = "Invalid Credentials";
+$text['message-invalid_credentials']['ar-eg'] = "بيانات الاعتماد غير صالحة";
+$text['message-invalid_credentials']['de-at'] = "Ungültibe Benutzerdaten";
+$text['message-invalid_credentials']['de-ch'] = "Ungültibe Benutzerdaten";
+$text['message-invalid_credentials']['de-de'] = "Ungültibe Benutzerdaten";
+$text['message-invalid_credentials']['el-gr'] = "Λανθασμένα στοιχεία εισόδου";
+$text['message-invalid_credentials']['es-cl'] = "Credenciales No Válidas";
+$text['message-invalid_credentials']['es-mx'] = "Credenciales No Válidas";
+$text['message-invalid_credentials']['fr-ca'] = "Pouvoirs Invalides";
+$text['message-invalid_credentials']['fr-fr'] = "Pouvoirs Invalides";
+$text['message-invalid_credentials']['he-il'] = "אישורים לא חוקיים";
+$text['message-invalid_credentials']['it-it'] = "Credenziali non valide";
+$text['message-invalid_credentials']['ka-ge'] = "არასწორი ავტორიზაციის დეტალები";
+$text['message-invalid_credentials']['nl-nl'] = "Ongeldige authenticatie";
+$text['message-invalid_credentials']['pl-pl'] = "Nieprawidłowe dane logowania";
+$text['message-invalid_credentials']['pt-br'] = "Credenciais inválidas";
+$text['message-invalid_credentials']['pt-pt'] = "Credenciais Inválidas";
+$text['message-invalid_credentials']['ro-ro'] = "Acreditări nevalide";
+$text['message-invalid_credentials']['ru-ru'] = "Недействительные учетные данные";
+$text['message-invalid_credentials']['sv-se'] = "Ogiltig Inloggning";
+$text['message-invalid_credentials']['uk-ua'] = "Недійсні облікові дані";
+$text['message-invalid_credentials']['zh-cn'] = "无效证件";
+$text['message-invalid_credentials']['ja-jp'] = "無効な資格情報";
+$text['message-invalid_credentials']['ko-kr'] = "잘못된 자격 증명";
+
+$text['message-google_signed_out']['en-us'] = "Google Account: Signed Out";
+$text['message-google_signed_out']['en-gb'] = "Google Account: Signed Out";
+$text['message-google_signed_out']['ar-eg'] = "حساب Google: تسجيل الخروج";
+$text['message-google_signed_out']['de-at'] = "Google Konto: Abgemeldet";
+$text['message-google_signed_out']['de-ch'] = "Google Konto: Abgemeldet";
+$text['message-google_signed_out']['de-de'] = "Google Konto: Abgemeldet";
+$text['message-google_signed_out']['el-gr'] = "Λογαριασμός Google: Μη συνδεδεμένος";
+$text['message-google_signed_out']['es-cl'] = "Cuenta de Google: Cerrado la Sesión";
+$text['message-google_signed_out']['es-mx'] = "Cuenta de Google: Cerrado la Sesión";
+$text['message-google_signed_out']['fr-ca'] = "Compte Google: Déconnecté";
+$text['message-google_signed_out']['fr-fr'] = "Compte Google: Déconnecté";
+$text['message-google_signed_out']['he-il'] = "חשבון Google: יצא";
+$text['message-google_signed_out']['it-it'] = "Account Google: Uscito";
+$text['message-google_signed_out']['ka-ge'] = "Google-ის ანგარიში: გახვედით";
+$text['message-google_signed_out']['nl-nl'] = "Google Account: afgelogged";
+$text['message-google_signed_out']['pl-pl'] = "Konto Google: Wylogowano";
+$text['message-google_signed_out']['pt-br'] = "Conta do Google: Assinado fora";
+$text['message-google_signed_out']['pt-pt'] = "Conta do Google: Assinado Fora";
+$text['message-google_signed_out']['ro-ro'] = "Cont Google: Deconectat";
+$text['message-google_signed_out']['ru-ru'] = "Учетная Запись Google: выдана";
+$text['message-google_signed_out']['sv-se'] = "Google Konto: 'Signed Out'";
+$text['message-google_signed_out']['uk-ua'] = "Обліковий запис Google: Ви вийшли";
+$text['message-google_signed_out']['zh-cn'] = "Google 帐户:已退出";
+$text['message-google_signed_out']['ja-jp'] = "Google アカウント: ログアウトしました";
+$text['message-google_signed_out']['ko-kr'] = "Google 계정: 로그아웃됨";
+
+$text['message-delete']['en-us'] = "Delete Completed";
+$text['message-delete']['en-gb'] = "Delete Completed";
+$text['message-delete']['ar-eg'] = "اكتمل الحذف";
+$text['message-delete']['de-at'] = "Erfolgreich gelöscht";
+$text['message-delete']['de-ch'] = "Erfolgreich gelöscht";
+$text['message-delete']['de-de'] = "Erfolgreich gelöscht";
+$text['message-delete']['el-gr'] = "Η διαγραφή ολοκληρώθηκε";
+$text['message-delete']['es-cl'] = "Eliminación Completada";
+$text['message-delete']['es-mx'] = "Eliminación Completada";
+$text['message-delete']['fr-ca'] = "Supprimé";
+$text['message-delete']['fr-fr'] = "Supprimé";
+$text['message-delete']['he-il'] = "מחיקה הושלמה";
+$text['message-delete']['it-it'] = "Cancellazione Completata";
+$text['message-delete']['ka-ge'] = "წაშლა დასრულდა";
+$text['message-delete']['nl-nl'] = "Verwijderen gereed";
+$text['message-delete']['pl-pl'] = "Usunięto pomyślnie";
+$text['message-delete']['pt-br'] = "Remoção Efetuada";
+$text['message-delete']['pt-pt'] = "Remoção Efectuada";
+$text['message-delete']['ro-ro'] = "Ștergere finalizată";
+$text['message-delete']['ru-ru'] = "Удаление выполненно";
+$text['message-delete']['sv-se'] = "Borttagning Klar";
+$text['message-delete']['uk-ua'] = "Видалено";
+$text['message-delete']['zh-cn'] = "删除完成";
+$text['message-delete']['ja-jp'] = "削除完了";
+$text['message-delete']['ko-kr'] = "삭제 완료";
+
+$text['message-contacts_imported']['en-us'] = "Contacts Imported:";
+$text['message-contacts_imported']['en-gb'] = "Contacts Imported:";
+$text['message-contacts_imported']['ar-eg'] = "جهات الاتصال المستوردة:";
+$text['message-contacts_imported']['de-at'] = "Kontakte importiert:";
+$text['message-contacts_imported']['de-ch'] = "Kontakte importiert:";
+$text['message-contacts_imported']['de-de'] = "Kontakte importiert:";
+$text['message-contacts_imported']['el-gr'] = "Η εισαγωγή των επαφών ολοκληρώθηκε:";
+$text['message-contacts_imported']['es-cl'] = "Contactos Importados:";
+$text['message-contacts_imported']['es-mx'] = "Contactos Importados:";
+$text['message-contacts_imported']['fr-ca'] = "Contacts Importés:";
+$text['message-contacts_imported']['fr-fr'] = "Contacts Importés:";
+$text['message-contacts_imported']['he-il'] = "אנשי קשר יובאו";
+$text['message-contacts_imported']['it-it'] = "Contatti Importati:";
+$text['message-contacts_imported']['ka-ge'] = "შემოტანილია კონტაქტები:";
+$text['message-contacts_imported']['nl-nl'] = "Kontacten geimporteerd";
+$text['message-contacts_imported']['pl-pl'] = "Zaimportowane kontakty:";
+$text['message-contacts_imported']['pt-br'] = "Contatos importados";
+$text['message-contacts_imported']['pt-pt'] = "Contatos Importados:";
+$text['message-contacts_imported']['ro-ro'] = "Contacte importate:";
+$text['message-contacts_imported']['ru-ru'] = "Контакты Импортированы:";
+$text['message-contacts_imported']['sv-se'] = "Kontakter Importerade";
+$text['message-contacts_imported']['uk-ua'] = "Імпортовані контакти :";
+$text['message-contacts_imported']['zh-cn'] = "联系人导入:";
+$text['message-contacts_imported']['ja-jp'] = "インポートされた連絡先:";
+$text['message-contacts_imported']['ko-kr'] = "가져온 연락처:";
+
+$text['message-add']['en-us'] = "Add Completed";
+$text['message-add']['en-gb'] = "Add Completed";
+$text['message-add']['ar-eg'] = "اكتمل الإضافة";
+$text['message-add']['de-at'] = "Erfolgreich hinzugefügt";
+$text['message-add']['de-ch'] = "Erfolgreich hinzugefügt";
+$text['message-add']['de-de'] = "Erfolgreich hinzugefügt";
+$text['message-add']['el-gr'] = "Η εισαγωγή ολοκληρώθηκε";
+$text['message-add']['es-cl'] = "Agregar Completado";
+$text['message-add']['es-mx'] = "Agregar Completado";
+$text['message-add']['fr-ca'] = "Ajouté";
+$text['message-add']['fr-fr'] = "Ajouté";
+$text['message-add']['he-il'] = "הוספה הושלמה";
+$text['message-add']['it-it'] = "Inserimento Completato";
+$text['message-add']['ka-ge'] = "დამატება დასრულდა";
+$text['message-add']['nl-nl'] = "Toevoegen gereed";
+$text['message-add']['pl-pl'] = "Dodano pomyślnie";
+$text['message-add']['pt-br'] = "Criação Efetuada";
+$text['message-add']['pt-pt'] = "Adição Efectuada";
+$text['message-add']['ro-ro'] = "Adăugați finalizat";
+$text['message-add']['ru-ru'] = "Добавление выполненно";
+$text['message-add']['sv-se'] = "Tillagd";
+$text['message-add']['uk-ua'] = "Додано";
+$text['message-add']['zh-cn'] = "添加完成";
+$text['message-add']['ja-jp'] = "追加完了";
+$text['message-add']['ko-kr'] = "추가완료";
+
+$text['message-access_denied']['en-us'] = "Access Denied";
+$text['message-access_denied']['en-gb'] = "Access Denied";
+$text['message-access_denied']['ar-eg'] = "تم الرفض";
+$text['message-access_denied']['de-at'] = "Zugang verweigert";
+$text['message-access_denied']['de-ch'] = "Zugang verweigert";
+$text['message-access_denied']['de-de'] = "Zugang verweigert";
+$text['message-access_denied']['el-gr'] = "Δεν επιτρέπεται η πρόσβαση";
+$text['message-access_denied']['es-cl'] = "Acceso Denegado";
+$text['message-access_denied']['es-mx'] = "Acceso Denegado";
+$text['message-access_denied']['fr-ca'] = "Accès Refusé";
+$text['message-access_denied']['fr-fr'] = "Accès Refusé";
+$text['message-access_denied']['he-il'] = "הגישה נדחתה";
+$text['message-access_denied']['it-it'] = "Accesso Negato";
+$text['message-access_denied']['ka-ge'] = "წვდომა აკრძალულია";
+$text['message-access_denied']['nl-nl'] = "Toegang geweigerd";
+$text['message-access_denied']['pl-pl'] = "Odmowa dostępu";
+$text['message-access_denied']['pt-br'] = "Acesso negado";
+$text['message-access_denied']['pt-pt'] = "Acesso Negado";
+$text['message-access_denied']['ro-ro'] = "Acces interzis";
+$text['message-access_denied']['ru-ru'] = "Доступ Запрещен";
+$text['message-access_denied']['sv-se'] = "Åtkomst Nekad";
+$text['message-access_denied']['uk-ua'] = "В доступі відмовлено";
+$text['message-access_denied']['zh-cn'] = "拒绝访问";
+$text['message-access_denied']['ja-jp'] = "アクセス拒否";
+$text['message-access_denied']['ko-kr'] = "접근 불가";
+
+$text['message-uploaded']['en-us'] = "File Uploaded";
+$text['message-uploaded']['en-gb'] = "File Uploaded";
+$text['message-uploaded']['ar-eg'] = "ملف محمول";
+$text['message-uploaded']['de-at'] = "Datei hochgeladen";
+$text['message-uploaded']['de-ch'] = "Datei hochgeladen";
+$text['message-uploaded']['de-de'] = "Datei hochgeladen";
+$text['message-uploaded']['es-cl'] = "Subida de Archivos";
+$text['message-uploaded']['es-mx'] = "Subida de Archivos";
+$text['message-uploaded']['fr-ca'] = "Fichier téléchargé";
+$text['message-uploaded']['fr-fr'] = "Fichier téléchargé";
+$text['message-uploaded']['he-il'] = "הקובץ הועלה";
+$text['message-uploaded']['it-it'] = "File Caricato";
+$text['message-uploaded']['ka-ge'] = "ფაილი აიტვირთა";
+$text['message-uploaded']['nl-nl'] = "Bestand opsturen";
+$text['message-uploaded']['pl-pl'] = "Dodany Plik";
+$text['message-uploaded']['pt-br'] = "Arquivo Enviado";
+$text['message-uploaded']['pt-pt'] = "Arquivo Enviado";
+$text['message-uploaded']['ro-ro'] = "Fișier încărcat";
+$text['message-uploaded']['ru-ru'] = "Файл загружен";
+$text['message-uploaded']['sv-se'] = "File Uppladdade";
+$text['message-uploaded']['uk-ua'] = "файл Завантажено";
+$text['message-uploaded']['zh-cn'] = "文件已上传";
+$text['message-uploaded']['ja-jp'] = "ファイルがアップロードされました";
+$text['message-uploaded']['ko-kr'] = "업로드된 파일";
+
+$text['label-voice']['en-us'] = "Voice";
+$text['label-voice']['en-gb'] = "Voice";
+$text['label-voice']['ar-eg'] = "صوت";
+$text['label-voice']['de-at'] = "Sprache";
+$text['label-voice']['de-ch'] = "Sprache";
+$text['label-voice']['de-de'] = "Sprache";
+$text['label-voice']['el-gr'] = "Φωνή";
+$text['label-voice']['es-cl'] = "Voz";
+$text['label-voice']['es-mx'] = "Voz";
+$text['label-voice']['fr-ca'] = "Voix";
+$text['label-voice']['fr-fr'] = "Voix";
+$text['label-voice']['he-il'] = "שיחה";
+$text['label-voice']['it-it'] = "Voce";
+$text['label-voice']['ka-ge'] = "ხმა";
+$text['label-voice']['nl-nl'] = "Stem";
+$text['label-voice']['pl-pl'] = "Głos";
+$text['label-voice']['pt-br'] = "Voz";
+$text['label-voice']['pt-pt'] = "Voz";
+$text['label-voice']['ro-ro'] = "Voce";
+$text['label-voice']['ru-ru'] = "Голос";
+$text['label-voice']['sv-se'] = "Röst";
+$text['label-voice']['uk-ua'] = "Голос";
+$text['label-voice']['zh-cn'] = "嗓音";
+$text['label-voice']['ja-jp'] = "声";
+$text['label-voice']['ko-kr'] = "목소리";
+
+$text['label-video']['en-us'] = "Video";
+$text['label-video']['en-gb'] = "Video";
+$text['label-video']['ar-eg'] = "فيديو";
+$text['label-video']['de-at'] = "Video";
+$text['label-video']['de-ch'] = "Video";
+$text['label-video']['de-de'] = "Video";
+$text['label-video']['el-gr'] = "Βίντεο";
+$text['label-video']['es-cl'] = "Vídeo";
+$text['label-video']['es-mx'] = "Vídeo";
+$text['label-video']['fr-ca'] = "Vidéo";
+$text['label-video']['fr-fr'] = "Vidéo";
+$text['label-video']['he-il'] = "וִידֵאוֹ";
+$text['label-video']['it-it'] = "Video";
+$text['label-video']['ka-ge'] = "ვიდეო";
+$text['label-video']['nl-nl'] = "Video";
+$text['label-video']['pl-pl'] = "Wideo";
+$text['label-video']['pt-br'] = "Video";
+$text['label-video']['pt-pt'] = "Vídeo";
+$text['label-video']['ro-ro'] = "Video";
+$text['label-video']['ru-ru'] = "Видео";
+$text['label-video']['sv-se'] = "Video";
+$text['label-video']['uk-ua'] = "Відео";
+$text['label-video']['zh-cn'] = "视频";
+$text['label-video']['ja-jp'] = "ビデオ";
+$text['label-video']['ko-kr'] = "동영상";
+
+$text['label-urls']['en-us'] = "URLs";
+$text['label-urls']['en-gb'] = "URLs";
+$text['label-urls']['ar-eg'] = "عناوين URL";
+$text['label-urls']['de-at'] = "URLs";
+$text['label-urls']['de-ch'] = "URLs";
+$text['label-urls']['de-de'] = "URLs";
+$text['label-urls']['el-gr'] = "διευθύνσεις URL";
+$text['label-urls']['es-cl'] = "URLs";
+$text['label-urls']['es-mx'] = "URLs";
+$text['label-urls']['fr-ca'] = "URLs";
+$text['label-urls']['fr-fr'] = "URLs";
+$text['label-urls']['he-il'] = "כתובות אתרים";
+$text['label-urls']['it-it'] = "URLs";
+$text['label-urls']['ka-ge'] = "URL-ები";
+$text['label-urls']['nl-nl'] = "URLs";
+$text['label-urls']['pl-pl'] = "Linki URL";
+$text['label-urls']['pt-br'] = "URLs";
+$text['label-urls']['pt-pt'] = "URLs";
+$text['label-urls']['ro-ro'] = "URL-uri";
+$text['label-urls']['ru-ru'] = "URL адреса";
+$text['label-urls']['sv-se'] = "URLros";
+$text['label-urls']['uk-ua'] = "URL адреси";
+$text['label-urls']['zh-cn'] = "URLs";
+$text['label-urls']['ja-jp'] = "URLs";
+$text['label-urls']['ko-kr'] = "URLs";
+
+$text['label-url_label']['en-us'] = "Label";
+$text['label-url_label']['en-gb'] = "Label";
+$text['label-url_label']['ar-eg'] = "ملصق";
+$text['label-url_label']['de-at'] = "Kennzeichnung";
+$text['label-url_label']['de-ch'] = "Kennzeichnung";
+$text['label-url_label']['de-de'] = "Kennzeichnung";
+$text['label-url_label']['el-gr'] = "Ετικέτα";
+$text['label-url_label']['es-cl'] = "Etiqueta";
+$text['label-url_label']['es-mx'] = "Etiqueta";
+$text['label-url_label']['fr-ca'] = "Etiquette";
+$text['label-url_label']['fr-fr'] = "Etiquette";
+$text['label-url_label']['he-il'] = "תווית";
+$text['label-url_label']['it-it'] = "Etichetta";
+$text['label-url_label']['ka-ge'] = "ჭდე";
+$text['label-url_label']['nl-nl'] = "Etiket";
+$text['label-url_label']['pl-pl'] = "Etykieta";
+$text['label-url_label']['pt-br'] = "Identificador";
+$text['label-url_label']['pt-pt'] = "Etiqueta";
+$text['label-url_label']['ro-ro'] = "Eticheta";
+$text['label-url_label']['ru-ru'] = "Метка";
+$text['label-url_label']['sv-se'] = "Etikett";
+$text['label-url_label']['uk-ua'] = "Назва";
+$text['label-url_label']['zh-cn'] = "标签";
+$text['label-url_label']['ja-jp'] = "ラベル";
+$text['label-url_label']['ko-kr'] = "상표";
+
+$text['label-url_description']['en-us'] = "Description";
+$text['label-url_description']['en-gb'] = "Description";
+$text['label-url_description']['ar-eg'] = "وصف";
+$text['label-url_description']['de-at'] = "Beschreibung";
+$text['label-url_description']['de-ch'] = "Beschreibung";
+$text['label-url_description']['de-de'] = "Beschreibung";
+$text['label-url_description']['el-gr'] = "Περιγραφή";
+$text['label-url_description']['es-cl'] = "Descripción";
+$text['label-url_description']['es-mx'] = "Descripción";
+$text['label-url_description']['fr-ca'] = "Description";
+$text['label-url_description']['fr-fr'] = "Description";
+$text['label-url_description']['he-il'] = "תאור";
+$text['label-url_description']['it-it'] = "Descrizione";
+$text['label-url_description']['ka-ge'] = "აღწერა";
+$text['label-url_description']['nl-nl'] = "Omschrijving";
+$text['label-url_description']['pl-pl'] = "Opis";
+$text['label-url_description']['pt-br'] = "Descrição";
+$text['label-url_description']['pt-pt'] = "Descrição";
+$text['label-url_description']['ro-ro'] = "Descriere";
+$text['label-url_description']['ru-ru'] = "Описание";
+$text['label-url_description']['sv-se'] = "Beskrivning";
+$text['label-url_description']['uk-ua'] = "Опис";
+$text['label-url_description']['zh-cn'] = "描述";
+$text['label-url_description']['ja-jp'] = "説明";
+$text['label-url_description']['ko-kr'] = "설명";
+
+$text['label-url_address']['en-us'] = "Address";
+$text['label-url_address']['en-gb'] = "Address";
+$text['label-url_address']['ar-eg'] = "عنوان";
+$text['label-url_address']['de-at'] = "Adresse";
+$text['label-url_address']['de-ch'] = "Adresse";
+$text['label-url_address']['de-de'] = "Adresse";
+$text['label-url_address']['el-gr'] = "Διεύθυνση";
+$text['label-url_address']['es-cl'] = "Calle";
+$text['label-url_address']['es-mx'] = "Calle";
+$text['label-url_address']['fr-ca'] = "Adresse";
+$text['label-url_address']['fr-fr'] = "Rue";
+$text['label-url_address']['he-il'] = "כתובת";
+$text['label-url_address']['it-it'] = "Indirizzo";
+$text['label-url_address']['ka-ge'] = "მისამართი";
+$text['label-url_address']['nl-nl'] = "Adres";
+$text['label-url_address']['pl-pl'] = "Adres";
+$text['label-url_address']['pt-br'] = "Rua";
+$text['label-url_address']['pt-pt'] = "Rua";
+$text['label-url_address']['ro-ro'] = "Abordare";
+$text['label-url_address']['ru-ru'] = "Адреса";
+$text['label-url_address']['sv-se'] = "Adress";
+$text['label-url_address']['uk-ua'] = "Адреси";
+$text['label-url_address']['zh-cn'] = "地址";
+$text['label-url_address']['ja-jp'] = "住所";
+$text['label-url_address']['ko-kr'] = "주소";
+
+$text['label-true']['en-us'] = "True";
+$text['label-true']['en-gb'] = "True";
+$text['label-true']['ar-eg'] = "حقيقي";
+$text['label-true']['de-at'] = "Ein";
+$text['label-true']['de-ch'] = "Ein";
+$text['label-true']['de-de'] = "Ein";
+$text['label-true']['el-gr'] = "Ναι";
+$text['label-true']['es-cl'] = "Verdadero";
+$text['label-true']['es-mx'] = "Verdadero";
+$text['label-true']['fr-ca'] = "Vrai";
+$text['label-true']['fr-fr'] = "Oui";
+$text['label-true']['he-il'] = "חיובי";
+$text['label-true']['it-it'] = "Vero";
+$text['label-true']['ka-ge'] = "ჭეშმარიტი";
+$text['label-true']['nl-nl'] = "Ja";
+$text['label-true']['pl-pl'] = "Tak";
+$text['label-true']['pt-br'] = "Sim";
+$text['label-true']['pt-pt'] = "Sim";
+$text['label-true']['ro-ro'] = "Adevărat";
+$text['label-true']['ru-ru'] = "Да";
+$text['label-true']['sv-se'] = "Sann";
+$text['label-true']['uk-ua'] = "Так";
+$text['label-true']['zh-cn'] = "真的";
+$text['label-true']['ja-jp'] = "真実";
+$text['label-true']['ko-kr'] = "진실";
+
+$text['label-time_user']['en-us'] = "User";
+$text['label-time_user']['en-gb'] = "User";
+$text['label-time_user']['ar-eg'] = "مستخدم";
+$text['label-time_user']['de-at'] = "Benutzer";
+$text['label-time_user']['de-ch'] = "Benutzer";
+$text['label-time_user']['de-de'] = "Benutzer";
+$text['label-time_user']['el-gr'] = "Χρήστης";
+$text['label-time_user']['es-cl'] = "Usuario";
+$text['label-time_user']['es-mx'] = "Usuario";
+$text['label-time_user']['fr-ca'] = "Utilisateur";
+$text['label-time_user']['fr-fr'] = "Utilisateur";
+$text['label-time_user']['he-il'] = "משתמש";
+$text['label-time_user']['it-it'] = "Utente";
+$text['label-time_user']['ka-ge'] = "მომხმარებელი";
+$text['label-time_user']['nl-nl'] = "Gebruiker";
+$text['label-time_user']['pl-pl'] = "Użytkownik";
+$text['label-time_user']['pt-br'] = "Usuário";
+$text['label-time_user']['pt-pt'] = "Usuário";
+$text['label-time_user']['ro-ro'] = "Utilizator";
+$text['label-time_user']['ru-ru'] = "Пользователь";
+$text['label-time_user']['sv-se'] = "Användare";
+$text['label-time_user']['uk-ua'] = "Користувач";
+$text['label-time_user']['zh-cn'] = "用户";
+$text['label-time_user']['ja-jp'] = "ユーザー";
+$text['label-time_user']['ko-kr'] = "사용자";
+
+$text['label-time_timer']['en-us'] = "Timer";
+$text['label-time_timer']['en-gb'] = "Timer";
+$text['label-time_timer']['ar-eg'] = "الموقت";
+$text['label-time_timer']['de-at'] = "Timer";
+$text['label-time_timer']['de-ch'] = "Timer";
+$text['label-time_timer']['de-de'] = "Timer";
+$text['label-time_timer']['el-gr'] = "Χρονοδιακόπτης";
+$text['label-time_timer']['es-cl'] = "Timer";
+$text['label-time_timer']['es-mx'] = "Timer";
+$text['label-time_timer']['fr-ca'] = "Minuterie";
+$text['label-time_timer']['fr-fr'] = "Minuteur";
+$text['label-time_timer']['he-il'] = "שָׁעוֹן עֶצֶר";
+$text['label-time_timer']['it-it'] = "Timer";
+$text['label-time_timer']['ka-ge'] = "ტაიმერი";
+$text['label-time_timer']['nl-nl'] = "Timer";
+$text['label-time_timer']['pl-pl'] = "Regulator Czasowy";
+$text['label-time_timer']['pt-br'] = "Cronômetro";
+$text['label-time_timer']['pt-pt'] = "Cronômetro";
+$text['label-time_timer']['ro-ro'] = "Temporizator";
+$text['label-time_timer']['ru-ru'] = "таймер";
+$text['label-time_timer']['sv-se'] = "Timer";
+$text['label-time_timer']['uk-ua'] = "таймер";
+$text['label-time_timer']['zh-cn'] = "定时器";
+$text['label-time_timer']['ja-jp'] = "タイマー";
+$text['label-time_timer']['ko-kr'] = "시간제 노동자";
+
+$text['label-time_time']['en-us'] = "Time";
+$text['label-time_time']['en-gb'] = "Time";
+$text['label-time_time']['ar-eg'] = "وقت";
+$text['label-time_time']['de-at'] = "Zeit";
+$text['label-time_time']['de-ch'] = "Zeit";
+$text['label-time_time']['de-de'] = "Zeit";
+$text['label-time_time']['el-gr'] = "Ώρα";
+$text['label-time_time']['es-cl'] = "Tiempo";
+$text['label-time_time']['es-mx'] = "Tiempo";
+$text['label-time_time']['fr-ca'] = "Temps";
+$text['label-time_time']['fr-fr'] = "Temps";
+$text['label-time_time']['he-il'] = "זמן";
+$text['label-time_time']['it-it'] = "Tempo";
+$text['label-time_time']['ka-ge'] = "დრო";
+$text['label-time_time']['nl-nl'] = "Tijd";
+$text['label-time_time']['pl-pl'] = "Czas";
+$text['label-time_time']['pt-br'] = "Tempo";
+$text['label-time_time']['pt-pt'] = "Tempo";
+$text['label-time_time']['ro-ro'] = "Timp";
+$text['label-time_time']['ru-ru'] = "Время";
+$text['label-time_time']['sv-se'] = "Tid";
+$text['label-time_time']['uk-ua'] = "час";
+$text['label-time_time']['zh-cn'] = "时间";
+$text['label-time_time']['ja-jp'] = "時間";
+$text['label-time_time']['ko-kr'] = "시간";
+
+$text['label-time_stop']['en-us'] = "Stop";
+$text['label-time_stop']['en-gb'] = "Stop";
+$text['label-time_stop']['ar-eg'] = "قف";
+$text['label-time_stop']['de-at'] = "Stopp";
+$text['label-time_stop']['de-ch'] = "Stopp";
+$text['label-time_stop']['de-de'] = "Stopp";
+$text['label-time_stop']['el-gr'] = "Διακοπή";
+$text['label-time_stop']['es-cl'] = "Deténgase";
+$text['label-time_stop']['es-mx'] = "Deténgase";
+$text['label-time_stop']['fr-ca'] = "Arrêt";
+$text['label-time_stop']['fr-fr'] = "Stop";
+$text['label-time_stop']['he-il'] = "עצור";
+$text['label-time_stop']['it-it'] = "Stop";
+$text['label-time_stop']['ka-ge'] = "სდექ";
+$text['label-time_stop']['nl-nl'] = "Stop";
+$text['label-time_stop']['pl-pl'] = "Stop";
+$text['label-time_stop']['pt-br'] = "Pare";
+$text['label-time_stop']['pt-pt'] = "Pare";
+$text['label-time_stop']['ro-ro'] = "Stop";
+$text['label-time_stop']['ru-ru'] = "Стоп";
+$text['label-time_stop']['sv-se'] = "Stanna";
+$text['label-time_stop']['uk-ua'] = "стоп";
+$text['label-time_stop']['zh-cn'] = "停止";
+$text['label-time_stop']['ja-jp'] = "ストップ";
+$text['label-time_stop']['ko-kr'] = "멈추다";
+
+$text['label-time_start']['en-us'] = "Start";
+$text['label-time_start']['en-gb'] = "Start";
+$text['label-time_start']['ar-eg'] = "يبدأ";
+$text['label-time_start']['de-at'] = "Start";
+$text['label-time_start']['de-ch'] = "Start";
+$text['label-time_start']['de-de'] = "Start";
+$text['label-time_start']['el-gr'] = "Έναρξη";
+$text['label-time_start']['es-cl'] = "Comienzo";
+$text['label-time_start']['es-mx'] = "Comienzo";
+$text['label-time_start']['fr-ca'] = "Début";
+$text['label-time_start']['fr-fr'] = "Début";
+$text['label-time_start']['he-il'] = "התחל";
+$text['label-time_start']['it-it'] = "Start";
+$text['label-time_start']['ka-ge'] = "დაწყება";
+$text['label-time_start']['nl-nl'] = "Start";
+$text['label-time_start']['pl-pl'] = "Początek";
+$text['label-time_start']['pt-br'] = "Começo";
+$text['label-time_start']['pt-pt'] = "Começo";
+$text['label-time_start']['ro-ro'] = "start";
+$text['label-time_start']['ru-ru'] = "Старт";
+$text['label-time_start']['sv-se'] = "Start";
+$text['label-time_start']['uk-ua'] = "початок";
+$text['label-time_start']['zh-cn'] = "开始";
+$text['label-time_start']['ja-jp'] = "始める";
+$text['label-time_start']['ko-kr'] = "시작";
+
+$text['label-time_duration']['en-us'] = "Duration";
+$text['label-time_duration']['en-gb'] = "Duration";
+$text['label-time_duration']['ar-eg'] = "مدة";
+$text['label-time_duration']['de-at'] = "Dauer";
+$text['label-time_duration']['de-ch'] = "Dauer";
+$text['label-time_duration']['de-de'] = "Dauer";
+$text['label-time_duration']['el-gr'] = "Διάρκεια";
+$text['label-time_duration']['es-cl'] = "Duración";
+$text['label-time_duration']['es-mx'] = "Duración";
+$text['label-time_duration']['fr-ca'] = "Durée";
+$text['label-time_duration']['fr-fr'] = "Durée";
+$text['label-time_duration']['he-il'] = "מֶשֶׁך";
+$text['label-time_duration']['it-it'] = "Durata";
+$text['label-time_duration']['ka-ge'] = "ხანგრძლივობა";
+$text['label-time_duration']['nl-nl'] = "Duur";
+$text['label-time_duration']['pl-pl'] = "Czas Trwania";
+$text['label-time_duration']['pt-br'] = "Duração";
+$text['label-time_duration']['pt-pt'] = "Duração";
+$text['label-time_duration']['ro-ro'] = "Durată";
+$text['label-time_duration']['ru-ru'] = "Продолжительность";
+$text['label-time_duration']['sv-se'] = "Varaktighet";
+$text['label-time_duration']['uk-ua'] = "тривалість";
+$text['label-time_duration']['zh-cn'] = "期间";
+$text['label-time_duration']['ja-jp'] = "間隔";
+$text['label-time_duration']['ko-kr'] = "지속";
+
+$text['label-time_description']['en-us'] = "Description";
+$text['label-time_description']['en-gb'] = "Description";
+$text['label-time_description']['ar-eg'] = "وصف";
+$text['label-time_description']['de-at'] = "Beschreibung";
+$text['label-time_description']['de-ch'] = "Beschreibung";
+$text['label-time_description']['de-de'] = "Beschreibung";
+$text['label-time_description']['el-gr'] = "Περιγραφή";
+$text['label-time_description']['es-cl'] = "Descripción";
+$text['label-time_description']['es-mx'] = "Descripción";
+$text['label-time_description']['fr-ca'] = "Description";
+$text['label-time_description']['fr-fr'] = "Description";
+$text['label-time_description']['he-il'] = "תאור";
+$text['label-time_description']['it-it'] = "Descrizione";
+$text['label-time_description']['ka-ge'] = "აღწერა";
+$text['label-time_description']['nl-nl'] = "Omschrijving";
+$text['label-time_description']['pl-pl'] = "Opis";
+$text['label-time_description']['pt-br'] = "Descrição";
+$text['label-time_description']['pt-pt'] = "Descrição";
+$text['label-time_description']['ro-ro'] = "Descriere";
+$text['label-time_description']['ru-ru'] = "Описание";
+$text['label-time_description']['sv-se'] = "Beskrivning";
+$text['label-time_description']['uk-ua'] = "Опис";
+$text['label-time_description']['zh-cn'] = "描述";
+$text['label-time_description']['ja-jp'] = "説明";
+$text['label-time_description']['ko-kr'] = "설명";
+
+$text['label-text']['en-us'] = "Text";
+$text['label-text']['en-gb'] = "Text";
+$text['label-text']['ar-eg'] = "نص";
+$text['label-text']['de-at'] = "Text";
+$text['label-text']['de-ch'] = "Text";
+$text['label-text']['de-de'] = "Text";
+$text['label-text']['el-gr'] = "Κείμενο";
+$text['label-text']['es-cl'] = "Texto";
+$text['label-text']['es-mx'] = "Texto";
+$text['label-text']['fr-ca'] = "Texte";
+$text['label-text']['fr-fr'] = "Texte";
+$text['label-text']['he-il'] = "טקסט";
+$text['label-text']['it-it'] = "Testo";
+$text['label-text']['ka-ge'] = "ტექსტი";
+$text['label-text']['nl-nl'] = "Tekst";
+$text['label-text']['pl-pl'] = "Tekst";
+$text['label-text']['pt-br'] = "Texto";
+$text['label-text']['pt-pt'] = "Texto";
+$text['label-text']['ro-ro'] = "Text";
+$text['label-text']['ru-ru'] = "Текст";
+$text['label-text']['sv-se'] = "Text";
+$text['label-text']['uk-ua'] = "Текст";
+$text['label-text']['zh-cn'] = "文本";
+$text['label-text']['ja-jp'] = "文章";
+$text['label-text']['ko-kr'] = "텍스트";
+
+$text['label-shared']['en-us'] = "Shared";
+$text['label-shared']['en-gb'] = "Shared";
+$text['label-shared']['ar-eg'] = "مشترك";
+$text['label-shared']['de-at'] = "Gemeinsame";
+$text['label-shared']['de-ch'] = "Gemeinsame";
+$text['label-shared']['de-de'] = "Gemeinsame";
+$text['label-shared']['el-gr'] = "Κοινά";
+$text['label-shared']['es-cl'] = "Compartido";
+$text['label-shared']['es-mx'] = "Compartido";
+$text['label-shared']['fr-ca'] = "Commun";
+$text['label-shared']['fr-fr'] = "Commun";
+$text['label-shared']['he-il'] = "משותף";
+$text['label-shared']['it-it'] = "Condiviso";
+$text['label-shared']['ka-ge'] = "გაზიარებული";
+$text['label-shared']['nl-nl'] = "Gezamenlijk";
+$text['label-shared']['pl-pl'] = "Wspólny";
+$text['label-shared']['pt-br'] = "Compartilhado";
+$text['label-shared']['pt-pt'] = "Partilhada";
+$text['label-shared']['ro-ro'] = "Impartit";
+$text['label-shared']['ru-ru'] = "Общий";
+$text['label-shared']['sv-se'] = "Delad";
+$text['label-shared']['uk-ua'] = "Спільний доступ";
+$text['label-shared']['zh-cn'] = "共享";
+$text['label-shared']['ja-jp'] = "共有";
+$text['label-shared']['ko-kr'] = "공유";
+
+$text['label-phone_label']['en-us'] = "Label";
+$text['label-phone_label']['en-gb'] = "Label";
+$text['label-phone_label']['ar-eg'] = "ملصق";
+$text['label-phone_label']['de-at'] = "Kennzeichnung";
+$text['label-phone_label']['de-ch'] = "Kennzeichnung";
+$text['label-phone_label']['de-de'] = "Kennzeichnung";
+$text['label-phone_label']['el-gr'] = "Ετικέτα";
+$text['label-phone_label']['es-cl'] = "Etiqueta";
+$text['label-phone_label']['es-mx'] = "Etiqueta";
+$text['label-phone_label']['fr-ca'] = "Etiquette";
+$text['label-phone_label']['fr-fr'] = "Etiquette";
+$text['label-phone_label']['he-il'] = "תווית";
+$text['label-phone_label']['it-it'] = "Etichetta";
+$text['label-phone_label']['ka-ge'] = "ჭდე";
+$text['label-phone_label']['nl-nl'] = "Etiket";
+$text['label-phone_label']['pl-pl'] = "Etykieta";
+$text['label-phone_label']['pt-br'] = "Identificador";
+$text['label-phone_label']['pt-pt'] = "Etiqueta";
+$text['label-phone_label']['ro-ro'] = "Eticheta";
+$text['label-phone_label']['ru-ru'] = "Метка";
+$text['label-phone_label']['sv-se'] = "Etikett";
+$text['label-phone_label']['uk-ua'] = "Назва";
+$text['label-phone_label']['zh-cn'] = "标签";
+$text['label-phone_label']['ja-jp'] = "ラベル";
+$text['label-phone_label']['ko-kr'] = "상표";
+
+$text['label-phone_type']['en-us'] = "Type";
+$text['label-phone_type']['en-gb'] = "Type";
+$text['label-phone_type']['ar-eg'] = "يكتب";
+$text['label-phone_type']['de-at'] = "Art";
+$text['label-phone_type']['de-ch'] = "Art";
+$text['label-phone_type']['de-de'] = "Art";
+$text['label-phone_type']['el-gr'] = "Τύπος";
+$text['label-phone_type']['es-cl'] = "Tipo";
+$text['label-phone_type']['es-mx'] = "Tipo";
+$text['label-phone_type']['fr-ca'] = "Type";
+$text['label-phone_type']['fr-fr'] = "Type";
+$text['label-phone_type']['he-il'] = "סוג";
+$text['label-phone_type']['it-it'] = "Tipo";
+$text['label-phone_type']['ka-ge'] = "ტიპი";
+$text['label-phone_type']['nl-nl'] = "Type";
+$text['label-phone_type']['pl-pl'] = "Typ";
+$text['label-phone_type']['pt-br'] = "Tipo";
+$text['label-phone_type']['pt-pt'] = "Tipo";
+$text['label-phone_type']['ro-ro'] = "סוּג";
+$text['label-phone_type']['ru-ru'] = "Тип";
+$text['label-phone_type']['sv-se'] = "Typ";
+$text['label-phone_type']['uk-ua'] = "Тип";
+$text['label-phone_type']['zh-cn'] = "类型";
+$text['label-phone_type']['ja-jp'] = "タイプ";
+$text['label-phone_type']['ko-kr'] = "유형";
+
+$text['label-phone_tools']['en-us'] = "Tools";
+$text['label-phone_tools']['en-gb'] = "Tools";
+$text['label-phone_tools']['ar-eg'] = "أدوات";
+$text['label-phone_tools']['de-at'] = "Werkzeuge";
+$text['label-phone_tools']['de-ch'] = "Werkzeuge";
+$text['label-phone_tools']['de-de'] = "Werkzeuge";
+$text['label-phone_tools']['el-gr'] = "Εργαλεία";
+$text['label-phone_tools']['es-cl'] = "Herramientas";
+$text['label-phone_tools']['es-mx'] = "Herramientas";
+$text['label-phone_tools']['fr-ca'] = "Outils";
+$text['label-phone_tools']['fr-fr'] = "Outils";
+$text['label-phone_tools']['he-il'] = "כלים";
+$text['label-phone_tools']['it-it'] = "Strumenti";
+$text['label-phone_tools']['ka-ge'] = "ხელსაწყოები";
+$text['label-phone_tools']['nl-nl'] = "Gereedschappen";
+$text['label-phone_tools']['pl-pl'] = "Narzędzia";
+$text['label-phone_tools']['pt-br'] = "Ferramentas";
+$text['label-phone_tools']['pt-pt'] = "Ferramentas";
+$text['label-phone_tools']['ro-ro'] = "Instrumente";
+$text['label-phone_tools']['ru-ru'] = "Инструменты";
+$text['label-phone_tools']['sv-se'] = "Verktyg";
+$text['label-phone_tools']['uk-ua'] = "Інструменти";
+$text['label-phone_tools']['zh-cn'] = "工具";
+$text['label-phone_tools']['ja-jp'] = "ツール";
+$text['label-phone_tools']['ko-kr'] = "도구";
+
+$text['label-phone_speed_dial']['en-us'] = "Speed Dial";
+$text['label-phone_speed_dial']['en-gb'] = "Speed Dial";
+$text['label-phone_speed_dial']['ar-eg'] = "اتصال سريع";
+$text['label-phone_speed_dial']['de-at'] = "Kurzwahl";
+$text['label-phone_speed_dial']['de-ch'] = "Kurzwahl";
+$text['label-phone_speed_dial']['de-de'] = "Kurzwahl";
+$text['label-phone_speed_dial']['el-gr'] = "Ταχεία κλήση";
+$text['label-phone_speed_dial']['es-cl'] = "De marcación rápida";
+$text['label-phone_speed_dial']['es-mx'] = "De marcación rápida";
+$text['label-phone_speed_dial']['fr-ca'] = "Numérotation Abrégée";
+$text['label-phone_speed_dial']['fr-fr'] = "Numérotation Abrégée";
+$text['label-phone_speed_dial']['he-il'] = "חיוג מהיר";
+$text['label-phone_speed_dial']['it-it'] = "Numero Breve";
+$text['label-phone_speed_dial']['ka-ge'] = "სწრაფი აკრეფა";
+$text['label-phone_speed_dial']['nl-nl'] = "Snelkiezen";
+$text['label-phone_speed_dial']['pl-pl'] = "Szybkie wybieranie";
+$text['label-phone_speed_dial']['pt-br'] = "Discagem rápida";
+$text['label-phone_speed_dial']['pt-pt'] = "Discagem rápida";
+$text['label-phone_speed_dial']['ro-ro'] = "Apelare rapida";
+$text['label-phone_speed_dial']['ru-ru'] = "Быстрый Набор";
+$text['label-phone_speed_dial']['sv-se'] = "Snabb Nummer";
+$text['label-phone_speed_dial']['uk-ua'] = "Швидкий набір";
+$text['label-phone_speed_dial']['zh-cn'] = "快速拨号";
+$text['label-phone_speed_dial']['ja-jp'] = "短縮ダイヤル";
+$text['label-phone_speed_dial']['ko-kr'] = "단축 다이얼";
+
+$text['label-phone_country_code']['en-us'] = "Country Code";
+$text['label-phone_country_code']['en-gb'] = "Country Code";
+$text['label-phone_country_code']['ar-eg'] = "الرقم الدولي";
+$text['label-phone_country_code']['de-at'] = "Landesvorwahl";
+$text['label-phone_country_code']['de-ch'] = "Landesvorwahl";
+$text['label-phone_country_code']['de-de'] = "Landesvorwahl";
+$text['label-phone_country_code']['el-gr'] = "Κωδικός χώρας";
+$text['label-phone_country_code']['es-cl'] = "Código de país";
+$text['label-phone_country_code']['es-mx'] = "Código de país";
+$text['label-phone_country_code']['fr-ca'] = "Indicatif du Pays";
+$text['label-phone_country_code']['fr-fr'] = "Indicatif du Pays";
+$text['label-phone_country_code']['he-il'] = "קוד מדינה";
+$text['label-phone_country_code']['it-it'] = "Prefisso internazionale";
+$text['label-phone_country_code']['ka-ge'] = "ქვეყნის კოდი";
+$text['label-phone_country_code']['nl-nl'] = "Landcode";
+$text['label-phone_country_code']['pl-pl'] = "Kod pocztowy";
+$text['label-phone_country_code']['pt-br'] = "Código do país";
+$text['label-phone_country_code']['pt-pt'] = "Código do país";
+$text['label-phone_country_code']['ro-ro'] = "Codul tarii";
+$text['label-phone_country_code']['ru-ru'] = "Код страны";
+$text['label-phone_country_code']['sv-se'] = "Landskod";
+$text['label-phone_country_code']['uk-ua'] = "Код країни";
+$text['label-phone_country_code']['zh-cn'] = "国家代码";
+$text['label-phone_country_code']['ja-jp'] = "国コード";
+$text['label-phone_country_code']['ko-kr'] = "국가 코드";
+
+$text['label-phone_numbers']['en-us'] = "Numbers";
+$text['label-phone_numbers']['en-gb'] = "Numbers";
+$text['label-phone_numbers']['ar-eg'] = "أعداد";
+$text['label-phone_numbers']['de-at'] = "Nummern";
+$text['label-phone_numbers']['de-ch'] = "Nummern";
+$text['label-phone_numbers']['de-de'] = "Nummern";
+$text['label-phone_numbers']['el-gr'] = "Αριθμοί";
+$text['label-phone_numbers']['es-cl'] = "Números";
+$text['label-phone_numbers']['es-mx'] = "Números";
+$text['label-phone_numbers']['fr-ca'] = "Numéros";
+$text['label-phone_numbers']['fr-fr'] = "Numéros";
+$text['label-phone_numbers']['he-il'] = "מספרים";
+$text['label-phone_numbers']['it-it'] = "Numeri";
+$text['label-phone_numbers']['ka-ge'] = "ნომრები";
+$text['label-phone_numbers']['nl-nl'] = "Nummers";
+$text['label-phone_numbers']['pl-pl'] = "Numery";
+$text['label-phone_numbers']['pt-br'] = "Números";
+$text['label-phone_numbers']['pt-pt'] = "Números";
+$text['label-phone_numbers']['ro-ro'] = "Numerele";
+$text['label-phone_numbers']['ru-ru'] = "Номера";
+$text['label-phone_numbers']['sv-se'] = "Nummer";
+$text['label-phone_numbers']['uk-ua'] = "Номери";
+$text['label-phone_numbers']['zh-cn'] = "数字";
+$text['label-phone_numbers']['ja-jp'] = "数字";
+$text['label-phone_numbers']['ko-kr'] = "숫자";
+
+$text['label-phone_number']['en-us'] = "Number";
+$text['label-phone_number']['en-gb'] = "Number";
+$text['label-phone_number']['ar-eg'] = "رقم";
+$text['label-phone_number']['de-at'] = "Nummer";
+$text['label-phone_number']['de-ch'] = "Nummer";
+$text['label-phone_number']['de-de'] = "Nummer";
+$text['label-phone_number']['el-gr'] = "Αριθμός";
+$text['label-phone_number']['es-cl'] = "Número";
+$text['label-phone_number']['es-mx'] = "Número";
+$text['label-phone_number']['fr-ca'] = "Numéro";
+$text['label-phone_number']['fr-fr'] = "Numéro";
+$text['label-phone_number']['he-il'] = "מספר";
+$text['label-phone_number']['it-it'] = "Numero";
+$text['label-phone_number']['ka-ge'] = "ნომერი";
+$text['label-phone_number']['nl-nl'] = "Nummer";
+$text['label-phone_number']['pl-pl'] = "Numer";
+$text['label-phone_number']['pt-br'] = "Número";
+$text['label-phone_number']['pt-pt'] = "Número";
+$text['label-phone_number']['ro-ro'] = "Număr";
+$text['label-phone_number']['ru-ru'] = "Номер";
+$text['label-phone_number']['sv-se'] = "Nummer";
+$text['label-phone_number']['uk-ua'] = "Номер";
+$text['label-phone_number']['zh-cn'] = "数字";
+$text['label-phone_number']['ja-jp'] = "番号";
+$text['label-phone_number']['ko-kr'] = "숫자";
+
+$text['label-phone_extension']['en-us'] = "Extension";
+$text['label-phone_extension']['en-gb'] = "Extension";
+$text['label-phone_extension']['ar-eg'] = "امتداد";
+$text['label-phone_extension']['de-at'] = "Nebenstelle";
+$text['label-phone_extension']['de-ch'] = "Nebenstelle";
+$text['label-phone_extension']['de-de'] = "Nebenstelle";
+$text['label-phone_extension']['el-gr'] = "Εσωτερικό";
+$text['label-phone_extension']['es-cl'] = "Extensión";
+$text['label-phone_extension']['es-mx'] = "Extensión";
+$text['label-phone_extension']['fr-ca'] = "Extension";
+$text['label-phone_extension']['fr-fr'] = "Extension";
+$text['label-phone_extension']['he-il'] = "שלוחה";
+$text['label-phone_extension']['it-it'] = "Interno";
+$text['label-phone_extension']['ka-ge'] = "გაფართოება";
+$text['label-phone_extension']['nl-nl'] = "Toestel";
+$text['label-phone_extension']['pl-pl'] = "Numer wewnętrzny";
+$text['label-phone_extension']['pt-br'] = "Extensão";
+$text['label-phone_extension']['pt-pt'] = "Extensão";
+$text['label-phone_extension']['ro-ro'] = "Extensie";
+$text['label-phone_extension']['ru-ru'] = "Внутренний Номер";
+$text['label-phone_extension']['sv-se'] = "Anknytning";
+$text['label-phone_extension']['uk-ua'] = "Розширення";
+$text['label-phone_extension']['zh-cn'] = "扩大";
+$text['label-phone_extension']['ja-jp'] = "拡大";
+$text['label-phone_extension']['ko-kr'] = "확대";
+
+$text['label-primary']['en-us'] = "Primary";
+$text['label-primary']['en-gb'] = "Primary";
+$text['label-primary']['ar-eg'] = "أساسي";
+$text['label-primary']['de-at'] = "Primär";
+$text['label-primary']['de-ch'] = "Primär";
+$text['label-primary']['de-de'] = "Primär";
+$text['label-primary']['el-gr'] = "Κύρια";
+$text['label-primary']['es-cl'] = "Primário";
+$text['label-primary']['es-mx'] = "Primário";
+$text['label-primary']['fr-ca'] = "Primaire";
+$text['label-primary']['fr-fr'] = "Primaire";
+$text['label-primary']['he-il'] = "ראשי";
+$text['label-primary']['it-it'] = "Primario";
+$text['label-primary']['ka-ge'] = "ძირითადი";
+$text['label-primary']['nl-nl'] = "Primair";
+$text['label-primary']['pl-pl'] = "Główny";
+$text['label-primary']['pt-br'] = "Primário";
+$text['label-primary']['pt-pt'] = "Primário";
+$text['label-primary']['ro-ro'] = "Primar";
+$text['label-primary']['ru-ru'] = "Основной";
+$text['label-primary']['sv-se'] = "Primär";
+$text['label-primary']['uk-ua'] = "Первинний";
+$text['label-primary']['zh-cn'] = "基本的";
+$text['label-primary']['ja-jp'] = "主要な";
+$text['label-primary']['ko-kr'] = "주요한";
+
+$text['label-phone_description']['en-us'] = "Description";
+$text['label-phone_description']['en-gb'] = "Description";
+$text['label-phone_description']['ar-eg'] = "وصف";
+$text['label-phone_description']['de-at'] = "Beschreibung";
+$text['label-phone_description']['de-ch'] = "Beschreibung";
+$text['label-phone_description']['de-de'] = "Beschreibung";
+$text['label-phone_description']['el-gr'] = "Περιγραφή";
+$text['label-phone_description']['es-cl'] = "Descripción";
+$text['label-phone_description']['es-mx'] = "Descripción";
+$text['label-phone_description']['fr-ca'] = "Description";
+$text['label-phone_description']['fr-fr'] = "Description";
+$text['label-phone_description']['he-il'] = "תאור";
+$text['label-phone_description']['it-it'] = "Descrizione";
+$text['label-phone_description']['ka-ge'] = "აღწერა";
+$text['label-phone_description']['nl-nl'] = "Omschrijving";
+$text['label-phone_description']['pl-pl'] = "Opis";
+$text['label-phone_description']['pt-br'] = "Descrição";
+$text['label-phone_description']['pt-pt'] = "Descrição";
+$text['label-phone_description']['ro-ro'] = "Descriere";
+$text['label-phone_description']['ru-ru'] = "Описание";
+$text['label-phone_description']['sv-se'] = "Beskrivning";
+$text['label-phone_description']['uk-ua'] = "Опис";
+$text['label-phone_description']['zh-cn'] = "描述";
+$text['label-phone_description']['ja-jp'] = "説明";
+$text['label-phone_description']['ko-kr'] = "설명";
+
+$text['label-phone_call']['en-us'] = "Call";
+$text['label-phone_call']['en-gb'] = "Call";
+$text['label-phone_call']['ar-eg'] = "يتصل";
+$text['label-phone_call']['de-at'] = "Anrufen";
+$text['label-phone_call']['de-ch'] = "Anrufen";
+$text['label-phone_call']['de-de'] = "Anrufen";
+$text['label-phone_call']['el-gr'] = "Κλήση";
+$text['label-phone_call']['es-cl'] = "Llamar";
+$text['label-phone_call']['es-mx'] = "Llamar";
+$text['label-phone_call']['fr-ca'] = "Appel";
+$text['label-phone_call']['fr-fr'] = "Appel";
+$text['label-phone_call']['he-il'] = "שִׂיחָה";
+$text['label-phone_call']['it-it'] = "Chiamata";
+$text['label-phone_call']['ka-ge'] = "ზარი";
+$text['label-phone_call']['nl-nl'] = "Gesprek";
+$text['label-phone_call']['pl-pl'] = "Rozmowa";
+$text['label-phone_call']['pt-br'] = "Chamada";
+$text['label-phone_call']['pt-pt'] = "Chamada";
+$text['label-phone_call']['ro-ro'] = "Apel";
+$text['label-phone_call']['ru-ru'] = "Вызов";
+$text['label-phone_call']['sv-se'] = "Samtal";
+$text['label-phone_call']['uk-ua'] = "Дзвонити";
+$text['label-phone_call']['zh-cn'] = "称呼";
+$text['label-phone_call']['ja-jp'] = "電話";
+$text['label-phone_call']['ko-kr'] = "부르다";
+
+$text['label-order']['en-us'] = "Order";
+$text['label-order']['en-gb'] = "Order";
+$text['label-order']['ar-eg'] = "طلب";
+$text['label-order']['de-at'] = "Reihenfolge";
+$text['label-order']['de-ch'] = "Reihenfolge";
+$text['label-order']['de-de'] = "Reihenfolge";
+$text['label-order']['el-gr'] = "Παραγγελία";
+$text['label-order']['es-cl'] = "Orden";
+$text['label-order']['es-mx'] = "Orden";
+$text['label-order']['fr-ca'] = "Ordre";
+$text['label-order']['fr-fr'] = "Ordre";
+$text['label-order']['he-il'] = "סדר";
+$text['label-order']['it-it'] = "Ordine";
+$text['label-order']['ka-ge'] = "მიმდევრობა";
+$text['label-order']['nl-nl'] = "Volgorde";
+$text['label-order']['pl-pl'] = "Kolejność";
+$text['label-order']['pt-br'] = "Ordenação";
+$text['label-order']['pt-pt'] = "Ordem";
+$text['label-order']['ro-ro'] = "Ordin";
+$text['label-order']['ru-ru'] = "Приоритет";
+$text['label-order']['sv-se'] = "Ordning";
+$text['label-order']['uk-ua'] = "Порядок";
+$text['label-order']['zh-cn'] = "命令";
+$text['label-order']['ja-jp'] = "注文";
+$text['label-order']['ko-kr'] = "주문하다";
+
+$text['label-note_user']['en-us'] = "User";
+$text['label-note_user']['en-gb'] = "User";
+$text['label-note_user']['ar-eg'] = "مستخدم";
+$text['label-note_user']['de-at'] = "Benutzer";
+$text['label-note_user']['de-ch'] = "Benutzer";
+$text['label-note_user']['de-de'] = "Benutzer";
+$text['label-note_user']['el-gr'] = "Χρήστης";
+$text['label-note_user']['es-cl'] = "Usuario";
+$text['label-note_user']['es-mx'] = "Usuario";
+$text['label-note_user']['fr-ca'] = "Utilisateur";
+$text['label-note_user']['fr-fr'] = "Utilisateur";
+$text['label-note_user']['he-il'] = "משתמש";
+$text['label-note_user']['it-it'] = "Utente";
+$text['label-note_user']['ka-ge'] = "მომხმარებელი";
+$text['label-note_user']['nl-nl'] = "Gebruiker";
+$text['label-note_user']['pl-pl'] = "Użytkownik";
+$text['label-note_user']['pt-br'] = "Usuário";
+$text['label-note_user']['pt-pt'] = "Usuário";
+$text['label-note_user']['ro-ro'] = "Utilizator";
+$text['label-note_user']['ru-ru'] = "Пользователь";
+$text['label-note_user']['sv-se'] = "Användare";
+$text['label-note_user']['uk-ua'] = "Користувач";
+$text['label-note_user']['zh-cn'] = "用户";
+$text['label-note_user']['ja-jp'] = "ユーザー";
+$text['label-note_user']['ko-kr'] = "사용자";
+
+$text['label-note_content']['en-us'] = "Content";
+$text['label-note_content']['en-gb'] = "Content";
+$text['label-note_content']['ar-eg'] = "محتوى";
+$text['label-note_content']['de-at'] = "Inhalt";
+$text['label-note_content']['de-ch'] = "Inhalt";
+$text['label-note_content']['de-de'] = "Inhalt";
+$text['label-note_content']['el-gr'] = "Περιεχόμενο";
+$text['label-note_content']['es-cl'] = "Contenido";
+$text['label-note_content']['es-mx'] = "Contenido";
+$text['label-note_content']['fr-ca'] = "Contenu";
+$text['label-note_content']['fr-fr'] = "Contenu";
+$text['label-note_content']['he-il'] = "תוֹכֶן";
+$text['label-note_content']['it-it'] = "Contenuto";
+$text['label-note_content']['ka-ge'] = "შემცველობა";
+$text['label-note_content']['nl-nl'] = "Inhoud";
+$text['label-note_content']['pl-pl'] = "Zawartość";
+$text['label-note_content']['pt-br'] = "Conteúdo";
+$text['label-note_content']['pt-pt'] = "Conteúdo";
+$text['label-note_content']['ro-ro'] = "Conţinut";
+$text['label-note_content']['ru-ru'] = "Содержание";
+$text['label-note_content']['sv-se'] = "Content";
+$text['label-note_content']['uk-ua'] = "Контент";
+$text['label-note_content']['zh-cn'] = "内容";
+$text['label-note_content']['ja-jp'] = "コンテンツ";
+$text['label-note_content']['ko-kr'] = "콘텐츠";
+
+$text['label-import_file_upload']['en-us'] = "File to Upload";
+$text['label-import_file_upload']['en-gb'] = "File to Upload";
+$text['label-import_file_upload']['ar-eg'] = "ملف للتحميل";
+$text['label-import_file_upload']['de-at'] = "Datei zum hochladen";
+$text['label-import_file_upload']['de-ch'] = "Datei zum hochladen";
+$text['label-import_file_upload']['de-de'] = "Datei zum hochladen";
+$text['label-import_file_upload']['el-gr'] = "Αρχείο για ανέβασμα";
+$text['label-import_file_upload']['es-cl'] = "Archivo a subir";
+$text['label-import_file_upload']['es-mx'] = "Archivo a subir";
+$text['label-import_file_upload']['fr-ca'] = "Fichier à télécharger";
+$text['label-import_file_upload']['fr-fr'] = "Fichier à télécharger";
+$text['label-import_file_upload']['he-il'] = "קובץ להעלאה";
+$text['label-import_file_upload']['it-it'] = "File da Caricare";
+$text['label-import_file_upload']['ka-ge'] = "ასატვირთი ფაილი";
+$text['label-import_file_upload']['nl-nl'] = "Bestand om op te sturen";
+$text['label-import_file_upload']['pl-pl'] = "Plik do wysłania";
+$text['label-import_file_upload']['pt-br'] = "Importar arquivo";
+$text['label-import_file_upload']['pt-pt'] = "Ficheiro para submeter";
+$text['label-import_file_upload']['ro-ro'] = "Fișier de încărcat";
+$text['label-import_file_upload']['ru-ru'] = "Файл для загрузки";
+$text['label-import_file_upload']['sv-se'] = "Fil att ladda upp";
+$text['label-import_file_upload']['uk-ua'] = "Файл для завантаження";
+$text['label-import_file_upload']['zh-cn'] = "要上传的文件";
+$text['label-import_file_upload']['ja-jp'] = "アップロードするファイル";
+$text['label-import_file_upload']['ko-kr'] = "업로드할 파일";
+
+$text['label-import_fields']['en-us'] = "Fields";
+$text['label-import_fields']['en-gb'] = "Fields";
+$text['label-import_fields']['ar-eg'] = "مجالات";
+$text['label-import_fields']['de-at'] = "Felder";
+$text['label-import_fields']['de-ch'] = "Felder";
+$text['label-import_fields']['de-de'] = "Felder";
+$text['label-import_fields']['el-gr'] = "Πεδία";
+$text['label-import_fields']['es-cl'] = "Campos";
+$text['label-import_fields']['es-mx'] = "Campos";
+$text['label-import_fields']['fr-ca'] = "Champs";
+$text['label-import_fields']['fr-fr'] = "Les Champs";
+$text['label-import_fields']['he-il'] = "שדות";
+$text['label-import_fields']['it-it'] = "Campi";
+$text['label-import_fields']['ka-ge'] = "ველები";
+$text['label-import_fields']['nl-nl'] = "Velden";
+$text['label-import_fields']['pl-pl'] = "Pola";
+$text['label-import_fields']['pt-br'] = "Campos";
+$text['label-import_fields']['pt-pt'] = "Campos";
+$text['label-import_fields']['ro-ro'] = "Câmpuri";
+$text['label-import_fields']['ru-ru'] = "Поля";
+$text['label-import_fields']['sv-se'] = "Fält";
+$text['label-import_fields']['uk-ua'] = "Поля";
+$text['label-import_fields']['zh-cn'] = "필드";
+$text['label-import_fields']['ja-jp'] = "田畑";
+$text['label-import_fields']['ko-kr'] = "字段";
+
+$text['label-import_enclosure']['en-us'] = "Enclosure";
+$text['label-import_enclosure']['en-gb'] = "Enclosure";
+$text['label-import_enclosure']['ar-eg'] = "نسيج";
+$text['label-import_enclosure']['de-at'] = "Abgrenzung";
+$text['label-import_enclosure']['de-ch'] = "Abgrenzung";
+$text['label-import_enclosure']['de-de'] = "Abgrenzung";
+$text['label-import_enclosure']['el-gr'] = "Ενσωμάτωση";
+$text['label-import_enclosure']['es-cl'] = "Cercado";
+$text['label-import_enclosure']['es-mx'] = "Cercado";
+$text['label-import_enclosure']['fr-ca'] = "Délimiteur de texte";
+$text['label-import_enclosure']['fr-fr'] = "Délimiteur de texte";
+$text['label-import_enclosure']['he-il'] = "קַרפִּיף";
+$text['label-import_enclosure']['it-it'] = "Allegato";
+$text['label-import_enclosure']['ka-ge'] = "ტექსტის გამყოფი";
+$text['label-import_enclosure']['nl-nl'] = "Omsluiting";
+$text['label-import_enclosure']['pl-pl'] = "Załącznik ";
+$text['label-import_enclosure']['pt-br'] = "Delimitador de textto";
+$text['label-import_enclosure']['pt-pt'] = "Delimitador de texto";
+$text['label-import_enclosure']['ro-ro'] = "Incinta";
+$text['label-import_enclosure']['ru-ru'] = "Разделитель текста";
+$text['label-import_enclosure']['sv-se'] = "Inkapsling";
+$text['label-import_enclosure']['uk-ua'] = "Закриття";
+$text['label-import_enclosure']['zh-cn'] = "外壳";
+$text['label-import_enclosure']['ja-jp'] = "囲い";
+$text['label-import_enclosure']['ko-kr'] = "울로 둘러싼 땅";
+
+$text['label-import_duplicates']['en-us'] = "Duplicates";
+$text['label-import_duplicates']['en-gb'] = "Duplicates";
+$text['label-import_duplicates']['ar-eg'] = "مكرر";
+$text['label-import_duplicates']['de-at'] = "Duplikate";
+$text['label-import_duplicates']['de-ch'] = "Duplikate";
+$text['label-import_duplicates']['de-de'] = "Duplikate";
+$text['label-import_duplicates']['el-gr'] = "Διπλοεγγραφές";
+$text['label-import_duplicates']['es-cl'] = "Duplicados";
+$text['label-import_duplicates']['es-mx'] = "Duplicados";
+$text['label-import_duplicates']['fr-ca'] = "Doublons";
+$text['label-import_duplicates']['fr-fr'] = "Doublons";
+$text['label-import_duplicates']['he-il'] = "כפילויות";
+$text['label-import_duplicates']['it-it'] = "Duplicati";
+$text['label-import_duplicates']['ka-ge'] = "დუბლიკატები";
+$text['label-import_duplicates']['nl-nl'] = "Duplicaten";
+$text['label-import_duplicates']['pl-pl'] = "Duplikaty";
+$text['label-import_duplicates']['pt-br'] = "Importação de arquivo duplicado";
+$text['label-import_duplicates']['pt-pt'] = "Duplicatas";
+$text['label-import_duplicates']['ro-ro'] = "Duplicate";
+$text['label-import_duplicates']['ru-ru'] = "Дубликаты";
+$text['label-import_duplicates']['sv-se'] = "Dubbletter";
+$text['label-import_duplicates']['uk-ua'] = "Дублі";
+$text['label-import_duplicates']['zh-cn'] = "重复";
+$text['label-import_duplicates']['ja-jp'] = "重複";
+$text['label-import_duplicates']['ko-kr'] = "중복";
+
+$text['label-import_data']['en-us'] = "Data";
+$text['label-import_data']['en-gb'] = "Data";
+$text['label-import_data']['ar-eg'] = "بيانات";
+$text['label-import_data']['de-at'] = "Daten";
+$text['label-import_data']['de-ch'] = "Daten";
+$text['label-import_data']['de-de'] = "Daten";
+$text['label-import_data']['el-gr'] = "Δεδομένα";
+$text['label-import_data']['es-cl'] = "Datos";
+$text['label-import_data']['es-mx'] = "Datos";
+$text['label-import_data']['fr-ca'] = "Donnée";
+$text['label-import_data']['fr-fr'] = "Donnée";
+$text['label-import_data']['he-il'] = "נתונים";
+$text['label-import_data']['it-it'] = "Dati";
+$text['label-import_data']['ka-ge'] = "მონაცემები";
+$text['label-import_data']['nl-nl'] = "Gegevens";
+$text['label-import_data']['pl-pl'] = "Dane";
+$text['label-import_data']['pt-br'] = "Dados";
+$text['label-import_data']['pt-pt'] = "Dados";
+$text['label-import_data']['ro-ro'] = "Date";
+$text['label-import_data']['ru-ru'] = "Данные";
+$text['label-import_data']['sv-se'] = "Data";
+$text['label-import_data']['uk-ua'] = "дані";
+$text['label-import_data']['zh-cn'] = "数据";
+$text['label-import_data']['ja-jp'] = "データ";
+$text['label-import_data']['ko-kr'] = "데이터";
+
+$text['label-import_delimiter']['en-us'] = "Delimiter";
+$text['label-import_delimiter']['en-gb'] = "Delimiter";
+$text['label-import_delimiter']['ar-eg'] = "محدد";
+$text['label-import_delimiter']['de-at'] = "Trennzeichen";
+$text['label-import_delimiter']['de-ch'] = "Trennzeichen";
+$text['label-import_delimiter']['de-de'] = "Trennzeichen";
+$text['label-import_delimiter']['el-gr'] = "Διαχωριστικό";
+$text['label-import_delimiter']['es-cl'] = "Delimitador";
+$text['label-import_delimiter']['es-mx'] = "Delimitador";
+$text['label-import_delimiter']['fr-ca'] = "Délimiteur de champs";
+$text['label-import_delimiter']['fr-fr'] = "Délimiteur de champs";
+$text['label-import_delimiter']['he-il'] = "תוחם";
+$text['label-import_delimiter']['it-it'] = "Delimitatore";
+$text['label-import_delimiter']['ka-ge'] = "გამყოფი";
+$text['label-import_delimiter']['nl-nl'] = "Scheidingsteken";
+$text['label-import_delimiter']['pl-pl'] = "Separator";
+$text['label-import_delimiter']['pt-br'] = "Delimitador de campos";
+$text['label-import_delimiter']['pt-pt'] = "Delimitador de campos";
+$text['label-import_delimiter']['ro-ro'] = "Delimitator";
+$text['label-import_delimiter']['ru-ru'] = "Разделитель";
+$text['label-import_delimiter']['sv-se'] = "Avgränsare";
+$text['label-import_delimiter']['uk-ua'] = "роздільник";
+$text['label-import_delimiter']['zh-cn'] = "定界符";
+$text['label-import_delimiter']['ja-jp'] = "デリミタ";
+$text['label-import_delimiter']['ko-kr'] = "구분자";
+
+$text['label-users']['en-us'] = "Users";
+$text['label-users']['en-gb'] = "Users";
+$text['label-users']['ar-eg'] = "المستخدمون";
+$text['label-users']['de-at'] = "Benutzer";
+$text['label-users']['de-ch'] = "Benutzer";
+$text['label-users']['de-de'] = "Benutzer";
+$text['label-users']['el-gr'] = "Χρήστες";
+$text['label-users']['es-cl'] = "Usuarios";
+$text['label-users']['es-mx'] = "Usuarios";
+$text['label-users']['fr-ca'] = "Utilisateurs";
+$text['label-users']['fr-fr'] = "Utilisateurs";
+$text['label-users']['he-il'] = "משתמשים";
+$text['label-users']['it-it'] = "Utenti";
+$text['label-users']['ka-ge'] = "მომხმარებლები";
+$text['label-users']['nl-nl'] = "Gebruikers";
+$text['label-users']['pl-pl'] = "Użytkownicy";
+$text['label-users']['pt-br'] = "Usuários";
+$text['label-users']['pt-pt'] = "Utilizadores";
+$text['label-users']['ro-ro'] = "Utilizatori";
+$text['label-users']['ru-ru'] = "Пользователь";
+$text['label-users']['sv-se'] = "Användare";
+$text['label-users']['uk-ua'] = "Користувачі";
+$text['label-users']['zh-cn'] = "用户";
+$text['label-users']['ja-jp'] = "ユーザー";
+$text['label-users']['ko-kr'] = "사용자";
+
+$text['label-groups']['en-us'] = "Groups";
+$text['label-groups']['en-gb'] = "Groups";
+$text['label-groups']['ar-eg'] = "مجموعات";
+$text['label-groups']['de-at'] = "Gruppen";
+$text['label-groups']['de-ch'] = "Gruppen";
+$text['label-groups']['de-de'] = "Gruppen";
+$text['label-groups']['el-gr'] = "Ομάδες";
+$text['label-groups']['es-cl'] = "Grupos";
+$text['label-groups']['es-mx'] = "Grupos";
+$text['label-groups']['fr-ca'] = "Groupes";
+$text['label-groups']['fr-fr'] = "Groupes";
+$text['label-groups']['he-il'] = "קבוצות";
+$text['label-groups']['it-it'] = "Gruppi";
+$text['label-groups']['ka-ge'] = "ჯგუფები";
+$text['label-groups']['nl-nl'] = "Groepen";
+$text['label-groups']['pl-pl'] = "Grupy";
+$text['label-groups']['pt-br'] = "Grupos";
+$text['label-groups']['pt-pt'] = "Grupos";
+$text['label-groups']['ro-ro'] = "Grupuri";
+$text['label-groups']['ru-ru'] = "Группы";
+$text['label-groups']['sv-se'] = "Grupper";
+$text['label-groups']['uk-ua'] = "Групи";
+$text['label-groups']['zh-cn'] = "团体";
+$text['label-groups']['ja-jp'] = "グループ";
+$text['label-groups']['ko-kr'] = "여러 떼";
+
+$text['label-group']['en-us'] = "Group";
+$text['label-group']['en-gb'] = "Group";
+$text['label-group']['ar-eg'] = "مجموعة";
+$text['label-group']['de-at'] = "Gruppe";
+$text['label-group']['de-ch'] = "Gruppe";
+$text['label-group']['de-de'] = "Gruppe";
+$text['label-group']['el-gr'] = "Ομάδα";
+$text['label-group']['es-cl'] = "Grupo";
+$text['label-group']['es-mx'] = "Grupo";
+$text['label-group']['fr-ca'] = "Group";
+$text['label-group']['fr-fr'] = "Group";
+$text['label-group']['he-il'] = "קבוצה";
+$text['label-group']['it-it'] = "Gruppo";
+$text['label-group']['ka-ge'] = "ჯგუფი";
+$text['label-group']['nl-nl'] = "Groep";
+$text['label-group']['pl-pl'] = "Grupa";
+$text['label-group']['pt-br'] = "Grupo";
+$text['label-group']['pt-pt'] = "Grupo";
+$text['label-group']['ro-ro'] = "grup";
+$text['label-group']['ru-ru'] = "Группа";
+$text['label-group']['sv-se'] = "Grupp";
+$text['label-group']['uk-ua'] = "Група";
+$text['label-group']['zh-cn'] = "团体";
+$text['label-group']['ja-jp'] = "グループ";
+$text['label-group']['ko-kr'] = "그룹";
+
+$text['label-google_map']['en-us'] = "Open with Google Maps";
+$text['label-google_map']['en-gb'] = "Open with Google Maps";
+$text['label-google_map']['ar-eg'] = "افتح مع خرائط جوجل";
+$text['label-google_map']['de-at'] = "Mit Google Maps öffnen";
+$text['label-google_map']['de-ch'] = "Mit Google Maps öffnen";
+$text['label-google_map']['de-de'] = "Mit Google Maps öffnen";
+$text['label-google_map']['el-gr'] = "Άνοιγμα με Google Maps";
+$text['label-google_map']['es-cl'] = "Abrir con Google Maps";
+$text['label-google_map']['es-mx'] = "Abrir con Google Maps";
+$text['label-google_map']['fr-ca'] = "Ouvrir avec Google Maps";
+$text['label-google_map']['fr-fr'] = "Ouvrir avec Google Maps";
+$text['label-google_map']['he-il'] = "פתח עם גוגל מפות";
+$text['label-google_map']['it-it'] = "Apri con Google Maps";
+$text['label-google_map']['ka-ge'] = "Google Maps-ში გახსნა";
+$text['label-google_map']['nl-nl'] = "Openen met Google kaarten";
+$text['label-google_map']['pl-pl'] = "Otwórz w Google Maps";
+$text['label-google_map']['pt-br'] = "Abrir com Google Maps";
+$text['label-google_map']['pt-pt'] = "Abrir com o Google Maps";
+$text['label-google_map']['ro-ro'] = "Deschideți cu Google Maps";
+$text['label-google_map']['ru-ru'] = "Открыть в Google Maps";
+$text['label-google_map']['sv-se'] = "Öppna med Google Maps";
+$text['label-google_map']['uk-ua'] = "Відкрити на картах Google";
+$text['label-google_map']['zh-cn'] = "用谷歌地图打开";
+$text['label-google_map']['ja-jp'] = "Google マップで開く";
+$text['label-google_map']['ko-kr'] = "Google 지도로 열기";
+
+$text['label-fax']['en-us'] = "Fax";
+$text['label-fax']['en-gb'] = "Fax";
+$text['label-fax']['ar-eg'] = "فاكس";
+$text['label-fax']['de-at'] = "Fax";
+$text['label-fax']['de-ch'] = "Fax";
+$text['label-fax']['de-de'] = "Fax";
+$text['label-fax']['el-gr'] = "Τηλεομοιότυπο";
+$text['label-fax']['es-cl'] = "Facsímil";
+$text['label-fax']['es-mx'] = "Facsímil";
+$text['label-fax']['fr-ca'] = "Télécopie";
+$text['label-fax']['fr-fr'] = "Télécopie";
+$text['label-fax']['he-il'] = "פקס";
+$text['label-fax']['it-it'] = "Fax";
+$text['label-fax']['ka-ge'] = "ფაქსი";
+$text['label-fax']['nl-nl'] = "Fax";
+$text['label-fax']['pl-pl'] = "Faks";
+$text['label-fax']['pt-br'] = "FAX";
+$text['label-fax']['pt-pt'] = "Fax";
+$text['label-fax']['ro-ro'] = "Fax";
+$text['label-fax']['ru-ru'] = "Факс";
+$text['label-fax']['sv-se'] = "Fax";
+$text['label-fax']['uk-ua'] = "Факс";
+$text['label-fax']['zh-cn'] = "传真";
+$text['label-fax']['ja-jp'] = "ファックス";
+$text['label-fax']['ko-kr'] = "팩스";
+
+$text['label-false']['en-us'] = "False";
+$text['label-false']['en-gb'] = "False";
+$text['label-false']['ar-eg'] = "خطأ شنيع";
+$text['label-false']['de-at'] = "Aus";
+$text['label-false']['de-ch'] = "Aus";
+$text['label-false']['de-de'] = "Aus";
+$text['label-false']['el-gr'] = "Όχι";
+$text['label-false']['es-cl'] = "Falso";
+$text['label-false']['es-mx'] = "Falso";
+$text['label-false']['fr-ca'] = "Faux";
+$text['label-false']['fr-fr'] = "Non";
+$text['label-false']['he-il'] = "לא חוקי";
+$text['label-false']['it-it'] = "Falso";
+$text['label-false']['ka-ge'] = "ცრუ";
+$text['label-false']['nl-nl'] = "Nee";
+$text['label-false']['pl-pl'] = "Nie";
+$text['label-false']['pt-br'] = "Não";
+$text['label-false']['pt-pt'] = "Não";
+$text['label-false']['ro-ro'] = "Fals";
+$text['label-false']['ru-ru'] = "Нет";
+$text['label-false']['sv-se'] = "Falsk";
+$text['label-false']['uk-ua'] = "Ні";
+$text['label-false']['zh-cn'] = "错误的";
+$text['label-false']['ja-jp'] = "間違い";
+$text['label-false']['ko-kr'] = "거짓";
+
+$text['label-extension']['en-us'] = "Extension";
+$text['label-extension']['en-gb'] = "Extension";
+$text['label-extension']['ar-eg'] = "امتداد";
+$text['label-extension']['de-at'] = "Durchwahl";
+$text['label-extension']['de-ch'] = "Durchwahl";
+$text['label-extension']['de-de'] = "Durchwahl";
+$text['label-extension']['el-gr'] = "Εσωτερικό";
+$text['label-extension']['es-cl'] = "Extensión";
+$text['label-extension']['es-mx'] = "Extensión";
+$text['label-extension']['fr-ca'] = "Extension";
+$text['label-extension']['fr-fr'] = "Extension";
+$text['label-extension']['he-il'] = "שלוחה";
+$text['label-extension']['it-it'] = "Interno";
+$text['label-extension']['ka-ge'] = "გაფართოება";
+$text['label-extension']['nl-nl'] = "Toestel";
+$text['label-extension']['pl-pl'] = "Numer wewnętrzny";
+$text['label-extension']['pt-br'] = "Ramal";
+$text['label-extension']['pt-pt'] = "Extensão";
+$text['label-extension']['ro-ro'] = "Extensie";
+$text['label-extension']['ru-ru'] = "Внутренний Номер";
+$text['label-extension']['sv-se'] = "Anknytning";
+$text['label-extension']['uk-ua'] = "Розширення";
+$text['label-extension']['zh-cn'] = "扩大";
+$text['label-extension']['ja-jp'] = "拡大";
+$text['label-extension']['ko-kr'] = "확대";
+
+$text['label-enabled']['en-us'] = "Enabled";
+$text['label-enabled']['en-gb'] = "Enabled";
+$text['label-enabled']['ar-eg'] = "ممكن";
+$text['label-enabled']['de-at'] = "An";
+$text['label-enabled']['de-ch'] = "An";
+$text['label-enabled']['de-de'] = "An";
+$text['label-enabled']['el-gr'] = "Ενεργό";
+$text['label-enabled']['es-cl'] = "Activado";
+$text['label-enabled']['es-mx'] = "Activado";
+$text['label-enabled']['fr-ca'] = "Activé";
+$text['label-enabled']['fr-fr'] = "Actif";
+$text['label-enabled']['he-il'] = "מופעל";
+$text['label-enabled']['it-it'] = "Abilitato";
+$text['label-enabled']['ka-ge'] = "ჩართულია";
+$text['label-enabled']['nl-nl'] = "Aan";
+$text['label-enabled']['pl-pl'] = "Włączony";
+$text['label-enabled']['pt-br'] = "Habilitado";
+$text['label-enabled']['pt-pt'] = "Habilitada";
+$text['label-enabled']['ro-ro'] = "Activat";
+$text['label-enabled']['ru-ru'] = "Включено";
+$text['label-enabled']['sv-se'] = "Aktiverad";
+$text['label-enabled']['uk-ua'] = "Включено";
+$text['label-enabled']['zh-cn'] = "启用";
+$text['label-enabled']['ja-jp'] = "有効";
+$text['label-enabled']['ko-kr'] = "사용";
+
+$text['label-emails']['en-us'] = "Emails";
+$text['label-emails']['en-gb'] = "Emails";
+$text['label-emails']['ar-eg'] = "رسائل البريد الإلكتروني";
+$text['label-emails']['de-at'] = "Emails";
+$text['label-emails']['de-ch'] = "Emails";
+$text['label-emails']['de-de'] = "Emails";
+$text['label-emails']['el-gr'] = "E-mails";
+$text['label-emails']['es-cl'] = "Extensións";
+$text['label-emails']['es-mx'] = "Extensións";
+$text['label-emails']['fr-ca'] = "Courriels";
+$text['label-emails']['fr-fr'] = "Courriels";
+$text['label-emails']['he-il'] = "אימיילים";
+$text['label-emails']['it-it'] = "Emails";
+$text['label-emails']['ka-ge'] = "ელფოსტები";
+$text['label-emails']['nl-nl'] = "E-mails";
+$text['label-emails']['pl-pl'] = "Emaile";
+$text['label-emails']['pt-br'] = "Extensões";
+$text['label-emails']['pt-pt'] = "Extensões";
+$text['label-emails']['ro-ro'] = "E-mailuri";
+$text['label-emails']['ru-ru'] = "Адреса электронной почты";
+$text['label-emails']['sv-se'] = "E-postmeddelanden";
+$text['label-emails']['uk-ua'] = "Адреси електронної пошти";
+$text['label-emails']['zh-cn'] = "电子邮件";
+$text['label-emails']['ja-jp'] = "メール";
+$text['label-emails']['ko-kr'] = "이메일";
+
+$text['label-email_label']['en-us'] = "Label";
+$text['label-email_label']['en-gb'] = "Label";
+$text['label-email_label']['ar-eg'] = "ملصق";
+$text['label-email_label']['de-at'] = "Kennzeichnung";
+$text['label-email_label']['de-ch'] = "Kennzeichnung";
+$text['label-email_label']['de-de'] = "Kennzeichnung";
+$text['label-email_label']['el-gr'] = "Ετικέτα";
+$text['label-email_label']['es-cl'] = "Etiqueta";
+$text['label-email_label']['es-mx'] = "Etiqueta";
+$text['label-email_label']['fr-ca'] = "Étiquette";
+$text['label-email_label']['fr-fr'] = "Étiquette";
+$text['label-email_label']['he-il'] = "תווית";
+$text['label-email_label']['it-it'] = "Etichetta";
+$text['label-email_label']['ka-ge'] = "ჭდე";
+$text['label-email_label']['nl-nl'] = "Etiket";
+$text['label-email_label']['pl-pl'] = "Etykieta";
+$text['label-email_label']['pt-br'] = "Identificador";
+$text['label-email_label']['pt-pt'] = "Etiqueta";
+$text['label-email_label']['ro-ro'] = "Eticheta";
+$text['label-email_label']['ru-ru'] = "Метка";
+$text['label-email_label']['sv-se'] = "Etikett";
+$text['label-email_label']['uk-ua'] = "Назва";
+$text['label-email_label']['zh-cn'] = "标签";
+$text['label-email_label']['ja-jp'] = "ラベル";
+$text['label-email_label']['ko-kr'] = "상표";
+
+$text['label-email_description']['en-us'] = "Description";
+$text['label-email_description']['en-gb'] = "Description";
+$text['label-email_description']['ar-eg'] = "وصف";
+$text['label-email_description']['de-at'] = "Beschreibung";
+$text['label-email_description']['de-ch'] = "Beschreibung";
+$text['label-email_description']['de-de'] = "Beschreibung";
+$text['label-email_description']['el-gr'] = "Περιγραφή";
+$text['label-email_description']['es-cl'] = "Descripción";
+$text['label-email_description']['es-mx'] = "Descripción";
+$text['label-email_description']['fr-ca'] = "Description";
+$text['label-email_description']['fr-fr'] = "Description";
+$text['label-email_description']['he-il'] = "תאור";
+$text['label-email_description']['it-it'] = "Descrizione";
+$text['label-email_description']['ka-ge'] = "აღწერა";
+$text['label-email_description']['nl-nl'] = "Omschrijving";
+$text['label-email_description']['pl-pl'] = "Opis";
+$text['label-email_description']['pt-br'] = "Descrição";
+$text['label-email_description']['pt-pt'] = "Descrição";
+$text['label-email_description']['ro-ro'] = "Descriere";
+$text['label-email_description']['ru-ru'] = "Описание";
+$text['label-email_description']['sv-se'] = "Beskrivning";
+$text['label-email_description']['uk-ua'] = "Опис";
+$text['label-email_description']['zh-cn'] = "描述";
+$text['label-email_description']['ja-jp'] = "説明";
+$text['label-email_description']['ko-kr'] = "설명";
+
+$text['label-email_address']['en-us'] = "Address";
+$text['label-email_address']['en-gb'] = "Address";
+$text['label-email_address']['ar-eg'] = "عنوان";
+$text['label-email_address']['de-at'] = "Email-Adresse";
+$text['label-email_address']['de-ch'] = "Email-Adresse";
+$text['label-email_address']['de-de'] = "Email-Adresse";
+$text['label-email_address']['el-gr'] = "Ηλεκτρονική διεύθυνση";
+$text['label-email_address']['es-cl'] = "Calle";
+$text['label-email_address']['es-mx'] = "Calle";
+$text['label-email_address']['fr-ca'] = "Courriel";
+$text['label-email_address']['fr-fr'] = "Courriel";
+$text['label-email_address']['he-il'] = "כתובת מייל";
+$text['label-email_address']['it-it'] = "Indirizzo";
+$text['label-email_address']['ka-ge'] = "მისამართი";
+$text['label-email_address']['nl-nl'] = "E-mail Adres";
+$text['label-email_address']['pl-pl'] = "Adres email";
+$text['label-email_address']['pt-br'] = "Endereço de E-mail";
+$text['label-email_address']['pt-pt'] = "Rua";
+$text['label-email_address']['ro-ro'] = "Abordare";
+$text['label-email_address']['ru-ru'] = "Адреса Электронной Почты";
+$text['label-email_address']['sv-se'] = "Adress";
+$text['label-email_address']['uk-ua'] = "Адреси E-Mail";
+$text['label-email_address']['zh-cn'] = "地址";
+$text['label-email_address']['ja-jp'] = "住所";
+$text['label-email_address']['ko-kr'] = "주소";
+
+$text['label-description']['en-us'] = "Description";
+$text['label-description']['en-gb'] = "Description";
+$text['label-description']['ar-eg'] = "وصف";
+$text['label-description']['de-at'] = "Beschreibung";
+$text['label-description']['de-ch'] = "Beschreibung";
+$text['label-description']['de-de'] = "Beschreibung";
+$text['label-description']['el-gr'] = "Περιγραφή";
+$text['label-description']['es-cl'] = "Descripción";
+$text['label-description']['es-mx'] = "Descripción";
+$text['label-description']['fr-ca'] = "Description";
+$text['label-description']['fr-fr'] = "Description";
+$text['label-description']['he-il'] = "תיאור";
+$text['label-description']['it-it'] = "Descrizione";
+$text['label-description']['ka-ge'] = "აღწერა";
+$text['label-description']['nl-nl'] = "Omschrijving";
+$text['label-description']['pl-pl'] = "Opis";
+$text['label-description']['pt-br'] = "Descrição";
+$text['label-description']['pt-pt'] = "Descrição";
+$text['label-description']['ro-ro'] = "Descriere";
+$text['label-description']['ru-ru'] = "Описание";
+$text['label-description']['sv-se'] = "Beskrivning";
+$text['label-description']['uk-ua'] = "Опис";
+$text['label-description']['zh-cn'] = "描述";
+$text['label-description']['ja-jp'] = "説明";
+$text['label-description']['ko-kr'] = "설명";
+
+$text['label-contacts_import_google_account']['en-us'] = "Account";
+$text['label-contacts_import_google_account']['en-gb'] = "Account";
+$text['label-contacts_import_google_account']['ar-eg'] = "حساب";
+$text['label-contacts_import_google_account']['de-at'] = "Konto";
+$text['label-contacts_import_google_account']['de-ch'] = "Konto";
+$text['label-contacts_import_google_account']['de-de'] = "Konto";
+$text['label-contacts_import_google_account']['el-gr'] = "Λογαριασμός";
+$text['label-contacts_import_google_account']['es-cl'] = "Cuenta";
+$text['label-contacts_import_google_account']['es-mx'] = "Cuenta";
+$text['label-contacts_import_google_account']['fr-ca'] = "Compte";
+$text['label-contacts_import_google_account']['fr-fr'] = "Compte";
+$text['label-contacts_import_google_account']['he-il'] = "חשבון";
+$text['label-contacts_import_google_account']['it-it'] = "Account";
+$text['label-contacts_import_google_account']['ka-ge'] = "ანგარიში";
+$text['label-contacts_import_google_account']['nl-nl'] = "Account";
+$text['label-contacts_import_google_account']['pl-pl'] = "Konto";
+$text['label-contacts_import_google_account']['pt-br'] = "Conta";
+$text['label-contacts_import_google_account']['pt-pt'] = "Conta";
+$text['label-contacts_import_google_account']['ro-ro'] = "Cont";
+$text['label-contacts_import_google_account']['ru-ru'] = "Учетная Запись";
+$text['label-contacts_import_google_account']['sv-se'] = "Konto";
+$text['label-contacts_import_google_account']['uk-ua'] = "Обліковий запис";
+$text['label-contacts_import_google_account']['zh-cn'] = "帐户";
+$text['label-contacts_import_google_account']['ja-jp'] = "アカウント";
+$text['label-contacts_import_google_account']['ko-kr'] = "계정";
+
+$text['label-contact_url']['en-us'] = "URL";
+$text['label-contact_url']['en-gb'] = "URL";
+$text['label-contact_url']['ar-eg'] = "URL";
+$text['label-contact_url']['de-at'] = "URL";
+$text['label-contact_url']['de-ch'] = "URL";
+$text['label-contact_url']['de-de'] = "URL";
+$text['label-contact_url']['el-gr'] = "URL";
+$text['label-contact_url']['es-cl'] = "URL";
+$text['label-contact_url']['es-mx'] = "URL";
+$text['label-contact_url']['fr-ca'] = "URL";
+$text['label-contact_url']['fr-fr'] = "URL";
+$text['label-contact_url']['he-il'] = "כתובת אתר";
+$text['label-contact_url']['it-it'] = "URL";
+$text['label-contact_url']['ka-ge'] = "URL";
+$text['label-contact_url']['nl-nl'] = "URL";
+$text['label-contact_url']['pl-pl'] = "URL";
+$text['label-contact_url']['pt-br'] = "URL";
+$text['label-contact_url']['pt-pt'] = "URL";
+$text['label-contact_url']['ro-ro'] = "URL";
+$text['label-contact_url']['ru-ru'] = "URL-адрес";
+$text['label-contact_url']['sv-se'] = "URL";
+$text['label-contact_url']['uk-ua'] = "URL";
+$text['label-contact_url']['zh-cn'] = "URL";
+$text['label-contact_url']['ja-jp'] = "URL";
+$text['label-contact_url']['ko-kr'] = "URL";
+
+$text['label-contact_type']['en-us'] = "Type";
+$text['label-contact_type']['en-gb'] = "Type";
+$text['label-contact_type']['ar-eg'] = "يكتب";
+$text['label-contact_type']['de-at'] = "Art";
+$text['label-contact_type']['de-ch'] = "Art";
+$text['label-contact_type']['de-de'] = "Art";
+$text['label-contact_type']['el-gr'] = "Τύπος";
+$text['label-contact_type']['es-cl'] = "Tipo";
+$text['label-contact_type']['es-mx'] = "Tipo";
+$text['label-contact_type']['fr-ca'] = "Type";
+$text['label-contact_type']['fr-fr'] = "Type";
+$text['label-contact_type']['he-il'] = "סוג";
+$text['label-contact_type']['it-it'] = "Tipo";
+$text['label-contact_type']['ka-ge'] = "ტიპი";
+$text['label-contact_type']['nl-nl'] = "Typp";
+$text['label-contact_type']['pl-pl'] = "Type";
+$text['label-contact_type']['pt-br'] = "Tipo";
+$text['label-contact_type']['pt-pt'] = "Tipo";
+$text['label-contact_type']['ro-ro'] = "Tip";
+$text['label-contact_type']['ru-ru'] = "Тип";
+$text['label-contact_type']['sv-se'] = "Typ";
+$text['label-contact_type']['uk-ua'] = "Тип";
+$text['label-contact_type']['zh-cn'] = "类型";
+$text['label-contact_type']['ja-jp'] = "タイプ";
+$text['label-contact_type']['ko-kr'] = "유형";
+
+$text['label-contact_title']['en-us'] = "Title";
+$text['label-contact_title']['en-gb'] = "Title";
+$text['label-contact_title']['ar-eg'] = "عنوان";
+$text['label-contact_title']['de-at'] = "Titel";
+$text['label-contact_title']['de-ch'] = "Titel";
+$text['label-contact_title']['de-de'] = "Titel";
+$text['label-contact_title']['el-gr'] = "Τίτλος";
+$text['label-contact_title']['es-cl'] = "Título";
+$text['label-contact_title']['es-mx'] = "Título";
+$text['label-contact_title']['fr-ca'] = "Titre";
+$text['label-contact_title']['fr-fr'] = "Titre";
+$text['label-contact_title']['he-il'] = "כותרת";
+$text['label-contact_title']['it-it'] = "Titolo";
+$text['label-contact_title']['ka-ge'] = "სათაური";
+$text['label-contact_title']['nl-nl'] = "Titel";
+$text['label-contact_title']['pl-pl'] = "Tytuł";
+$text['label-contact_title']['pt-br'] = "Titulo";
+$text['label-contact_title']['pt-pt'] = "Título";
+$text['label-contact_title']['ro-ro'] = "Titlu";
+$text['label-contact_title']['ru-ru'] = "Заголовок";
+$text['label-contact_title']['sv-se'] = "Titel";
+$text['label-contact_title']['uk-ua'] = "Заголовок";
+$text['label-contact_title']['zh-cn'] = "标题";
+$text['label-contact_title']['ja-jp'] = "タイトル";
+$text['label-contact_title']['ko-kr'] = "제목";
+
+$text['label-contact_time_zone']['en-us'] = "Time Zone";
+$text['label-contact_time_zone']['en-gb'] = "Time Zone";
+$text['label-contact_time_zone']['ar-eg'] = "وحدة زمنية";
+$text['label-contact_time_zone']['de-at'] = "Zeitzone";
+$text['label-contact_time_zone']['de-ch'] = "Zeitzone";
+$text['label-contact_time_zone']['de-de'] = "Zeitzone";
+$text['label-contact_time_zone']['el-gr'] = "Ζώνη ώρας";
+$text['label-contact_time_zone']['es-cl'] = "Zona Horaria";
+$text['label-contact_time_zone']['es-mx'] = "Zona Horaria";
+$text['label-contact_time_zone']['fr-ca'] = "Fuseau Horaire";
+$text['label-contact_time_zone']['fr-fr'] = "Fuseau Horaire";
+$text['label-contact_time_zone']['he-il'] = "אזור זמן";
+$text['label-contact_time_zone']['it-it'] = "Time Zone";
+$text['label-contact_time_zone']['ka-ge'] = "დროის სარტყელი";
+$text['label-contact_time_zone']['nl-nl'] = "Tijdzone";
+$text['label-contact_time_zone']['pl-pl'] = "Strefa czasowa";
+$text['label-contact_time_zone']['pt-br'] = "Fuso horário";
+$text['label-contact_time_zone']['pt-pt'] = "Time Zone";
+$text['label-contact_time_zone']['ro-ro'] = "Fus orar";
+$text['label-contact_time_zone']['ru-ru'] = "Часовой пояс";
+$text['label-contact_time_zone']['sv-se'] = "Tidszon";
+$text['label-contact_time_zone']['uk-ua'] = "Часовий пояс";
+$text['label-contact_time_zone']['zh-cn'] = "时区";
+$text['label-contact_time_zone']['ja-jp'] = "タイムゾーン";
+$text['label-contact_time_zone']['ko-kr'] = "시간대";
+
+$text['label-contact_settings']['en-us'] = "Settings";
+$text['label-contact_settings']['en-gb'] = "Settings";
+$text['label-contact_settings']['ar-eg'] = "إعدادات";
+$text['label-contact_settings']['de-at'] = "Einstellungen";
+$text['label-contact_settings']['de-ch'] = "Einstellungen";
+$text['label-contact_settings']['de-de'] = "Einstellungen";
+$text['label-contact_settings']['el-gr'] = "Ρυθμίσεις";
+$text['label-contact_settings']['es-cl'] = "Ajustes";
+$text['label-contact_settings']['es-mx'] = "Ajustes";
+$text['label-contact_settings']['fr-ca'] = "Paramètres";
+$text['label-contact_settings']['fr-fr'] = "Paramètres";
+$text['label-contact_settings']['he-il'] = "הגדרות";
+$text['label-contact_settings']['it-it'] = "Parametri";
+$text['label-contact_settings']['ka-ge'] = "მორგება";
+$text['label-contact_settings']['nl-nl'] = "Instellingen";
+$text['label-contact_settings']['pl-pl'] = "Ustawienia";
+$text['label-contact_settings']['pt-br'] = "Configurações";
+$text['label-contact_settings']['pt-pt'] = "Configurações";
+$text['label-contact_settings']['ro-ro'] = "Setări";
+$text['label-contact_settings']['ru-ru'] = "Настройки";
+$text['label-contact_settings']['sv-se'] = "Inställning";
+$text['label-contact_settings']['uk-ua'] = "Налаштування";
+$text['label-contact_settings']['zh-cn'] = "设置";
+$text['label-contact_settings']['ja-jp'] = "設定";
+$text['label-contact_settings']['ko-kr'] = "설정";
+
+$text['label-contact_setting_value']['en-us'] = "Value";
+$text['label-contact_setting_value']['en-gb'] = "Value";
+$text['label-contact_setting_value']['ar-eg'] = "قيمة";
+$text['label-contact_setting_value']['de-at'] = "Wert";
+$text['label-contact_setting_value']['de-ch'] = "Wert";
+$text['label-contact_setting_value']['de-de'] = "Wert";
+$text['label-contact_setting_value']['el-gr'] = "Τιμή";
+$text['label-contact_setting_value']['es-cl'] = "Valor";
+$text['label-contact_setting_value']['es-mx'] = "Valor";
+$text['label-contact_setting_value']['fr-ca'] = "Valeur";
+$text['label-contact_setting_value']['fr-fr'] = "Valeur";
+$text['label-contact_setting_value']['he-il'] = "ערך";
+$text['label-contact_setting_value']['it-it'] = "Valore";
+$text['label-contact_setting_value']['ka-ge'] = "მნიშვნელობა";
+$text['label-contact_setting_value']['nl-nl'] = "Waarde";
+$text['label-contact_setting_value']['pl-pl'] = "Wartość";
+$text['label-contact_setting_value']['pt-br'] = "Valor";
+$text['label-contact_setting_value']['pt-pt'] = "Valor";
+$text['label-contact_setting_value']['ro-ro'] = "Valoare";
+$text['label-contact_setting_value']['ru-ru'] = "Параметр";
+$text['label-contact_setting_value']['sv-se'] = "Värde";
+$text['label-contact_setting_value']['uk-ua'] = "Значення";
+$text['label-contact_setting_value']['zh-cn'] = "价值";
+$text['label-contact_setting_value']['ja-jp'] = "価値";
+$text['label-contact_setting_value']['ko-kr'] = "값";
+
+$text['label-contact_setting_type']['en-us'] = "Type";
+$text['label-contact_setting_type']['en-gb'] = "Type";
+$text['label-contact_setting_type']['ar-eg'] = "يكتب";
+$text['label-contact_setting_type']['de-at'] = "Art";
+$text['label-contact_setting_type']['de-ch'] = "Art";
+$text['label-contact_setting_type']['de-de'] = "Art";
+$text['label-contact_setting_type']['el-gr'] = "Τύπος";
+$text['label-contact_setting_type']['es-cl'] = "Tipo";
+$text['label-contact_setting_type']['es-mx'] = "Tipo";
+$text['label-contact_setting_type']['fr-ca'] = "Type";
+$text['label-contact_setting_type']['fr-fr'] = "Type";
+$text['label-contact_setting_type']['he-il'] = "סוּג";
+$text['label-contact_setting_type']['it-it'] = "Tipo";
+$text['label-contact_setting_type']['ka-ge'] = "ტიპი";
+$text['label-contact_setting_type']['nl-nl'] = "Type";
+$text['label-contact_setting_type']['pl-pl'] = "Typ";
+$text['label-contact_setting_type']['pt-br'] = "Tipo";
+$text['label-contact_setting_type']['pt-pt'] = "Tipo";
+$text['label-contact_setting_type']['ro-ro'] = "Tip";
+$text['label-contact_setting_type']['ru-ru'] = "Тип";
+$text['label-contact_setting_type']['sv-se'] = "Typ";
+$text['label-contact_setting_type']['uk-ua'] = "Тип";
+$text['label-contact_setting_type']['zh-cn'] = "类型";
+$text['label-contact_setting_type']['ja-jp'] = "タイプ";
+$text['label-contact_setting_type']['ko-kr'] = "유형";
+
+$text['label-contact_setting_subcategory']['en-us'] = "Subcategory";
+$text['label-contact_setting_subcategory']['en-gb'] = "Subcategory";
+$text['label-contact_setting_subcategory']['ar-eg'] = "تصنيف فرعي";
+$text['label-contact_setting_subcategory']['de-at'] = "Unterkategorie";
+$text['label-contact_setting_subcategory']['de-ch'] = "Unterkategorie";
+$text['label-contact_setting_subcategory']['de-de'] = "Unterkategorie";
+$text['label-contact_setting_subcategory']['el-gr'] = "Υποκατηγορία";
+$text['label-contact_setting_subcategory']['es-cl'] = "Subcategoría";
+$text['label-contact_setting_subcategory']['es-mx'] = "Subcategoría";
+$text['label-contact_setting_subcategory']['fr-ca'] = "Sous-Catégorie";
+$text['label-contact_setting_subcategory']['fr-fr'] = "Sous-Catégorie";
+$text['label-contact_setting_subcategory']['he-il'] = "קטגוריית משנה";
+$text['label-contact_setting_subcategory']['it-it'] = "Sottocategoria";
+$text['label-contact_setting_subcategory']['ka-ge'] = "ქვეკატეგორია";
+$text['label-contact_setting_subcategory']['nl-nl'] = "Subcategorie";
+$text['label-contact_setting_subcategory']['pl-pl'] = "Podkategoria";
+$text['label-contact_setting_subcategory']['pt-br'] = "Subcategoria";
+$text['label-contact_setting_subcategory']['pt-pt'] = "Subcategoria";
+$text['label-contact_setting_subcategory']['ro-ro'] = "Subcategorie";
+$text['label-contact_setting_subcategory']['ru-ru'] = "Подкатегория";
+$text['label-contact_setting_subcategory']['sv-se'] = "Underkategori";
+$text['label-contact_setting_subcategory']['uk-ua'] = "Підкатегорія";
+$text['label-contact_setting_subcategory']['zh-cn'] = "子类别";
+$text['label-contact_setting_subcategory']['ja-jp'] = "サブカテゴリ";
+$text['label-contact_setting_subcategory']['ko-kr'] = "하위 카테고리";
+
+$text['label-contact_setting_category']['en-us'] = "Category";
+$text['label-contact_setting_category']['en-gb'] = "Category";
+$text['label-contact_setting_category']['ar-eg'] = "فئة";
+$text['label-contact_setting_category']['de-at'] = "Kategorie";
+$text['label-contact_setting_category']['de-ch'] = "Kategorie";
+$text['label-contact_setting_category']['de-de'] = "Kategorie";
+$text['label-contact_setting_category']['el-gr'] = "Κατηγορία";
+$text['label-contact_setting_category']['es-cl'] = "Categoría";
+$text['label-contact_setting_category']['es-mx'] = "Categoría";
+$text['label-contact_setting_category']['fr-ca'] = "Catégorie";
+$text['label-contact_setting_category']['fr-fr'] = "Catégorie";
+$text['label-contact_setting_category']['he-il'] = "קטגוריה";
+$text['label-contact_setting_category']['it-it'] = "Categoria";
+$text['label-contact_setting_category']['ka-ge'] = "კატეგორია";
+$text['label-contact_setting_category']['nl-nl'] = "Categorie";
+$text['label-contact_setting_category']['pl-pl'] = "Kategoria";
+$text['label-contact_setting_category']['pt-br'] = "Categoria";
+$text['label-contact_setting_category']['pt-pt'] = "Categoria";
+$text['label-contact_setting_category']['ro-ro'] = "Categorie";
+$text['label-contact_setting_category']['ru-ru'] = "Категория";
+$text['label-contact_setting_category']['sv-se'] = "Kategori";
+$text['label-contact_setting_category']['uk-ua'] = "Категорія";
+$text['label-contact_setting_category']['zh-cn'] = "类别";
+$text['label-contact_setting_category']['ja-jp'] = "カテゴリー";
+$text['label-contact_setting_category']['ko-kr'] = "범주";
+
+$text['label-contact_role']['en-us'] = "Role";
+$text['label-contact_role']['en-gb'] = "Role";
+$text['label-contact_role']['ar-eg'] = "دور";
+$text['label-contact_role']['de-at'] = "Rolle";
+$text['label-contact_role']['de-ch'] = "Rolle";
+$text['label-contact_role']['de-de'] = "Rolle";
+$text['label-contact_role']['el-gr'] = "Ρόλος";
+$text['label-contact_role']['es-cl'] = "Rol";
+$text['label-contact_role']['es-mx'] = "Rol";
+$text['label-contact_role']['fr-ca'] = "Rôle";
+$text['label-contact_role']['fr-fr'] = "Rôle";
+$text['label-contact_role']['he-il'] = "תפקיד";
+$text['label-contact_role']['it-it'] = "Ruolo";
+$text['label-contact_role']['ka-ge'] = "როლი";
+$text['label-contact_role']['nl-nl'] = "Rol";
+$text['label-contact_role']['pl-pl'] = "Pozycja";
+$text['label-contact_role']['pt-br'] = "Papel";
+$text['label-contact_role']['pt-pt'] = "Papel";
+$text['label-contact_role']['ro-ro'] = "Rol";
+$text['label-contact_role']['ru-ru'] = "Роль";
+$text['label-contact_role']['sv-se'] = "Roll";
+$text['label-contact_role']['uk-ua'] = "Роль";
+$text['label-contact_role']['zh-cn'] = "角色";
+$text['label-contact_role']['ja-jp'] = "役割";
+$text['label-contact_role']['ko-kr'] = "역할";
+
+$text['label-contact_relation_reciprocal_label']['en-us'] = "Reciprocal Relation";
+$text['label-contact_relation_reciprocal_label']['en-gb'] = "Reciprocal Relation";
+$text['label-contact_relation_reciprocal_label']['ar-eg'] = "علاقة متبادلة";
+$text['label-contact_relation_reciprocal_label']['de-at'] = "Wechselseitige Beziehung";
+$text['label-contact_relation_reciprocal_label']['de-ch'] = "Wechselseitige Beziehung";
+$text['label-contact_relation_reciprocal_label']['de-de'] = "Wechselseitige Beziehung";
+$text['label-contact_relation_reciprocal_label']['el-gr'] = "Αμοιβαία σχέση";
+$text['label-contact_relation_reciprocal_label']['es-cl'] = "Relación Recíproca";
+$text['label-contact_relation_reciprocal_label']['es-mx'] = "Relación Recíproca";
+$text['label-contact_relation_reciprocal_label']['fr-ca'] = "Relation Réciproque";
+$text['label-contact_relation_reciprocal_label']['fr-fr'] = "Relation Réciproque";
+$text['label-contact_relation_reciprocal_label']['he-il'] = "יחסי גומלין";
+$text['label-contact_relation_reciprocal_label']['it-it'] = "Relazioni Reciproche";
+$text['label-contact_relation_reciprocal_label']['ka-ge'] = "ორმხრივი ურთიერთობა";
+$text['label-contact_relation_reciprocal_label']['nl-nl'] = "Omgekeerde relatie";
+$text['label-contact_relation_reciprocal_label']['pl-pl'] = "Relacja wzajemna";
+$text['label-contact_relation_reciprocal_label']['pt-br'] = "Relação Recíproca";
+$text['label-contact_relation_reciprocal_label']['pt-pt'] = "Relação Recíproca";
+$text['label-contact_relation_reciprocal_label']['ro-ro'] = "Relație reciprocă";
+$text['label-contact_relation_reciprocal_label']['ru-ru'] = "Взаимное отношение";
+$text['label-contact_relation_reciprocal_label']['sv-se'] = "Ömsesidig Relation";
+$text['label-contact_relation_reciprocal_label']['uk-ua'] = "Взаємне відношення";
+$text['label-contact_relation_reciprocal_label']['zh-cn'] = "互惠关系";
+$text['label-contact_relation_reciprocal_label']['ja-jp'] = "相互関係";
+$text['label-contact_relation_reciprocal_label']['ko-kr'] = "상호 관계";
+
+$text['label-contact_relation_reciprocal']['en-us'] = "Reciprocal";
+$text['label-contact_relation_reciprocal']['en-gb'] = "Reciprocal";
+$text['label-contact_relation_reciprocal']['ar-eg'] = "متبادل";
+$text['label-contact_relation_reciprocal']['de-at'] = "Wechselseitig";
+$text['label-contact_relation_reciprocal']['de-ch'] = "Wechselseitig";
+$text['label-contact_relation_reciprocal']['de-de'] = "Wechselseitig";
+$text['label-contact_relation_reciprocal']['el-gr'] = "Αμοιβαία";
+$text['label-contact_relation_reciprocal']['es-cl'] = "Recíproca";
+$text['label-contact_relation_reciprocal']['es-mx'] = "Recíproca";
+$text['label-contact_relation_reciprocal']['fr-ca'] = "Réciproque";
+$text['label-contact_relation_reciprocal']['fr-fr'] = "Réciproque";
+$text['label-contact_relation_reciprocal']['he-il'] = "הֲדָדִי";
+$text['label-contact_relation_reciprocal']['it-it'] = "Reciproco";
+$text['label-contact_relation_reciprocal']['ka-ge'] = "ორმხრივი";
+$text['label-contact_relation_reciprocal']['nl-nl'] = "Omgekeerd";
+$text['label-contact_relation_reciprocal']['pl-pl'] = "Odwrotność";
+$text['label-contact_relation_reciprocal']['pt-br'] = "Recíproco";
+$text['label-contact_relation_reciprocal']['pt-pt'] = "Recíproco";
+$text['label-contact_relation_reciprocal']['ro-ro'] = "Reciproc";
+$text['label-contact_relation_reciprocal']['ru-ru'] = "Взаимное";
+$text['label-contact_relation_reciprocal']['sv-se'] = "Ömsesidig";
+$text['label-contact_relation_reciprocal']['uk-ua'] = "Взаємний";
+$text['label-contact_relation_reciprocal']['zh-cn'] = "互惠的";
+$text['label-contact_relation_reciprocal']['ja-jp'] = "相互";
+$text['label-contact_relation_reciprocal']['ko-kr'] = "역수";
+
+$text['label-contact_relation_organization']['en-us'] = "Organization";
+$text['label-contact_relation_organization']['en-gb'] = "Organization";
+$text['label-contact_relation_organization']['ar-eg'] = "منظمة";
+$text['label-contact_relation_organization']['de-at'] = "Organisation";
+$text['label-contact_relation_organization']['de-ch'] = "Organisation";
+$text['label-contact_relation_organization']['de-de'] = "Organisation";
+$text['label-contact_relation_organization']['el-gr'] = "Οργανισμός";
+$text['label-contact_relation_organization']['es-cl'] = "Organización";
+$text['label-contact_relation_organization']['es-mx'] = "Organización";
+$text['label-contact_relation_organization']['fr-ca'] = "Organisation";
+$text['label-contact_relation_organization']['fr-fr'] = "Organisation";
+$text['label-contact_relation_organization']['he-il'] = "אִרגוּן";
+$text['label-contact_relation_organization']['it-it'] = "Organizzazione";
+$text['label-contact_relation_organization']['ka-ge'] = "ორგანიზაცია";
+$text['label-contact_relation_organization']['nl-nl'] = "Organisatie";
+$text['label-contact_relation_organization']['pl-pl'] = "Organizacja";
+$text['label-contact_relation_organization']['pt-br'] = "Organização";
+$text['label-contact_relation_organization']['pt-pt'] = "Organização";
+$text['label-contact_relation_organization']['ro-ro'] = "Organizare";
+$text['label-contact_relation_organization']['ru-ru'] = "Организация";
+$text['label-contact_relation_organization']['sv-se'] = "Organisation";
+$text['label-contact_relation_organization']['uk-ua'] = "організація";
+$text['label-contact_relation_organization']['zh-cn'] = "组织";
+$text['label-contact_relation_organization']['ja-jp'] = "組織";
+$text['label-contact_relation_organization']['ko-kr'] = "조직";
+
+$text['label-contact_relation_option_parent']['en-us'] = "Parent";
+$text['label-contact_relation_option_parent']['en-gb'] = "Parent";
+$text['label-contact_relation_option_parent']['ar-eg'] = "الأبوين";
+$text['label-contact_relation_option_parent']['de-at'] = "Eltern";
+$text['label-contact_relation_option_parent']['de-ch'] = "Eltern";
+$text['label-contact_relation_option_parent']['de-de'] = "Eltern";
+$text['label-contact_relation_option_parent']['el-gr'] = "Γονέας";
+$text['label-contact_relation_option_parent']['es-cl'] = "Padre";
+$text['label-contact_relation_option_parent']['es-mx'] = "Padre";
+$text['label-contact_relation_option_parent']['fr-ca'] = "Parent";
+$text['label-contact_relation_option_parent']['fr-fr'] = "Parent";
+$text['label-contact_relation_option_parent']['he-il'] = "הוֹרֶה";
+$text['label-contact_relation_option_parent']['it-it'] = "Padre";
+$text['label-contact_relation_option_parent']['ka-ge'] = "მშობელი";
+$text['label-contact_relation_option_parent']['nl-nl'] = "Ouder";
+$text['label-contact_relation_option_parent']['pl-pl'] = "Rodzic";
+$text['label-contact_relation_option_parent']['pt-br'] = "Parente";
+$text['label-contact_relation_option_parent']['pt-pt'] = "Parente";
+$text['label-contact_relation_option_parent']['ro-ro'] = "Mamă";
+$text['label-contact_relation_option_parent']['ru-ru'] = "Родитель";
+$text['label-contact_relation_option_parent']['sv-se'] = "Förälder";
+$text['label-contact_relation_option_parent']['uk-ua'] = "Батько";
+$text['label-contact_relation_option_parent']['zh-cn'] = "家长";
+$text['label-contact_relation_option_parent']['ja-jp'] = "親";
+$text['label-contact_relation_option_parent']['ko-kr'] = "부모의";
+
+$text['label-contact_relation_option_other']['en-us'] = "Other";
+$text['label-contact_relation_option_other']['en-gb'] = "Other";
+$text['label-contact_relation_option_other']['ar-eg'] = "آخر";
+$text['label-contact_relation_option_other']['de-at'] = "Andere";
+$text['label-contact_relation_option_other']['de-ch'] = "Andere";
+$text['label-contact_relation_option_other']['de-de'] = "Andere";
+$text['label-contact_relation_option_other']['el-gr'] = "Άλλο";
+$text['label-contact_relation_option_other']['es-cl'] = "Otro";
+$text['label-contact_relation_option_other']['es-mx'] = "Otro";
+$text['label-contact_relation_option_other']['fr-ca'] = "Autre";
+$text['label-contact_relation_option_other']['fr-fr'] = "Autre";
+$text['label-contact_relation_option_other']['he-il'] = "אַחֵר";
+$text['label-contact_relation_option_other']['it-it'] = "Altro";
+$text['label-contact_relation_option_other']['ka-ge'] = "სხვა";
+$text['label-contact_relation_option_other']['nl-nl'] = "Anderen";
+$text['label-contact_relation_option_other']['pl-pl'] = "Inny";
+$text['label-contact_relation_option_other']['pt-br'] = "Outro";
+$text['label-contact_relation_option_other']['pt-pt'] = "Outro";
+$text['label-contact_relation_option_other']['ro-ro'] = "Alte";
+$text['label-contact_relation_option_other']['ru-ru'] = "Другой";
+$text['label-contact_relation_option_other']['sv-se'] = "Annat";
+$text['label-contact_relation_option_other']['uk-ua'] = "Інше";
+$text['label-contact_relation_option_other']['zh-cn'] = "其他";
+$text['label-contact_relation_option_other']['ja-jp'] = "他の";
+$text['label-contact_relation_option_other']['ko-kr'] = "다른";
+
+$text['label-contact_relation_option_member']['en-us'] = "Member";
+$text['label-contact_relation_option_member']['en-gb'] = "Member";
+$text['label-contact_relation_option_member']['ar-eg'] = "عضو";
+$text['label-contact_relation_option_member']['de-at'] = "Mitglied";
+$text['label-contact_relation_option_member']['de-ch'] = "Mitglied";
+$text['label-contact_relation_option_member']['de-de'] = "Mitglied";
+$text['label-contact_relation_option_member']['el-gr'] = "Μέλος";
+$text['label-contact_relation_option_member']['es-cl'] = "Miembro";
+$text['label-contact_relation_option_member']['es-mx'] = "Miembro";
+$text['label-contact_relation_option_member']['fr-ca'] = "Membre";
+$text['label-contact_relation_option_member']['fr-fr'] = "Membre";
+$text['label-contact_relation_option_member']['he-il'] = "חבר";
+$text['label-contact_relation_option_member']['it-it'] = "Membro";
+$text['label-contact_relation_option_member']['ka-ge'] = "წევრი";
+$text['label-contact_relation_option_member']['nl-nl'] = "Lid";
+$text['label-contact_relation_option_member']['pl-pl'] = "Członek";
+$text['label-contact_relation_option_member']['pt-br'] = "Membro";
+$text['label-contact_relation_option_member']['pt-pt'] = "Membro";
+$text['label-contact_relation_option_member']['ro-ro'] = "Membru";
+$text['label-contact_relation_option_member']['ru-ru'] = "Участник";
+$text['label-contact_relation_option_member']['sv-se'] = "Medlem";
+$text['label-contact_relation_option_member']['uk-ua'] = "Учасник";
+$text['label-contact_relation_option_member']['zh-cn'] = "成员";
+$text['label-contact_relation_option_member']['ja-jp'] = "メンバー";
+$text['label-contact_relation_option_member']['ko-kr'] = "회원";
+
+$text['label-contact_relation_option_employee']['en-us'] = "Employee";
+$text['label-contact_relation_option_employee']['en-gb'] = "Employee";
+$text['label-contact_relation_option_employee']['ar-eg'] = "موظف";
+$text['label-contact_relation_option_employee']['de-at'] = "Mitarbeiter";
+$text['label-contact_relation_option_employee']['de-ch'] = "Mitarbeiter";
+$text['label-contact_relation_option_employee']['de-de'] = "Mitarbeiter";
+$text['label-contact_relation_option_employee']['el-gr'] = "Υπάλληλος";
+$text['label-contact_relation_option_employee']['es-cl'] = "Empleado";
+$text['label-contact_relation_option_employee']['es-mx'] = "Empleado";
+$text['label-contact_relation_option_employee']['fr-ca'] = "Employé";
+$text['label-contact_relation_option_employee']['fr-fr'] = "Employé";
+$text['label-contact_relation_option_employee']['he-il'] = "עובד";
+$text['label-contact_relation_option_employee']['it-it'] = "Dipendente";
+$text['label-contact_relation_option_employee']['ka-ge'] = "თანამშრომელი";
+$text['label-contact_relation_option_employee']['nl-nl'] = "Medewerker";
+$text['label-contact_relation_option_employee']['pl-pl'] = "Pracownik";
+$text['label-contact_relation_option_employee']['pt-br'] = "Empregado";
+$text['label-contact_relation_option_employee']['pt-pt'] = "Empregado";
+$text['label-contact_relation_option_employee']['ro-ro'] = "Angajat";
+$text['label-contact_relation_option_employee']['ru-ru'] = "Наемный рабочий";
+$text['label-contact_relation_option_employee']['sv-se'] = "Anställd";
+$text['label-contact_relation_option_employee']['uk-ua'] = "Співробітник";
+$text['label-contact_relation_option_employee']['zh-cn'] = "员工";
+$text['label-contact_relation_option_employee']['ja-jp'] = "職員";
+$text['label-contact_relation_option_employee']['ko-kr'] = "직원";
+
+$text['label-contact_relation_option_child']['en-us'] = "Child";
+$text['label-contact_relation_option_child']['en-gb'] = "Child";
+$text['label-contact_relation_option_child']['ar-eg'] = "طفل";
+$text['label-contact_relation_option_child']['de-at'] = "Kind";
+$text['label-contact_relation_option_child']['de-ch'] = "Kind";
+$text['label-contact_relation_option_child']['de-de'] = "Kind";
+$text['label-contact_relation_option_child']['el-gr'] = "Παιδί";
+$text['label-contact_relation_option_child']['es-cl'] = "Niño";
+$text['label-contact_relation_option_child']['es-mx'] = "Niño";
+$text['label-contact_relation_option_child']['fr-ca'] = "Enfant";
+$text['label-contact_relation_option_child']['fr-fr'] = "Enfant";
+$text['label-contact_relation_option_child']['he-il'] = "ילד";
+$text['label-contact_relation_option_child']['it-it'] = "Figlio";
+$text['label-contact_relation_option_child']['ka-ge'] = "ბავშვი";
+$text['label-contact_relation_option_child']['nl-nl'] = "Kind";
+$text['label-contact_relation_option_child']['pl-pl'] = "Dziecko";
+$text['label-contact_relation_option_child']['pt-br'] = "Criança";
+$text['label-contact_relation_option_child']['pt-pt'] = "Criança";
+$text['label-contact_relation_option_child']['ro-ro'] = "Copil";
+$text['label-contact_relation_option_child']['ru-ru'] = "Ребенок";
+$text['label-contact_relation_option_child']['sv-se'] = "Barn";
+$text['label-contact_relation_option_child']['uk-ua'] = "дитина";
+$text['label-contact_relation_option_child']['zh-cn'] = "孩子";
+$text['label-contact_relation_option_child']['ja-jp'] = "子供";
+$text['label-contact_relation_option_child']['ko-kr'] = "어린이";
+
+$text['label-contact_relation_option_associate']['en-us'] = "Associate";
+$text['label-contact_relation_option_associate']['en-gb'] = "Associate";
+$text['label-contact_relation_option_associate']['ar-eg'] = "شريك";
+$text['label-contact_relation_option_associate']['de-at'] = "Kollege";
+$text['label-contact_relation_option_associate']['de-ch'] = "Kollege";
+$text['label-contact_relation_option_associate']['de-de'] = "Kollege";
+$text['label-contact_relation_option_associate']['el-gr'] = "Συνεργάτης";
+$text['label-contact_relation_option_associate']['es-cl'] = "Asociado";
+$text['label-contact_relation_option_associate']['es-mx'] = "Asociado";
+$text['label-contact_relation_option_associate']['fr-ca'] = "Associé";
+$text['label-contact_relation_option_associate']['fr-fr'] = "Associé";
+$text['label-contact_relation_option_associate']['he-il'] = "שותף";
+$text['label-contact_relation_option_associate']['it-it'] = "Associato";
+$text['label-contact_relation_option_associate']['ka-ge'] = "კოლეგა";
+$text['label-contact_relation_option_associate']['nl-nl'] = "Collega";
+$text['label-contact_relation_option_associate']['pl-pl'] = "Współpracownik";
+$text['label-contact_relation_option_associate']['pt-br'] = "Associado";
+$text['label-contact_relation_option_associate']['pt-pt'] = "Associado";
+$text['label-contact_relation_option_associate']['ro-ro'] = "Asociat";
+$text['label-contact_relation_option_associate']['ru-ru'] = "Коллега";
+$text['label-contact_relation_option_associate']['sv-se'] = "Associate";
+$text['label-contact_relation_option_associate']['uk-ua'] = "асоційований";
+$text['label-contact_relation_option_associate']['zh-cn'] = "联系";
+$text['label-contact_relation_option_associate']['ja-jp'] = "仲間";
+$text['label-contact_relation_option_associate']['ko-kr'] = "연관짓다";
+
+$text['label-contact_relation_name']['en-us'] = "Name";
+$text['label-contact_relation_name']['en-gb'] = "Name";
+$text['label-contact_relation_name']['ar-eg'] = "اسم";
+$text['label-contact_relation_name']['de-at'] = "Name";
+$text['label-contact_relation_name']['de-ch'] = "Name";
+$text['label-contact_relation_name']['de-de'] = "Name";
+$text['label-contact_relation_name']['el-gr'] = "Όνομα";
+$text['label-contact_relation_name']['es-cl'] = "Nombre";
+$text['label-contact_relation_name']['es-mx'] = "Nombre";
+$text['label-contact_relation_name']['fr-ca'] = "Nom";
+$text['label-contact_relation_name']['fr-fr'] = "Nom";
+$text['label-contact_relation_name']['he-il'] = "שם";
+$text['label-contact_relation_name']['it-it'] = "Nome";
+$text['label-contact_relation_name']['ka-ge'] = "სახელი";
+$text['label-contact_relation_name']['nl-nl'] = "Naam";
+$text['label-contact_relation_name']['pl-pl'] = "Nazwa";
+$text['label-contact_relation_name']['pt-br'] = "Nom";
+$text['label-contact_relation_name']['pt-pt'] = "Nom";
+$text['label-contact_relation_name']['ro-ro'] = "Nume";
+$text['label-contact_relation_name']['ru-ru'] = "Имя";
+$text['label-contact_relation_name']['sv-se'] = "Namn";
+$text['label-contact_relation_name']['uk-ua'] = "Назва";
+$text['label-contact_relation_name']['zh-cn'] = "姓名";
+$text['label-contact_relation_name']['ja-jp'] = "名前";
+$text['label-contact_relation_name']['ko-kr'] = "이름";
+
+$text['label-contact_relation_label']['en-us'] = "Relation";
+$text['label-contact_relation_label']['en-gb'] = "Relation";
+$text['label-contact_relation_label']['ar-eg'] = "علاقة";
+$text['label-contact_relation_label']['de-at'] = "Beziehung";
+$text['label-contact_relation_label']['de-ch'] = "Beziehung";
+$text['label-contact_relation_label']['de-de'] = "Beziehung";
+$text['label-contact_relation_label']['el-gr'] = "Σχέση";
+$text['label-contact_relation_label']['es-cl'] = "Relación";
+$text['label-contact_relation_label']['es-mx'] = "Relación";
+$text['label-contact_relation_label']['fr-ca'] = "Relation";
+$text['label-contact_relation_label']['fr-fr'] = "Relation";
+$text['label-contact_relation_label']['he-il'] = "יַחַס";
+$text['label-contact_relation_label']['it-it'] = "Relazione";
+$text['label-contact_relation_label']['ka-ge'] = "ურთიერთობა";
+$text['label-contact_relation_label']['nl-nl'] = "Relatie";
+$text['label-contact_relation_label']['pl-pl'] = "Relacja";
+$text['label-contact_relation_label']['pt-br'] = "Relação";
+$text['label-contact_relation_label']['pt-pt'] = "Relação";
+$text['label-contact_relation_label']['ro-ro'] = "Relație";
+$text['label-contact_relation_label']['ru-ru'] = "Отношение";
+$text['label-contact_relation_label']['sv-se'] = "Relation";
+$text['label-contact_relation_label']['uk-ua'] = "Зв’язок";
+$text['label-contact_relation_label']['zh-cn'] = "关系";
+$text['label-contact_relation_label']['ja-jp'] = "関係";
+$text['label-contact_relation_label']['ko-kr'] = "관계";
+
+$text['label-contact_relation_contact']['en-us'] = "Contact";
+$text['label-contact_relation_contact']['en-gb'] = "Contact";
+$text['label-contact_relation_contact']['ar-eg'] = "اتصال";
+$text['label-contact_relation_contact']['de-at'] = "Kontakt";
+$text['label-contact_relation_contact']['de-ch'] = "Kontakt";
+$text['label-contact_relation_contact']['de-de'] = "Kontakt";
+$text['label-contact_relation_contact']['el-gr'] = "Επαφή";
+$text['label-contact_relation_contact']['es-cl'] = "Contacto";
+$text['label-contact_relation_contact']['es-mx'] = "Contacto";
+$text['label-contact_relation_contact']['fr-ca'] = "Contact";
+$text['label-contact_relation_contact']['fr-fr'] = "Contact";
+$text['label-contact_relation_contact']['he-il'] = "איש קשר";
+$text['label-contact_relation_contact']['it-it'] = "Contatto";
+$text['label-contact_relation_contact']['ka-ge'] = "კონტაქტი";
+$text['label-contact_relation_contact']['nl-nl'] = "Kontact";
+$text['label-contact_relation_contact']['pl-pl'] = "Kontakt";
+$text['label-contact_relation_contact']['pt-br'] = "Contato";
+$text['label-contact_relation_contact']['pt-pt'] = "Contato";
+$text['label-contact_relation_contact']['ro-ro'] = "a lua legatura";
+$text['label-contact_relation_contact']['ru-ru'] = "Контакт";
+$text['label-contact_relation_contact']['sv-se'] = "Kontakt";
+$text['label-contact_relation_contact']['uk-ua'] = "Контакт";
+$text['label-contact_relation_contact']['zh-cn'] = "接触";
+$text['label-contact_relation_contact']['ja-jp'] = "コンタクト";
+$text['label-contact_relation_contact']['ko-kr'] = "연락하다";
+
+$text['label-contact_organization']['en-us'] = "Organization";
+$text['label-contact_organization']['en-gb'] = "Organization";
+$text['label-contact_organization']['ar-eg'] = "منظمة";
+$text['label-contact_organization']['de-at'] = "Organisation";
+$text['label-contact_organization']['de-ch'] = "Organisation";
+$text['label-contact_organization']['de-de'] = "Organisation";
+$text['label-contact_organization']['el-gr'] = "Οργανισμός";
+$text['label-contact_organization']['es-cl'] = "Organización";
+$text['label-contact_organization']['es-mx'] = "Organización";
+$text['label-contact_organization']['fr-ca'] = "Organisation";
+$text['label-contact_organization']['fr-fr'] = "Organisation";
+$text['label-contact_organization']['he-il'] = "ארגון";
+$text['label-contact_organization']['it-it'] = "Organizzazione";
+$text['label-contact_organization']['ka-ge'] = "ორგანიზაცია";
+$text['label-contact_organization']['nl-nl'] = "Organisatie";
+$text['label-contact_organization']['pl-pl'] = "Organizacja";
+$text['label-contact_organization']['pt-br'] = "Organização";
+$text['label-contact_organization']['pt-pt'] = "Organização";
+$text['label-contact_organization']['ro-ro'] = "Organizare";
+$text['label-contact_organization']['ru-ru'] = "Организация";
+$text['label-contact_organization']['sv-se'] = "Organisation";
+$text['label-contact_organization']['uk-ua'] = "Організація";
+$text['label-contact_organization']['zh-cn'] = "组织";
+$text['label-contact_organization']['ja-jp'] = "組織";
+$text['label-contact_organization']['ko-kr'] = "조직";
+
+$text['label-contact_notes']['en-us'] = "Notes";
+$text['label-contact_notes']['en-gb'] = "Notes";
+$text['label-contact_notes']['ar-eg'] = "ملحوظات";
+$text['label-contact_notes']['de-at'] = "Notizen";
+$text['label-contact_notes']['de-ch'] = "Notizen";
+$text['label-contact_notes']['de-de'] = "Notizen";
+$text['label-contact_notes']['el-gr'] = "Σημειώσεις";
+$text['label-contact_notes']['es-cl'] = "Notas";
+$text['label-contact_notes']['es-mx'] = "Notas";
+$text['label-contact_notes']['fr-ca'] = "Notes";
+$text['label-contact_notes']['fr-fr'] = "Notes";
+$text['label-contact_notes']['he-il'] = "הערות";
+$text['label-contact_notes']['it-it'] = "Note";
+$text['label-contact_notes']['ka-ge'] = "შენიშვნები";
+$text['label-contact_notes']['nl-nl'] = "Notities";
+$text['label-contact_notes']['pl-pl'] = "Notatki";
+$text['label-contact_notes']['pt-br'] = "Notas";
+$text['label-contact_notes']['pt-pt'] = "Notas";
+$text['label-contact_notes']['ro-ro'] = "Note";
+$text['label-contact_notes']['ru-ru'] = "Примечания";
+$text['label-contact_notes']['sv-se'] = "Noteringar";
+$text['label-contact_notes']['uk-ua'] = "Нотатки";
+$text['label-contact_notes']['zh-cn'] = "笔记";
+$text['label-contact_notes']['ja-jp'] = "ノート";
+$text['label-contact_notes']['ko-kr'] = "노트";
+
+$text['label-contact_note']['en-us'] = "Note";
+$text['label-contact_note']['en-gb'] = "Note";
+$text['label-contact_note']['ar-eg'] = "ملحوظة";
+$text['label-contact_note']['de-at'] = "Notiz";
+$text['label-contact_note']['de-ch'] = "Notiz";
+$text['label-contact_note']['de-de'] = "Notiz";
+$text['label-contact_note']['el-gr'] = "Σημείωση";
+$text['label-contact_note']['es-cl'] = "Nota";
+$text['label-contact_note']['es-mx'] = "Nota";
+$text['label-contact_note']['fr-ca'] = "Note";
+$text['label-contact_note']['fr-fr'] = "Note";
+$text['label-contact_note']['he-il'] = "הערה";
+$text['label-contact_note']['it-it'] = "Nota";
+$text['label-contact_note']['ka-ge'] = "შენიშვნა";
+$text['label-contact_note']['nl-nl'] = "Notitie";
+$text['label-contact_note']['pl-pl'] = "Notatka";
+$text['label-contact_note']['pt-br'] = "Nota";
+$text['label-contact_note']['pt-pt'] = "Nota";
+$text['label-contact_note']['ro-ro'] = "Notă";
+$text['label-contact_note']['ru-ru'] = "Примечание";
+$text['label-contact_note']['sv-se'] = "Notering";
+$text['label-contact_note']['uk-ua'] = "Нотатка";
+$text['label-contact_note']['zh-cn'] = "笔记";
+$text['label-contact_note']['ja-jp'] = "ノート";
+$text['label-contact_note']['ko-kr'] = "메모";
+
+$text['label-contact_nickname']['en-us'] = "Nickname";
+$text['label-contact_nickname']['en-gb'] = "Nickname";
+$text['label-contact_nickname']['ar-eg'] = "كنية";
+$text['label-contact_nickname']['de-at'] = "Spitzname";
+$text['label-contact_nickname']['de-ch'] = "Spitzname";
+$text['label-contact_nickname']['de-de'] = "Spitzname";
+$text['label-contact_nickname']['el-gr'] = "Υποκοριστικό";
+$text['label-contact_nickname']['es-cl'] = "Apodo";
+$text['label-contact_nickname']['es-mx'] = "Apodo";
+$text['label-contact_nickname']['fr-ca'] = "Surnom";
+$text['label-contact_nickname']['fr-fr'] = "Surnom";
+$text['label-contact_nickname']['he-il'] = "כינוי";
+$text['label-contact_nickname']['it-it'] = "Soprannome";
+$text['label-contact_nickname']['ka-ge'] = "მომხმარებლის მეტსახელი";
+$text['label-contact_nickname']['nl-nl'] = "Bijnaam";
+$text['label-contact_nickname']['pl-pl'] = "Nazwa";
+$text['label-contact_nickname']['pt-br'] = "Apelido";
+$text['label-contact_nickname']['pt-pt'] = "Nickname";
+$text['label-contact_nickname']['ro-ro'] = "Poreclă";
+$text['label-contact_nickname']['ru-ru'] = "Псевдоним пользователя";
+$text['label-contact_nickname']['sv-se'] = "Smeknamn";
+$text['label-contact_nickname']['uk-ua'] = "Прізвисько";
+$text['label-contact_nickname']['zh-cn'] = "昵称";
+$text['label-contact_nickname']['ja-jp'] = "ニックネーム";
+$text['label-contact_nickname']['ko-kr'] = "별명";
+
+$text['label-contact_name_suffix']['en-us'] = "Suffix";
+$text['label-contact_name_suffix']['en-gb'] = "Suffix";
+$text['label-contact_name_suffix']['ar-eg'] = "لاحقة";
+$text['label-contact_name_suffix']['de-at'] = "Nachsilbe";
+$text['label-contact_name_suffix']['de-ch'] = "Nachsilbe";
+$text['label-contact_name_suffix']['de-de'] = "Nachsilbe";
+$text['label-contact_name_suffix']['el-gr'] = "Επίθεμα";
+$text['label-contact_name_suffix']['es-cl'] = "Sufijo";
+$text['label-contact_name_suffix']['es-mx'] = "Sufijo";
+$text['label-contact_name_suffix']['fr-ca'] = "Suffixe";
+$text['label-contact_name_suffix']['fr-fr'] = "Suffixe";
+$text['label-contact_name_suffix']['he-il'] = "סִיוֹמֶת";
+$text['label-contact_name_suffix']['it-it'] = "Suffisso";
+$text['label-contact_name_suffix']['ka-ge'] = "სუფიქსი";
+$text['label-contact_name_suffix']['nl-nl'] = "Toevoeging";
+$text['label-contact_name_suffix']['pl-pl'] = "Przyrostek";
+$text['label-contact_name_suffix']['pt-br'] = "Sufixo";
+$text['label-contact_name_suffix']['pt-pt'] = "Sufixo";
+$text['label-contact_name_suffix']['ro-ro'] = "Sufix";
+$text['label-contact_name_suffix']['ru-ru'] = "Суфикс";
+$text['label-contact_name_suffix']['sv-se'] = "Ändelse";
+$text['label-contact_name_suffix']['uk-ua'] = "Суфікс";
+$text['label-contact_name_suffix']['zh-cn'] = "后缀";
+$text['label-contact_name_suffix']['ja-jp'] = "サフィックス";
+$text['label-contact_name_suffix']['ko-kr'] = "접미사";
+
+$text['label-contact_name_prefix']['en-us'] = "Prefix";
+$text['label-contact_name_prefix']['en-gb'] = "Prefix";
+$text['label-contact_name_prefix']['ar-eg'] = "بادئة";
+$text['label-contact_name_prefix']['de-at'] = "Vorsilbe";
+$text['label-contact_name_prefix']['de-ch'] = "Vorsilbe";
+$text['label-contact_name_prefix']['de-de'] = "Vorsilbe";
+$text['label-contact_name_prefix']['el-gr'] = "Πρόθεμα";
+$text['label-contact_name_prefix']['es-cl'] = "Prefijo";
+$text['label-contact_name_prefix']['es-mx'] = "Prefijo";
+$text['label-contact_name_prefix']['fr-ca'] = "Préfixe";
+$text['label-contact_name_prefix']['fr-fr'] = "Préfixe";
+$text['label-contact_name_prefix']['he-il'] = "קידומת";
+$text['label-contact_name_prefix']['it-it'] = "Prefisso";
+$text['label-contact_name_prefix']['ka-ge'] = "პრეფიქსი";
+$text['label-contact_name_prefix']['nl-nl'] = "Voorvoegsel";
+$text['label-contact_name_prefix']['pl-pl'] = "Pefiks";
+$text['label-contact_name_prefix']['pt-br'] = "Prefixo";
+$text['label-contact_name_prefix']['pt-pt'] = "Prefixo";
+$text['label-contact_name_prefix']['ro-ro'] = "Prefix";
+$text['label-contact_name_prefix']['ru-ru'] = "Префикс";
+$text['label-contact_name_prefix']['sv-se'] = "Prefix";
+$text['label-contact_name_prefix']['uk-ua'] = "Префікс";
+$text['label-contact_name_prefix']['zh-cn'] = "字首";
+$text['label-contact_name_prefix']['ja-jp'] = "プレフィックス";
+$text['label-contact_name_prefix']['ko-kr'] = "접두사";
+
+$text['label-contact_name_middle']['en-us'] = "Middle";
+$text['label-contact_name_middle']['en-gb'] = "Middle";
+$text['label-contact_name_middle']['ar-eg'] = "وسط";
+$text['label-contact_name_middle']['de-at'] = "Mittel";
+$text['label-contact_name_middle']['de-ch'] = "Mittel";
+$text['label-contact_name_middle']['de-de'] = "Mittel";
+$text['label-contact_name_middle']['el-gr'] = "Μεσαίο";
+$text['label-contact_name_middle']['es-cl'] = "Segundo Nombre";
+$text['label-contact_name_middle']['es-mx'] = "Segundo Nombre";
+$text['label-contact_name_middle']['fr-ca'] = "Deuxième Nom";
+$text['label-contact_name_middle']['fr-fr'] = "Deuxième Nom";
+$text['label-contact_name_middle']['he-il'] = "שם אמצעי";
+$text['label-contact_name_middle']['it-it'] = "Secondo Nome";
+$text['label-contact_name_middle']['ka-ge'] = "შუა";
+$text['label-contact_name_middle']['nl-nl'] = "Middel";
+$text['label-contact_name_middle']['pl-pl'] = "Drugie imię";
+$text['label-contact_name_middle']['pt-br'] = "Sobrenome";
+$text['label-contact_name_middle']['pt-pt'] = "Nome Do Meio";
+$text['label-contact_name_middle']['ro-ro'] = "Mijloc";
+$text['label-contact_name_middle']['ru-ru'] = "Отчество";
+$text['label-contact_name_middle']['sv-se'] = "Mellan";
+$text['label-contact_name_middle']['uk-ua'] = "По-батькові";
+$text['label-contact_name_middle']['zh-cn'] = "中间";
+$text['label-contact_name_middle']['ja-jp'] = "真ん中";
+$text['label-contact_name_middle']['ko-kr'] = "가운데";
+
+$text['label-contact_name_given']['en-us'] = "First Name";
+$text['label-contact_name_given']['en-gb'] = "First Name";
+$text['label-contact_name_given']['ar-eg'] = "الاسم الأول";
+$text['label-contact_name_given']['de-at'] = "Vorname";
+$text['label-contact_name_given']['de-ch'] = "Vorname";
+$text['label-contact_name_given']['de-de'] = "Vorname";
+$text['label-contact_name_given']['el-gr'] = "Όνομα";
+$text['label-contact_name_given']['es-cl'] = "Primer Nombre";
+$text['label-contact_name_given']['es-mx'] = "Primer Nombre";
+$text['label-contact_name_given']['fr-ca'] = "Prénom";
+$text['label-contact_name_given']['fr-fr'] = "Prénom";
+$text['label-contact_name_given']['he-il'] = "שם";
+$text['label-contact_name_given']['it-it'] = "Nome";
+$text['label-contact_name_given']['ka-ge'] = "სახელი";
+$text['label-contact_name_given']['nl-nl'] = "Voornaam";
+$text['label-contact_name_given']['pl-pl'] = "Imię";
+$text['label-contact_name_given']['pt-br'] = "Primeiro nome";
+$text['label-contact_name_given']['pt-pt'] = "Primeiro Nome";
+$text['label-contact_name_given']['ro-ro'] = "Nume";
+$text['label-contact_name_given']['ru-ru'] = "Имя";
+$text['label-contact_name_given']['sv-se'] = "Förnamn";
+$text['label-contact_name_given']['uk-ua'] = "Ім’я";
+$text['label-contact_name_given']['zh-cn'] = "名";
+$text['label-contact_name_given']['ja-jp'] = "ファーストネーム";
+$text['label-contact_name_given']['ko-kr'] = "이름";
+
+$text['label-contact_name_family']['en-us'] = "Last Name";
+$text['label-contact_name_family']['en-gb'] = "Last Name";
+$text['label-contact_name_family']['ar-eg'] = "اسم العائلة";
+$text['label-contact_name_family']['de-at'] = "Nachname";
+$text['label-contact_name_family']['de-ch'] = "Nachname";
+$text['label-contact_name_family']['de-de'] = "Nachname";
+$text['label-contact_name_family']['el-gr'] = "Επώνυμο";
+$text['label-contact_name_family']['es-cl'] = "Segundo Nombre";
+$text['label-contact_name_family']['es-mx'] = "Segundo Nombre";
+$text['label-contact_name_family']['fr-ca'] = "Nom";
+$text['label-contact_name_family']['fr-fr'] = "Nom";
+$text['label-contact_name_family']['he-il'] = "שם משפחה";
+$text['label-contact_name_family']['it-it'] = "Cognome";
+$text['label-contact_name_family']['ka-ge'] = "გვარი";
+$text['label-contact_name_family']['nl-nl'] = "Achternaam";
+$text['label-contact_name_family']['pl-pl'] = "Nazwisko";
+$text['label-contact_name_family']['pt-br'] = "Uítimo nome";
+$text['label-contact_name_family']['pt-pt'] = "Último nome";
+$text['label-contact_name_family']['ro-ro'] = "Nume";
+$text['label-contact_name_family']['ru-ru'] = "Фамилия";
+$text['label-contact_name_family']['sv-se'] = "Efternamn";
+$text['label-contact_name_family']['uk-ua'] = "Прізвище";
+$text['label-contact_name_family']['zh-cn'] = "姓";
+$text['label-contact_name_family']['ja-jp'] = "苗字";
+$text['label-contact_name_family']['ko-kr'] = "성";
+
+$text['label-contact_name']['en-us'] = "Name";
+$text['label-contact_name']['en-gb'] = "Name";
+$text['label-contact_name']['ar-eg'] = "اسم";
+$text['label-contact_name']['de-at'] = "Name";
+$text['label-contact_name']['de-ch'] = "Name";
+$text['label-contact_name']['de-de'] = "Name";
+$text['label-contact_name']['el-gr'] = "Όνομα";
+$text['label-contact_name']['es-cl'] = "Nombre";
+$text['label-contact_name']['es-mx'] = "Nombre";
+$text['label-contact_name']['fr-ca'] = "Nom";
+$text['label-contact_name']['fr-fr'] = "Nom";
+$text['label-contact_name']['he-il'] = "שם";
+$text['label-contact_name']['it-it'] = "Nome";
+$text['label-contact_name']['ka-ge'] = "სახელი";
+$text['label-contact_name']['nl-nl'] = "Naam";
+$text['label-contact_name']['pl-pl'] = "Nazwa";
+$text['label-contact_name']['pt-br'] = "Nome";
+$text['label-contact_name']['pt-pt'] = "Nome";
+$text['label-contact_name']['ro-ro'] = "Nume";
+$text['label-contact_name']['ru-ru'] = "Имя";
+$text['label-contact_name']['sv-se'] = "Namn";
+$text['label-contact_name']['uk-ua'] = "Назва";
+$text['label-contact_name']['zh-cn'] = "姓名";
+$text['label-contact_name']['ja-jp'] = "名前";
+$text['label-contact_name']['ko-kr'] = "이름";
+
+$text['label-contact_google']['en-us'] = "Google Contact";
+$text['label-contact_google']['en-gb'] = "Google Contact";
+$text['label-contact_google']['ar-eg'] = "جوجل الاتصال";
+$text['label-contact_google']['de-at'] = "Google Kontakt";
+$text['label-contact_google']['de-ch'] = "Google Kontakt";
+$text['label-contact_google']['de-de'] = "Google Kontakt";
+$text['label-contact_google']['el-gr'] = "Επαφή Google";
+$text['label-contact_google']['es-cl'] = "Google Contacto";
+$text['label-contact_google']['es-mx'] = "Google Contacto";
+$text['label-contact_google']['fr-ca'] = "Google Contact";
+$text['label-contact_google']['fr-fr'] = "Google Contact";
+$text['label-contact_google']['he-il'] = "איש קשר גוגל";
+$text['label-contact_google']['it-it'] = "Contatto Google";
+$text['label-contact_google']['ka-ge'] = "Google-ის კონტაქტი";
+$text['label-contact_google']['nl-nl'] = "Google kontact";
+$text['label-contact_google']['pl-pl'] = "Kontakt Google ";
+$text['label-contact_google']['pt-br'] = "Contato Google";
+$text['label-contact_google']['pt-pt'] = "Google Contact";
+$text['label-contact_google']['ro-ro'] = "Contact Google";
+$text['label-contact_google']['ru-ru'] = "Контакт Google";
+$text['label-contact_google']['sv-se'] = "Google Kontakt";
+$text['label-contact_google']['uk-ua'] = "Контакт Google";
+$text['label-contact_google']['zh-cn'] = "谷歌联系人";
+$text['label-contact_google']['ja-jp'] = "Google コンタクト";
+$text['label-contact_google']['ko-kr'] = "구글 연락처";
+
+$text['label-contact_extensions']['en-us'] = "Extensions";
+$text['label-contact_extensions']['en-gb'] = "Extensions";
+$text['label-contact_extensions']['ar-eg'] = "ملحقات";
+$text['label-contact_extensions']['de-at'] = "Nebenstelle";
+$text['label-contact_extensions']['de-ch'] = "Nebenstelle";
+$text['label-contact_extensions']['de-de'] = "Nebenstelle";
+$text['label-contact_extensions']['el-gr'] = "Επεκτάσεις";
+$text['label-contact_extensions']['es-cl'] = "Extensións";
+$text['label-contact_extensions']['es-mx'] = "Extensións";
+$text['label-contact_extensions']['fr-ca'] = "Extensions";
+$text['label-contact_extensions']['fr-fr'] = "Extensions";
+$text['label-contact_extensions']['he-il'] = "שלוחות";
+$text['label-contact_extensions']['it-it'] = "Interni";
+$text['label-contact_extensions']['ka-ge'] = "გაფართოებები(Extensions)";
+$text['label-contact_extensions']['nl-nl'] = "Extensies";
+$text['label-contact_extensions']['pl-pl'] = "Numery wewnętrzne";
+$text['label-contact_extensions']['pt-br'] = "Extensões";
+$text['label-contact_extensions']['pt-pt'] = "Extensões";
+$text['label-contact_extensions']['ro-ro'] = "Extensii";
+$text['label-contact_extensions']['ru-ru'] = "Внутренний Номер";
+$text['label-contact_extensions']['sv-se'] = "Anknytningar";
+$text['label-contact_extensions']['uk-ua'] = "Розширення";
+$text['label-contact_extensions']['zh-cn'] = "扩展";
+$text['label-contact_extensions']['ja-jp'] = "拡張機能";
+$text['label-contact_extensions']['ko-kr'] = "확장 프로그램";
+
+$text['label-contact_email']['en-us'] = "Email";
+$text['label-contact_email']['en-gb'] = "Email";
+$text['label-contact_email']['ar-eg'] = "بريد إلكتروني";
+$text['label-contact_email']['de-at'] = "Email";
+$text['label-contact_email']['de-ch'] = "Email";
+$text['label-contact_email']['de-de'] = "Email";
+$text['label-contact_email']['el-gr'] = "E-mail";
+$text['label-contact_email']['es-cl'] = "Correo Electrónico";
+$text['label-contact_email']['es-mx'] = "Correo Electrónico";
+$text['label-contact_email']['fr-ca'] = "Courriel";
+$text['label-contact_email']['fr-fr'] = "Courriel";
+$text['label-contact_email']['he-il'] = "אימייל";
+$text['label-contact_email']['it-it'] = "Email";
+$text['label-contact_email']['ka-ge'] = "ელფოსტა";
+$text['label-contact_email']['nl-nl'] = "E-mail";
+$text['label-contact_email']['pl-pl'] = "Email";
+$text['label-contact_email']['pt-br'] = "Email";
+$text['label-contact_email']['pt-pt'] = "Email";
+$text['label-contact_email']['ro-ro'] = "E-mail";
+$text['label-contact_email']['ru-ru'] = "Электронная почта";
+$text['label-contact_email']['sv-se'] = "E-post";
+$text['label-contact_email']['uk-ua'] = "Електронна пошта";
+$text['label-contact_email']['zh-cn'] = "电子邮件";
+$text['label-contact_email']['ja-jp'] = "Eメール";
+$text['label-contact_email']['ko-kr'] = "이메일";
+
+$text['label-contact_category']['en-us'] = "Category";
+$text['label-contact_category']['en-gb'] = "Category";
+$text['label-contact_category']['ar-eg'] = "فئة";
+$text['label-contact_category']['de-at'] = "Kategorie";
+$text['label-contact_category']['de-ch'] = "Kategorie";
+$text['label-contact_category']['de-de'] = "Kategorie";
+$text['label-contact_category']['el-gr'] = "Κατηγορία";
+$text['label-contact_category']['es-cl'] = "Categoría";
+$text['label-contact_category']['es-mx'] = "Categoría";
+$text['label-contact_category']['fr-ca'] = "Catégorie";
+$text['label-contact_category']['fr-fr'] = "Catégorie";
+$text['label-contact_category']['he-il'] = "קטגוריה";
+$text['label-contact_category']['it-it'] = "Categoria";
+$text['label-contact_category']['ka-ge'] = "კატეგორია";
+$text['label-contact_category']['nl-nl'] = "Categorie";
+$text['label-contact_category']['pl-pl'] = "Kategoria";
+$text['label-contact_category']['pt-br'] = "Categoria";
+$text['label-contact_category']['pt-pt'] = "Categoria";
+$text['label-contact_category']['ro-ro'] = "Categorie";
+$text['label-contact_category']['ru-ru'] = "Категория";
+$text['label-contact_category']['sv-se'] = "Kategori";
+$text['label-contact_category']['uk-ua'] = "Категорія";
+$text['label-contact_category']['zh-cn'] = "类别";
+$text['label-contact_category']['ja-jp'] = "カテゴリー";
+$text['label-contact_category']['ko-kr'] = "범주";
+
+$text['label-addresses']['en-us'] = "Addresses";
+$text['label-addresses']['en-gb'] = "Addresses";
+$text['label-addresses']['ar-eg'] = "عناوين";
+$text['label-addresses']['de-at'] = "Adresse";
+$text['label-addresses']['de-ch'] = "Adresse";
+$text['label-addresses']['de-de'] = "Adresse";
+$text['label-addresses']['el-gr'] = "Διευθύνσεις";
+$text['label-addresses']['es-cl'] = "Direcciones";
+$text['label-addresses']['es-mx'] = "Direcciones";
+$text['label-addresses']['fr-ca'] = "Adresses";
+$text['label-addresses']['fr-fr'] = "Adresses";
+$text['label-addresses']['he-il'] = "כתובת";
+$text['label-addresses']['it-it'] = "Indirizzi";
+$text['label-addresses']['ka-ge'] = "მისამართები";
+$text['label-addresses']['nl-nl'] = "Adres";
+$text['label-addresses']['pl-pl'] = "Adresy";
+$text['label-addresses']['pt-br'] = "Endereços";
+$text['label-addresses']['pt-pt'] = "Endereços";
+$text['label-addresses']['ro-ro'] = "Adrese";
+$text['label-addresses']['ru-ru'] = "Адреса";
+$text['label-addresses']['sv-se'] = "Adress";
+$text['label-addresses']['uk-ua'] = "Адреси";
+$text['label-addresses']['zh-cn'] = "地址";
+$text['label-addresses']['ja-jp'] = "住所";
+$text['label-addresses']['ko-kr'] = "구애";
+
+$text['label-address_type']['en-us'] = "Type";
+$text['label-address_type']['en-gb'] = "Type";
+$text['label-address_type']['ar-eg'] = "يكتب";
+$text['label-address_type']['de-at'] = "Art";
+$text['label-address_type']['de-ch'] = "Art";
+$text['label-address_type']['de-de'] = "Art";
+$text['label-address_type']['el-gr'] = "Τύπος";
+$text['label-address_type']['es-cl'] = "Tipo";
+$text['label-address_type']['es-mx'] = "Tipo";
+$text['label-address_type']['fr-ca'] = "Type";
+$text['label-address_type']['fr-fr'] = "Type";
+$text['label-address_type']['he-il'] = "סוג";
+$text['label-address_type']['it-it'] = "Tipo";
+$text['label-address_type']['ka-ge'] = "ტიპი";
+$text['label-address_type']['nl-nl'] = "Type";
+$text['label-address_type']['pl-pl'] = "Typ";
+$text['label-address_type']['pt-br'] = "Tipo";
+$text['label-address_type']['pt-pt'] = "Tipo";
+$text['label-address_type']['ro-ro'] = "Tip";
+$text['label-address_type']['ru-ru'] = "Тип";
+$text['label-address_type']['sv-se'] = "Typ";
+$text['label-address_type']['uk-ua'] = "Тип";
+$text['label-address_type']['zh-cn'] = "类型";
+$text['label-address_type']['ja-jp'] = "タイプ";
+$text['label-address_type']['ko-kr'] = "유형";
+
+$text['label-address_tools']['en-us'] = "Tools";
+$text['label-address_tools']['en-gb'] = "Tools";
+$text['label-address_tools']['ar-eg'] = "أدوات";
+$text['label-address_tools']['de-at'] = "Werkzeuge";
+$text['label-address_tools']['de-ch'] = "Werkzeuge";
+$text['label-address_tools']['de-de'] = "Werkzeuge";
+$text['label-address_tools']['el-gr'] = "Εργαλεία";
+$text['label-address_tools']['es-cl'] = "Herramientas";
+$text['label-address_tools']['es-mx'] = "Herramientas";
+$text['label-address_tools']['fr-ca'] = "Outils";
+$text['label-address_tools']['fr-fr'] = "Outils";
+$text['label-address_tools']['he-il'] = "כלים";
+$text['label-address_tools']['it-it'] = "Strumenti";
+$text['label-address_tools']['ka-ge'] = "ხელსაწყოები";
+$text['label-address_tools']['nl-nl'] = "Gereedschappen";
+$text['label-address_tools']['pl-pl'] = "Narzędzia";
+$text['label-address_tools']['pt-br'] = "Ferramentas";
+$text['label-address_tools']['pt-pt'] = "Ferramentas";
+$text['label-address_tools']['ro-ro'] = "Instrumente";
+$text['label-address_tools']['ru-ru'] = "Инструменты";
+$text['label-address_tools']['sv-se'] = "Verktyg";
+$text['label-address_tools']['uk-ua'] = "Інструменти";
+$text['label-address_tools']['zh-cn'] = "工具";
+$text['label-address_tools']['ja-jp'] = "ツール";
+$text['label-address_tools']['ko-kr'] = "도구";
+
+$text['label-address_region']['en-us'] = "Region";
+$text['label-address_region']['en-gb'] = "Region";
+$text['label-address_region']['ar-eg'] = "منطقة";
+$text['label-address_region']['de-at'] = "Region";
+$text['label-address_region']['de-ch'] = "Region";
+$text['label-address_region']['de-de'] = "Region";
+$text['label-address_region']['el-gr'] = "Περιοχή";
+$text['label-address_region']['es-cl'] = "Región";
+$text['label-address_region']['es-mx'] = "Región";
+$text['label-address_region']['fr-ca'] = "Région";
+$text['label-address_region']['fr-fr'] = "Région";
+$text['label-address_region']['he-il'] = "אזור";
+$text['label-address_region']['it-it'] = "Regione";
+$text['label-address_region']['ka-ge'] = "რეგიონი";
+$text['label-address_region']['nl-nl'] = "Regio";
+$text['label-address_region']['pl-pl'] = "Region";
+$text['label-address_region']['pt-br'] = "Região ";
+$text['label-address_region']['pt-pt'] = "Região";
+$text['label-address_region']['ro-ro'] = "Regiune";
+$text['label-address_region']['ru-ru'] = "Область";
+$text['label-address_region']['sv-se'] = "Region";
+$text['label-address_region']['uk-ua'] = "Область";
+$text['label-address_region']['zh-cn'] = "地区";
+$text['label-address_region']['ja-jp'] = "領域";
+$text['label-address_region']['ko-kr'] = "지역";
+
+$text['label-address_postal_code']['en-us'] = "Postal Code";
+$text['label-address_postal_code']['en-gb'] = "Postal Code";
+$text['label-address_postal_code']['ar-eg'] = "رمز بريدي";
+$text['label-address_postal_code']['de-at'] = "PLZ";
+$text['label-address_postal_code']['de-ch'] = "PLZ";
+$text['label-address_postal_code']['de-de'] = "PLZ";
+$text['label-address_postal_code']['el-gr'] = "Τ.Κ.";
+$text['label-address_postal_code']['es-cl'] = "Código Postal";
+$text['label-address_postal_code']['es-mx'] = "Código Postal";
+$text['label-address_postal_code']['fr-ca'] = "Code Postal";
+$text['label-address_postal_code']['fr-fr'] = "Code Postal";
+$text['label-address_postal_code']['he-il'] = "תא דואר";
+$text['label-address_postal_code']['it-it'] = "C.A.P.";
+$text['label-address_postal_code']['ka-ge'] = "საფოსტო კოდი";
+$text['label-address_postal_code']['nl-nl'] = "Postcode";
+$text['label-address_postal_code']['pl-pl'] = "Kod pocztowy";
+$text['label-address_postal_code']['pt-br'] = "Código Postal";
+$text['label-address_postal_code']['pt-pt'] = "Código Postal";
+$text['label-address_postal_code']['ro-ro'] = "Cod poștal";
+$text['label-address_postal_code']['ru-ru'] = "Почтовый индекс";
+$text['label-address_postal_code']['sv-se'] = "Postkod";
+$text['label-address_postal_code']['uk-ua'] = "Поштовий індекс";
+$text['label-address_postal_code']['zh-cn'] = "邮政编码";
+$text['label-address_postal_code']['ja-jp'] = "郵便番号";
+$text['label-address_postal_code']['ko-kr'] = "우편 번호";
+
+$text['label-address_longitude']['en-us'] = "Longitude";
+$text['label-address_longitude']['en-gb'] = "Longitude";
+$text['label-address_longitude']['ar-eg'] = "خط الطول";
+$text['label-address_longitude']['de-at'] = "Längengrad";
+$text['label-address_longitude']['de-ch'] = "Längengrad";
+$text['label-address_longitude']['de-de'] = "Längengrad";
+$text['label-address_longitude']['el-gr'] = "Γεωγραφικό μήκος";
+$text['label-address_longitude']['es-cl'] = "Longitud";
+$text['label-address_longitude']['es-mx'] = "Longitud";
+$text['label-address_longitude']['fr-ca'] = "Longitude";
+$text['label-address_longitude']['fr-fr'] = "Longitude";
+$text['label-address_longitude']['he-il'] = "קו אורך";
+$text['label-address_longitude']['it-it'] = "Longitudine";
+$text['label-address_longitude']['ka-ge'] = "გრძედი";
+$text['label-address_longitude']['nl-nl'] = "Lengtegraad";
+$text['label-address_longitude']['pl-pl'] = "Długość geograficzna";
+$text['label-address_longitude']['pt-br'] = "Longitude";
+$text['label-address_longitude']['pt-pt'] = "Longitude";
+$text['label-address_longitude']['ro-ro'] = "Longitudine";
+$text['label-address_longitude']['ru-ru'] = "Долгота";
+$text['label-address_longitude']['sv-se'] = "Longitude ";
+$text['label-address_longitude']['uk-ua'] = "Довгота";
+$text['label-address_longitude']['zh-cn'] = "经度";
+$text['label-address_longitude']['ja-jp'] = "経度";
+$text['label-address_longitude']['ko-kr'] = "경도";
+
+$text['label-address_locality']['en-us'] = "City";
+$text['label-address_locality']['en-gb'] = "City";
+$text['label-address_locality']['ar-eg'] = "مدينة";
+$text['label-address_locality']['de-at'] = "Stadt";
+$text['label-address_locality']['de-ch'] = "Stadt";
+$text['label-address_locality']['de-de'] = "Stadt";
+$text['label-address_locality']['el-gr'] = "Πόλη";
+$text['label-address_locality']['es-cl'] = "Ciudad";
+$text['label-address_locality']['es-mx'] = "Ciudad";
+$text['label-address_locality']['fr-ca'] = "Ville";
+$text['label-address_locality']['fr-fr'] = "Ville";
+$text['label-address_locality']['he-il'] = "עיר";
+$text['label-address_locality']['it-it'] = "Città";
+$text['label-address_locality']['ka-ge'] = "ქალაქი";
+$text['label-address_locality']['nl-nl'] = "Stad";
+$text['label-address_locality']['pl-pl'] = "MIasto";
+$text['label-address_locality']['pt-br'] = "Cidade";
+$text['label-address_locality']['pt-pt'] = "Cidade";
+$text['label-address_locality']['ro-ro'] = "Oraș";
+$text['label-address_locality']['ru-ru'] = "Город";
+$text['label-address_locality']['sv-se'] = "Stad";
+$text['label-address_locality']['uk-ua'] = "Місто";
+$text['label-address_locality']['zh-cn'] = "经度";
+$text['label-address_locality']['ja-jp'] = "街";
+$text['label-address_locality']['ko-kr'] = "도시";
+
+$text['label-address_latitude']['en-us'] = "Latitude";
+$text['label-address_latitude']['en-gb'] = "Latitude";
+$text['label-address_latitude']['ar-eg'] = "خط العرض";
+$text['label-address_latitude']['de-at'] = "Breitengrad";
+$text['label-address_latitude']['de-ch'] = "Breitengrad";
+$text['label-address_latitude']['de-de'] = "Breitengrad";
+$text['label-address_latitude']['el-gr'] = "Γεωγραφικό πλάτος";
+$text['label-address_latitude']['es-cl'] = "Latitud";
+$text['label-address_latitude']['es-mx'] = "Latitud";
+$text['label-address_latitude']['fr-ca'] = "Latitude";
+$text['label-address_latitude']['fr-fr'] = "Latitude";
+$text['label-address_latitude']['he-il'] = "קו רוחב";
+$text['label-address_latitude']['it-it'] = "Latitudine";
+$text['label-address_latitude']['ka-ge'] = "განედი";
+$text['label-address_latitude']['nl-nl'] = "Breedtegraad";
+$text['label-address_latitude']['pl-pl'] = "Szerokość geograficzna";
+$text['label-address_latitude']['pt-br'] = "Latitude";
+$text['label-address_latitude']['pt-pt'] = "Latitude";
+$text['label-address_latitude']['ro-ro'] = "Latitudine";
+$text['label-address_latitude']['ru-ru'] = "Широта";
+$text['label-address_latitude']['sv-se'] = "Latitude ";
+$text['label-address_latitude']['uk-ua'] = "Широта";
+$text['label-address_latitude']['zh-cn'] = "纬度";
+$text['label-address_latitude']['ja-jp'] = "緯度";
+$text['label-address_latitude']['ko-kr'] = "위도";
+
+$text['label-address_label']['en-us'] = "Label";
+$text['label-address_label']['en-gb'] = "Label";
+$text['label-address_label']['ar-eg'] = "ملصق";
+$text['label-address_label']['de-at'] = "Kennzeichnung";
+$text['label-address_label']['de-ch'] = "Kennzeichnung";
+$text['label-address_label']['de-de'] = "Kennzeichnung";
+$text['label-address_label']['el-gr'] = "Ετικέτα";
+$text['label-address_label']['es-cl'] = "Etiqueta";
+$text['label-address_label']['es-mx'] = "Etiqueta";
+$text['label-address_label']['fr-ca'] = "Étiquette";
+$text['label-address_label']['fr-fr'] = "Étiquette";
+$text['label-address_label']['he-il'] = "תווית";
+$text['label-address_label']['it-it'] = "etichetta";
+$text['label-address_label']['ka-ge'] = "ჭდე";
+$text['label-address_label']['nl-nl'] = "Etiket";
+$text['label-address_label']['pl-pl'] = "Etykieta";
+$text['label-address_label']['pt-br'] = "Identificador";
+$text['label-address_label']['pt-pt'] = "Etiqueta";
+$text['label-address_label']['ro-ro'] = "Eticheta";
+$text['label-address_label']['ru-ru'] = "Метка";
+$text['label-address_label']['sv-se'] = "Etikett";
+$text['label-address_label']['uk-ua'] = "Назва";
+$text['label-address_label']['zh-cn'] = "标签";
+$text['label-address_label']['ja-jp'] = "ラベル";
+$text['label-address_label']['ko-kr'] = "상표";
+
+$text['label-address_description']['en-us'] = "Description";
+$text['label-address_description']['en-gb'] = "Description";
+$text['label-address_description']['ar-eg'] = "وصف";
+$text['label-address_description']['de-at'] = "Beschreibung";
+$text['label-address_description']['de-ch'] = "Beschreibung";
+$text['label-address_description']['de-de'] = "Beschreibung";
+$text['label-address_description']['el-gr'] = "Περιγραφή";
+$text['label-address_description']['es-cl'] = "Descripción";
+$text['label-address_description']['es-mx'] = "Descripción";
+$text['label-address_description']['fr-ca'] = "Description";
+$text['label-address_description']['fr-fr'] = "Description";
+$text['label-address_description']['he-il'] = "תאור";
+$text['label-address_description']['it-it'] = "Descrizione";
+$text['label-address_description']['ka-ge'] = "აღწერა";
+$text['label-address_description']['nl-nl'] = "Omschrijving";
+$text['label-address_description']['pl-pl'] = "Opis";
+$text['label-address_description']['pt-br'] = "Descrição";
+$text['label-address_description']['pt-pt'] = "Descrição";
+$text['label-address_description']['ro-ro'] = "Descriere";
+$text['label-address_description']['ru-ru'] = "Описание";
+$text['label-address_description']['sv-se'] = "Beskrivning";
+$text['label-address_description']['uk-ua'] = "Опис";
+$text['label-address_description']['zh-cn'] = "描述";
+$text['label-address_description']['ja-jp'] = "説明";
+$text['label-address_description']['ko-kr'] = "설명";
+
+$text['label-address_country']['en-us'] = "Country";
+$text['label-address_country']['en-gb'] = "Country";
+$text['label-address_country']['ar-eg'] = "دولة";
+$text['label-address_country']['de-at'] = "Land";
+$text['label-address_country']['de-ch'] = "Land";
+$text['label-address_country']['de-de'] = "Land";
+$text['label-address_country']['el-gr'] = "Χώρα";
+$text['label-address_country']['es-cl'] = "País";
+$text['label-address_country']['es-mx'] = "País";
+$text['label-address_country']['fr-ca'] = "Pays";
+$text['label-address_country']['fr-fr'] = "Pays";
+$text['label-address_country']['he-il'] = "מדינה";
+$text['label-address_country']['it-it'] = "Paese";
+$text['label-address_country']['ka-ge'] = "ქვეყანა";
+$text['label-address_country']['nl-nl'] = "Land";
+$text['label-address_country']['pl-pl'] = "Kraj";
+$text['label-address_country']['pt-br'] = "País";
+$text['label-address_country']['pt-pt'] = "País";
+$text['label-address_country']['ro-ro'] = "Țară";
+$text['label-address_country']['ru-ru'] = "Страна";
+$text['label-address_country']['sv-se'] = "Land";
+$text['label-address_country']['uk-ua'] = "Країна";
+$text['label-address_country']['zh-cn'] = "国家";
+$text['label-address_country']['ja-jp'] = "国";
+$text['label-address_country']['ko-kr'] = "국가";
+
+$text['label-address_community']['en-us'] = "Community";
+$text['label-address_community']['en-gb'] = "Community";
+$text['label-address_community']['ar-eg'] = "مجتمع";
+$text['label-address_community']['de-at'] = "Gemeinde";
+$text['label-address_community']['de-ch'] = "Gemeinde";
+$text['label-address_community']['de-de'] = "Gemeinde";
+$text['label-address_community']['el-gr'] = "Κοινότητα";
+$text['label-address_community']['es-cl'] = "Comunidad";
+$text['label-address_community']['es-mx'] = "Comunidad";
+$text['label-address_community']['fr-ca'] = "Communauté";
+$text['label-address_community']['fr-fr'] = "Communauté";
+$text['label-address_community']['he-il'] = "קהילה";
+$text['label-address_community']['it-it'] = "Comunità";
+$text['label-address_community']['ka-ge'] = "საზოგადოება";
+$text['label-address_community']['nl-nl'] = "Gemeente";
+$text['label-address_community']['pl-pl'] = "Wspólnota";
+$text['label-address_community']['pt-br'] = "Comunidade";
+$text['label-address_community']['pt-pt'] = "Comunidade";
+$text['label-address_community']['ro-ro'] = "Comunitate";
+$text['label-address_community']['ru-ru'] = "Сообщество";
+$text['label-address_community']['sv-se'] = "Samhälle";
+$text['label-address_community']['uk-ua'] = "Спільнота";
+$text['label-address_community']['zh-cn'] = "社区";
+$text['label-address_community']['ja-jp'] = "コミュニティ";
+$text['label-address_community']['ko-kr'] = "지역 사회";
+
+$text['label-address_address']['en-us'] = "Address";
+$text['label-address_address']['en-gb'] = "Address";
+$text['label-address_address']['ar-eg'] = "عنوان";
+$text['label-address_address']['de-at'] = "Adresse";
+$text['label-address_address']['de-ch'] = "Adresse";
+$text['label-address_address']['de-de'] = "Adresse";
+$text['label-address_address']['el-gr'] = "Διεύθυνση";
+$text['label-address_address']['es-cl'] = "Calle";
+$text['label-address_address']['es-mx'] = "Calle";
+$text['label-address_address']['fr-ca'] = "Adresse";
+$text['label-address_address']['fr-fr'] = "Adresse";
+$text['label-address_address']['he-il'] = "כתובת";
+$text['label-address_address']['it-it'] = "Indirizzo";
+$text['label-address_address']['ka-ge'] = "მისამართი";
+$text['label-address_address']['nl-nl'] = "Adres";
+$text['label-address_address']['pl-pl'] = "Adres";
+$text['label-address_address']['pt-br'] = "Rua";
+$text['label-address_address']['pt-pt'] = "Rua";
+$text['label-address_address']['ro-ro'] = "Abordare";
+$text['label-address_address']['ru-ru'] = "Адрес";
+$text['label-address_address']['sv-se'] = "Adress";
+$text['label-address_address']['uk-ua'] = "Адреси";
+$text['label-address_address']['zh-cn'] = "地址";
+$text['label-address_address']['ja-jp'] = "住所";
+$text['label-address_address']['ko-kr'] = "주소";
+
+$text['label-attachments']['en-us'] = "Attachments";
+$text['label-attachments']['en-gb'] = "Attachments";
+$text['label-attachments']['ar-eg'] = "المرفقات";
+$text['label-attachments']['de-at'] = "Anhänge";
+$text['label-attachments']['de-ch'] = "Anhänge";
+$text['label-attachments']['de-de'] = "Anhänge";
+$text['label-attachments']['el-gr'] = "Επισυνάψεις";
+$text['label-attachments']['es-cl'] = "Archivos adjuntos";
+$text['label-attachments']['es-mx'] = "Archivos adjuntos";
+$text['label-attachments']['fr-ca'] = "Pièces Jointes";
+$text['label-attachments']['fr-fr'] = "Pièces Jointes";
+$text['label-attachments']['he-il'] = "קבצים מצורפים";
+$text['label-attachments']['it-it'] = "Allegati";
+$text['label-attachments']['ka-ge'] = "მიმაგრებული ფაილები";
+$text['label-attachments']['nl-nl'] = "Aanhangsels";
+$text['label-attachments']['pl-pl'] = "Załączniki";
+$text['label-attachments']['pt-br'] = "Anexos";
+$text['label-attachments']['pt-pt'] = "Anexos";
+$text['label-attachments']['ro-ro'] = "Atasamente";
+$text['label-attachments']['ru-ru'] = "Вложения";
+$text['label-attachments']['sv-se'] = "Bilagor";
+$text['label-attachments']['uk-ua'] = "Додатки";
+$text['label-attachments']['zh-cn'] = "附件";
+$text['label-attachments']['ja-jp'] = "付属品";
+$text['label-attachments']['ko-kr'] = "첨부파일";
+
+$text['label-attachment_filename']['en-us'] = "Filename";
+$text['label-attachment_filename']['en-gb'] = "Filename";
+$text['label-attachment_filename']['ar-eg'] = "اسم الملف";
+$text['label-attachment_filename']['de-at'] = "Dateinamen";
+$text['label-attachment_filename']['de-ch'] = "Dateinamen";
+$text['label-attachment_filename']['de-de'] = "Dateinamen";
+$text['label-attachment_filename']['el-gr'] = "Όνομα αρχείου";
+$text['label-attachment_filename']['es-cl'] = "Nombre del archivo";
+$text['label-attachment_filename']['es-mx'] = "Nombre del archivo";
+$text['label-attachment_filename']['fr-ca'] = "Nom du Fichier";
+$text['label-attachment_filename']['fr-fr'] = "Nom du Fichier";
+$text['label-attachment_filename']['he-il'] = "שם קובץ";
+$text['label-attachment_filename']['it-it'] = "Nome del file";
+$text['label-attachment_filename']['ka-ge'] = "ფაილის სახელი";
+$text['label-attachment_filename']['nl-nl'] = "Bestandsnaam";
+$text['label-attachment_filename']['pl-pl'] = "Nazwa pliku";
+$text['label-attachment_filename']['pt-br'] = "Nome do arquivo";
+$text['label-attachment_filename']['pt-pt'] = "Nome do arquivo";
+$text['label-attachment_filename']['ro-ro'] = "Nume de fișier";
+$text['label-attachment_filename']['ru-ru'] = "Имя файла";
+$text['label-attachment_filename']['sv-se'] = "Filnamn";
+$text['label-attachment_filename']['uk-ua'] = "Ім'я файлу";
+$text['label-attachment_filename']['zh-cn'] = "文件名";
+$text['label-attachment_filename']['ja-jp'] = "ファイル名";
+$text['label-attachment_filename']['ko-kr'] = "파일 이름";
+
+$text['label-attachment']['en-us'] = "Attachment";
+$text['label-attachment']['en-gb'] = "Attachment";
+$text['label-attachment']['ar-eg'] = "مرفق";
+$text['label-attachment']['de-at'] = "Anhang";
+$text['label-attachment']['de-ch'] = "Anhang";
+$text['label-attachment']['de-de'] = "Anhang";
+$text['label-attachment']['el-gr'] = "Επισύναψη";
+$text['label-attachment']['es-cl'] = "Adjunto";
+$text['label-attachment']['es-mx'] = "Adjunto";
+$text['label-attachment']['fr-ca'] = "Pièce Jointe";
+$text['label-attachment']['fr-fr'] = "Pièce Jointe";
+$text['label-attachment']['he-il'] = "הִתקַשְׁרוּת";
+$text['label-attachment']['it-it'] = "Attaccamento";
+$text['label-attachment']['ka-ge'] = "მიმაგრებული ფაილი";
+$text['label-attachment']['nl-nl'] = "Toevoeging";
+$text['label-attachment']['pl-pl'] = "Załącznik";
+$text['label-attachment']['pt-br'] = "Anexo";
+$text['label-attachment']['pt-pt'] = "Anexo";
+$text['label-attachment']['ro-ro'] = "Atașament";
+$text['label-attachment']['ru-ru'] = "Вложение";
+$text['label-attachment']['sv-se'] = "Anknytning";
+$text['label-attachment']['uk-ua'] = "вкладення";
+$text['label-attachment']['zh-cn'] = "依恋";
+$text['label-attachment']['ja-jp'] = "付属品";
+$text['label-attachment']['ko-kr'] = "부착";
+
+$text['label-attachment_size']['en-us'] = "Size";
+$text['label-attachment_size']['en-gb'] = "Size";
+$text['label-attachment_size']['ar-eg'] = "مقاس";
+$text['label-attachment_size']['de-at'] = "Größe";
+$text['label-attachment_size']['de-ch'] = "Größe";
+$text['label-attachment_size']['de-de'] = "Größe";
+$text['label-attachment_size']['el-gr'] = "Μέγεθος";
+$text['label-attachment_size']['es-cl'] = "Tamaño";
+$text['label-attachment_size']['es-mx'] = "Tamaño";
+$text['label-attachment_size']['fr-ca'] = "Taille";
+$text['label-attachment_size']['fr-fr'] = "Taille";
+$text['label-attachment_size']['he-il'] = "גודל";
+$text['label-attachment_size']['it-it'] = "Misurare";
+$text['label-attachment_size']['ka-ge'] = "ზომა";
+$text['label-attachment_size']['nl-nl'] = "Omvang";
+$text['label-attachment_size']['pl-pl'] = "Rozmiar";
+$text['label-attachment_size']['pt-br'] = "Tamanho";
+$text['label-attachment_size']['pt-pt'] = "Tamanho";
+$text['label-attachment_size']['ro-ro'] = "mărimea";
+$text['label-attachment_size']['ru-ru'] = "Размер";
+$text['label-attachment_size']['sv-se'] = "Storlek";
+$text['label-attachment_size']['uk-ua'] = "Розмір";
+$text['label-attachment_size']['zh-cn'] = "尺寸";
+$text['label-attachment_size']['ja-jp'] = "サイズ";
+$text['label-attachment_size']['ko-kr'] = "크기";
+
+$text['label-attachment_description']['en-us'] = "Description";
+$text['label-attachment_description']['en-gb'] = "Description";
+$text['label-attachment_description']['ar-eg'] = "وصف";
+$text['label-attachment_description']['de-at'] = "Beschreibung";
+$text['label-attachment_description']['de-ch'] = "Beschreibung";
+$text['label-attachment_description']['de-de'] = "Beschreibung";
+$text['label-attachment_description']['el-gr'] = "Περιγραφή";
+$text['label-attachment_description']['es-cl'] = "Descripción";
+$text['label-attachment_description']['es-mx'] = "Descripción";
+$text['label-attachment_description']['fr-ca'] = "Description";
+$text['label-attachment_description']['fr-fr'] = "Description";
+$text['label-attachment_description']['he-il'] = "תיאור";
+$text['label-attachment_description']['it-it'] = "Descrizione";
+$text['label-attachment_description']['ka-ge'] = "აღწერა";
+$text['label-attachment_description']['nl-nl'] = "Omschrijving";
+$text['label-attachment_description']['pl-pl'] = "Opis";
+$text['label-attachment_description']['pt-br'] = "Opis";
+$text['label-attachment_description']['pt-pt'] = "Opis";
+$text['label-attachment_description']['ro-ro'] = "Descriere";
+$text['label-attachment_description']['ru-ru'] = "Описание";
+$text['label-attachment_description']['sv-se'] = "Beskrivning";
+$text['label-attachment_description']['uk-ua'] = "опис";
+$text['label-attachment_description']['zh-cn'] = "描述";
+$text['label-attachment_description']['ja-jp'] = "説明";
+$text['label-attachment_description']['ko-kr'] = "설명";
+
+$text['header_contact_times']['en-us'] = "Times";
+$text['header_contact_times']['en-gb'] = "Times";
+$text['header_contact_times']['ar-eg'] = "مرات";
+$text['header_contact_times']['de-at'] = "Zeiten";
+$text['header_contact_times']['de-ch'] = "Zeiten";
+$text['header_contact_times']['de-de'] = "Zeiten";
+$text['header_contact_times']['el-gr'] = "Φορές";
+$text['header_contact_times']['es-cl'] = "Veces";
+$text['header_contact_times']['es-mx'] = "Veces";
+$text['header_contact_times']['fr-ca'] = "Fois";
+$text['header_contact_times']['fr-fr'] = "Fois";
+$text['header_contact_times']['he-il'] = "זמנים";
+$text['header_contact_times']['it-it'] = "Tempi";
+$text['header_contact_times']['ka-ge'] = "დროები";
+$text['header_contact_times']['nl-nl'] = "Tijden";
+$text['header_contact_times']['pl-pl'] = "Czasy";
+$text['header_contact_times']['pt-br'] = "Vezes";
+$text['header_contact_times']['pt-pt'] = "Vezes";
+$text['header_contact_times']['ro-ro'] = "Times";
+$text['header_contact_times']['ru-ru'] = "Времена";
+$text['header_contact_times']['sv-se'] = "Gånger";
+$text['header_contact_times']['uk-ua'] = "раз";
+$text['header_contact_times']['zh-cn'] = "次";
+$text['header_contact_times']['ja-jp'] = "タイムズ";
+$text['header_contact_times']['ko-kr'] = "타임스";
+
+$text['header-contacts_import_google']['en-us'] = "Import Google Contacts";
+$text['header-contacts_import_google']['en-gb'] = "Import Google Contacts";
+$text['header-contacts_import_google']['ar-eg'] = "استيراد جهات اتصال جوجل";
+$text['header-contacts_import_google']['de-at'] = "Google Kontakte importieren";
+$text['header-contacts_import_google']['de-ch'] = "Google Kontakte importieren";
+$text['header-contacts_import_google']['de-de'] = "Google Kontakte importieren";
+$text['header-contacts_import_google']['el-gr'] = "Εισαγωγή επαφών Google";
+$text['header-contacts_import_google']['es-cl'] = "Importar Contactos de Google";
+$text['header-contacts_import_google']['es-mx'] = "Importar Contactos de Google";
+$text['header-contacts_import_google']['fr-ca'] = "Importer les Contacts Google";
+$text['header-contacts_import_google']['fr-fr'] = "Importer les Contacts Google";
+$text['header-contacts_import_google']['he-il'] = "ייבא אנשי קשר מגוגל";
+$text['header-contacts_import_google']['it-it'] = "Importa Contatti Google";
+$text['header-contacts_import_google']['ka-ge'] = "Google-ის კონტაქტების იმპორტი";
+$text['header-contacts_import_google']['nl-nl'] = "Importeer Google kontacten";
+$text['header-contacts_import_google']['pl-pl'] = "Import kontaktów Google";
+$text['header-contacts_import_google']['pt-br'] = "Importar contas do Google";
+$text['header-contacts_import_google']['pt-pt'] = "Importar Contatos do Google";
+$text['header-contacts_import_google']['ro-ro'] = "Importați Agenda Google";
+$text['header-contacts_import_google']['ru-ru'] = "Импорт Контактов Google";
+$text['header-contacts_import_google']['sv-se'] = "Importera Google Kontakter";
+$text['header-contacts_import_google']['uk-ua'] = "Імпортувати Контакти Google";
+$text['header-contacts_import_google']['zh-cn'] = "导入谷歌通讯录";
+$text['header-contacts_import_google']['ja-jp'] = "Google コンタクトのインポート";
+$text['header-contacts_import_google']['ko-kr'] = "Google 주소록 가져오기";
+
+$text['header-contacts_import']['en-us'] = "Import Contacts";
+$text['header-contacts_import']['en-gb'] = "Import Contacts";
+$text['header-contacts_import']['ar-eg'] = "استيراد جهات الاتصال";
+$text['header-contacts_import']['de-at'] = "Kontakte importieren";
+$text['header-contacts_import']['de-ch'] = "Kontakte importieren";
+$text['header-contacts_import']['de-de'] = "Kontakte importieren";
+$text['header-contacts_import']['el-gr'] = "Εισαγωγή επαφών";
+$text['header-contacts_import']['es-cl'] = "Importar Contactos";
+$text['header-contacts_import']['es-mx'] = "Importar Contactos";
+$text['header-contacts_import']['fr-ca'] = "Importé des Contacts";
+$text['header-contacts_import']['fr-fr'] = "Importé des Contacts";
+$text['header-contacts_import']['he-il'] = "ייבא אנשי קשר";
+$text['header-contacts_import']['it-it'] = "Importa Contatti";
+$text['header-contacts_import']['ka-ge'] = "კონტაქტების იმპორტი";
+$text['header-contacts_import']['nl-nl'] = "Importeer kontacten";
+$text['header-contacts_import']['pl-pl'] = "Importuj kontakty";
+$text['header-contacts_import']['pt-br'] = "Importar contatos";
+$text['header-contacts_import']['pt-pt'] = "Importar Contactos";
+$text['header-contacts_import']['ro-ro'] = "Importați contacte";
+$text['header-contacts_import']['ru-ru'] = "Импорт Контактов";
+$text['header-contacts_import']['sv-se'] = "Importera Kontakter";
+$text['header-contacts_import']['uk-ua'] = "Імпортувати контакти";
+$text['header-contacts_import']['zh-cn'] = "导入联系人";
+$text['header-contacts_import']['ja-jp'] = "連絡先のインポート";
+$text['header-contacts_import']['ko-kr'] = "연락처 가져오기";
+
+$text['header-contacts']['en-us'] = "Contacts";
+$text['header-contacts']['en-gb'] = "Contacts";
+$text['header-contacts']['ar-eg'] = "جهات الاتصال";
+$text['header-contacts']['de-at'] = "Kontakte";
+$text['header-contacts']['de-ch'] = "Kontakte";
+$text['header-contacts']['de-de'] = "Kontakte";
+$text['header-contacts']['el-gr'] = "Επαφές";
+$text['header-contacts']['es-cl'] = "Contactos";
+$text['header-contacts']['es-mx'] = "Contactos";
+$text['header-contacts']['fr-ca'] = "Contacts";
+$text['header-contacts']['fr-fr'] = "Contacts";
+$text['header-contacts']['he-il'] = "אנשי קשר";
+$text['header-contacts']['it-it'] = "Contatti";
+$text['header-contacts']['ka-ge'] = "კონტაქტები";
+$text['header-contacts']['nl-nl'] = "Kontacten";
+$text['header-contacts']['pl-pl'] = "Kontakty";
+$text['header-contacts']['pt-br'] = "Contatos";
+$text['header-contacts']['pt-pt'] = "Contactos";
+$text['header-contacts']['ro-ro'] = "Contacte";
+$text['header-contacts']['ru-ru'] = "Контакты";
+$text['header-contacts']['sv-se'] = "Kontakter";
+$text['header-contacts']['uk-ua'] = "Контакти";
+$text['header-contacts']['zh-cn'] = "联系人";
+$text['header-contacts']['ja-jp'] = "連絡先";
+$text['header-contacts']['ko-kr'] = "콘택트 렌즈";
+
+$text['header-contact_url-edit']['en-us'] = "Contact URL Edit";
+$text['header-contact_url-edit']['en-gb'] = "Contact URL Edit";
+$text['header-contact_url-edit']['ar-eg'] = "تحرير عنوان URL لجهة الاتصال";
+$text['header-contact_url-edit']['de-at'] = "URL bearbeiten";
+$text['header-contact_url-edit']['de-ch'] = "URL bearbeiten";
+$text['header-contact_url-edit']['de-de'] = "URL bearbeiten";
+$text['header-contact_url-edit']['el-gr'] = "Επεξεργασία συνδέσμου URL επαφής";
+$text['header-contact_url-edit']['es-cl'] = "Correo electrónico de contacto Editar";
+$text['header-contact_url-edit']['es-mx'] = "Correo electrónico de contacto Editar";
+$text['header-contact_url-edit']['fr-ca'] = "URL de Contact Modifier";
+$text['header-contact_url-edit']['fr-fr'] = "Contact Courriel Modifier";
+$text['header-contact_url-edit']['he-il'] = "ערוך כתובת אתר ליצירת קשר";
+$text['header-contact_url-edit']['it-it'] = "Modifica URL Contatto";
+$text['header-contact_url-edit']['ka-ge'] = "კონტაქტის URL-ის ჩასწორება";
+$text['header-contact_url-edit']['nl-nl'] = "Kontact URL bewerken";
+$text['header-contact_url-edit']['pl-pl'] = "Edytuj kontakt URL ";
+$text['header-contact_url-edit']['pt-br'] = "Editar URL de contato";
+$text['header-contact_url-edit']['pt-pt'] = "URL de Contato Editar";
+$text['header-contact_url-edit']['ro-ro'] = "Modificare URL de contact";
+$text['header-contact_url-edit']['ru-ru'] = "Адрес для связи (URL): Изменить";
+$text['header-contact_url-edit']['sv-se'] = "Ändra Kontakt URL";
+$text['header-contact_url-edit']['uk-ua'] = "Змінити URL-адресу контакту";
+$text['header-contact_url-edit']['zh-cn'] = "联系网址编辑";
+$text['header-contact_url-edit']['ja-jp'] = "連絡先 URL 編集";
+$text['header-contact_url-edit']['ko-kr'] = "연락처 URL 편집";
+
+$text['header-contact_url-add']['en-us'] = "Contact URL Add";
+$text['header-contact_url-add']['en-gb'] = "Contact URL Add";
+$text['header-contact_url-add']['ar-eg'] = "إضافة عنوان URL لجهة الاتصال";
+$text['header-contact_url-add']['de-at'] = "URL hinzufügen";
+$text['header-contact_url-add']['de-ch'] = "URL hinzufügen";
+$text['header-contact_url-add']['de-de'] = "URL hinzufügen";
+$text['header-contact_url-add']['el-gr'] = "Προσθήκη συνδέσμου URL επαφής";
+$text['header-contact_url-add']['es-cl'] = "Correo electrónico de contacto Agregar";
+$text['header-contact_url-add']['es-mx'] = "Correo electrónico de contacto Agregar";
+$text['header-contact_url-add']['fr-ca'] = "URL de Contactez Ajouter";
+$text['header-contact_url-add']['fr-fr'] = "Contactez-mail Ajouter";
+$text['header-contact_url-add']['he-il'] = "כתובת אתר ליצירת קשר הוסף";
+$text['header-contact_url-add']['it-it'] = "Inserisci URL Contatto";
+$text['header-contact_url-add']['ka-ge'] = "კონტაქტის URL-ის დამატება";
+$text['header-contact_url-add']['nl-nl'] = "Kontact URL toevoegen";
+$text['header-contact_url-add']['pl-pl'] = "Dodaj kontakt URL ";
+$text['header-contact_url-add']['pt-br'] = "Adicionar contato de e-mail";
+$text['header-contact_url-add']['pt-pt'] = "Contato e-mail Adicionar";
+$text['header-contact_url-add']['ro-ro'] = "Adresa URL de contact Adăugați";
+$text['header-contact_url-add']['ru-ru'] = "Адрес для связи (URL): Добавить";
+$text['header-contact_url-add']['sv-se'] = "Lägg Till Kontakt URL";
+$text['header-contact_url-add']['uk-ua'] = "Контакт URL Додати";
+$text['header-contact_url-add']['zh-cn'] = "联系网址 添加";
+$text['header-contact_url-add']['ja-jp'] = "連絡先 URL 追加";
+$text['header-contact_url-add']['ko-kr'] = "연락처 URL 추가";
+
+$text['header-contact_time_edit']['en-us'] = "Time Edit";
+$text['header-contact_time_edit']['en-gb'] = "Time Edit";
+$text['header-contact_time_edit']['ar-eg'] = "تحرير الوقت";
+$text['header-contact_time_edit']['de-at'] = "Zeit bearbeiten";
+$text['header-contact_time_edit']['de-ch'] = "Zeit bearbeiten";
+$text['header-contact_time_edit']['de-de'] = "Zeit bearbeiten";
+$text['header-contact_time_edit']['el-gr'] = "Επεξεργασία ώρας";
+$text['header-contact_time_edit']['es-cl'] = "Tiempo de Redacción";
+$text['header-contact_time_edit']['es-mx'] = "Tiempo de Redacción";
+$text['header-contact_time_edit']['fr-ca'] = "Modifier Temps";
+$text['header-contact_time_edit']['fr-fr'] = "Modifier Temps";
+$text['header-contact_time_edit']['he-il'] = "זמן עדכון";
+$text['header-contact_time_edit']['it-it'] = "Modifica Tempo";
+$text['header-contact_time_edit']['ka-ge'] = "დროის ჩასწორება";
+$text['header-contact_time_edit']['nl-nl'] = "Tijd bewerken";
+$text['header-contact_time_edit']['pl-pl'] = "Czas Edycja";
+$text['header-contact_time_edit']['pt-br'] = "Tempo Editar";
+$text['header-contact_time_edit']['pt-pt'] = "Tempo Editar";
+$text['header-contact_time_edit']['ro-ro'] = "تحرير الوقت";
+$text['header-contact_time_edit']['ru-ru'] = "Редактировать Время";
+$text['header-contact_time_edit']['sv-se'] = "Redigera Tid";
+$text['header-contact_time_edit']['uk-ua'] = "час Редагувати";
+$text['header-contact_time_edit']['zh-cn'] = "时间编辑";
+$text['header-contact_time_edit']['ja-jp'] = "時間編集";
+$text['header-contact_time_edit']['ko-kr'] = "시간 편집";
+
+$text['header-contact_time_add']['en-us'] = "Time Add";
+$text['header-contact_time_add']['en-gb'] = "Time Add";
+$text['header-contact_time_add']['ar-eg'] = "إضافة الوقت";
+$text['header-contact_time_add']['de-at'] = "Zeit hinzufügen";
+$text['header-contact_time_add']['de-ch'] = "Zeit hinzufügen";
+$text['header-contact_time_add']['de-de'] = "Zeit hinzufügen";
+$text['header-contact_time_add']['el-gr'] = "Προσθήκη ώρας";
+$text['header-contact_time_add']['es-cl'] = "Tiempo Agregar";
+$text['header-contact_time_add']['es-mx'] = "Tiempo Agregar";
+$text['header-contact_time_add']['fr-ca'] = "Ajouter Temps";
+$text['header-contact_time_add']['fr-fr'] = "Ajouter Temps";
+$text['header-contact_time_add']['he-il'] = "זמן הוסף";
+$text['header-contact_time_add']['it-it'] = "Inserisci Tempo";
+$text['header-contact_time_add']['ka-ge'] = "დროის დამატება";
+$text['header-contact_time_add']['nl-nl'] = "Tijd toevoegen";
+$text['header-contact_time_add']['pl-pl'] = "Czas Dodawania";
+$text['header-contact_time_add']['pt-br'] = "Time Adicionar";
+$text['header-contact_time_add']['pt-pt'] = "Time Adicionar";
+$text['header-contact_time_add']['ro-ro'] = "Time Add";
+$text['header-contact_time_add']['ru-ru'] = "Добавить Время";
+$text['header-contact_time_add']['sv-se'] = "Time Lägg";
+$text['header-contact_time_add']['uk-ua'] = "час додавання";
+$text['header-contact_time_add']['zh-cn'] = "时间添加";
+$text['header-contact_time_add']['ja-jp'] = "時間追加";
+$text['header-contact_time_add']['ko-kr'] = "시간 추가";
+
+$text['header-contact_setting_edit']['en-us'] = "Contact Setting Edit";
+$text['header-contact_setting_edit']['en-gb'] = "Contact Setting Edit";
+$text['header-contact_setting_edit']['ar-eg'] = "تحرير إعداد الاتصال";
+$text['header-contact_setting_edit']['de-at'] = "Einstellung bearbeiten";
+$text['header-contact_setting_edit']['de-ch'] = "Einstellung bearbeiten";
+$text['header-contact_setting_edit']['de-de'] = "Einstellung bearbeiten";
+$text['header-contact_setting_edit']['el-gr'] = "Επεξεργασία ρυθμίσεων επαφής";
+$text['header-contact_setting_edit']['es-cl'] = "Configuraciones de contacto";
+$text['header-contact_setting_edit']['es-mx'] = "Configuraciones de contacto";
+$text['header-contact_setting_edit']['fr-ca'] = "Paramètres du Contact";
+$text['header-contact_setting_edit']['fr-fr'] = "Paramètres du Contact";
+$text['header-contact_setting_edit']['he-il'] = "עריכת הגדרות איש קשר";
+$text['header-contact_setting_edit']['it-it'] = "Modifica Parametro Contatto";
+$text['header-contact_setting_edit']['ka-ge'] = "კონტაქტის პარამეტრის ჩასწორება";
+$text['header-contact_setting_edit']['nl-nl'] = "Kontact instelling bewerken";
+$text['header-contact_setting_edit']['pl-pl'] = "Edytuj ustawienia kontaktu";
+$text['header-contact_setting_edit']['pt-br'] = "Definições do contato";
+$text['header-contact_setting_edit']['pt-pt'] = "Definições do Contacto";
+$text['header-contact_setting_edit']['ro-ro'] = "Editare setări de contact";
+$text['header-contact_setting_edit']['ru-ru'] = "Редактировать Параметры Контакта";
+$text['header-contact_setting_edit']['sv-se'] = "Ändra Kontakt Inställning";
+$text['header-contact_setting_edit']['uk-ua'] = "Редагування налаштувань контакту";
+$text['header-contact_setting_edit']['zh-cn'] = "联系人设置编辑";
+$text['header-contact_setting_edit']['ja-jp'] = "連絡先設定編集";
+$text['header-contact_setting_edit']['ko-kr'] = "연락처 설정 편집";
+
+$text['header-contact_setting_add']['en-us'] = "Contact Setting Add";
+$text['header-contact_setting_add']['en-gb'] = "Contact Setting Add";
+$text['header-contact_setting_add']['ar-eg'] = "إضافة إعداد الاتصال";
+$text['header-contact_setting_add']['de-at'] = "Einstellung für Kontakt hinzufügen";
+$text['header-contact_setting_add']['de-ch'] = "Einstellung für Kontakt hinzufügen";
+$text['header-contact_setting_add']['de-de'] = "Einstellung für Kontakt hinzufügen";
+$text['header-contact_setting_add']['el-gr'] = "Προσθήκη ρύθμισης επαφής";
+$text['header-contact_setting_add']['es-cl'] = "Agregar Configuración de Contacto";
+$text['header-contact_setting_add']['es-mx'] = "Agregar Configuración de Contacto";
+$text['header-contact_setting_add']['fr-ca'] = "Ajouter un paramètre au Contact";
+$text['header-contact_setting_add']['fr-fr'] = "Ajouter un paramètre au Contact";
+$text['header-contact_setting_add']['he-il'] = "הגדרת איש קשר הוסף";
+$text['header-contact_setting_add']['it-it'] = "Inserisci Parametro Contatto";
+$text['header-contact_setting_add']['ka-ge'] = "კონტაქტის პარამეტრის დამატება";
+$text['header-contact_setting_add']['nl-nl'] = "Kontact instelling toevoegen";
+$text['header-contact_setting_add']['pl-pl'] = "Dodaj ustawienia kontaktu";
+$text['header-contact_setting_add']['pt-br'] = "Adicionar definições do contato";
+$text['header-contact_setting_add']['pt-pt'] = "Adicionar Definição ao Contacto";
+$text['header-contact_setting_add']['ro-ro'] = "Contact Setări Adăugare";
+$text['header-contact_setting_add']['ru-ru'] = "Добавить Параметры Контакта";
+$text['header-contact_setting_add']['sv-se'] = "Lägg Till Kontakt Inställning";
+$text['header-contact_setting_add']['uk-ua'] = "Налаштування контакту Додати";
+$text['header-contact_setting_add']['zh-cn'] = "联系人设置添加";
+$text['header-contact_setting_add']['ja-jp'] = "連絡先設定追加";
+$text['header-contact_setting_add']['ko-kr'] = "연락처 설정 추가";
+
+$text['header-contact_relations']['en-us'] = "Relations";
+$text['header-contact_relations']['en-gb'] = "Relations";
+$text['header-contact_relations']['ar-eg'] = "علاقات";
+$text['header-contact_relations']['de-at'] = "Beziehungen";
+$text['header-contact_relations']['de-ch'] = "Beziehungen";
+$text['header-contact_relations']['de-de'] = "Beziehungen";
+$text['header-contact_relations']['el-gr'] = "Συσχετίσεις";
+$text['header-contact_relations']['es-cl'] = "Relaciones";
+$text['header-contact_relations']['es-mx'] = "Relaciones";
+$text['header-contact_relations']['fr-ca'] = "Rapports";
+$text['header-contact_relations']['fr-fr'] = "Rapports";
+$text['header-contact_relations']['he-il'] = "יחסים";
+$text['header-contact_relations']['it-it'] = "Relazioni";
+$text['header-contact_relations']['ka-ge'] = "ურთიერთობები";
+$text['header-contact_relations']['nl-nl'] = "Relaties";
+$text['header-contact_relations']['pl-pl'] = "Relacje";
+$text['header-contact_relations']['pt-br'] = "Relações";
+$text['header-contact_relations']['pt-pt'] = "Relações";
+$text['header-contact_relations']['ro-ro'] = "Relaţii";
+$text['header-contact_relations']['ru-ru'] = "Связи";
+$text['header-contact_relations']['sv-se'] = "Relationer";
+$text['header-contact_relations']['uk-ua'] = "Відносини";
+$text['header-contact_relations']['zh-cn'] = "关系";
+$text['header-contact_relations']['ja-jp'] = "関係";
+$text['header-contact_relations']['ko-kr'] = "처지";
+
+$text['header-contact_relation']['en-us'] = "Contact Relation";
+$text['header-contact_relation']['en-gb'] = "Contact Relation";
+$text['header-contact_relation']['ar-eg'] = "علاقات الاتصال";
+$text['header-contact_relation']['de-at'] = "Kontakt Beziehungen";
+$text['header-contact_relation']['de-ch'] = "Kontakt Beziehungen";
+$text['header-contact_relation']['de-de'] = "Kontakt Beziehungen";
+$text['header-contact_relation']['el-gr'] = "Συσχέτιση επαφής";
+$text['header-contact_relation']['es-cl'] = "Contacto Relación";
+$text['header-contact_relation']['es-mx'] = "Contacto Relación";
+$text['header-contact_relation']['fr-ca'] = "Contactez Relation";
+$text['header-contact_relation']['fr-fr'] = "Contactez Relation";
+$text['header-contact_relation']['he-il'] = "צור קשר";
+$text['header-contact_relation']['it-it'] = "Relazioni Contatto";
+$text['header-contact_relation']['ka-ge'] = "საკონტაქტო პირი";
+$text['header-contact_relation']['nl-nl'] = "Kontact relatie";
+$text['header-contact_relation']['pl-pl'] = "Relacja kontaktowa";
+$text['header-contact_relation']['pt-br'] = "Contato Relação";
+$text['header-contact_relation']['pt-pt'] = "Contato Relação";
+$text['header-contact_relation']['ro-ro'] = "Relația de contact";
+$text['header-contact_relation']['ru-ru'] = "Контактное лицо";
+$text['header-contact_relation']['sv-se'] = "Kontakt Relation";
+$text['header-contact_relation']['uk-ua'] = "Контактні відносини";
+$text['header-contact_relation']['zh-cn'] = "联系关系";
+$text['header-contact_relation']['ja-jp'] = "連絡先";
+$text['header-contact_relation']['ko-kr'] = "연락처 관계";
+
+$text['header-contact_phones-edit']['en-us'] = "Contact Number Edit";
+$text['header-contact_phones-edit']['en-gb'] = "Contact Number Edit";
+$text['header-contact_phones-edit']['ar-eg'] = "تحرير رقم الاتصال";
+$text['header-contact_phones-edit']['de-at'] = "Nummer des Kontakts bearbeiten";
+$text['header-contact_phones-edit']['de-ch'] = "Nummer des Kontakts bearbeiten";
+$text['header-contact_phones-edit']['de-de'] = "Nummer des Kontakts bearbeiten";
+$text['header-contact_phones-edit']['el-gr'] = "Επεξεργασία αριθμού επαφής";
+$text['header-contact_phones-edit']['es-cl'] = "Editar Número de Contacto";
+$text['header-contact_phones-edit']['es-mx'] = "Editar Número de Contacto";
+$text['header-contact_phones-edit']['fr-ca'] = "Numéro du Contact Modifier";
+$text['header-contact_phones-edit']['fr-fr'] = "Editer le téléphone du Contact";
+$text['header-contact_phones-edit']['he-il'] = "עריכת מספר איש קשר";
+$text['header-contact_phones-edit']['it-it'] = "Modifica Numero Contatto";
+$text['header-contact_phones-edit']['ka-ge'] = "კონტაქტის ნომრის ჩასწორება";
+$text['header-contact_phones-edit']['nl-nl'] = "Kontact nummer bewerken";
+$text['header-contact_phones-edit']['pl-pl'] = "Edytuj numer kontaktu";
+$text['header-contact_phones-edit']['pt-br'] = "Editar contato telefonico";
+$text['header-contact_phones-edit']['pt-pt'] = "Editar contacto telefónico";
+$text['header-contact_phones-edit']['ro-ro'] = "Editare număr de contact";
+$text['header-contact_phones-edit']['ru-ru'] = "Редактировать Номер Контакта";
+$text['header-contact_phones-edit']['sv-se'] = "Ändra Kontakt Nummer";
+$text['header-contact_phones-edit']['uk-ua'] = "Редагувати контактний номер";
+$text['header-contact_phones-edit']['zh-cn'] = "联系电话 编辑";
+$text['header-contact_phones-edit']['ja-jp'] = "連絡先番号の編集";
+$text['header-contact_phones-edit']['ko-kr'] = "연락처 편집";
+
+$text['header-contact_phones-add']['en-us'] = "Contact Number Add";
+$text['header-contact_phones-add']['en-gb'] = "Contact Number Add";
+$text['header-contact_phones-add']['ar-eg'] = "إضافة رقم الاتصال";
+$text['header-contact_phones-add']['de-at'] = "Nummer zum Kontakt hinzufügen";
+$text['header-contact_phones-add']['de-ch'] = "Nummer zum Kontakt hinzufügen";
+$text['header-contact_phones-add']['de-de'] = "Nummer zum Kontakt hinzufügen";
+$text['header-contact_phones-add']['el-gr'] = "Προσθήκη αριθμού επαφής";
+$text['header-contact_phones-add']['es-cl'] = "Agregar Número de Contacto";
+$text['header-contact_phones-add']['es-mx'] = "Agregar Número de Contacto";
+$text['header-contact_phones-add']['fr-ca'] = "Numéro Contact Ajouter";
+$text['header-contact_phones-add']['fr-fr'] = "Ajouter un téléphone au Contact";
+$text['header-contact_phones-add']['he-il'] = "מספר איש קשר הוסף";
+$text['header-contact_phones-add']['it-it'] = "Inserisci Numero Contatto";
+$text['header-contact_phones-add']['ka-ge'] = "კონტაქტის ნომრის დამატება";
+$text['header-contact_phones-add']['nl-nl'] = "Kontact nummer toevoegen";
+$text['header-contact_phones-add']['pl-pl'] = "Dodaj numer kontaktu";
+$text['header-contact_phones-add']['pt-br'] = "Adicionar contato telefonico";
+$text['header-contact_phones-add']['pt-pt'] = "Adicionar contacto telefónico";
+$text['header-contact_phones-add']['ro-ro'] = "Adăugați numărul de contact";
+$text['header-contact_phones-add']['ru-ru'] = "Добавить Номер Контакта";
+$text['header-contact_phones-add']['sv-se'] = "Lägg Till Kontakt Nummer";
+$text['header-contact_phones-add']['uk-ua'] = "Контактний номер Додати";
+$text['header-contact_phones-add']['zh-cn'] = "联系电话 添加";
+$text['header-contact_phones-add']['ja-jp'] = "連絡先番号の追加";
+$text['header-contact_phones-add']['ko-kr'] = "연락처 추가";
+
+$text['header-contact_notes-edit']['en-us'] = "Contact Note Edit";
+$text['header-contact_notes-edit']['en-gb'] = "Contact Note Edit";
+$text['header-contact_notes-edit']['ar-eg'] = "تحرير ملاحظة جهة الاتصال";
+$text['header-contact_notes-edit']['de-at'] = "Notiz für Kontakt bearbeiten";
+$text['header-contact_notes-edit']['de-ch'] = "Notiz für Kontakt bearbeiten";
+$text['header-contact_notes-edit']['de-de'] = "Notiz für Kontakt bearbeiten";
+$text['header-contact_notes-edit']['el-gr'] = "Επεξεργασία σημείωσης επαφής";
+$text['header-contact_notes-edit']['es-cl'] = "Editar Nota de Contactos";
+$text['header-contact_notes-edit']['es-mx'] = "Editar Nota de Contactos";
+$text['header-contact_notes-edit']['fr-ca'] = "Modifier la note du contact";
+$text['header-contact_notes-edit']['fr-fr'] = "Editer la note du contact";
+$text['header-contact_notes-edit']['he-il'] = "עריכת הערה ליצירת קשר";
+$text['header-contact_notes-edit']['it-it'] = "Modifica Note Contatto";
+$text['header-contact_notes-edit']['ka-ge'] = "კონტაქტის შენიშვნის ჩასწორება";
+$text['header-contact_notes-edit']['nl-nl'] = "Kontact notitie bewerken";
+$text['header-contact_notes-edit']['pl-pl'] = "Edytuj notatki kontaktu";
+$text['header-contact_notes-edit']['pt-br'] = "Editar notas de contato";
+$text['header-contact_notes-edit']['pt-pt'] = "Editar notas de contacto";
+$text['header-contact_notes-edit']['ro-ro'] = "Editare notă de contact";
+$text['header-contact_notes-edit']['ru-ru'] = "Редактировать контактную информацию";
+$text['header-contact_notes-edit']['sv-se'] = "Ändra Kontakt Notering";
+$text['header-contact_notes-edit']['uk-ua'] = "Примітка до контакту Редагувати";
+$text['header-contact_notes-edit']['zh-cn'] = "联系人备注编辑";
+$text['header-contact_notes-edit']['ja-jp'] = "連絡先メモの編集";
+$text['header-contact_notes-edit']['ko-kr'] = "연락처 메모 편집";
+
+$text['header-contact_notes-add']['en-us'] = "Contact Note Add";
+$text['header-contact_notes-add']['en-gb'] = "Contact Note Add";
+$text['header-contact_notes-add']['ar-eg'] = "إضافة ملاحظة جهة الاتصال";
+$text['header-contact_notes-add']['de-at'] = "Notiz zum Kontakt hinzufügen";
+$text['header-contact_notes-add']['de-ch'] = "Notiz zum Kontakt hinzufügen";
+$text['header-contact_notes-add']['de-de'] = "Notiz zum Kontakt hinzufügen";
+$text['header-contact_notes-add']['el-gr'] = "Προσθήκη σημείωσης επαφής";
+$text['header-contact_notes-add']['es-cl'] = "Agregar Nota de Contacto";
+$text['header-contact_notes-add']['es-mx'] = "Agregar Nota de Contacto";
+$text['header-contact_notes-add']['fr-ca'] = "Ajouter une note au contact";
+$text['header-contact_notes-add']['fr-fr'] = "Ajouter une note au contact";
+$text['header-contact_notes-add']['he-il'] = "הערה ליצירת קשר הוסף";
+$text['header-contact_notes-add']['it-it'] = "Inserisci Note Contatto";
+$text['header-contact_notes-add']['ka-ge'] = "კონტაქტის შენიშვნის დამატება";
+$text['header-contact_notes-add']['nl-nl'] = "Kontact notitie toevoegen";
+$text['header-contact_notes-add']['pl-pl'] = "Dodaj notatki kontaktu";
+$text['header-contact_notes-add']['pt-br'] = "Adicionar nota de contato";
+$text['header-contact_notes-add']['pt-pt'] = "Adicionar nota de contacto";
+$text['header-contact_notes-add']['ro-ro'] = "Notă de contact Adăugați";
+$text['header-contact_notes-add']['ru-ru'] = "Добавить контактную информацию";
+$text['header-contact_notes-add']['sv-se'] = "Lägg Till Kontakt Notering";
+$text['header-contact_notes-add']['uk-ua'] = "Контактна інформація Дод";
+$text['header-contact_notes-add']['zh-cn'] = "联系人备注添加";
+$text['header-contact_notes-add']['ja-jp'] = "連絡先メモの追加";
+$text['header-contact_notes-add']['ko-kr'] = "연락처 메모 추가";
+
+$text['header-contact_email-edit']['en-us'] = "Contact Email Edit";
+$text['header-contact_email-edit']['en-gb'] = "Contact Email Edit";
+$text['header-contact_email-edit']['ar-eg'] = "تحرير البريد الإلكتروني لجهة الاتصال";
+$text['header-contact_email-edit']['de-at'] = "Email des Kontakts bearbeiten";
+$text['header-contact_email-edit']['de-ch'] = "Email des Kontakts bearbeiten";
+$text['header-contact_email-edit']['de-de'] = "Email des Kontakts bearbeiten";
+$text['header-contact_email-edit']['el-gr'] = "Επεξεργασία e-mail επαφής";
+$text['header-contact_email-edit']['es-cl'] = "Correo electrónico de contacto Editar";
+$text['header-contact_email-edit']['es-mx'] = "Correo electrónico de contacto Editar";
+$text['header-contact_email-edit']['fr-ca'] = "Courriel Contact Modifier";
+$text['header-contact_email-edit']['fr-fr'] = "Contact Courriel Modifier";
+$text['header-contact_email-edit']['he-il'] = "עריכת דואל ליצירת קשר";
+$text['header-contact_email-edit']['it-it'] = "Modifica Email Contatto";
+$text['header-contact_email-edit']['ka-ge'] = "კონტაქტის ელფოსტის ჩასწორება";
+$text['header-contact_email-edit']['nl-nl'] = "Kontact E-mail bewerken";
+$text['header-contact_email-edit']['pl-pl'] = "Edutuj adres mailowy kontaktu";
+$text['header-contact_email-edit']['pt-br'] = "Editar email do contato";
+$text['header-contact_email-edit']['pt-pt'] = "Email de Contato Editar";
+$text['header-contact_email-edit']['ro-ro'] = "Editare e-mail de contact";
+$text['header-contact_email-edit']['ru-ru'] = "Редактировать контактный адрес электронной почты";
+$text['header-contact_email-edit']['sv-se'] = "Ändra Kontakt E-post";
+$text['header-contact_email-edit']['uk-ua'] = "Контактна адреса електронної пошти Редагувати";
+$text['header-contact_email-edit']['zh-cn'] = "联系人电子邮件编辑";
+$text['header-contact_email-edit']['ja-jp'] = "連絡先メール編集";
+$text['header-contact_email-edit']['ko-kr'] = "연락처 이메일 편집";
+
+$text['header-contact_email-add']['en-us'] = "Contact Email Add";
+$text['header-contact_email-add']['en-gb'] = "Contact Email Add";
+$text['header-contact_email-add']['ar-eg'] = "إضافة البريد الإلكتروني لجهة الاتصال";
+$text['header-contact_email-add']['de-at'] = "Email zum Kontakt hinzufügen";
+$text['header-contact_email-add']['de-ch'] = "Email zum Kontakt hinzufügen";
+$text['header-contact_email-add']['de-de'] = "Email zum Kontakt hinzufügen";
+$text['header-contact_email-add']['el-gr'] = "Προσθήκη e-mail επαφής";
+$text['header-contact_email-add']['es-cl'] = "Correo electrónico de contacto Agregar";
+$text['header-contact_email-add']['es-mx'] = "Correo electrónico de contacto Agregar";
+$text['header-contact_email-add']['fr-ca'] = "Courriel Contact Ajouter";
+$text['header-contact_email-add']['fr-fr'] = "Contactez-mail Ajouter";
+$text['header-contact_email-add']['he-il'] = "אימייל ליצירת קשר הוסף";
+$text['header-contact_email-add']['it-it'] = "Inserisci Email Contatto";
+$text['header-contact_email-add']['ka-ge'] = "კონტაქტის ელფოსტის დამატება";
+$text['header-contact_email-add']['nl-nl'] = "Kontact E-mail toevoegen";
+$text['header-contact_email-add']['pl-pl'] = "Dodaj adres mailowy kontaktu";
+$text['header-contact_email-add']['pt-br'] = "Adicionar email de contato";
+$text['header-contact_email-add']['pt-pt'] = "Contato e-mail Adicionar";
+$text['header-contact_email-add']['ro-ro'] = "Contact Email Adaugă";
+$text['header-contact_email-add']['ru-ru'] = "Добавить контактный адрес электронной почты";
+$text['header-contact_email-add']['sv-se'] = "Lägg Till Kontakt E-post";
+$text['header-contact_email-add']['uk-ua'] = "Контактна адреса електронної пошти Додати";
+$text['header-contact_email-add']['zh-cn'] = "联系邮箱 添加";
+$text['header-contact_email-add']['ja-jp'] = "連絡先メールアドレス追加";
+$text['header-contact_email-add']['ko-kr'] = "연락처 이메일 추가";
+
+$text['header-contact_addresses-edit']['en-us'] = "Contact Address Edit";
+$text['header-contact_addresses-edit']['en-gb'] = "Contact Address Edit";
+$text['header-contact_addresses-edit']['ar-eg'] = "تحرير عنوان جهة الاتصال";
+$text['header-contact_addresses-edit']['de-at'] = "Adresse des Kontakts bearbeiten";
+$text['header-contact_addresses-edit']['de-ch'] = "Adresse des Kontakts bearbeiten";
+$text['header-contact_addresses-edit']['de-de'] = "Adresse des Kontakts bearbeiten";
+$text['header-contact_addresses-edit']['el-gr'] = "Επεξεργασία διεύθυνσης επαφής";
+$text['header-contact_addresses-edit']['es-cl'] = "Editar Dirección de Contacto";
+$text['header-contact_addresses-edit']['es-mx'] = "Editar Dirección de Contacto";
+$text['header-contact_addresses-edit']['fr-ca'] = "Adresse Contact Modifier";
+$text['header-contact_addresses-edit']['fr-fr'] = "Editer l'adresse du contact";
+$text['header-contact_addresses-edit']['he-il'] = "עריכת כתובת איש קשר";
+$text['header-contact_addresses-edit']['it-it'] = "Modifica Indirizzo Contatto";
+$text['header-contact_addresses-edit']['ka-ge'] = "კონტაქტის მისამართის ჩასწორება";
+$text['header-contact_addresses-edit']['nl-nl'] = "Kontact adres bewerken";
+$text['header-contact_addresses-edit']['pl-pl'] = "Edytuj adres kontaktu";
+$text['header-contact_addresses-edit']['pt-br'] = "Editar endereço de contato";
+$text['header-contact_addresses-edit']['pt-pt'] = "Editar endereço do contacto";
+$text['header-contact_addresses-edit']['ro-ro'] = "Editare adresa de contact";
+$text['header-contact_addresses-edit']['ru-ru'] = "Редактировать контактный адрес";
+$text['header-contact_addresses-edit']['sv-se'] = "Ändra Kontakt Adress";
+$text['header-contact_addresses-edit']['uk-ua'] = "Змінити контактну адресу";
+$text['header-contact_addresses-edit']['zh-cn'] = "联络地址编辑";
+$text['header-contact_addresses-edit']['ja-jp'] = "連絡先住所編集";
+$text['header-contact_addresses-edit']['ko-kr'] = "연락처 주소 편집";
+
+$text['header-contact_addresses-add']['en-us'] = "Contact Address Add";
+$text['header-contact_addresses-add']['en-gb'] = "Contact Address Add";
+$text['header-contact_addresses-add']['ar-eg'] = "إضافة عنوان الاتصال";
+$text['header-contact_addresses-add']['de-at'] = "Adresse zum Kontakt hinzufügen";
+$text['header-contact_addresses-add']['de-ch'] = "Adresse zum Kontakt hinzufügen";
+$text['header-contact_addresses-add']['de-de'] = "Adresse zum Kontakt hinzufügen";
+$text['header-contact_addresses-add']['el-gr'] = "Προσθήκη διεύθυνσης επαφής";
+$text['header-contact_addresses-add']['es-cl'] = "Agregar Dirección de Contacto";
+$text['header-contact_addresses-add']['es-mx'] = "Agregar Dirección de Contacto";
+$text['header-contact_addresses-add']['fr-ca'] = "Adresse Contact Ajouter";
+$text['header-contact_addresses-add']['fr-fr'] = "Ajouter une adresse au contact";
+$text['header-contact_addresses-add']['he-il'] = "כתובת איש קשר הוסף";
+$text['header-contact_addresses-add']['it-it'] = "Inserisci Indirizzo Contatto";
+$text['header-contact_addresses-add']['ka-ge'] = "კონტაქტის მისამართის დამატება";
+$text['header-contact_addresses-add']['nl-nl'] = "Kontact adres toevoegen";
+$text['header-contact_addresses-add']['pl-pl'] = "Dodaj adres kontaktu";
+$text['header-contact_addresses-add']['pt-br'] = "Adicionar endereço de contato";
+$text['header-contact_addresses-add']['pt-pt'] = "Adicionar endereço do contacto";
+$text['header-contact_addresses-add']['ro-ro'] = "Adresa de contact Adaugă";
+$text['header-contact_addresses-add']['ru-ru'] = "Добавить контактный адрес";
+$text['header-contact_addresses-add']['sv-se'] = "Lägg Till Kontakt Adress";
+$text['header-contact_addresses-add']['uk-ua'] = "Контактна адреса Додати";
+$text['header-contact_addresses-add']['zh-cn'] = "联系地址 添加";
+$text['header-contact_addresses-add']['ja-jp'] = "連絡先追加";
+$text['header-contact_addresses-add']['ko-kr'] = "연락처 주소 추가";
+
+$text['header-contact_attachment-edit']['en-us'] = "Contact Attachment Edit";
+$text['header-contact_attachment-edit']['en-gb'] = "Contact Attachment Edit";
+$text['header-contact_attachment-edit']['ar-eg'] = "تحرير مرفق جهة الاتصال";
+$text['header-contact_attachment-edit']['de-at'] = "Kontaktanhang bearbeiten";
+$text['header-contact_attachment-edit']['de-ch'] = "Kontaktanhang bearbeiten";
+$text['header-contact_attachment-edit']['de-de'] = "Kontaktanhang bearbeiten";
+$text['header-contact_attachment-edit']['el-gr'] = "Επεξεργασία επισύναψης επαφής";
+$text['header-contact_attachment-edit']['es-cl'] = "Adjunto de contacto Editar";
+$text['header-contact_attachment-edit']['es-mx'] = "Adjunto de contacto Editar";
+$text['header-contact_attachment-edit']['fr-ca'] = "Pièce Jointe Contact Modifier";
+$text['header-contact_attachment-edit']['fr-fr'] = "Pièce Jointe Contact Modifier";
+$text['header-contact_attachment-edit']['he-il'] = "עריכת קובץ מצורף ליצירת קשר";
+$text['header-contact_attachment-edit']['it-it'] = "Contatto Modifica allegato";
+$text['header-contact_attachment-edit']['ka-ge'] = "კონტაქტის მიმაგრებული ფაილის ჩასწორება";
+$text['header-contact_attachment-edit']['nl-nl'] = "Kontact aanhangsel bewerken";
+$text['header-contact_attachment-edit']['pl-pl'] = "Edycja załącznika kontaktowego";
+$text['header-contact_attachment-edit']['pt-br'] = "Editar anexo de contato";
+$text['header-contact_attachment-edit']['pt-pt'] = "Editar anexo de contato";
+$text['header-contact_attachment-edit']['ro-ro'] = "Editare atașament de contact";
+$text['header-contact_attachment-edit']['ru-ru'] = "Контактное приложение Править";
+$text['header-contact_attachment-edit']['sv-se'] = "Kontakta Bilaga Redigera";
+$text['header-contact_attachment-edit']['uk-ua'] = "Редагування вкладення контакту";
+$text['header-contact_attachment-edit']['zh-cn'] = "联系人附件编辑";
+$text['header-contact_attachment-edit']['ja-jp'] = "連絡先の添付ファイルの編集";
+$text['header-contact_attachment-edit']['ko-kr'] = "연락처 편집";
+
+$text['header-contact_attachment-add']['en-us'] = "Contact Attachment Add";
+$text['header-contact_attachment-add']['en-gb'] = "Contact Attachment Add";
+$text['header-contact_attachment-add']['ar-eg'] = "إضافة مرفق الاتصال";
+$text['header-contact_attachment-add']['de-at'] = "Kontaktanhang hinzufügen";
+$text['header-contact_attachment-add']['de-ch'] = "Kontaktanhang hinzufügen";
+$text['header-contact_attachment-add']['de-de'] = "Kontaktanhang hinzufügen";
+$text['header-contact_attachment-add']['el-gr'] = "Προσθήκη επισύναψης επαφής";
+$text['header-contact_attachment-add']['es-cl'] = "Adjunto de contacto Agregar";
+$text['header-contact_attachment-add']['es-mx'] = "Adjunto de contacto Agregar";
+$text['header-contact_attachment-add']['fr-ca'] = "Pièce Jointe Contact Ajouter";
+$text['header-contact_attachment-add']['fr-fr'] = "Pièce Jointe Contact Ajouter";
+$text['header-contact_attachment-add']['he-il'] = "צור קשר הוסף";
+$text['header-contact_attachment-add']['it-it'] = "Contatto allegato Aggiungi";
+$text['header-contact_attachment-add']['ka-ge'] = "კონტაქტის მიმაგრებული ფაილის დამატება";
+$text['header-contact_attachment-add']['nl-nl'] = "Kontact aanhangsel toevoegen";
+$text['header-contact_attachment-add']['pl-pl'] = "Kontakt Załącznik Dodaj";
+$text['header-contact_attachment-add']['pt-br'] = "Adicionar anexo de contato";
+$text['header-contact_attachment-add']['pt-pt'] = "Adicionar anexo de contato";
+$text['header-contact_attachment-add']['ro-ro'] = "Atașament de contact Adaugă";
+$text['header-contact_attachment-add']['ru-ru'] = "Добавить вложение в контакт";
+$text['header-contact_attachment-add']['sv-se'] = "Kontaktbilaga Lägg till";
+$text['header-contact_attachment-add']['uk-ua'] = "Вкладення контакту Дод";
+$text['header-contact_attachment-add']['zh-cn'] = "联系人附件添加";
+$text['header-contact_attachment-add']['ja-jp'] = "連絡先添付追加";
+$text['header-contact_attachment-add']['ko-kr'] = "연락처 첨부 추가";
+
+$text['header-contact-edit']['en-us'] = "Contact";
+$text['header-contact-edit']['en-gb'] = "Contact";
+$text['header-contact-edit']['ar-eg'] = "اتصال";
+$text['header-contact-edit']['de-at'] = "Kontakt";
+$text['header-contact-edit']['de-ch'] = "Kontakt";
+$text['header-contact-edit']['de-de'] = "Kontakt";
+$text['header-contact-edit']['el-gr'] = "Επαφή";
+$text['header-contact-edit']['es-cl'] = "Contacto";
+$text['header-contact-edit']['es-mx'] = "Contacto";
+$text['header-contact-edit']['fr-ca'] = "Contact";
+$text['header-contact-edit']['fr-fr'] = "Contact";
+$text['header-contact-edit']['he-il'] = "איש קשר";
+$text['header-contact-edit']['it-it'] = "Contatto";
+$text['header-contact-edit']['ka-ge'] = "კონტაქტი";
+$text['header-contact-edit']['nl-nl'] = "Kontact";
+$text['header-contact-edit']['pl-pl'] = "Kontakt";
+$text['header-contact-edit']['pt-br'] = "Contato";
+$text['header-contact-edit']['pt-pt'] = "Contacto";
+$text['header-contact-edit']['ro-ro'] = "a lua legatura";
+$text['header-contact-edit']['ru-ru'] = "Контакт";
+$text['header-contact-edit']['sv-se'] = "Kontakt";
+$text['header-contact-edit']['uk-ua'] = "Контакт";
+$text['header-contact-edit']['zh-cn'] = "接触";
+$text['header-contact-edit']['ja-jp'] = "コンタクト";
+$text['header-contact-edit']['ko-kr'] = "연락하다";
+
+$text['header-contact-add']['en-us'] = "Contact Add";
+$text['header-contact-add']['en-gb'] = "Contact Add";
+$text['header-contact-add']['ar-eg'] = "إضافة جهة اتصال";
+$text['header-contact-add']['de-at'] = "Kontakt hinzufügen";
+$text['header-contact-add']['de-ch'] = "Kontakt hinzufügen";
+$text['header-contact-add']['de-de'] = "Kontakt hinzufügen";
+$text['header-contact-add']['el-gr'] = "Προσθήκη επαφής";
+$text['header-contact-add']['es-cl'] = "Agregar Contacto";
+$text['header-contact-add']['es-mx'] = "Agregar Contacto";
+$text['header-contact-add']['fr-ca'] = "Ajouter Contact";
+$text['header-contact-add']['fr-fr'] = "Ajouter Contact";
+$text['header-contact-add']['he-il'] = "הוספת איש קשר";
+$text['header-contact-add']['it-it'] = "Inserisci Contatto";
+$text['header-contact-add']['ka-ge'] = "კონტაქტის დამატება";
+$text['header-contact-add']['nl-nl'] = "Kontact toevoegen";
+$text['header-contact-add']['pl-pl'] = "Dodaj kontakt";
+$text['header-contact-add']['pt-br'] = "Adicionar contato";
+$text['header-contact-add']['pt-pt'] = "Adicionar Contacto";
+$text['header-contact-add']['ro-ro'] = "Contact Adaugă";
+$text['header-contact-add']['ru-ru'] = "Добавить Контакт";
+$text['header-contact-add']['sv-se'] = "Lägg Till Kontakt";
+$text['header-contact-add']['uk-ua'] = "Додавання контакта";
+$text['header-contact-add']['zh-cn'] = "联系人添加";
+$text['header-contact-add']['ja-jp'] = "連絡先の追加";
+$text['header-contact-add']['ko-kr'] = "연락처 추가";
+
+$text['description_timer']['en-us'] = "Stop the Timer before closing the window, if desired.";
+$text['description_timer']['en-gb'] = "Stop the Timer before closing the window, if desired.";
+$text['description_timer']['ar-eg'] = "قم بإيقاف المؤقت قبل إغلاق النافذة ، إذا رغبت في ذلك.";
+$text['description_timer']['de-at'] = "Den Timer stoppen bevor Sie das Fenster schließen.";
+$text['description_timer']['de-ch'] = "Den Timer stoppen bevor Sie das Fenster schließen.";
+$text['description_timer']['de-de'] = "Den Timer stoppen bevor Sie das Fenster schließen.";
+$text['description_timer']['el-gr'] = "Σταματήστε το χρονοδιακόπτη πριν κλείσετε το παράθυρο, εάν το επιθυμείτε.";
+$text['description_timer']['es-cl'] = "Detenga el temporizador antes de cerrar la ventana, si se desea.";
+$text['description_timer']['es-mx'] = "Detenga el temporizador antes de cerrar la ventana, si se desea.";
+$text['description_timer']['fr-ca'] = "Arrêter le minuteur avant la fermeture de la fenêtre, si désiré.";
+$text['description_timer']['fr-fr'] = "Arrêter le retardateur avant la fermeture de la fenêtre, si désiré.";
+$text['description_timer']['he-il'] = "עצור את הטיימר לפני סגירת החלון, אם תרצה בכך.";
+$text['description_timer']['it-it'] = "Stoppa il timer prima di chiudere la finestra, se lo desideri.";
+$text['description_timer']['ka-ge'] = "გააჩერეთ ტაიმერი ფანჯრის დახურვამდე, თუ საჭიროა";
+$text['description_timer']['nl-nl'] = "Stop de timer voro het sluiten van het venster, indien nodig";
+$text['description_timer']['pl-pl'] = "Zatrzymac samowyzwalacz przed zamknieciem okna, w razie potrzeby.";
+$text['description_timer']['pt-br'] = "Parar o temporizador antes de fechar a janela, se desejar.";
+$text['description_timer']['pt-pt'] = "Parar o temporizador antes de fechar a janela, se desejar.";
+$text['description_timer']['ro-ro'] = "Opriți cronometrul înainte de a închide fereastra, dacă doriți.";
+$text['description_timer']['ru-ru'] = "Остановите таймер перед закрытием окна, если это необходимо.";
+$text['description_timer']['sv-se'] = "Stoppa timer innan du stänger fönstret, om så önskas.";
+$text['description_timer']['uk-ua'] = "Зупинити таймер перед закриттям вікна, якщо це необхідно.";
+$text['description_timer']['zh-cn'] = "如果需要,在关闭窗口之前停止计时器。";
+$text['description_timer']['ja-jp'] = "必要に応じて、ウィンドウを閉じる前にタイマーを停止します。";
+$text['description_timer']['ko-kr'] = "원하는 경우 창을 닫기 전에 타이머를 중지하십시오.";
+
+$text['description-url_primary']['en-us'] = "Set as the primary URL for this contact.";
+$text['description-url_primary']['en-gb'] = "Set as the primary URL for this contact.";
+$text['description-url_primary']['ar-eg'] = "تعيين كعنوان URL الأساسي لجهة الاتصال هذه.";
+$text['description-url_primary']['de-at'] = "Als primäre URL für diesen Kontakt setzen.";
+$text['description-url_primary']['de-ch'] = "Als primäre URL für diesen Kontakt setzen.";
+$text['description-url_primary']['de-de'] = "Als primäre URL für diesen Kontakt setzen.";
+$text['description-url_primary']['el-gr'] = "Ορίστε την κύρια διεύθυνση URL για αυτή την επαφή";
+$text['description-url_primary']['es-cl'] = "Establecer como la URL principal de este contacto.";
+$text['description-url_primary']['es-mx'] = "Establecer como la URL principal de este contacto.";
+$text['description-url_primary']['fr-ca'] = "Définir comme l'URL principale de ce contact.";
+$text['description-url_primary']['fr-fr'] = "Définir comme l'URL principale de ce contact.";
+$text['description-url_primary']['he-il'] = "הגדר ככתובת האתר הראשית של איש קשר זה.";
+$text['description-url_primary']['it-it'] = "Imposta come URL principale per questo contatto.";
+$text['description-url_primary']['ka-ge'] = "ძირითად URL-ად დაყენება ამ კონტაქტისთვის.";
+$text['description-url_primary']['nl-nl'] = "Stel de primaire URL voor dit kontact in";
+$text['description-url_primary']['pl-pl'] = "Ustaw jako podstawowy adres URL dla tego kontaktu.";
+$text['description-url_primary']['pt-br'] = "Definir como principal URL para este contato ";
+$text['description-url_primary']['pt-pt'] = "Definir como a URL principal para este contato.";
+$text['description-url_primary']['ro-ro'] = "Setați ca adresă URL principală pentru acest contact.";
+$text['description-url_primary']['ru-ru'] = "Укажите в качестве основного URL-адрес для этого контакта.";
+$text['description-url_primary']['sv-se'] = "Ställ in som primär URL för denna kontakt.";
+$text['description-url_primary']['uk-ua'] = "Установити як основну URL-адресу для цього контакту.";
+$text['description-url_primary']['zh-cn'] = "设置为此联系人的主要 URL。";
+$text['description-url_primary']['ja-jp'] = "この連絡先のプライマリ URL として設定します。";
+$text['description-url_primary']['ko-kr'] = "이 연락처의 기본 URL로 설정합니다.";
+
+$text['description-shared_import']['en-us'] = "Share contacts with other users on the domain.";
+$text['description-shared_import']['en-gb'] = "Share contacts with other users on the domain.";
+$text['description-shared_import']['ar-eg'] = "مشاركة جهات الاتصال مع مستخدمين آخرين في المجال.";
+$text['description-shared_import']['de-at'] = "Kontakte mit anderen Benutzern in dieser Domain teilen.";
+$text['description-shared_import']['de-ch'] = "Kontakte mit anderen Benutzern in dieser Domain teilen.";
+$text['description-shared_import']['de-de'] = "Kontakte mit anderen Benutzern in dieser Domain teilen.";
+$text['description-shared_import']['el-gr'] = "Κοινή χρήση επαφών με άλλους χρήστες σε αυτό τον τομέα";
+$text['description-shared_import']['es-cl'] = "Comparte estos contactos con otros usuarios en el dominio.";
+$text['description-shared_import']['es-mx'] = "Comparte estos contactos con otros usuarios en el dominio.";
+$text['description-shared_import']['fr-ca'] = "Partager ces contacts avec d'autres utilisateurs sur le domaine.";
+$text['description-shared_import']['fr-fr'] = "Partager ces contacts avec d'autres utilisateurs sur le domaine.";
+$text['description-shared_import']['he-il'] = "שתף אנשי קשר עם משתמשים אחרים בדומיין.";
+$text['description-shared_import']['it-it'] = "Condividi il contatto con altri utenti del dominio.";
+$text['description-shared_import']['ka-ge'] = "გაუზიარეთ კონტაქტები დომენის სხვა მომხმარებლებს.";
+$text['description-shared_import']['nl-nl'] = "Deel kontacten met andere gebruikers op dit domein.";
+$text['description-shared_import']['pl-pl'] = "Udostępnianie kontaktów z innymi użytkownikami w domenie.";
+$text['description-shared_import']['pt-br'] = "Compartilhe esse contato com outros usuários do dominio";
+$text['description-shared_import']['pt-pt'] = "Compartilhe estes contatos com outros usuários do domínio.";
+$text['description-shared_import']['ro-ro'] = "Partajați contacte cu alți utilizatori de pe domeniu.";
+$text['description-shared_import']['ru-ru'] = "Обменивайтесь контактами с другими пользователями домена.";
+$text['description-shared_import']['sv-se'] = "Dela kontakter med andra användare i domänen.";
+$text['description-shared_import']['uk-ua'] = "Поділіться контактами з іншими користувачами в домені.";
+$text['description-shared_import']['zh-cn'] = "与域中的其他用户共享联系人。";
+$text['description-shared_import']['ja-jp'] = "ドメイン上の他のユーザーと連絡先を共有します。";
+$text['description-shared_import']['ko-kr'] = "도메인의 다른 사용자와 연락처를 공유합니다.";
+
+$text['description-shared']['en-us'] = "Share this contact with other users on the domain.";
+$text['description-shared']['en-gb'] = "Share this contact with other users on the domain.";
+$text['description-shared']['ar-eg'] = "شارك جهة الاتصال هذه مع مستخدمين آخرين في المجال.";
+$text['description-shared']['de-at'] = "Diesen Kontakt mit anderen Benutzern in dieser Domain teilen.";
+$text['description-shared']['de-ch'] = "Diesen Kontakt mit anderen Benutzern in dieser Domain teilen.";
+$text['description-shared']['de-de'] = "Diesen Kontakt mit anderen Benutzern in dieser Domain teilen.";
+$text['description-shared']['el-gr'] = "Κοινή χρήση επαφής με άλλους χρήστες στον τομέα";
+$text['description-shared']['es-cl'] = "Comparte este contacto con otros usuarios en el dominio.";
+$text['description-shared']['es-mx'] = "Comparte este contacto con otros usuarios en el dominio.";
+$text['description-shared']['fr-ca'] = "Partager ce contact avec d'autres utilisateurs sur le domaine.";
+$text['description-shared']['fr-fr'] = "Partager ce contact avec d'autres utilisateurs sur le domaine.";
+$text['description-shared']['he-il'] = "שתף איש קשר זה עם משתמשים אחרים בדומיין.";
+$text['description-shared']['it-it'] = "Condividi il contatto con altri utenti del dominio.";
+$text['description-shared']['ka-ge'] = "გაუზიარეთ ეს კონტაქტი დომენის სხვა მომხმარებლებს.";
+$text['description-shared']['nl-nl'] = "Deel dit kontact met andere gebruiks op dit domein.";
+$text['description-shared']['pl-pl'] = "Udostępnij ten kontakt innym użytkownikom domeny.";
+$text['description-shared']['pt-br'] = "Compartilhe esse contato com outros usuários do dominio";
+$text['description-shared']['pt-pt'] = "Compartilhe esse contato com outros usuários do domínio.";
+$text['description-shared']['ro-ro'] = "Partajați acest contact cu alți utilizatori de pe domeniu.";
+$text['description-shared']['ru-ru'] = "Разделите этот контакт с другими пользователями домена.";
+$text['description-shared']['sv-se'] = "Dela denna kontakt med andra användare i domänen.";
+$text['description-shared']['uk-ua'] = "Поділіться цим контактом з іншими користувачами домену.";
+$text['description-shared']['zh-cn'] = "与域中的其他用户共享此联系人。";
+$text['description-shared']['ja-jp'] = "この連絡先をドメインの他のユーザーと共有します。";
+$text['description-shared']['ko-kr'] = "이 연락처를 도메인의 다른 사용자와 공유하세요.";
+
+$text['description-phone_label']['en-us'] = "Select or enter a custom label.";
+$text['description-phone_label']['en-gb'] = "Select or enter a custom label.";
+$text['description-phone_label']['ar-eg'] = "حدد أو أدخل تسمية مخصصة.";
+$text['description-phone_label']['de-at'] = "Wählen Sie eine beliebige Kennzeichnung.";
+$text['description-phone_label']['de-ch'] = "Wählen Sie eine beliebige Kennzeichnung.";
+$text['description-phone_label']['de-de'] = "Wählen Sie eine beliebige Kennzeichnung.";
+$text['description-phone_label']['el-gr'] = "Επιλέξτε ή εισάγετε μια προσωποποιημένη ετικέτα";
+$text['description-phone_label']['es-cl'] = "Seleccione o introduzca una etiqueta personalizada.";
+$text['description-phone_label']['es-mx'] = "Seleccione o introduzca una etiqueta personalizada.";
+$text['description-phone_label']['fr-ca'] = "Sélectionnez ou entrez une étiquette personnalisée.";
+$text['description-phone_label']['fr-fr'] = "Sélectionnez ou entrez une étiquette personnalisée.";
+$text['description-phone_label']['he-il'] = "בחר או הזן תווית מותאמת אישית.";
+$text['description-phone_label']['it-it'] = "Seleziona o inserisci un'etichetta personalizzata.";
+$text['description-phone_label']['ka-ge'] = "აირჩიეთ ან შეიყვანეთ მორგებული ჭდე.";
+$text['description-phone_label']['nl-nl'] = "Kies of voer een keuze kenmerk in.";
+$text['description-phone_label']['pl-pl'] = "Wybierz lub wprowadź własną etykietę.";
+$text['description-phone_label']['pt-br'] = "Selecione ou digite um identificador personalizado";
+$text['description-phone_label']['pt-pt'] = "Selecione ou digite um rótulo personalizado.";
+$text['description-phone_label']['ro-ro'] = "Selectați sau introduceți o etichetă personalizată.";
+$text['description-phone_label']['ru-ru'] = "Выберите или введите настраиваемую метку.";
+$text['description-phone_label']['sv-se'] = "Välj eller ange anpassad etikett.";
+$text['description-phone_label']['uk-ua'] = "Виберіть або введіть спеціальну мітку.";
+$text['description-phone_label']['zh-cn'] = "选择或输入自定义标签。";
+$text['description-phone_label']['ja-jp'] = "カスタム ラベルを選択または入力します。";
+$text['description-phone_label']['ko-kr'] = "사용자 지정 레이블을 선택하거나 입력합니다.";
+
+$text['description-phone_type']['en-us'] = "Define the number type or purpose.";
+$text['description-phone_type']['en-gb'] = "Define the number type or purpose.";
+$text['description-phone_type']['ar-eg'] = "حدد نوع الرقم أو الغرض منه.";
+$text['description-phone_type']['de-at'] = "Definieren Sie die Art oder den Zweck dieser Nummer.";
+$text['description-phone_type']['de-ch'] = "Definieren Sie die Art oder den Zweck dieser Nummer.";
+$text['description-phone_type']['de-de'] = "Definieren Sie die Art oder den Zweck dieser Nummer.";
+$text['description-phone_type']['el-gr'] = "Ορίστε τον τύπο αριθμού ή το σκοπό";
+$text['description-phone_type']['es-cl'] = "Seleccione el tipo de teléfono.";
+$text['description-phone_type']['es-mx'] = "Seleccione el tipo de teléfono.";
+$text['description-phone_type']['fr-ca'] = "Définir le type ou le but numéro.";
+$text['description-phone_type']['fr-fr'] = "Définir le type ou le but numéro.";
+$text['description-phone_type']['he-il'] = "הגדר את סוג המספר או המטרה.";
+$text['description-phone_type']['it-it'] = "Definire il tipo o l'uso del numero.";
+$text['description-phone_type']['ka-ge'] = "აღწერეთ ნომრის ტიპი ან დანიშნულება.";
+$text['description-phone_type']['nl-nl'] = "Definieer nummerb type of doel.";
+$text['description-phone_type']['pl-pl'] = "Zdefiniuj typ lub przeznaczenie numeru.";
+$text['description-phone_type']['pt-br'] = "Selecione o tipo de telefone";
+$text['description-phone_type']['pt-pt'] = "Seleccionar tipo de telefone";
+$text['description-phone_type']['ro-ro'] = "Definiți tipul sau scopul numărului.";
+$text['description-phone_type']['ru-ru'] = "Определите тип или назначение номера.";
+$text['description-phone_type']['sv-se'] = "Definiera nummertypen eller nummerändamålet.";
+$text['description-phone_type']['uk-ua'] = "Визначте тип чи призначення номера.";
+$text['description-phone_type']['zh-cn'] = "定义号码类型或用途。";
+$text['description-phone_type']['ja-jp'] = "番号のタイプまたは目的を定義します。";
+$text['description-phone_type']['ko-kr'] = "번호 유형 또는 목적을 정의합니다.";
+
+$text['description-phone_speed_dial']['en-us'] = "Enter the speed dial number.";
+$text['description-phone_speed_dial']['en-gb'] = "Enter the speed dial number.";
+$text['description-phone_speed_dial']['ar-eg'] = "أدخل رقم الاتصال السريع.";
+$text['description-phone_speed_dial']['de-at'] = "Kurzwahlnummer eingeben";
+$text['description-phone_speed_dial']['de-ch'] = "Kurzwahlnummer eingeben";
+$text['description-phone_speed_dial']['de-de'] = "Kurzwahlnummer eingeben";
+$text['description-phone_speed_dial']['el-gr'] = "Εισάγετε τον αριθμό ταχείας κλήσης.";
+$text['description-phone_speed_dial']['es-cl'] = "Introduzca el número de marcación rápida.";
+$text['description-phone_speed_dial']['es-mx'] = "Introduzca el número de marcación rápida.";
+$text['description-phone_speed_dial']['fr-ca'] = "Entrez le numéro de numérotation abrégée";
+$text['description-phone_speed_dial']['fr-fr'] = "Entrez le numéro de numérotation abrégée";
+$text['description-phone_speed_dial']['he-il'] = "הזן את מספר החיוג המהיר.";
+$text['description-phone_speed_dial']['it-it'] = "Inserire il numero breve del contatto.";
+$text['description-phone_speed_dial']['ka-ge'] = "შეიყვანეთ სწრაფი აკრეფის ნომერი.";
+$text['description-phone_speed_dial']['nl-nl'] = "Voer snelkies nummer in.";
+$text['description-phone_speed_dial']['pl-pl'] = "Wprowadź numer szybkiego wybierania.";
+$text['description-phone_speed_dial']['pt-br'] = "Digite o número de discagem rápida.";
+$text['description-phone_speed_dial']['pt-pt'] = "Digite o número de discagem rápida.";
+$text['description-phone_speed_dial']['ro-ro'] = "Introduceți numărul de apelare rapidă.";
+$text['description-phone_speed_dial']['ru-ru'] = "Введите номер быстрого набора.";
+$text['description-phone_speed_dial']['sv-se'] = "Ange snabbknappens nummer.";
+$text['description-phone_speed_dial']['uk-ua'] = "Введіть номер швидкого набору.";
+$text['description-phone_speed_dial']['zh-cn'] = "输入速拨号码。";
+$text['description-phone_speed_dial']['ja-jp'] = "短縮ダイヤル番号を入力します。";
+$text['description-phone_speed_dial']['ko-kr'] = "단축번호를 입력하세요.";
+
+$text['description-phone_country_code']['en-us'] = "Enter the country code.";
+$text['description-phone_country_code']['en-gb'] = "Enter the country code.";
+$text['description-phone_country_code']['ar-eg'] = "أدخل رمز الدولة.";
+$text['description-phone_country_code']['de-at'] = "Geben Sie den Ländercode ein.";
+$text['description-phone_country_code']['de-ch'] = "Geben Sie den Ländercode ein.";
+$text['description-phone_country_code']['de-de'] = "Geben Sie den Ländercode ein.";
+$text['description-phone_country_code']['el-gr'] = "Εισαγάγετε τον κωδικό χώρας.";
+$text['description-phone_country_code']['es-cl'] = "Introduzca el código de país.";
+$text['description-phone_country_code']['es-mx'] = "Introduzca el código de país.";
+$text['description-phone_country_code']['fr-ca'] = "Entrez l'indicatif du pays";
+$text['description-phone_country_code']['fr-fr'] = "Entrez l'indicatif du pays";
+$text['description-phone_country_code']['he-il'] = "הזן את קוד המדינה.";
+$text['description-phone_country_code']['it-it'] = "Inserisci il prefisso internazionale.";
+$text['description-phone_country_code']['ka-ge'] = "შეიყვანეთ ქვეყნის კოდი.";
+$text['description-phone_country_code']['nl-nl'] = "Voer de landcode in.";
+$text['description-phone_country_code']['pl-pl'] = "Wprowadź kod kraju.";
+$text['description-phone_country_code']['pt-br'] = "Digite o código do país.";
+$text['description-phone_country_code']['pt-pt'] = "Digite o código do país.";
+$text['description-phone_country_code']['ro-ro'] = "Introduceți codul țării.";
+$text['description-phone_country_code']['ru-ru'] = "Введите код страны.";
+$text['description-phone_country_code']['sv-se'] = "Ange landskoden.";
+$text['description-phone_country_code']['uk-ua'] = "Введіть код країни.";
+$text['description-phone_country_code']['zh-cn'] = "输入国家代码。";
+$text['description-phone_country_code']['ja-jp'] = "国コードを入力します。";
+$text['description-phone_country_code']['ko-kr'] = "국가 코드를 입력합니다.";
+
+$text['description-phone_number']['en-us'] = "Enter the phone number.";
+$text['description-phone_number']['en-gb'] = "Enter the phone number.";
+$text['description-phone_number']['ar-eg'] = "أدخل رقم الهاتف.";
+$text['description-phone_number']['de-at'] = "Geben Sie die Telefonnummer an.";
+$text['description-phone_number']['de-ch'] = "Geben Sie die Telefonnummer an.";
+$text['description-phone_number']['de-de'] = "Geben Sie die Telefonnummer an.";
+$text['description-phone_number']['el-gr'] = "Εισάγετε τον αριθμό τηλεφώνου";
+$text['description-phone_number']['es-cl'] = "Ingrese el número de teléfono.";
+$text['description-phone_number']['es-mx'] = "Ingrese el número de teléfono.";
+$text['description-phone_number']['fr-ca'] = "Entrez le numéro de téléphone.";
+$text['description-phone_number']['fr-fr'] = "Entrez le numéro de téléphone.";
+$text['description-phone_number']['he-il'] = "הזן את מספר הטלפון.";
+$text['description-phone_number']['it-it'] = "Inserire il numero di telefono.";
+$text['description-phone_number']['ka-ge'] = "შეიყვანეთ ტელეფონის ნომერი.";
+$text['description-phone_number']['nl-nl'] = "Voer telefoon nummer in.";
+$text['description-phone_number']['pl-pl'] = "Wprowadź numer telefonu.";
+$text['description-phone_number']['pt-br'] = "Insira o número do telefone";
+$text['description-phone_number']['pt-pt'] = "Introduza o número de telefone";
+$text['description-phone_number']['ro-ro'] = "Introduceți numărul de telefon.";
+$text['description-phone_number']['ru-ru'] = "Введите номер телефона.";
+$text['description-phone_number']['sv-se'] = "Ange telefonnummer.";
+$text['description-phone_number']['uk-ua'] = "Введіть номер телефону.";
+$text['description-phone_number']['zh-cn'] = "输入电话号码。";
+$text['description-phone_number']['ja-jp'] = "電話番号を入力します。";
+$text['description-phone_number']['ko-kr'] = "전화번호를 입력하세요.";
+
+$text['description-phone_extension']['en-us'] = "Enter the extension.";
+$text['description-phone_extension']['en-gb'] = "Enter the extension.";
+$text['description-phone_extension']['ar-eg'] = "أدخل الامتداد.";
+$text['description-phone_extension']['de-at'] = "Geben Sie die Nebenstelle an.";
+$text['description-phone_extension']['de-ch'] = "Geben Sie die Nebenstelle an.";
+$text['description-phone_extension']['de-de'] = "Geben Sie die Nebenstelle an.";
+$text['description-phone_extension']['el-gr'] = "Εισάγετε το εσωτερικό";
+$text['description-phone_extension']['es-cl'] = "Ingrese la extensión.";
+$text['description-phone_extension']['es-mx'] = "Ingrese la extensión.";
+$text['description-phone_extension']['fr-ca'] = "Entrez l'extension.";
+$text['description-phone_extension']['fr-fr'] = "Entrez l'extension.";
+$text['description-phone_extension']['he-il'] = "הכנס את מספר השלוחה";
+$text['description-phone_extension']['it-it'] = "Inserire l'interno.";
+$text['description-phone_extension']['ka-ge'] = "შეიყვანეთ გაფართოება.";
+$text['description-phone_extension']['nl-nl'] = "Voor toestel in.";
+$text['description-phone_extension']['pl-pl'] = "Wprowadź numer wewnętrzny.";
+$text['description-phone_extension']['pt-br'] = "Insira a extensão";
+$text['description-phone_extension']['pt-pt'] = "Introduza a extensão";
+$text['description-phone_extension']['ro-ro'] = "Introduceți extensia.";
+$text['description-phone_extension']['ru-ru'] = "Введите Внутренний Номер.";
+$text['description-phone_extension']['sv-se'] = "Ange anknytningen.";
+$text['description-phone_extension']['uk-ua'] = "Введіть розширення.";
+$text['description-phone_extension']['zh-cn'] = "输入扩展名。";
+$text['description-phone_extension']['ja-jp'] = "拡張子を入力します。";
+$text['description-phone_extension']['ko-kr'] = "확장자를 입력합니다.";
+
+$text['description-phone_primary']['en-us'] = "Set as the primary Number for this contact.";
+$text['description-phone_primary']['en-gb'] = "Set as the primary Number for this contact.";
+$text['description-phone_primary']['ar-eg'] = "تعيين كرقم أساسي لجهة الاتصال هذه.";
+$text['description-phone_primary']['de-at'] = "Als primäre Nummer für diesen Kontakt setzen.";
+$text['description-phone_primary']['de-ch'] = "Als primäre Nummer für diesen Kontakt setzen.";
+$text['description-phone_primary']['de-de'] = "Als primäre Nummer für diesen Kontakt setzen.";
+$text['description-phone_primary']['el-gr'] = "Ορίστε τον κύριο αριθμό για αυτή την επαφή";
+$text['description-phone_primary']['es-cl'] = "Establecer como el número primario para este contacto.";
+$text['description-phone_primary']['es-mx'] = "Establecer como el número primario para este contacto.";
+$text['description-phone_primary']['fr-ca'] = "Définir comme primaire numéro pour ce contact.";
+$text['description-phone_primary']['fr-fr'] = "Définir comme primaire numéro pour ce contact.";
+$text['description-phone_primary']['he-il'] = "הגדר כמספר הראשי של איש קשר זה.";
+$text['description-phone_primary']['it-it'] = "Imposta come numero principale per questo contatto.";
+$text['description-phone_primary']['ka-ge'] = "ძირითად ნომრად დაყენება ამ კონტაქტისთვის.";
+$text['description-phone_primary']['nl-nl'] = "Stel nummer in als primair nummer voor dit kontact";
+$text['description-phone_primary']['pl-pl'] = "Ustaw jako podstawowy numer tego kontaktu.";
+$text['description-phone_primary']['pt-br'] = "Defina número principal para este contato";
+$text['description-phone_primary']['pt-pt'] = "Definir como o principal número para este contato.";
+$text['description-phone_primary']['ro-ro'] = "Setați ca număr principal pentru acest contact.";
+$text['description-phone_primary']['ru-ru'] = "Укажите в качестве основного номера для этого контакта.";
+$text['description-phone_primary']['sv-se'] = "Sätt som primärt Nummer för denna kontakt.";
+$text['description-phone_primary']['uk-ua'] = "Установити як основний номер для цього контакту.";
+$text['description-phone_primary']['zh-cn'] = "设置为此联系人的主要号码。";
+$text['description-phone_primary']['ja-jp'] = "この連絡先のプライマリ番号として設定します。";
+$text['description-phone_primary']['ko-kr'] = "이 연락처의 기본 번호로 설정합니다.";
+
+$text['description-phone_description']['en-us'] = "Enter the description.";
+$text['description-phone_description']['en-gb'] = "Enter the description.";
+$text['description-phone_description']['ar-eg'] = "أدخل الوصف.";
+$text['description-phone_description']['de-at'] = "Geben Sie eine Beschreibung an.";
+$text['description-phone_description']['de-ch'] = "Geben Sie eine Beschreibung an.";
+$text['description-phone_description']['de-de'] = "Geben Sie eine Beschreibung an.";
+$text['description-phone_description']['el-gr'] = "Εισάγετε την περιγραφή.";
+$text['description-phone_description']['es-cl'] = "Ingrese una descripción.";
+$text['description-phone_description']['es-mx'] = "Ingrese una descripción.";
+$text['description-phone_description']['fr-ca'] = "Entrez la description.";
+$text['description-phone_description']['fr-fr'] = "Entrez la description.";
+$text['description-phone_description']['he-il'] = "הזן את התיאור.";
+$text['description-phone_description']['it-it'] = "Inserire la descrizione.";
+$text['description-phone_description']['ka-ge'] = "შეიყვანეთ აღწერა.";
+$text['description-phone_description']['nl-nl'] = "Voer omschrijving in.";
+$text['description-phone_description']['pl-pl'] = "Wprowadź opis.";
+$text['description-phone_description']['pt-br'] = "Insira uma descrição";
+$text['description-phone_description']['pt-pt'] = "Introduza a descrição";
+$text['description-phone_description']['ro-ro'] = "Introduceți descrierea.";
+$text['description-phone_description']['ru-ru'] = "Введите Описание.";
+$text['description-phone_description']['sv-se'] = "Ange beskrivningen.";
+$text['description-phone_description']['uk-ua'] = "Введіть опис.";
+$text['description-phone_description']['zh-cn'] = "输入说明。";
+$text['description-phone_description']['ja-jp'] = "説明を入力します。";
+$text['description-phone_description']['ko-kr'] = "설명을 입력합니다.";
+
+$text['description-order']['en-us'] = "Set the order (index) for this array element.";
+$text['description-order']['en-gb'] = "Set the order (index) for this array element.";
+$text['description-order']['ar-eg'] = "قم بتعيين الترتيب (الفهرس) لعنصر المصفوفة هذا.";
+$text['description-order']['de-at'] = "Setzen Sie die Reihenfolge für dieses Array Element.";
+$text['description-order']['de-ch'] = "Setzen Sie die Reihenfolge für dieses Array Element.";
+$text['description-order']['de-de'] = "Setzen Sie die Reihenfolge für dieses Array Element.";
+$text['description-order']['el-gr'] = "Ορίστε τη σειρά (ταξινόμηση) για αυτό το στοιχεία.";
+$text['description-order']['es-cl'] = "Establecer el orden (índice) para este elemento de la matriz.";
+$text['description-order']['es-mx'] = "Establecer el orden (índice) para este elemento de la matriz.";
+$text['description-order']['fr-ca'] = "Définissez l'ordre (index) pour cet élément de tableau.";
+$text['description-order']['fr-fr'] = "Définissez l'ordre (index) pour cet élément de tableau.";
+$text['description-order']['he-il'] = "הגדר את הסדר (אינדקס) עבור רכיב מערך זה.";
+$text['description-order']['it-it'] = "Imposta l'ordine (indice) per questo elemento di array.";
+$text['description-order']['ka-ge'] = "დააყენეთ მიმდევრობა (ინდექსი) ამ მასივის ელემენტისთვის.";
+$text['description-order']['nl-nl'] = "Stel volgorde voor dit lijstelement in.";
+$text['description-order']['pl-pl'] = "Wybierz kolejność.";
+$text['description-order']['pt-br'] = "Defina a ordem (indice) para este elemento da matriz";
+$text['description-order']['pt-pt'] = "Defina a ordem (índice) para este elemento da matriz.";
+$text['description-order']['ro-ro'] = "Setați ordinea (indexul) pentru acest element de matrice.";
+$text['description-order']['ru-ru'] = "Установите порядок (индекс) для этого элемента массива.";
+$text['description-order']['sv-se'] = "Ställ in ordningen (index) för detta element.";
+$text['description-order']['uk-ua'] = "Установіть порядок (індекс) цього елемента масиву.";
+$text['description-order']['zh-cn'] = "设置此数组元素的顺序(索引)。";
+$text['description-order']['ja-jp'] = "この配列要素の順序 (インデックス) を設定します。";
+$text['description-order']['ko-kr'] = "이 배열 요소의 순서(색인)를 설정합니다.";
+
+$text['description-import_fields']['en-us'] = "Select contact data fields to import.";
+$text['description-import_fields']['en-gb'] = "Select contact data fields to import.";
+$text['description-import_fields']['ar-eg'] = "حدد حقول بيانات الاتصال لاستيرادها.";
+$text['description-import_fields']['de-at'] = "Wählen Sie die Datenfelder für den Import.";
+$text['description-import_fields']['de-ch'] = "Wählen Sie die Datenfelder für den Import.";
+$text['description-import_fields']['de-de'] = "Wählen Sie die Datenfelder für den Import.";
+$text['description-import_fields']['el-gr'] = "Επιλέξτε τα στοιχεία επαφής για εισαγωγή";
+$text['description-import_fields']['es-cl'] = "Seleccionar campos de datos de contactos para importar.";
+$text['description-import_fields']['es-mx'] = "Seleccionar campos de datos de contactos para importar.";
+$text['description-import_fields']['fr-ca'] = "Sélectionner les champs de données de contact à importer.";
+$text['description-import_fields']['fr-fr'] = "Sélectionner les champs de données de contact à importer.";
+$text['description-import_fields']['he-il'] = "בחר בשדות נתוני אנשי קשר לייבוא.";
+$text['description-import_fields']['it-it'] = "Seleziona i campi del contatto da importare.";
+$text['description-import_fields']['ka-ge'] = "აირჩიეთ კონტაქტის მონაცემის ველები შემოსატანად.";
+$text['description-import_fields']['nl-nl'] = "Kies kontact data velden om te importeren.";
+$text['description-import_fields']['pl-pl'] = "Zaznacz pola danych kontaktów do zaimportowania.";
+$text['description-import_fields']['pt-br'] = "Selecione os campos para importar contato";
+$text['description-import_fields']['pt-pt'] = "Selecione os campos de dados de contacto para importar.";
+$text['description-import_fields']['ro-ro'] = "Selectați câmpurile de date de contact de importat.";
+$text['description-import_fields']['ru-ru'] = "Выберите поля данных контакта для импорта.";
+$text['description-import_fields']['sv-se'] = "Välj kontakt data fält som skall importeras.";
+$text['description-import_fields']['uk-ua'] = "Виберіть поля контактних даних для імпорту.";
+$text['description-import_fields']['zh-cn'] = "选择要导入的联系人数据字段。";
+$text['description-import_fields']['ja-jp'] = "インポートする連絡先データ フィールドを選択します。";
+$text['description-import_fields']['ko-kr'] = "가져올 연락처 데이터 필드를 선택하십시오.";
+
+$text['description-import_enclosure']['en-us'] = "Select the enclosure of text (double-quotes or nothing).";
+$text['description-import_enclosure']['en-gb'] = "Select the enclosure of text (double-quotes or nothing).";
+$text['description-import_enclosure']['ar-eg'] = "حدد إحاطة النص (علامات الاقتباس المزدوجة أو لا شيء).";
+$text['description-import_enclosure']['de-at'] = "Wählen Sie die Abgrenzung für den Text (Doppelte Anführungszeichen oder nichts).";
+$text['description-import_enclosure']['de-ch'] = "Wählen Sie die Abgrenzung für den Text (Doppelte Anführungszeichen oder nichts).";
+$text['description-import_enclosure']['de-de'] = "Wählen Sie die Abgrenzung für den Text (Doppelte Anführungszeichen oder nichts).";
+$text['description-import_enclosure']['el-gr'] = "Επιλέξτε την ενσωμάτωση του κειμένου (διπλά εισαγωγικά ή τίποτα)";
+$text['description-import_enclosure']['es-cl'] = "Seleccione el cercado de texto (doble comilla o ninguno)";
+$text['description-import_enclosure']['es-mx'] = "Seleccione el cercado de texto (doble comilla o ninguno)";
+$text['description-import_enclosure']['fr-ca'] = "Choisir le séparateur de texte (guillements ou rien).";
+$text['description-import_enclosure']['fr-fr'] = "Choisir le séparateur de texte (guillements ou rien).";
+$text['description-import_enclosure']['he-il'] = "בחר את המתחם של הטקסט (מרכאות כפולות או כלום).";
+$text['description-import_enclosure']['it-it'] = "Seleziona l'allegato di testo (doppie virgolette o niente).";
+$text['description-import_enclosure']['ka-ge'] = "აირჩიეთ ტექსტის შემომსაზღვრელი (ორმაგი ბრჭყალები, ან არაფერი).";
+$text['description-import_enclosure']['nl-nl'] = "Kies tekst omsluiting in (dubbel-quotes of niets).";
+$text['description-import_enclosure']['pl-pl'] = "Wybierz znaczniki tekstu (cudzysłów lub nic).";
+$text['description-import_enclosure']['pt-br'] = "Selecione o delimitador de texto (aspas ou nada)";
+$text['description-import_enclosure']['pt-pt'] = "Seleccione o delimitador de texto (aspas ou nada).";
+$text['description-import_enclosure']['ro-ro'] = "Selectați incinta textului (ghilimele duble sau nimic).";
+$text['description-import_enclosure']['ru-ru'] = "Выберите оболочку текста (двойные кавычки или ничего).";
+$text['description-import_enclosure']['sv-se'] = "Välj inkapsling av text (dubbla citattecken eller ingenting).";
+$text['description-import_enclosure']['uk-ua'] = "Виберіть вкладення тексту (подвійні лапки або нічого).";
+$text['description-import_enclosure']['zh-cn'] = "选择文本的包围(双引号或无)。";
+$text['description-import_enclosure']['ja-jp'] = "テキストの囲みを選択します (二重引用符で囲むか、何もしないでください)。";
+$text['description-import_enclosure']['ko-kr'] = "텍스트 둘러싸기를 선택합니다(큰따옴표 또는 없음).";
+
+$text['description-import_duplicates']['en-us'] = "Select how to treat contacts previously imported.";
+$text['description-import_duplicates']['en-gb'] = "Select how to treat contacts previously imported.";
+$text['description-import_duplicates']['ar-eg'] = "حدد كيفية التعامل مع جهات الاتصال التي تم استيرادها مسبقًا.";
+$text['description-import_duplicates']['de-at'] = "Wählen Sie aus, wie mit vorhandenen Kontakten verfahren werden soll.";
+$text['description-import_duplicates']['de-ch'] = "Wählen Sie aus, wie mit vorhandenen Kontakten verfahren werden soll.";
+$text['description-import_duplicates']['de-de'] = "Wählen Sie aus, wie mit vorhandenen Kontakten verfahren werden soll.";
+$text['description-import_duplicates']['el-gr'] = "Επιλέξτε την ενέργεια σχετικά με επαφές που έχουν ήδη εισαχθεί.";
+$text['description-import_duplicates']['es-cl'] = "Seleccione la forma de tratar a los contactos previamente importados.";
+$text['description-import_duplicates']['es-mx'] = "Seleccione la forma de tratar a los contactos previamente importados.";
+$text['description-import_duplicates']['fr-ca'] = "Sélectionnez la façon de traiter les contacts importés auparavant.";
+$text['description-import_duplicates']['fr-fr'] = "Sélectionnez la façon de traiter les contacts importés auparavant.";
+$text['description-import_duplicates']['he-il'] = "בחר כיצד לטפל באנשי קשר שיובאו בעבר.";
+$text['description-import_duplicates']['it-it'] = "Seleziona come gestire i contatti appena importati.";
+$text['description-import_duplicates']['ka-ge'] = "აირჩიეთ შემოტანილი კონტაქტების დამუშავების გზა.";
+$text['description-import_duplicates']['nl-nl'] = "Kies hoe eerder geimporteerde kontacten behandeld moeten worden.";
+$text['description-import_duplicates']['pl-pl'] = "Wybierz jco zrobić kontaktami wcześniej zaimportowanymi.";
+$text['description-import_duplicates']['pt-br'] = "Escolha como deve tratar os contatos previamente importados";
+$text['description-import_duplicates']['pt-pt'] = "Escolha como tratar os contatos previamente importados.";
+$text['description-import_duplicates']['ro-ro'] = "Selectați cum să tratați contactele importate anterior.";
+$text['description-import_duplicates']['ru-ru'] = "Выберите способ обработки контактов, ранее импортированных.";
+$text['description-import_duplicates']['sv-se'] = "Välj hur kontakter som importerats tidigare skall hanteras.";
+$text['description-import_duplicates']['uk-ua'] = "Виберіть спосіб обробки раніше імпортованих контактів.";
+$text['description-import_duplicates']['zh-cn'] = "选择如何处理以前导入的联系人。";
+$text['description-import_duplicates']['ja-jp'] = "以前にインポートした連絡先の処理方法を選択します。";
+$text['description-import_duplicates']['ko-kr'] = "이전에 가져온 연락처를 처리하는 방법을 선택합니다.";
+
+$text['description-import_data']['en-us'] = "Copy and paste the comma delimitted data into the text area to begin the import.";
+$text['description-import_data']['en-gb'] = "Copy and paste the comma delimitted data into the text area to begin the import.";
+$text['description-import_data']['ar-eg'] = "انسخ والصق البيانات المحددة بفاصلة في منطقة النص لبدء الاستيراد.";
+$text['description-import_data']['de-at'] = "Kopieren Sie die komma-getrennten Daten in den Textbereich um den Import zu starten.";
+$text['description-import_data']['de-ch'] = "Kopieren Sie die komma-getrennten Daten in den Textbereich um den Import zu starten.";
+$text['description-import_data']['de-de'] = "Kopieren Sie die komma-getrennten Daten in den Textbereich um den Import zu starten.";
+$text['description-import_data']['el-gr'] = "Αντιγράψτε και επικολλήστε τα δεδομένα στην περιοχή κειμένου για να ξεκινήσει η εισαγωγή.";
+$text['description-import_data']['es-cl'] = "Copie y pegue la información delimitada por comas en el cuadro de texto para comenzar su importación.";
+$text['description-import_data']['es-mx'] = "Copie y pegue la información delimitada por comas en el cuadro de texto para comenzar su importación.";
+$text['description-import_data']['fr-ca'] = "Copier et coller les données séparées par une virgule ou un 'pipe' dans la zone de texte pour commencer l'import.";
+$text['description-import_data']['fr-fr'] = "Copier et coller les données séparées par une virgule ou un 'pipe' dans la zone de texte pour commencer l'import.";
+$text['description-import_data']['he-il'] = "העתק והדבק את הנתונים המופרדים בפסיקים לתוך אזור הטקסט כדי להתחיל בייבוא.";
+$text['description-import_data']['it-it'] = "Copia e incolla i dati delimitati da virgole nell'area di testo per iniziare l'importazione.";
+$text['description-import_data']['ka-ge'] = "შემოტანის დასაწყებად დააკოპირეთ და ჩასვით მძიმით გამოყოფილი მონაცემები ტექსტურ ალაგში.";
+$text['description-import_data']['nl-nl'] = "Kopieer en Plak de komma gescheiden data in het tekst veld om de import te starten.";
+$text['description-import_data']['pl-pl'] = "Skopiuj i wklej dane oddzielone przecinkami do obszaru tekstowego, aby rozpocząć import.";
+$text['description-import_data']['pt-br'] = "Copie e cole os dados separados por vírgula para iniciar a importação.";
+$text['description-import_data']['pt-pt'] = "Copie e cole os dados separados por vírgula para iniciar a importação.";
+$text['description-import_data']['ro-ro'] = "Copiați și inserați datele delimitate prin virgulă în zona de text pentru a începe importul.";
+$text['description-import_data']['ru-ru'] = "Скопируйте и вставьте данные с разделителями-запятыми в текстовую область, чтобы начать импорт.";
+$text['description-import_data']['sv-se'] = "Kopiera och klistra in din kommaseparerade data i textområdet för att börja importera.";
+$text['description-import_data']['uk-ua'] = "Скопіюйте та вставте дані, розділені комами, у текстову область, щоб почати імпорт.";
+$text['description-import_data']['zh-cn'] = "将逗号分隔的数据复制并粘贴到文本区域以开始导入。";
+$text['description-import_data']['ja-jp'] = "カンマ区切りのデータをコピーしてテキスト領域に貼り付け、インポートを開始します。";
+$text['description-import_data']['ko-kr'] = "쉼표로 구분된 데이터를 복사하여 텍스트 영역에 붙여넣어 가져오기를 시작합니다.";
+
+$text['description-import_delimiter']['en-us'] = "Select the delimiter (comma or pipe).";
+$text['description-import_delimiter']['en-gb'] = "Select the delimiter (comma or pipe).";
+$text['description-import_delimiter']['ar-eg'] = "حدد المحدد (فاصلة أو أنبوب).";
+$text['description-import_delimiter']['de-at'] = "Wählen Sie das Trennzeichen (Beistrich oder Wagrechter Strich)";
+$text['description-import_delimiter']['de-ch'] = "Wählen Sie das Trennzeichen (Beistrich oder Wagrechter Strich)";
+$text['description-import_delimiter']['de-de'] = "Wählen Sie das Trennzeichen (Beistrich oder Wagrechter Strich)";
+$text['description-import_delimiter']['el-gr'] = "Επιλέξτε το διαχωριστικό πεδίο (κόμα ή pipe)";
+$text['description-import_delimiter']['es-cl'] = "Select el delimitador (coma o pipe).";
+$text['description-import_delimiter']['es-mx'] = "Select el delimitador (coma o pipe).";
+$text['description-import_delimiter']['fr-ca'] = "Choisir le séparateur de champs (virgule ou pipe).";
+$text['description-import_delimiter']['fr-fr'] = "Choisir le séparateur de champs (virgule ou pipe).";
+$text['description-import_delimiter']['he-il'] = "בחר את המפריד (פסיק או צינור).";
+$text['description-import_delimiter']['it-it'] = "Seleziona il delimitatore (virgola o pipe).";
+$text['description-import_delimiter']['ka-ge'] = "აირჩიეთ გამყოფი (მძიმე ან '|').";
+$text['description-import_delimiter']['nl-nl'] = "Kies het schedings teken (',' of '|')";
+$text['description-import_delimiter']['pl-pl'] = "Wybierz separator (przecinek lub pionowa kreska).";
+$text['description-import_delimiter']['pt-br'] = "Selecione o delimitador ( ',' ou '|' ). ";
+$text['description-import_delimiter']['pt-pt'] = "Seleccione o delimitador ( ',' ou '|' ).";
+$text['description-import_delimiter']['ro-ro'] = "Selectați delimitatorul (virgulă sau pipe).";
+$text['description-import_delimiter']['ru-ru'] = "Выберите разделитель (запятая или канал).";
+$text['description-import_delimiter']['sv-se'] = "Välj avgränsare (comma or pipe). ";
+$text['description-import_delimiter']['uk-ua'] = "Виберіть роздільник (кома або вертикальна лінія).";
+$text['description-import_delimiter']['zh-cn'] = "选择分隔符(逗号或竖线)。";
+$text['description-import_delimiter']['ja-jp'] = "区切り文字 (カンマまたはパイプ) を選択します。";
+$text['description-import_delimiter']['ko-kr'] = "구분 기호(쉼표 또는 파이프)를 선택합니다.";
+
+$text['description-users']['en-us'] = "Users allowed to view this contact.";
+$text['description-users']['en-gb'] = "Users allowed to view this contact.";
+$text['description-users']['ar-eg'] = "يسمح للمستخدمين بمشاهدة جهة الاتصال هذه.";
+$text['description-users']['de-at'] = "Legen Sie die Benutzer fest, für die dieser Kontakt sichtbar ist.";
+$text['description-users']['de-ch'] = "Legen Sie die Benutzer fest, für die dieser Kontakt sichtbar ist.";
+$text['description-users']['de-de'] = "Legen Sie die Benutzer fest, für die dieser Kontakt sichtbar ist.";
+$text['description-users']['el-gr'] = "Επιλέξτε τους χρήστες στους οποίους επιτρέπεται να εμφανίζεται η επαφή.";
+$text['description-users']['es-cl'] = "Asignar usuarios adicionales como administradores de esta sala de conferencia.";
+$text['description-users']['es-mx'] = "Asignar usuarios adicionales como administradores de esta sala de conferencia.";
+$text['description-users']['fr-ca'] = "Ajouter des utilisateurs comme administrateurs des cette salle de conférence.";
+$text['description-users']['fr-fr'] = "Ajouter des utilisateurs comme administrateurs des cette salle de conférence.";
+$text['description-users']['he-il'] = "משתמשים מורשים להציג איש קשר זה.";
+$text['description-users']['it-it'] = "Seleziona gli utenti che possono vedere questo contatto.";
+$text['description-users']['ka-ge'] = "მომხმარებლები, რომლებსაც ამ კონტაქტის ნახვა შეუძლიათ.";
+$text['description-users']['nl-nl'] = "Kies gebruikers die dit kontact mogen inzien.";
+$text['description-users']['pl-pl'] = "'Dodaj dodatkowych użytkowników jako administratorów tego pokoju konferencyjnego.";
+$text['description-users']['pt-br'] = "Selecione os usuários que podem ver este contato. ";
+$text['description-users']['pt-pt'] = "Atribuir utilizadores adicionais como administradores da sala de conferência.";
+$text['description-users']['ro-ro'] = "Utilizatorii au permisiunea de a vizualiza acest contact.";
+$text['description-users']['ru-ru'] = "Выберите пользователей, которым разрешено просматривать этот контакт.";
+$text['description-users']['sv-se'] = "Lägg till ytterligare användare som administratörer för detta konferensrum.";
+$text['description-users']['uk-ua'] = "Зв'язати додаткових користувачів як адміністраторів цього конференц-залу.";
+$text['description-users']['zh-cn'] = "允许用户查看此联系人。";
+$text['description-users']['ja-jp'] = "ユーザーはこの連絡先を表示できます。";
+$text['description-users']['ko-kr'] = "이 연락처를 볼 수 있는 사용자입니다.";
+
+$text['description-groups']['en-us'] = "Groups allowed to view this contact.";
+$text['description-groups']['en-gb'] = "Groups allowed to view this contact.";
+$text['description-groups']['ar-eg'] = "المجموعات المسموح لها بمشاهدة جهة الاتصال هذه.";
+$text['description-groups']['de-at'] = "Legen Sie die Gruppen fest, für die dieser Kontakt sichtbar ist.";
+$text['description-groups']['de-ch'] = "Legen Sie die Gruppen fest, für die dieser Kontakt sichtbar ist.";
+$text['description-groups']['de-de'] = "Legen Sie die Gruppen fest, für die dieser Kontakt sichtbar ist.";
+$text['description-groups']['el-gr'] = "Επιλέξτε τις ομάδες στις οποίες επιτρέπεται να εμφανίζεται η επαφή.";
+$text['description-groups']['es-cl'] = "Contactos asignados a un grupo sólo son visibles para los usuarios del grupo. Los contactos no asignados a un grupo serán visibles para todos los usuarios del dominio.";
+$text['description-groups']['es-mx'] = "Contactos asignados a un grupo sólo son visibles para los usuarios del grupo. Los contactos no asignados a un grupo serán visibles para todos los usuarios del dominio.";
+$text['description-groups']['fr-ca'] = "Contacts affectés à un groupe ne sont accessibles qu'aux utilisateurs du groupe. Contacts ne sont pas affectés à un groupe seront visibles à tous les utilisateurs dans le domaine.";
+$text['description-groups']['fr-fr'] = "Contacts affectés à un groupe ne sont accessibles qu'aux utilisateurs du groupe. Contacts ne sont pas affectés à un groupe seront visibles à tous les utilisateurs dans le domaine.";
+$text['description-groups']['he-il'] = "קבוצות מורשות להציג איש קשר זה.";
+$text['description-groups']['it-it'] = "Seleziona i gruppi che possono vedere questo contatto.";
+$text['description-groups']['ka-ge'] = "ჯგუფები, რომლებსაც ამ კონტაქტის ნახვა შეუძლიათ.";
+$text['description-groups']['nl-nl'] = "Kies groepen die dit kontact mogen inzien.";
+$text['description-groups']['pl-pl'] = "Kontaky przypisane do grupy, są widoczne tylko dla użytkowników w grupie. Kontakty nie przypisane do grupy będą widoczna dla wszystkich użytkowników w domenie.";
+$text['description-groups']['pt-br'] = "Selecione os grupos que podem ver este contato";
+$text['description-groups']['pt-pt'] = "Contatos atribuídos a um grupo só são visíveis para os usuários do grupo. Contatos não atribuídos a um grupo será visível para todos os usuários no domínio.";
+$text['description-groups']['ro-ro'] = "Grupurile au permisiunea de a vizualiza acest contact.";
+$text['description-groups']['ru-ru'] = "Выберите группы, которым разрешено просматривать этот контакт.";
+$text['description-groups']['sv-se'] = "Kontakter tilldelade till en grupp är endast synbara för användare i guppen. Kontakter som inte är tilldelade till någon grupp syns för alla användare i hela domänen.";
+$text['description-groups']['uk-ua'] = "Групи можуть переглядати цей контакт.";
+$text['description-groups']['zh-cn'] = "允许查看此联系人的组。";
+$text['description-groups']['ja-jp'] = "この連絡先を表示できるグループ。";
+$text['description-groups']['ko-kr'] = "이 연락처를 볼 수 있는 그룹입니다.";
+
+$text['description-email_primary']['en-us'] = "Set as the primary Email for this contact.";
+$text['description-email_primary']['en-gb'] = "Set as the primary Email for this contact.";
+$text['description-email_primary']['ar-eg'] = "تعيين كبريد إلكتروني أساسي لجهة الاتصال هذه.";
+$text['description-email_primary']['de-at'] = "Als primäre Email-Adresse für diesen Kontakt setzen.";
+$text['description-email_primary']['de-ch'] = "Als primäre Email-Adresse für diesen Kontakt setzen.";
+$text['description-email_primary']['de-de'] = "Als primäre Email-Adresse für diesen Kontakt setzen.";
+$text['description-email_primary']['el-gr'] = "Ορίστε το ως κύρια διεύθυνσης ηλεκτρονικής αλληλογραφίας για αυτή την επαφή.";
+$text['description-email_primary']['es-cl'] = "Establecer como el correo electrónico principal para este contacto.";
+$text['description-email_primary']['es-mx'] = "Establecer como el correo electrónico principal para este contacto.";
+$text['description-email_primary']['fr-ca'] = "Définir comme primaire par mail pour ce contact.";
+$text['description-email_primary']['fr-fr'] = "Définir comme primaire par mail pour ce contact.";
+$text['description-email_primary']['he-il'] = "הגדר ככתובת האימייל הראשית עבור איש קשר זה.";
+$text['description-email_primary']['it-it'] = "Imposta come Email principale per questo contatto.";
+$text['description-email_primary']['ka-ge'] = "ამ კონტაქტისთვის ძირითად ელფოსტად დაყენება.";
+$text['description-email_primary']['nl-nl'] = "Stel in als primair E-mail voor dit kontact.";
+$text['description-email_primary']['pl-pl'] = "Ustaw jako główny e-mail tego kontaktu.";
+$text['description-email_primary']['pt-br'] = "Definir como e-mail principal para esse usuário";
+$text['description-email_primary']['pt-pt'] = "Definir como o principal e-mail para este contato.";
+$text['description-email_primary']['ro-ro'] = "Setați ca e-mail principal pentru acest contact.";
+$text['description-email_primary']['ru-ru'] = "Укажите основной адрес электронной почты для этого контакта.";
+$text['description-email_primary']['sv-se'] = "Ställ in som primär E-post för denna kontakt.";
+$text['description-email_primary']['uk-ua'] = "Установити як основну електронну адресу для цього контакту.";
+$text['description-email_primary']['zh-cn'] = "设置为此联系人的主要电子邮件。";
+$text['description-email_primary']['ja-jp'] = "この連絡先のプライマリ メールとして設定します。";
+$text['description-email_primary']['ko-kr'] = "이 연락처의 기본 이메일로 설정합니다.";
+
+$text['description-contacts_import_google']['en-us'] = "Select the desired contacts to import.";
+$text['description-contacts_import_google']['en-gb'] = "Select the desired contacts to import.";
+$text['description-contacts_import_google']['ar-eg'] = "حدد جهات الاتصال المطلوبة لاستيرادها.";
+$text['description-contacts_import_google']['de-at'] = "Wählen Sie die Kontakte, die importiert werden sollen.";
+$text['description-contacts_import_google']['de-ch'] = "Wählen Sie die Kontakte, die importiert werden sollen.";
+$text['description-contacts_import_google']['de-de'] = "Wählen Sie die Kontakte, die importiert werden sollen.";
+$text['description-contacts_import_google']['el-gr'] = "Επιλέξτε τις επιθυμητές επαφές προς εισαγωγή.";
+$text['description-contacts_import_google']['es-cl'] = "Seleccione los contactos de Google deseados importar.";
+$text['description-contacts_import_google']['es-mx'] = "Seleccione los contactos de Google deseados importar.";
+$text['description-contacts_import_google']['fr-ca'] = "Sélectionnez les contacts Google souhaités à importer.";
+$text['description-contacts_import_google']['fr-fr'] = "Sélectionnez les contacts Google souhaités à importer.";
+$text['description-contacts_import_google']['he-il'] = "בחר את אנשי הקשר הרצויים לייבוא.";
+$text['description-contacts_import_google']['it-it'] = "Seleziona i contatti che desideri importare.";
+$text['description-contacts_import_google']['ka-ge'] = "აირჩიეთ სასურველი კონტაქტები შემოსატანად.";
+$text['description-contacts_import_google']['nl-nl'] = "Kies gewenste kontacten im te importeren.";
+$text['description-contacts_import_google']['pl-pl'] = "Wybierz kontakty do zaimportowania.";
+$text['description-contacts_import_google']['pt-br'] = "Selecione os contatos desejados para importar do Google";
+$text['description-contacts_import_google']['pt-pt'] = "Selecione os desejados Google Contacts para importar.";
+$text['description-contacts_import_google']['ro-ro'] = "Selectați contactele dorite de importat.";
+$text['description-contacts_import_google']['ru-ru'] = "Выберите нужные контакты для импорта.";
+$text['description-contacts_import_google']['sv-se'] = "Välj de kontakter som skall importeras.";
+$text['description-contacts_import_google']['uk-ua'] = "Виберіть потрібні контакти для імпорту.";
+$text['description-contacts_import_google']['zh-cn'] = "选择要导入的联系人。";
+$text['description-contacts_import_google']['ja-jp'] = "インポートする連絡先を選択します。";
+$text['description-contacts_import_google']['ko-kr'] = "가져올 연락처를 선택합니다.";
+
+$text['description-contacts_import']['en-us'] = "Submit or upload delimited data to add multiple records.";
+$text['description-contacts_import']['en-gb'] = "Submit or upload delimited data to add multiple records.";
+$text['description-contacts_import']['ar-eg'] = "إرسال أو تحميل البيانات المحددة لإضافة سجلات متعددة.";
+$text['description-contacts_import']['de-at'] = "Exportieren Sie Ihre Kontakte aus Outlook in eine CSV Datei und benützen Sie diese Funktion um Ihre Kontakte zu importieren.";
+$text['description-contacts_import']['de-ch'] = "Exportieren Sie Ihre Kontakte aus Outlook in eine CSV Datei und benützen Sie diese Funktion um Ihre Kontakte zu importieren.";
+$text['description-contacts_import']['de-de'] = "Exportieren Sie Ihre Kontakte aus Outlook in eine CSV Datei und benützen Sie diese Funktion um Ihre Kontakte zu importieren.";
+$text['description-contacts_import']['el-gr'] = "Εξάγατε τις επαφές σας από το outlook σε μορφή αρχείου διαχωρισμένο με κόμα (αρχείο CSV). Έπειτα χρησιμοποιήστε αυτό το εργαλείο για το ανέβασμα των επαφών σας.";
+$text['description-contacts_import']['es-cl'] = "Exporte sus contactos desde Outlook a un archivo csv separado por comas. Luego, utilice esta herramienta para importarlos desde el archivo csv.";
+$text['description-contacts_import']['es-mx'] = "Exporte sus contactos desde Outlook a un archivo csv separado por comas. Luego, utilice esta herramienta para importarlos desde el archivo csv.";
+$text['description-contacts_import']['fr-ca'] = "Exporter vos contacts à partir d'outlook vers un fichier CSV. Puis utiliser cet outil pour télécharger et ajouter les contacts à partir de précédent CSV.";
+$text['description-contacts_import']['fr-fr'] = "Exporter vos contacts à partir d'outlook vers un fichier CSV. Puis utiliser cet outil pour télécharger et ajouter les contacts à partir de précédent CSV.";
+$text['description-contacts_import']['he-il'] = "שלח או העלה נתונים מופרדים כדי להוסיף מספר רשומות.";
+$text['description-contacts_import']['it-it'] = "Esporta i tuoi contatti outlook in un file csv separato con la virgola. Quindi usa questo strumento per caricare e aggiugnere i contatti da quel file. 	";
+$text['description-contacts_import']['ka-ge'] = "ჩააკოპირეთ ან ატვირთეთ მძიმით გამოყოფილი მონაცემები ერთზე მეტი ჩანაწერის დასამატებლად.";
+$text['description-contacts_import']['nl-nl'] = "Exporteer je kontacten uit Outlook in een CSV bestand en gebruik dat hier om de kontacten te importeren.";
+$text['description-contacts_import']['pl-pl'] = "Eksportuj kontakty z programu Outlook do pliku csv przecinkami (comma delimitted). Następnie za pomocą tej funkcji  dodaj kontakty z tego pliku.";
+$text['description-contacts_import']['pt-br'] = "Exportar os seus contactos do outlook para um ficheiro csv. Esta ferramenta pode ser utilizada para fazer submeter e adicionar contactos a partir do ficheiro. ";
+$text['description-contacts_import']['pt-pt'] = "Exportar os seus contactos do outlook para um ficheiro csv. Esta ferramenta pode ser utilizada para fazer submeter e adicionar contactos a partir do ficheiro.";
+$text['description-contacts_import']['ro-ro'] = "Trimiteți sau încărcați date delimitate pentru a adăuga mai multe înregistrări.";
+$text['description-contacts_import']['ru-ru'] = "Экспортируйте контакты из внешнего вида в файл csv с разделителями-запятыми. Затем используйте этот инструмент для загрузки и добавления контактов из этого файла.";
+$text['description-contacts_import']['sv-se'] = "Exportera dina kontakter från Outlook till en kommaseparerad CSV fil. Använd sedan detta verktyg för att ladda upp kontakterna.";
+$text['description-contacts_import']['uk-ua'] = "Надішліть або завантажте дані з роздільниками, щоб додати кілька записів.";
+$text['description-contacts_import']['zh-cn'] = "提交或上传带分隔符的数据以添加多条记录。";
+$text['description-contacts_import']['ja-jp'] = "区切りデータを送信またはアップロードして、複数のレコードを追加します。";
+$text['description-contacts_import']['ko-kr'] = "구분된 데이터를 제출하거나 업로드하여 여러 레코드를 추가합니다.";
+
+$text['description-contacts']['en-us'] = "The contact is a list of individuals and organizations.";
+$text['description-contacts']['en-gb'] = "The contact is a list of individuals and organizations.";
+$text['description-contacts']['ar-eg'] = "جهة الاتصال هي قائمة الأفراد والمنظمات.";
+$text['description-contacts']['de-at'] = "Kontakte sind Benutzer, externe Personen oder Unternehmen.";
+$text['description-contacts']['de-ch'] = "Kontakte sind Benutzer, externe Personen oder Unternehmen.";
+$text['description-contacts']['de-de'] = "Kontakte sind Benutzer, externe Personen oder Unternehmen.";
+$text['description-contacts']['el-gr'] = "Η επαφή είναι μια λίστα ατόμων και οργανισμών.";
+$text['description-contacts']['es-cl'] = "El contacto es una lista de personas y organizaciones";
+$text['description-contacts']['es-mx'] = "El contacto es una lista de personas y organizaciones";
+$text['description-contacts']['fr-ca'] = "Fourni une liste d'individus et d'organisations.";
+$text['description-contacts']['fr-fr'] = "Fourni une liste d'individus et d'organisations.";
+$text['description-contacts']['he-il'] = "איש הקשר הוא רשימה של אנשים וארגונים.";
+$text['description-contacts']['it-it'] = "Un contatto è una lista di individui e organizzazioni.";
+$text['description-contacts']['ka-ge'] = "კონტაქტი პიროვნებების და ორგანიზაციების სიაა.";
+$text['description-contacts']['nl-nl'] = "Het kontact is een lijst van personen en organisaties.";
+$text['description-contacts']['pl-pl'] = "Lista kontaktów składa się z listy osób i organizacji.";
+$text['description-contacts']['pt-br'] = "Lista de contatos ";
+$text['description-contacts']['pt-pt'] = "O contacto é uma lista de indivíduos e organizações.";
+$text['description-contacts']['ro-ro'] = "Contactul este o listă de persoane și organizații.";
+$text['description-contacts']['ru-ru'] = "Контакт - это список лиц и организаций.";
+$text['description-contacts']['sv-se'] = "Kontakterna är en lista på individer och organisattioner.";
+$text['description-contacts']['uk-ua'] = "Контакт – це список осіб та організацій.";
+$text['description-contacts']['zh-cn'] = "联系人是个人和组织的列表。";
+$text['description-contacts']['ja-jp'] = "連絡先は個人および組織のリストです。";
+$text['description-contacts']['ko-kr'] = "연락처는 개인 및 조직의 목록입니다.";
+
+$text['description-contact_url-edit']['en-us'] = "Contact url address information.";
+$text['description-contact_url-edit']['en-gb'] = "Contact url address information.";
+$text['description-contact_url-edit']['ar-eg'] = "معلومات عنوان URL للاتصال.";
+$text['description-contact_url-edit']['de-at'] = "URL mit Adressinformationen des Kontakts.";
+$text['description-contact_url-edit']['de-ch'] = "URL mit Adressinformationen des Kontakts.";
+$text['description-contact_url-edit']['de-de'] = "URL mit Adressinformationen des Kontakts.";
+$text['description-contact_url-edit']['el-gr'] = "Πληροφορίες διεύθυνσης συνδέσμου επαφής.";
+$text['description-contact_url-edit']['es-cl'] = "Contactar con información de la dirección de correo electrónico.";
+$text['description-contact_url-edit']['es-mx'] = "Contactar con información de la dirección de correo electrónico.";
+$text['description-contact_url-edit']['fr-ca'] = "Coordonnées de l'adresse e-mail.";
+$text['description-contact_url-edit']['fr-fr'] = "Coordonnées de l'adresse e-mail.";
+$text['description-contact_url-edit']['he-il'] = "פרטי כתובת אתר ליצירת קשר.";
+$text['description-contact_url-edit']['it-it'] = "Informazioni sull'indirizzo dell'URL di contatto.";
+$text['description-contact_url-edit']['ka-ge'] = "საკონტაქტო URL მისამართები.";
+$text['description-contact_url-edit']['nl-nl'] = "Kontact URL adres informatie.";
+$text['description-contact_url-edit']['pl-pl'] = "Informacje kontaktowe adresu url.";
+$text['description-contact_url-edit']['pt-br'] = "Informações de endereço URL dos contatos";
+$text['description-contact_url-edit']['pt-pt'] = "As informações de contato endereço de url.";
+$text['description-contact_url-edit']['ro-ro'] = "Informații despre adresa URL de contact.";
+$text['description-contact_url-edit']['ru-ru'] = "Контактные URL-адреса.";
+$text['description-contact_url-edit']['sv-se'] = "Kontakt url adress information.";
+$text['description-contact_url-edit']['uk-ua'] = "Адреса контактної URL-адреси.";
+$text['description-contact_url-edit']['zh-cn'] = "联系 url 地址信息。";
+$text['description-contact_url-edit']['ja-jp'] = "連絡先URLアドレス情報。";
+$text['description-contact_url-edit']['ko-kr'] = "URL 주소 정보에 문의하십시오.";
+
+$text['description-contact_url-add']['en-us'] = "Contact url address information.";
+$text['description-contact_url-add']['en-gb'] = "Contact url address information.";
+$text['description-contact_url-add']['ar-eg'] = "معلومات عنوان URL للاتصال.";
+$text['description-contact_url-add']['de-at'] = "URL mit Adressinformationen des Kontakts.";
+$text['description-contact_url-add']['de-ch'] = "URL mit Adressinformationen des Kontakts.";
+$text['description-contact_url-add']['de-de'] = "URL mit Adressinformationen des Kontakts.";
+$text['description-contact_url-add']['el-gr'] = "Πληροφορίες διεύθυνσης συνδέσμου επαφής.";
+$text['description-contact_url-add']['es-cl'] = "Contactar con información de la dirección de correo electrónico.";
+$text['description-contact_url-add']['es-mx'] = "Contactar con información de la dirección de correo electrónico.";
+$text['description-contact_url-add']['fr-ca'] = "Coordonnées de l'adresse e-mail.";
+$text['description-contact_url-add']['fr-fr'] = "Coordonnées de l'adresse e-mail.";
+$text['description-contact_url-add']['he-il'] = "פרטי כתובת אתר ליצירת קשר.";
+$text['description-contact_url-add']['it-it'] = "Indirizzo URL informazioni contatto.Indirizzo URL informazioni contatto.";
+$text['description-contact_url-add']['ka-ge'] = "საკონტაქტო URL მისამართები.";
+$text['description-contact_url-add']['nl-nl'] = "Kontact URL adres informatie.";
+$text['description-contact_url-add']['pl-pl'] = "Informacje kontaktowe adresu url.";
+$text['description-contact_url-add']['pt-br'] = "Informações de endereço URL dos contatos";
+$text['description-contact_url-add']['pt-pt'] = "As informações de contato endereço de url.";
+$text['description-contact_url-add']['ro-ro'] = "Informații despre adresa URL de contact.";
+$text['description-contact_url-add']['ru-ru'] = "Контактные URL-адреса.";
+$text['description-contact_url-add']['sv-se'] = "Kontakt url adress information.";
+$text['description-contact_url-add']['uk-ua'] = "Адреса контактної URL-адреси.";
+$text['description-contact_url-add']['zh-cn'] = "联系 url 地址信息。";
+$text['description-contact_url-add']['ja-jp'] = "連絡先URLアドレス情報。";
+$text['description-contact_url-add']['ko-kr'] = "URL 주소 정보에 문의하십시오.";
+
+$text['description-contact_url']['en-us'] = "Enter the website address.";
+$text['description-contact_url']['en-gb'] = "Enter the website address.";
+$text['description-contact_url']['ar-eg'] = "أدخل عنوان الموقع.";
+$text['description-contact_url']['de-at'] = "Geben Sie die Webseite an.";
+$text['description-contact_url']['de-ch'] = "Geben Sie die Webseite an.";
+$text['description-contact_url']['de-de'] = "Geben Sie die Webseite an.";
+$text['description-contact_url']['el-gr'] = "Εισάγετε τη διεύθυνση του ιστοτόπου.";
+$text['description-contact_url']['es-cl'] = "Ingrese la dirección del sitio web.";
+$text['description-contact_url']['es-mx'] = "Ingrese la dirección del sitio web.";
+$text['description-contact_url']['fr-ca'] = "Entrer l'adresse du site internet.";
+$text['description-contact_url']['fr-fr'] = "Entrer l'adresse du site internet.";
+$text['description-contact_url']['he-il'] = "הזן את כתובת האתר.";
+$text['description-contact_url']['it-it'] = "Inserire indirizzo sito web.";
+$text['description-contact_url']['ka-ge'] = "შეიყვანეთ ვებგვერდის მისამართი.";
+$text['description-contact_url']['nl-nl'] = "Voer het web-site adres in.";
+$text['description-contact_url']['pl-pl'] = "Wprowadź adres strony internetowej";
+$text['description-contact_url']['pt-br'] = "Insira o endereço do website";
+$text['description-contact_url']['pt-pt'] = "Introduza o endereço do website.";
+$text['description-contact_url']['ro-ro'] = "Introdu adresa site-ului web.";
+$text['description-contact_url']['ru-ru'] = "Введите адрес web-сайта.";
+$text['description-contact_url']['sv-se'] = "Ange websida adress.";
+$text['description-contact_url']['uk-ua'] = "Введіть адресу сайту.";
+$text['description-contact_url']['zh-cn'] = "输入网站地址。";
+$text['description-contact_url']['ja-jp'] = "Web サイトのアドレスを入力します。";
+$text['description-contact_url']['ko-kr'] = "웹사이트 주소를 입력하세요.";
+
+$text['description-contact_type_import']['en-us'] = "Set a type for the contacts.";
+$text['description-contact_type_import']['en-gb'] = "Set a type for the contacts.";
+$text['description-contact_type_import']['ar-eg'] = "حدد نوع جهات الاتصال.";
+$text['description-contact_type_import']['de-at'] = "Setzen Sie die Art des Kontakts.";
+$text['description-contact_type_import']['de-ch'] = "Setzen Sie die Art des Kontakts.";
+$text['description-contact_type_import']['de-de'] = "Setzen Sie die Art des Kontakts.";
+$text['description-contact_type_import']['el-gr'] = "Ορίστε ένα τύπο για τις επαφές.";
+$text['description-contact_type_import']['es-cl'] = "Definición de un tipo de los contactos.";
+$text['description-contact_type_import']['es-mx'] = "Definición de un tipo de los contactos.";
+$text['description-contact_type_import']['fr-ca'] = "Définir un type pour les contacts.";
+$text['description-contact_type_import']['fr-fr'] = "Définir un type pour les contacts.";
+$text['description-contact_type_import']['he-il'] = "הגדר סוג עבור אנשי הקשר.";
+$text['description-contact_type_import']['it-it'] = "Imposta un tipo per i contatti.";
+$text['description-contact_type_import']['ka-ge'] = "აირჩიეთ ტიპი კონტაქტებისთვის.";
+$text['description-contact_type_import']['nl-nl'] = "Stel type voor kontacten in.";
+$text['description-contact_type_import']['pl-pl'] = "Ustaw typ kontaktów.";
+$text['description-contact_type_import']['pt-br'] = "Defina um tipo para os contatos";
+$text['description-contact_type_import']['pt-pt'] = "Definir um tipo para os contatos.";
+$text['description-contact_type_import']['ro-ro'] = "Setați un tip pentru contacte.";
+$text['description-contact_type_import']['ru-ru'] = "Задайте тип контактов.";
+$text['description-contact_type_import']['sv-se'] = "Ställ in en typ för kontakter.";
+$text['description-contact_type_import']['uk-ua'] = "Встановіть тип для контактів.";
+$text['description-contact_type_import']['zh-cn'] = "为联系人设置类型。";
+$text['description-contact_type_import']['ja-jp'] = "連絡先のタイプを設定します。";
+$text['description-contact_type_import']['ko-kr'] = "연락처 유형을 설정합니다.";
+
+$text['description-contact_type']['en-us'] = "Set the contact type.";
+$text['description-contact_type']['en-gb'] = "Set the contact type.";
+$text['description-contact_type']['ar-eg'] = "حدد نوع جهة الاتصال.";
+$text['description-contact_type']['de-at'] = "Setzen Sie die Art des Kontakts";
+$text['description-contact_type']['de-ch'] = "Setzen Sie die Art des Kontakts";
+$text['description-contact_type']['de-de'] = "Setzen Sie die Art des Kontakts";
+$text['description-contact_type']['el-gr'] = "Ορίστε τον τύπο επαφής";
+$text['description-contact_type']['es-cl'] = "Establecer el tipo de contacto.";
+$text['description-contact_type']['es-mx'] = "Establecer el tipo de contacto.";
+$text['description-contact_type']['fr-ca'] = "Définissez le type de contact.";
+$text['description-contact_type']['fr-fr'] = "Définissez le type de contact.";
+$text['description-contact_type']['he-il'] = "הגדר את סוג איש הקשר.";
+$text['description-contact_type']['it-it'] = "Imposta il tipo contatto.";
+$text['description-contact_type']['ka-ge'] = "დააყენეთ კონტაქტის ტიპი.";
+$text['description-contact_type']['nl-nl'] = "Ste konact type in.";
+$text['description-contact_type']['pl-pl'] = "Ustaw typ kontaktu.";
+$text['description-contact_type']['pt-br'] = "Defina um tipo para o contato";
+$text['description-contact_type']['pt-pt'] = "Defina o tipo de contato.";
+$text['description-contact_type']['ro-ro'] = "Setați tipul de contact.";
+$text['description-contact_type']['ru-ru'] = "Задайте тип контакта.";
+$text['description-contact_type']['sv-se'] = "Ange kontakt typ-.";
+$text['description-contact_type']['uk-ua'] = "Встановіть тип контакту.";
+$text['description-contact_type']['zh-cn'] = "设置联系人类型。";
+$text['description-contact_type']['ja-jp'] = "接触タイプを設定します。";
+$text['description-contact_type']['ko-kr'] = "연락처 유형을 설정합니다.";
+
+$text['description-contact_title']['en-us'] = "Enter the title.";
+$text['description-contact_title']['en-gb'] = "Enter the title.";
+$text['description-contact_title']['ar-eg'] = "أدخل العنوان.";
+$text['description-contact_title']['de-at'] = "Geben Sie einen Titel an.";
+$text['description-contact_title']['de-ch'] = "Geben Sie einen Titel an.";
+$text['description-contact_title']['de-de'] = "Geben Sie einen Titel an.";
+$text['description-contact_title']['el-gr'] = "Εισάγετε τον τίτλο.";
+$text['description-contact_title']['es-cl'] = "Ingrese el título.";
+$text['description-contact_title']['es-mx'] = "Ingrese el título.";
+$text['description-contact_title']['fr-ca'] = "Entrez le titre.";
+$text['description-contact_title']['fr-fr'] = "Entrez le titre.";
+$text['description-contact_title']['he-il'] = "הזן את הכותרת.";
+$text['description-contact_title']['it-it'] = "Inserire il titolo.";
+$text['description-contact_title']['ka-ge'] = "შეიყვანეთ სათაური.";
+$text['description-contact_title']['nl-nl'] = "Voer de titel in.";
+$text['description-contact_title']['pl-pl'] = "Wprowadź tytuł";
+$text['description-contact_title']['pt-br'] = "Defina um titulo";
+$text['description-contact_title']['pt-pt'] = "Introduza o título.";
+$text['description-contact_title']['ro-ro'] = "Introduceți titlul.";
+$text['description-contact_title']['ru-ru'] = "Введите название.";
+$text['description-contact_title']['sv-se'] = "Ange Titel.";
+$text['description-contact_title']['uk-ua'] = "Введіть назву.";
+$text['description-contact_title']['zh-cn'] = "输入标题。";
+$text['description-contact_title']['ja-jp'] = "タイトルを入力します。";
+$text['description-contact_title']['ko-kr'] = "제목을 입력하세요.";
+
+$text['description-contact_time_zone']['en-us'] = "Enter the time zone.";
+$text['description-contact_time_zone']['en-gb'] = "Enter the time zone.";
+$text['description-contact_time_zone']['ar-eg'] = "أدخل المنطقة الزمنية.";
+$text['description-contact_time_zone']['de-at'] = "Geben Sie eine Zeitzone an.";
+$text['description-contact_time_zone']['de-ch'] = "Geben Sie eine Zeitzone an.";
+$text['description-contact_time_zone']['de-de'] = "Geben Sie eine Zeitzone an.";
+$text['description-contact_time_zone']['el-gr'] = "Εισάγετε τη ζώνη ώρας.";
+$text['description-contact_time_zone']['es-cl'] = "Ingrese la zona horaria.";
+$text['description-contact_time_zone']['es-mx'] = "Ingrese la zona horaria.";
+$text['description-contact_time_zone']['fr-ca'] = "Entrez le fuseau horaire.";
+$text['description-contact_time_zone']['fr-fr'] = "Entrez le fuseau horaire.";
+$text['description-contact_time_zone']['he-il'] = "הזן את אזור הזמן.";
+$text['description-contact_time_zone']['it-it'] = "Inserire la time zone.";
+$text['description-contact_time_zone']['ka-ge'] = "შეიყვანეთ დროის სარტყელი.";
+$text['description-contact_time_zone']['nl-nl'] = "Voer de tijdzone in.";
+$text['description-contact_time_zone']['pl-pl'] = "Wprowadźj strefę czasową";
+$text['description-contact_time_zone']['pt-br'] = "Insira o fuso horário";
+$text['description-contact_time_zone']['pt-pt'] = "Introduza o time zone.";
+$text['description-contact_time_zone']['ro-ro'] = "Introduceți fusul orar.";
+$text['description-contact_time_zone']['ru-ru'] = "Введите часовой пояс.";
+$text['description-contact_time_zone']['sv-se'] = "Ange Tidszon.";
+$text['description-contact_time_zone']['uk-ua'] = "Введіть часовий пояс.";
+$text['description-contact_time_zone']['zh-cn'] = "输入时区。";
+$text['description-contact_time_zone']['ja-jp'] = "タイムゾーンを入力します。";
+$text['description-contact_time_zone']['ko-kr'] = "시간대를 입력합니다.";
+
+$text['description-contact_setting_value']['en-us'] = "Enter the value of this setting.";
+$text['description-contact_setting_value']['en-gb'] = "Enter the value of this setting.";
+$text['description-contact_setting_value']['ar-eg'] = "أدخل قيمة هذا الإعداد.";
+$text['description-contact_setting_value']['de-at'] = "Geben Sie den Wert für diese Einstellung an.";
+$text['description-contact_setting_value']['de-ch'] = "Geben Sie den Wert für diese Einstellung an.";
+$text['description-contact_setting_value']['de-de'] = "Geben Sie den Wert für diese Einstellung an.";
+$text['description-contact_setting_value']['el-gr'] = "Εισάγετε την τιμή της ρύθμισης.";
+$text['description-contact_setting_value']['es-cl'] = "Ingrese el valor para esta configuración.";
+$text['description-contact_setting_value']['es-mx'] = "Ingrese el valor para esta configuración.";
+$text['description-contact_setting_value']['fr-ca'] = "Entrez la valeur de ce paramètre.";
+$text['description-contact_setting_value']['fr-fr'] = "Entrez la valeur de ce paramètre.";
+$text['description-contact_setting_value']['he-il'] = "הזן את הערך של הגדרה זו.";
+$text['description-contact_setting_value']['it-it'] = "Inserire il valore di questo parametro.";
+$text['description-contact_setting_value']['ka-ge'] = "შეიყვანეთ მნიშვნელობა ამ პარამეტრისთვის.";
+$text['description-contact_setting_value']['nl-nl'] = "Voor de waarde voor deze instelling in.";
+$text['description-contact_setting_value']['pl-pl'] = "Wprowadź wartość tego ustawienia.";
+$text['description-contact_setting_value']['pt-br'] = "Insira o valor desta definição";
+$text['description-contact_setting_value']['pt-pt'] = "Introduza o valor desta definição.";
+$text['description-contact_setting_value']['ro-ro'] = "Introduceți valoarea acestei setări.";
+$text['description-contact_setting_value']['ru-ru'] = "Введите значение этого параметра.";
+$text['description-contact_setting_value']['sv-se'] = "Ange värdet på denna inställning.";
+$text['description-contact_setting_value']['uk-ua'] = "Введіть значення цього параметра.";
+$text['description-contact_setting_value']['zh-cn'] = "输入此设置的值。";
+$text['description-contact_setting_value']['ja-jp'] = "この設定の値を入力します。";
+$text['description-contact_setting_value']['ko-kr'] = "이 설정의 값을 입력하십시오.";
+
+$text['description-contact_setting_type']['en-us'] = "Enter the type.";
+$text['description-contact_setting_type']['en-gb'] = "Enter the type.";
+$text['description-contact_setting_type']['ar-eg'] = "أدخل النوع.";
+$text['description-contact_setting_type']['de-at'] = "Geben Sie die Art an.";
+$text['description-contact_setting_type']['de-ch'] = "Geben Sie die Art an.";
+$text['description-contact_setting_type']['de-de'] = "Geben Sie die Art an.";
+$text['description-contact_setting_type']['el-gr'] = "Εισάγετε τον τύπο.";
+$text['description-contact_setting_type']['es-cl'] = "Introduzca el tipo.";
+$text['description-contact_setting_type']['es-mx'] = "Introduzca el tipo.";
+$text['description-contact_setting_type']['fr-ca'] = "Entrez le type.";
+$text['description-contact_setting_type']['fr-fr'] = "Entrez le type.";
+$text['description-contact_setting_type']['he-il'] = "הזן את הסוג.";
+$text['description-contact_setting_type']['it-it'] = "Inserire il tipo.";
+$text['description-contact_setting_type']['ka-ge'] = "შეიყვანეთ ტიპი.";
+$text['description-contact_setting_type']['nl-nl'] = "Voer het type in.";
+$text['description-contact_setting_type']['pl-pl'] = "Wprowadź typ";
+$text['description-contact_setting_type']['pt-br'] = "Digite o tipo";
+$text['description-contact_setting_type']['pt-pt'] = "Digite o tipo.";
+$text['description-contact_setting_type']['ro-ro'] = "Introduceți tipul.";
+$text['description-contact_setting_type']['ru-ru'] = "Введите тип.";
+$text['description-contact_setting_type']['sv-se'] = "Ange Typen.";
+$text['description-contact_setting_type']['uk-ua'] = "Введіть тип.";
+$text['description-contact_setting_type']['zh-cn'] = "输入类型。";
+$text['description-contact_setting_type']['ja-jp'] = "タイプを入力します。";
+$text['description-contact_setting_type']['ko-kr'] = "유형을 입력합니다.";
+
+$text['description-contact_setting_subcategory']['en-us'] = "Enter the subcategory.";
+$text['description-contact_setting_subcategory']['en-gb'] = "Enter the subcategory.";
+$text['description-contact_setting_subcategory']['ar-eg'] = "أدخل الفئة الفرعية.";
+$text['description-contact_setting_subcategory']['de-at'] = "Geben Sie eine Unterkategorie an.";
+$text['description-contact_setting_subcategory']['de-ch'] = "Geben Sie eine Unterkategorie an.";
+$text['description-contact_setting_subcategory']['de-de'] = "Geben Sie eine Unterkategorie an.";
+$text['description-contact_setting_subcategory']['el-gr'] = "Εισάγετε την υποκατηγορία.";
+$text['description-contact_setting_subcategory']['es-cl'] = "Ingrese la categoría.";
+$text['description-contact_setting_subcategory']['es-mx'] = "Ingrese la categoría.";
+$text['description-contact_setting_subcategory']['fr-ca'] = "Entrez la sous-catégorie.";
+$text['description-contact_setting_subcategory']['fr-fr'] = "Entrez la sous-catégorie.";
+$text['description-contact_setting_subcategory']['he-il'] = "הזן את קטגוריית המשנה.";
+$text['description-contact_setting_subcategory']['it-it'] = "Inserire la sottocategoria.";
+$text['description-contact_setting_subcategory']['ka-ge'] = "შეიყვანეთ ქვეკატეგორია.";
+$text['description-contact_setting_subcategory']['nl-nl'] = "Voer de subcategorie in.";
+$text['description-contact_setting_subcategory']['pl-pl'] = "Wprowadź podkategorię";
+$text['description-contact_setting_subcategory']['pt-br'] = "Insira uma subcategoria";
+$text['description-contact_setting_subcategory']['pt-pt'] = "Introduza a subcategoria";
+$text['description-contact_setting_subcategory']['ro-ro'] = "Introduceți subcategoria.";
+$text['description-contact_setting_subcategory']['ru-ru'] = "Вход в подкатегорию.";
+$text['description-contact_setting_subcategory']['sv-se'] = "Ange underkategori.";
+$text['description-contact_setting_subcategory']['uk-ua'] = "Введіть підкатегорію.";
+$text['description-contact_setting_subcategory']['zh-cn'] = "输入子类别。";
+$text['description-contact_setting_subcategory']['ja-jp'] = "サブカテゴリを入力します。";
+$text['description-contact_setting_subcategory']['ko-kr'] = "하위 범주를 입력합니다.";
+
+$text['description-contact_setting_edit']['en-us'] = "Edit a setting for this contact.";
+$text['description-contact_setting_edit']['en-gb'] = "Edit a setting for this contact.";
+$text['description-contact_setting_edit']['ar-eg'] = "قم بتحرير إعداد لجهة الاتصال هذه.";
+$text['description-contact_setting_edit']['de-at'] = "Geben Sie eine Einstellung für diesen Kontakt an.";
+$text['description-contact_setting_edit']['de-ch'] = "Geben Sie eine Einstellung für diesen Kontakt an.";
+$text['description-contact_setting_edit']['de-de'] = "Geben Sie eine Einstellung für diesen Kontakt an.";
+$text['description-contact_setting_edit']['el-gr'] = "Επεξεργαστείτε μια ρύθμιση για αυτή την επαφή.";
+$text['description-contact_setting_edit']['es-cl'] = "Edita una configuración para este contacto.";
+$text['description-contact_setting_edit']['es-mx'] = "Edita una configuración para este contacto.";
+$text['description-contact_setting_edit']['fr-ca'] = "Editer un paramètre du contact.";
+$text['description-contact_setting_edit']['fr-fr'] = "Editer un paramètre du contact.";
+$text['description-contact_setting_edit']['he-il'] = "ערוך הגדרה עבור איש קשר זה.";
+$text['description-contact_setting_edit']['it-it'] = "Modifica un parametro di questo contatto.";
+$text['description-contact_setting_edit']['ka-ge'] = "პარამეტრის ჩასწორება ამ კონტაქტისთვის.";
+$text['description-contact_setting_edit']['nl-nl'] = "Bewerk de instelling voor dit kontact.";
+$text['description-contact_setting_edit']['pl-pl'] = "Edytuj ustawienia tego kontaktu.";
+$text['description-contact_setting_edit']['pt-br'] = "Editar uma descrição para esse contato";
+$text['description-contact_setting_edit']['pt-pt'] = "Editar uma definição deste contacto.";
+$text['description-contact_setting_edit']['ro-ro'] = "Editați o setare pentru acest contact.";
+$text['description-contact_setting_edit']['ru-ru'] = "Изменить настройки для этого контакта.";
+$text['description-contact_setting_edit']['sv-se'] = "Ändra en inställning för denna kontakt.";
+$text['description-contact_setting_edit']['uk-ua'] = "Відредагуйте налаштування для цього контакту.";
+$text['description-contact_setting_edit']['zh-cn'] = "编辑此联系人的设置。";
+$text['description-contact_setting_edit']['ja-jp'] = "この連絡先の設定を編集します。";
+$text['description-contact_setting_edit']['ko-kr'] = "이 연락처에 대한 설정을 편집합니다.";
+
+$text['description-contact_setting_category']['en-us'] = "Enter the category.";
+$text['description-contact_setting_category']['en-gb'] = "Enter the category.";
+$text['description-contact_setting_category']['ar-eg'] = "أدخل الفئة.";
+$text['description-contact_setting_category']['de-at'] = "Geben Sie eine Kategorie an.";
+$text['description-contact_setting_category']['de-ch'] = "Geben Sie eine Kategorie an.";
+$text['description-contact_setting_category']['de-de'] = "Geben Sie eine Kategorie an.";
+$text['description-contact_setting_category']['el-gr'] = "Εισάγετε την κατηγορία.";
+$text['description-contact_setting_category']['es-cl'] = "Ingrese la categoría.";
+$text['description-contact_setting_category']['es-mx'] = "Ingrese la categoría.";
+$text['description-contact_setting_category']['fr-ca'] = "Entrez la catégorie.";
+$text['description-contact_setting_category']['fr-fr'] = "Entrez la catégorie.";
+$text['description-contact_setting_category']['he-il'] = "היכנסו לקטגוריה.";
+$text['description-contact_setting_category']['it-it'] = "Inserire la categoria.";
+$text['description-contact_setting_category']['ka-ge'] = "შეიყვანეთ კატეგორია.";
+$text['description-contact_setting_category']['nl-nl'] = "Voer een categorie in.";
+$text['description-contact_setting_category']['pl-pl'] = "Wprowadź kategorię";
+$text['description-contact_setting_category']['pt-br'] = "Insira uma categoria";
+$text['description-contact_setting_category']['pt-pt'] = "Introduza a categoria.";
+$text['description-contact_setting_category']['ro-ro'] = "Introduceți categoria.";
+$text['description-contact_setting_category']['ru-ru'] = "Введите категорию.";
+$text['description-contact_setting_category']['sv-se'] = "Ange kategori.";
+$text['description-contact_setting_category']['uk-ua'] = "Введіть категорію.";
+$text['description-contact_setting_category']['zh-cn'] = "输入类别。";
+$text['description-contact_setting_category']['ja-jp'] = "カテゴリを入力します。";
+$text['description-contact_setting_category']['ko-kr'] = "카테고리를 입력하세요.";
+
+$text['description-contact_setting_add']['en-us'] = "Add a setting for this contact.";
+$text['description-contact_setting_add']['en-gb'] = "Add a setting for this contact.";
+$text['description-contact_setting_add']['ar-eg'] = "أضف إعدادًا لجهة الاتصال هذه.";
+$text['description-contact_setting_add']['de-at'] = "Fügen Sie eine Einstellung für diesen Kontakt hinzu.";
+$text['description-contact_setting_add']['de-ch'] = "Fügen Sie eine Einstellung für diesen Kontakt hinzu.";
+$text['description-contact_setting_add']['de-de'] = "Fügen Sie eine Einstellung für diesen Kontakt hinzu.";
+$text['description-contact_setting_add']['el-gr'] = "Εισάγετε μια ρύθμιση για αυτή την επαφή.";
+$text['description-contact_setting_add']['es-cl'] = "Agregar una configuración para este contacto.";
+$text['description-contact_setting_add']['es-mx'] = "Agregar una configuración para este contacto.";
+$text['description-contact_setting_add']['fr-ca'] = "Ajouter un paramètre du contact.";
+$text['description-contact_setting_add']['fr-fr'] = "Ajouter un paramètre du contact.";
+$text['description-contact_setting_add']['he-il'] = "הוסף הגדרה עבור איש קשר זה.";
+$text['description-contact_setting_add']['it-it'] = "Inserire un parametro per questo contatto.";
+$text['description-contact_setting_add']['ka-ge'] = "პარამეტრის დამატება ამ კონტაქტისთვის.";
+$text['description-contact_setting_add']['nl-nl'] = "Voeg een instelling toe aan dit kontact.";
+$text['description-contact_setting_add']['pl-pl'] = "Dodaj ustawienia kontaktu.";
+$text['description-contact_setting_add']['pt-br'] = "Adicione ma descrição para esse contato";
+$text['description-contact_setting_add']['pt-pt'] = "Adicionar uma definição deste contacto.";
+$text['description-contact_setting_add']['ro-ro'] = "Adăugați o setare pentru acest contact.";
+$text['description-contact_setting_add']['ru-ru'] = "Добавьте параметр для этого контакта.";
+$text['description-contact_setting_add']['sv-se'] = "Lägg Till en inställning för denna kontakt.";
+$text['description-contact_setting_add']['uk-ua'] = "Додайте налаштування для цього контакту.";
+$text['description-contact_setting_add']['zh-cn'] = "为此联系人添加设置。";
+$text['description-contact_setting_add']['ja-jp'] = "この連絡先の設定を追加します。";
+$text['description-contact_setting_add']['ko-kr'] = "이 연락처에 대한 설정을 추가하십시오.";
+
+$text['description-contact_role']['en-us'] = "Enter the role.";
+$text['description-contact_role']['en-gb'] = "Enter the role.";
+$text['description-contact_role']['ar-eg'] = "أدخل الدور.";
+$text['description-contact_role']['de-at'] = "Geben Sie die Rolle an.";
+$text['description-contact_role']['de-ch'] = "Geben Sie die Rolle an.";
+$text['description-contact_role']['de-de'] = "Geben Sie die Rolle an.";
+$text['description-contact_role']['el-gr'] = "Εισάγετε το ρόλο.";
+$text['description-contact_role']['es-cl'] = "Ingrese el rol.";
+$text['description-contact_role']['es-mx'] = "Ingrese el rol.";
+$text['description-contact_role']['fr-ca'] = "Entrez le rôle.";
+$text['description-contact_role']['fr-fr'] = "Entrez le rôle.";
+$text['description-contact_role']['he-il'] = "Увійти в роль.";
+$text['description-contact_role']['it-it'] = "Inserire il ruolo.";
+$text['description-contact_role']['ka-ge'] = "შეიყვანეთ როლი.";
+$text['description-contact_role']['nl-nl'] = "Voer de rol in.";
+$text['description-contact_role']['pl-pl'] = "Wprowadź pozycję";
+$text['description-contact_role']['pt-br'] = "Insira o perfil do contato";
+$text['description-contact_role']['pt-pt'] = "Introduza o papel desempenhado";
+$text['description-contact_role']['ro-ro'] = "Introduceți rolul.";
+$text['description-contact_role']['ru-ru'] = "Введите роль.";
+$text['description-contact_role']['sv-se'] = "Ange roll.";
+$text['description-contact_role']['uk-ua'] = "Увійти в роль.";
+$text['description-contact_role']['zh-cn'] = "输入角色。";
+$text['description-contact_role']['ja-jp'] = "ロールを入力します。";
+$text['description-contact_role']['ko-kr'] = "역할을 입력합니다.";
+
+$text['description-contact_relation_reciprocal_label']['en-us'] = "Define the relationship of this contact to the contact selected above.";
+$text['description-contact_relation_reciprocal_label']['en-gb'] = "Define the relationship of this contact to the contact selected above.";
+$text['description-contact_relation_reciprocal_label']['ar-eg'] = "حدد علاقة جهة الاتصال هذه بجهة الاتصال المحددة أعلاه.";
+$text['description-contact_relation_reciprocal_label']['de-at'] = "Definieren Sie die Beziehung dieses Kontakts zu dem Kontakt aus, den Sie oben ausgewählt haben.";
+$text['description-contact_relation_reciprocal_label']['de-ch'] = "Definieren Sie die Beziehung dieses Kontakts zu dem Kontakt aus, den Sie oben ausgewählt haben.";
+$text['description-contact_relation_reciprocal_label']['de-de'] = "Definieren Sie die Beziehung dieses Kontakts zu dem Kontakt aus, den Sie oben ausgewählt haben.";
+$text['description-contact_relation_reciprocal_label']['el-gr'] = "Ορίστε τη σχέση αυτής της επαφής με την επιλεγμένη επαφή.";
+$text['description-contact_relation_reciprocal_label']['es-cl'] = "Definir la relación de este contacto para el contacto seleccionado anteriormente.";
+$text['description-contact_relation_reciprocal_label']['es-mx'] = "Definir la relación de este contacto para el contacto seleccionado anteriormente.";
+$text['description-contact_relation_reciprocal_label']['fr-ca'] = "Définir la relation de ce contact au contact sélectionné ci-dessus.";
+$text['description-contact_relation_reciprocal_label']['fr-fr'] = "Définir la relation de ce contact au contact sélectionné ci-dessus.";
+$text['description-contact_relation_reciprocal_label']['he-il'] = "הגדר את הקשר של איש קשר זה לאיש הקשר שנבחר לעיל.";
+$text['description-contact_relation_reciprocal_label']['it-it'] = "Definire la relazione tra questo contatto e il contatto selezionato precedentemente.";
+$text['description-contact_relation_reciprocal_label']['ka-ge'] = "აღწერეთ ურთიერთობა ამ კონტაქტსა და ზემოთ არჩეულ კონტაქტს შორის.";
+$text['description-contact_relation_reciprocal_label']['nl-nl'] = "Definieer de relatie van dit kontact met de hierboven geselecteerde kontacten in.";
+$text['description-contact_relation_reciprocal_label']['pl-pl'] = "Zdefiniuj relację tego kontaktu z kontaktem wybranym powyżej.";
+$text['description-contact_relation_reciprocal_label']['pt-br'] = "Definir a relação desse contato para o contato selecionado acima.";
+$text['description-contact_relation_reciprocal_label']['pt-pt'] = "Definir a relação desse contato para o contato selecionado acima.";
+$text['description-contact_relation_reciprocal_label']['ro-ro'] = "Definiți relația acestui contact cu contactul selectat mai sus.";
+$text['description-contact_relation_reciprocal_label']['ru-ru'] = "Определите связь этого контакта с контактом, выбранным выше.";
+$text['description-contact_relation_reciprocal_label']['sv-se'] = "Definiera relationen mellan denna kontakt och de valda kontakterna ovan.";
+$text['description-contact_relation_reciprocal_label']['uk-ua'] = "Визначте відношення цього контакту до вибраного вище контакту.";
+$text['description-contact_relation_reciprocal_label']['zh-cn'] = "定义此联系人与上面选择的联系人的关系。";
+$text['description-contact_relation_reciprocal_label']['ja-jp'] = "この連絡先と上で選択した連絡先との関係を定義します。";
+$text['description-contact_relation_reciprocal_label']['ko-kr'] = "위에서 선택한 연락처에 대한 이 연락처의 관계를 정의합니다.";
+
+$text['description-contact_relation_reciprocal']['en-us'] = "Select whether to also create a reciprocal relationship for the contact selected above.";
+$text['description-contact_relation_reciprocal']['en-gb'] = "Select whether to also create a reciprocal relationship for the contact selected above.";
+$text['description-contact_relation_reciprocal']['ar-eg'] = "Wybierz, czy chcesz również utworzyć relację wzajemną dla kontaktu wybranego powyżej.";
+$text['description-contact_relation_reciprocal']['de-at'] = "Wählen Sie, ob die Beziehung Wechselseitig eingetragen werden soll.";
+$text['description-contact_relation_reciprocal']['de-ch'] = "Wählen Sie, ob die Beziehung Wechselseitig eingetragen werden soll.";
+$text['description-contact_relation_reciprocal']['de-de'] = "Wählen Sie, ob die Beziehung Wechselseitig eingetragen werden soll.";
+$text['description-contact_relation_reciprocal']['el-gr'] = "Επιλέξτε εάν επιθυμειτε να δημιουργήσετε μια αμοιβαία σχέση για την παραπάνω επαφή.";
+$text['description-contact_relation_reciprocal']['es-cl'] = "Seleccione si desea crear también una relación recíproca para el contacto seleccionado anteriormente.";
+$text['description-contact_relation_reciprocal']['es-mx'] = "Seleccione si desea crear también una relación recíproca para el contacto seleccionado anteriormente.";
+$text['description-contact_relation_reciprocal']['fr-ca'] = "Sélectionnez si vous souhaitez créer également une relation réciproque pour le contact sélectionné ci-dessus.";
+$text['description-contact_relation_reciprocal']['fr-fr'] = "Sélectionnez si vous souhaitez créer également une relation réciproque pour le contact sélectionné ci-dessus.";
+$text['description-contact_relation_reciprocal']['he-il'] = "בחר אם ליצור גם קשר הדדי עבור איש הקשר שנבחר לעיל.";
+$text['description-contact_relation_reciprocal']['it-it'] = "Selezionare se si vuole creare una relazione reciproca con il contatto selezionato precedentemente.";
+$text['description-contact_relation_reciprocal']['ka-ge'] = "აირჩიეთ, შეიქმნება თუ არა ორმხრივი ურთიერთობა ზემოთ არჩეული კონტაქტისთვის.";
+$text['description-contact_relation_reciprocal']['nl-nl'] = "Selecteer de omgekeerde relatie voor het bovenstaande kontact.";
+$text['description-contact_relation_reciprocal']['pl-pl'] = "Wybierz, czy chcesz również utworzyć relację wzajemną dla kontaktu wybranego powyżej.";
+$text['description-contact_relation_reciprocal']['pt-br'] = "Seleccione se pretende também criar uma relação de reciprocidade para o contato selecionado acima.";
+$text['description-contact_relation_reciprocal']['pt-pt'] = "Seleccione se pretende também criar uma relação de reciprocidade para o contato selecionado acima.";
+$text['description-contact_relation_reciprocal']['ro-ro'] = "Selectați dacă doriți să creați și o relație reciprocă pentru contactul selectat mai sus.";
+$text['description-contact_relation_reciprocal']['ru-ru'] = "Выберите, следует ли также создать взаимные отношения для контакта, выбранного выше.";
+$text['description-contact_relation_reciprocal']['sv-se'] = "Välj om du vill också skapa ett ömsesidigt förhållande för kontakten som valts ovan.";
+$text['description-contact_relation_reciprocal']['uk-ua'] = "Виберіть, чи створювати взаємні стосунки для вибраного вище контакту.";
+$text['description-contact_relation_reciprocal']['zh-cn'] = "选择是否也为上面选择的联系人创建互惠关系。";
+$text['description-contact_relation_reciprocal']['ja-jp'] = "上記で選択した連絡先に対しても相互関係を作成するかどうかを選択します。";
+$text['description-contact_relation_reciprocal']['ko-kr'] = "위에서 선택한 연락처에 대한 상호 관계도 생성할지 여부를 선택합니다.";
+
+$text['description-contact_organization']['en-us'] = "Enter the organization.";
+$text['description-contact_organization']['en-gb'] = "Enter the organization.";
+$text['description-contact_organization']['ar-eg'] = "أدخل المنظمة.";
+$text['description-contact_organization']['de-at'] = "Geben Sie das Unternehmen an.";
+$text['description-contact_organization']['de-ch'] = "Geben Sie das Unternehmen an.";
+$text['description-contact_organization']['de-de'] = "Geben Sie das Unternehmen an.";
+$text['description-contact_organization']['el-gr'] = "Εισάγετε τον οργανισμό.";
+$text['description-contact_organization']['es-cl'] = "Ingrese la organización.";
+$text['description-contact_organization']['es-mx'] = "Ingrese la organización.";
+$text['description-contact_organization']['fr-ca'] = "Entrez l'organisation.";
+$text['description-contact_organization']['fr-fr'] = "Entrez l'organisation.";
+$text['description-contact_organization']['he-il'] = "היכנסו לארגון.";
+$text['description-contact_organization']['it-it'] = "Inserire l'organizzazione";
+$text['description-contact_organization']['ka-ge'] = "შეიყვანეთ ორგანიზაცია.";
+$text['description-contact_organization']['nl-nl'] = "Voer de organisatie in.";
+$text['description-contact_organization']['pl-pl'] = "Wprowadź nazwę organizacji";
+$text['description-contact_organization']['pt-br'] = "Insira a organização do usuário";
+$text['description-contact_organization']['pt-pt'] = "Introduzir a organização.";
+$text['description-contact_organization']['ro-ro'] = "Intră în organizație.";
+$text['description-contact_organization']['ru-ru'] = "Войдите в организацию.";
+$text['description-contact_organization']['sv-se'] = "Ange organisationen.";
+$text['description-contact_organization']['uk-ua'] = "Введіть організацію.";
+$text['description-contact_organization']['zh-cn'] = "进入组织。";
+$text['description-contact_organization']['ja-jp'] = "組織を入力します。";
+$text['description-contact_organization']['ko-kr'] = "조직을 입력합니다.";
+
+$text['description-contact_notes-edit']['en-us'] = "Enter the desired note below.";
+$text['description-contact_notes-edit']['en-gb'] = "Enter the desired note below.";
+$text['description-contact_notes-edit']['ar-eg'] = "أدخل الملاحظة المطلوبة أدناه.";
+$text['description-contact_notes-edit']['de-at'] = "Geben Sie die gewünschte Notiz unten ein.";
+$text['description-contact_notes-edit']['de-ch'] = "Geben Sie die gewünschte Notiz unten ein.";
+$text['description-contact_notes-edit']['de-de'] = "Geben Sie die gewünschte Notiz unten ein.";
+$text['description-contact_notes-edit']['el-gr'] = "Εισάγετε την επιθυμητή σημείωση παρακάτω.";
+$text['description-contact_notes-edit']['es-cl'] = "Modifique la nota de contacto";
+$text['description-contact_notes-edit']['es-mx'] = "Modifique la nota de contacto";
+$text['description-contact_notes-edit']['fr-ca'] = "Entrez ci-dessous la note désirée.";
+$text['description-contact_notes-edit']['fr-fr'] = "Entrez ci-dessous la note désirée.";
+$text['description-contact_notes-edit']['he-il'] = "הזן את ההערה הרצויה למטה.";
+$text['description-contact_notes-edit']['it-it'] = "Inserire la nota desiderata.";
+$text['description-contact_notes-edit']['ka-ge'] = "შეიყვანეთ სასურველი შენიშვნა ქვემოთ.";
+$text['description-contact_notes-edit']['nl-nl'] = "Voer de gewenste notitie in.";
+$text['description-contact_notes-edit']['pl-pl'] = "Poniżej wprowadź notatkę";
+$text['description-contact_notes-edit']['pt-br'] = "Digite uma nota desejava abaixo";
+$text['description-contact_notes-edit']['pt-pt'] = "Digite a nota desejada abaixo.";
+$text['description-contact_notes-edit']['ro-ro'] = "Introduceți nota dorită mai jos.";
+$text['description-contact_notes-edit']['ru-ru'] = "Введите нужное примечание ниже.";
+$text['description-contact_notes-edit']['sv-se'] = "Ange önskad notering nedan.";
+$text['description-contact_notes-edit']['uk-ua'] = "Введіть потрібну примітку нижче.";
+$text['description-contact_notes-edit']['zh-cn'] = "在下面输入所需的注释。";
+$text['description-contact_notes-edit']['ja-jp'] = "以下にご希望のメモを入力してください。";
+$text['description-contact_notes-edit']['ko-kr'] = "在下面输入所需的注释。";
+
+$text['description-contact_notes-add']['en-us'] = "Enter the desired note below.";
+$text['description-contact_notes-add']['en-gb'] = "Enter the desired note below.";
+$text['description-contact_notes-add']['ar-eg'] = "أدخل الملاحظة المطلوبة أدناه.";
+$text['description-contact_notes-add']['de-at'] = "Geben Sie die gewünschte Notiz unten ein.";
+$text['description-contact_notes-add']['de-ch'] = "Geben Sie die gewünschte Notiz unten ein.";
+$text['description-contact_notes-add']['de-de'] = "Geben Sie die gewünschte Notiz unten ein.";
+$text['description-contact_notes-add']['el-gr'] = "Εισάγετε την επιθυμητή σημείωση παρακάτω.";
+$text['description-contact_notes-add']['es-cl'] = "Ingrese una nota de contacto.";
+$text['description-contact_notes-add']['es-mx'] = "Ingrese una nota de contacto.";
+$text['description-contact_notes-add']['fr-ca'] = "Entrez ci-dessous la note désirée.";
+$text['description-contact_notes-add']['fr-fr'] = "Entrez ci-dessous la note désirée.";
+$text['description-contact_notes-add']['he-il'] = "הזן את ההערה הרצויה למטה.";
+$text['description-contact_notes-add']['it-it'] = "Inserire la nota desiderata.";
+$text['description-contact_notes-add']['ka-ge'] = "შეიყვანეთ სასურველი შენიშვნა ქვემოთ.";
+$text['description-contact_notes-add']['nl-nl'] = "Voer de gewenste notitie hieronder in.";
+$text['description-contact_notes-add']['pl-pl'] = "Poniżej wprowadź notatkę";
+$text['description-contact_notes-add']['pt-br'] = "Digite a nota desejada abaixo";
+$text['description-contact_notes-add']['pt-pt'] = "Digite a nota desejada abaixo.";
+$text['description-contact_notes-add']['ro-ro'] = "Introduceți nota dorită mai jos.";
+$text['description-contact_notes-add']['ru-ru'] = "Введите нужное примечание ниже.";
+$text['description-contact_notes-add']['sv-se'] = "Ange önskad notering nedan.";
+$text['description-contact_notes-add']['uk-ua'] = "Введіть потрібну примітку нижче.";
+$text['description-contact_notes-add']['zh-cn'] = "在下面输入所需的注释。";
+$text['description-contact_notes-add']['ja-jp'] = "以下にご希望のメモを入力してください。";
+$text['description-contact_notes-add']['ko-kr'] = "아래에 원하는 메모를 입력하십시오.";
+
+$text['description-contact_note']['en-us'] = "Enter a note for this contact.";
+$text['description-contact_note']['en-gb'] = "Enter a note for this contact.";
+$text['description-contact_note']['ar-eg'] = "أدخل ملاحظة لجهة الاتصال هذه.";
+$text['description-contact_note']['de-at'] = "Geben Sie eine Notiz für diesen Kontakt ein.";
+$text['description-contact_note']['de-ch'] = "Geben Sie eine Notiz für diesen Kontakt ein.";
+$text['description-contact_note']['de-de'] = "Geben Sie eine Notiz für diesen Kontakt ein.";
+$text['description-contact_note']['el-gr'] = "Εισάγετε μια σημείωση για αυτή την επαφή.";
+$text['description-contact_note']['es-cl'] = "Nota de contacto";
+$text['description-contact_note']['es-mx'] = "Nota de contacto";
+$text['description-contact_note']['fr-ca'] = "Entrez une note à ce contact.";
+$text['description-contact_note']['fr-fr'] = "Entrez une note à ce contact.";
+$text['description-contact_note']['he-il'] = "הזן הערה עבור איש קשר זה.";
+$text['description-contact_note']['it-it'] = "Inserire una nota per questo contatto.";
+$text['description-contact_note']['ka-ge'] = "შეიყვანეთ შენიშვნა ამ კონტაქტისთვის.";
+$text['description-contact_note']['nl-nl'] = "Voer een notitie in voor dit kontact.";
+$text['description-contact_note']['pl-pl'] = "Wprowadź notatkę o ontakcie";
+$text['description-contact_note']['pt-br'] = "Insira uma nota para este contato";
+$text['description-contact_note']['pt-pt'] = "Ingrese una nota para este contacto.";
+$text['description-contact_note']['ro-ro'] = "Introduceți o notă pentru acest contact.";
+$text['description-contact_note']['ru-ru'] = "Введите заметку для этого контакта.";
+$text['description-contact_note']['sv-se'] = "Ange en notering för denna kontakt.";
+$text['description-contact_note']['uk-ua'] = "Введіть примітку для цього контакту.";
+$text['description-contact_note']['zh-cn'] = "输入此联系人的注释。";
+$text['description-contact_note']['ja-jp'] = "この連絡先のメモを入力します。";
+$text['description-contact_note']['ko-kr'] = "이 연락처에 대한 메모를 입력하십시오.";
+
+$text['description-contact_name_suffix']['en-us'] = "Enter the name suffix.";
+$text['description-contact_name_suffix']['en-gb'] = "Enter the name suffix.";
+$text['description-contact_name_suffix']['ar-eg'] = "أدخل لاحقة الاسم.";
+$text['description-contact_name_suffix']['de-at'] = "Geben Sie die Vorsilbe ein.";
+$text['description-contact_name_suffix']['de-ch'] = "Geben Sie die Vorsilbe ein.";
+$text['description-contact_name_suffix']['de-de'] = "Geben Sie die Vorsilbe ein.";
+$text['description-contact_name_suffix']['el-gr'] = "Εισάγετε το επίθεμα ονόματος.";
+$text['description-contact_name_suffix']['es-cl'] = "Introduzca el nombre del sufijo.";
+$text['description-contact_name_suffix']['es-mx'] = "Introduzca el nombre del sufijo.";
+$text['description-contact_name_suffix']['fr-ca'] = "Entrez le suffixe de nom.";
+$text['description-contact_name_suffix']['fr-fr'] = "Entrez le suffixe de nom.";
+$text['description-contact_name_suffix']['he-il'] = "הזן את סיומת השם.";
+$text['description-contact_name_suffix']['it-it'] = "Inserire il suffisso per il nome.";
+$text['description-contact_name_suffix']['ka-ge'] = "შეიყვანეთ სახელის სუფიქსი.";
+$text['description-contact_name_suffix']['nl-nl'] = "Voer het naam toevoegsel in";
+$text['description-contact_name_suffix']['pl-pl'] = "Wprowadź przyrostek nazwy";
+$text['description-contact_name_suffix']['pt-br'] = "Digite o nome do sufixo";
+$text['description-contact_name_suffix']['pt-pt'] = "Digite o nome do sufixo.";
+$text['description-contact_name_suffix']['ro-ro'] = "Introduceți sufixul numelui.";
+$text['description-contact_name_suffix']['ru-ru'] = "Введите суффикс имени.";
+$text['description-contact_name_suffix']['sv-se'] = "Ange Namn suffix.";
+$text['description-contact_name_suffix']['uk-ua'] = "Введіть суфікс імені.";
+$text['description-contact_name_suffix']['zh-cn'] = "输入名称后缀。";
+$text['description-contact_name_suffix']['ja-jp'] = "名前のサフィックスを入力します。";
+$text['description-contact_name_suffix']['ko-kr'] = "이름 접미사를 입력합니다.";
+
+$text['description-contact_name_prefix']['en-us'] = "Enter the name prefix.";
+$text['description-contact_name_prefix']['en-gb'] = "Enter the name prefix.";
+$text['description-contact_name_prefix']['ar-eg'] = "أدخل بادئة الاسم.";
+$text['description-contact_name_prefix']['de-at'] = "Geben Sie die Nachsilbe ein.";
+$text['description-contact_name_prefix']['de-ch'] = "Geben Sie die Nachsilbe ein.";
+$text['description-contact_name_prefix']['de-de'] = "Geben Sie die Nachsilbe ein.";
+$text['description-contact_name_prefix']['el-gr'] = "Εισάγετε το πρόθεμα ονόματος.";
+$text['description-contact_name_prefix']['es-cl'] = "Introduzca el prefijo del nombre.";
+$text['description-contact_name_prefix']['es-mx'] = "Introduzca el prefijo del nombre.";
+$text['description-contact_name_prefix']['fr-ca'] = "Entrez le préfixe de nom.";
+$text['description-contact_name_prefix']['fr-fr'] = "Entrez le préfixe de nom.";
+$text['description-contact_name_prefix']['he-il'] = "הזן את קידומת השם.";
+$text['description-contact_name_prefix']['it-it'] = "Inserire il prefisso per il nome.";
+$text['description-contact_name_prefix']['ka-ge'] = "შეიყვანეთ სახელის პრეფიქსი.";
+$text['description-contact_name_prefix']['nl-nl'] = "Voer het naam voorvoegsel in.";
+$text['description-contact_name_prefix']['pl-pl'] = "Wprowadź prefix nazwy";
+$text['description-contact_name_prefix']['pt-br'] = "Digite o prefixo do nome";
+$text['description-contact_name_prefix']['pt-pt'] = "Digite o prefixo do nome.";
+$text['description-contact_name_prefix']['ro-ro'] = "Introduceți prefixul numelui.";
+$text['description-contact_name_prefix']['ru-ru'] = "Введите префикс имени.";
+$text['description-contact_name_prefix']['sv-se'] = "Ange Namn prefix.";
+$text['description-contact_name_prefix']['uk-ua'] = "Введіть префікс імені.";
+$text['description-contact_name_prefix']['zh-cn'] = "输入名称前缀。";
+$text['description-contact_name_prefix']['ja-jp'] = "名前のプレフィックスを入力します。";
+$text['description-contact_name_prefix']['ko-kr'] = "이름 접두사를 입력합니다.";
+
+$text['description-contact_name_middle']['en-us'] = "Enter the middle name.";
+$text['description-contact_name_middle']['en-gb'] = "Enter the middle name.";
+$text['description-contact_name_middle']['ar-eg'] = "أدخل الاسم الأوسط.";
+$text['description-contact_name_middle']['de-at'] = "Geben Sie den Mittelnamen ein.";
+$text['description-contact_name_middle']['de-ch'] = "Geben Sie den Mittelnamen ein.";
+$text['description-contact_name_middle']['de-de'] = "Geben Sie den Mittelnamen ein.";
+$text['description-contact_name_middle']['el-gr'] = "Εισάγετε το μεσαίο όνομα.";
+$text['description-contact_name_middle']['es-cl'] = "Introduzca el segundo nombre.";
+$text['description-contact_name_middle']['es-mx'] = "Introduzca el segundo nombre.";
+$text['description-contact_name_middle']['fr-ca'] = "Entrez le nom du milieu.";
+$text['description-contact_name_middle']['fr-fr'] = "Entrez le nom du milieu.";
+$text['description-contact_name_middle']['he-il'] = "הזן את השם האמצעי.";
+$text['description-contact_name_middle']['it-it'] = "Inserire il secondo nome.";
+$text['description-contact_name_middle']['ka-ge'] = "შეიყვანეთ შუა სახელი.";
+$text['description-contact_name_middle']['nl-nl'] = "Voer het midden in.";
+$text['description-contact_name_middle']['pl-pl'] = "Wprowadź drugie imię";
+$text['description-contact_name_middle']['pt-br'] = "Digite o sobrenome";
+$text['description-contact_name_middle']['pt-pt'] = "Digite o nome do meio.";
+$text['description-contact_name_middle']['ro-ro'] = "Introduceți al doilea nume.";
+$text['description-contact_name_middle']['ru-ru'] = "Введите второе имя.";
+$text['description-contact_name_middle']['sv-se'] = "Ange Mellannamn.";
+$text['description-contact_name_middle']['uk-ua'] = "Введіть по батькові.";
+$text['description-contact_name_middle']['zh-cn'] = "输入中间名。";
+$text['description-contact_name_middle']['ja-jp'] = "ミドルネームを入力します。";
+$text['description-contact_name_middle']['ko-kr'] = "중간 이름을 입력합니다.";
+
+$text['description-contact_name_given']['en-us'] = "Enter the given name.";
+$text['description-contact_name_given']['en-gb'] = "Enter the given name.";
+$text['description-contact_name_given']['ar-eg'] = "أدخل الاسم الأول.";
+$text['description-contact_name_given']['de-at'] = "Geben Sie den Vornamen ein.";
+$text['description-contact_name_given']['de-ch'] = "Geben Sie den Vornamen ein.";
+$text['description-contact_name_given']['de-de'] = "Geben Sie den Vornamen ein.";
+$text['description-contact_name_given']['el-gr'] = "Εισάγετε το όνομα.";
+$text['description-contact_name_given']['es-cl'] = "Ingrese el nombre dado.";
+$text['description-contact_name_given']['es-mx'] = "Ingrese el nombre dado.";
+$text['description-contact_name_given']['fr-ca'] = "Entrez le prénom.";
+$text['description-contact_name_given']['fr-fr'] = "Entrez le prénom.";
+$text['description-contact_name_given']['he-il'] = "הזן את השם הנתון.";
+$text['description-contact_name_given']['it-it'] = "Inserire il nome.";
+$text['description-contact_name_given']['ka-ge'] = "შეიყვანეთ სახელი.";
+$text['description-contact_name_given']['nl-nl'] = "Voer de voornaam in.";
+$text['description-contact_name_given']['pl-pl'] = "Wprowadź nadane imię";
+$text['description-contact_name_given']['pt-br'] = "Insira o nome";
+$text['description-contact_name_given']['pt-pt'] = "Introduzir o nome";
+$text['description-contact_name_given']['ro-ro'] = "Introduceți numele dat.";
+$text['description-contact_name_given']['ru-ru'] = "Введите имя.";
+$text['description-contact_name_given']['sv-se'] = "Ange Tilltalsnamn.";
+$text['description-contact_name_given']['uk-ua'] = "Введіть дане ім'я.";
+$text['description-contact_name_given']['zh-cn'] = "输入给定的名称。";
+$text['description-contact_name_given']['ja-jp'] = "名を入力します。";
+$text['description-contact_name_given']['ko-kr'] = "주어진 이름을 입력하십시오.";
+
+$text['description-contact_name_family']['en-us'] = "Enter the family name.";
+$text['description-contact_name_family']['en-gb'] = "Enter the family name.";
+$text['description-contact_name_family']['ar-eg'] = "أدخل اسم العائلة.";
+$text['description-contact_name_family']['de-at'] = "Geben Sie den Nachnamen ein.";
+$text['description-contact_name_family']['de-ch'] = "Geben Sie den Nachnamen ein.";
+$text['description-contact_name_family']['de-de'] = "Geben Sie den Nachnamen ein.";
+$text['description-contact_name_family']['el-gr'] = "Εισάγετε το επώνυμο.";
+$text['description-contact_name_family']['es-cl'] = "Ingrese el apellido.";
+$text['description-contact_name_family']['es-mx'] = "Ingrese el apellido.";
+$text['description-contact_name_family']['fr-ca'] = "Entrez le nom de famille.";
+$text['description-contact_name_family']['fr-fr'] = "Entrez le nom de famille.";
+$text['description-contact_name_family']['he-il'] = "הזן את שם המשפחה.";
+$text['description-contact_name_family']['it-it'] = "Inserire il cognome.";
+$text['description-contact_name_family']['ka-ge'] = "შეიყვანეთ საოჯახო სახელი.";
+$text['description-contact_name_family']['nl-nl'] = "Voer de achternaam in.";
+$text['description-contact_name_family']['pl-pl'] = "Wprowadź nazwisko";
+$text['description-contact_name_family']['pt-br'] = "Insira o nome da familia";
+$text['description-contact_name_family']['pt-pt'] = "Introduzir o nome de família";
+$text['description-contact_name_family']['ro-ro'] = "Introduceți numele de familie.";
+$text['description-contact_name_family']['ru-ru'] = "Введите фамилию.";
+$text['description-contact_name_family']['sv-se'] = "Ange Familjenamn.";
+$text['description-contact_name_family']['uk-ua'] = "Введіть прізвище.";
+$text['description-contact_name_family']['zh-cn'] = "输入姓氏。";
+$text['description-contact_name_family']['ja-jp'] = "姓を入力します。";
+$text['description-contact_name_family']['ko-kr'] = "성을 입력하세요.";
+
+$text['description-contact_email-edit']['en-us'] = "Contact email address information.";
+$text['description-contact_email-edit']['en-gb'] = "Contact email address information.";
+$text['description-contact_email-edit']['ar-eg'] = "معلومات عنوان البريد الإلكتروني للاتصال.";
+$text['description-contact_email-edit']['de-at'] = "Email-Address Informationen.";
+$text['description-contact_email-edit']['de-ch'] = "Email-Address Informationen.";
+$text['description-contact_email-edit']['de-de'] = "Email-Address Informationen.";
+$text['description-contact_email-edit']['el-gr'] = "Πληροφορίες ηλεκτρονικής διεύθυνσης αλληλογραφίας.";
+$text['description-contact_email-edit']['es-cl'] = "Contactar con información de la dirección de correo electrónico.";
+$text['description-contact_email-edit']['es-mx'] = "Contactar con información de la dirección de correo electrónico.";
+$text['description-contact_email-edit']['fr-ca'] = "Coordonnées de l'adresse courriel.";
+$text['description-contact_email-edit']['fr-fr'] = "Coordonnées de l'adresse courriel.";
+$text['description-contact_email-edit']['he-il'] = "פרטי כתובת דואל ליצירת קשר.";
+$text['description-contact_email-edit']['it-it'] = "Indirizzo email del contatto.";
+$text['description-contact_email-edit']['ka-ge'] = "კონტაქტის ელფოსტის მისამართის ინფორმაცია.";
+$text['description-contact_email-edit']['nl-nl'] = "Voer het E-mail adres informatie in.";
+$text['description-contact_email-edit']['pl-pl'] = "Informacja o adresie email kontaktu.";
+$text['description-contact_email-edit']['pt-br'] = "Informações de email do contato";
+$text['description-contact_email-edit']['pt-pt'] = "As informações de contato endereço de email.";
+$text['description-contact_email-edit']['ro-ro'] = "Informații despre adresa de e-mail de contact.";
+$text['description-contact_email-edit']['ru-ru'] = "Контактный адрес электронной почты.";
+$text['description-contact_email-edit']['sv-se'] = "Kontaktens E-post adress information.";
+$text['description-contact_email-edit']['uk-ua'] = "Інформація про контактну електронну адресу.";
+$text['description-contact_email-edit']['zh-cn'] = "联系电子邮件地址信息。";
+$text['description-contact_email-edit']['ja-jp'] = "連絡先メールアドレス情報。";
+$text['description-contact_email-edit']['ko-kr'] = "연락처 이메일 주소 정보.";
+
+$text['description-contact_email-add']['en-us'] = "Contact email address information.";
+$text['description-contact_email-add']['en-gb'] = "Contact email address information.";
+$text['description-contact_email-add']['ar-eg'] = "معلومات عنوان البريد الإلكتروني للاتصال.";
+$text['description-contact_email-add']['de-at'] = "Email-Address Informationen.";
+$text['description-contact_email-add']['de-ch'] = "Email-Address Informationen.";
+$text['description-contact_email-add']['de-de'] = "Email-Address Informationen.";
+$text['description-contact_email-add']['el-gr'] = "Πληροφορίες ηλεκτρονικής διεύθυνσης αλληλογραφίας.";
+$text['description-contact_email-add']['es-cl'] = "Contactar con información de la dirección de correo electrónico.";
+$text['description-contact_email-add']['es-mx'] = "Contactar con información de la dirección de correo electrónico.";
+$text['description-contact_email-add']['fr-ca'] = "Coordonnées de l'adresse courriel.";
+$text['description-contact_email-add']['fr-fr'] = "Coordonnées de l'adresse courriel.";
+$text['description-contact_email-add']['he-il'] = "פרטי כתובת דואל ליצירת קשר.";
+$text['description-contact_email-add']['it-it'] = "Indirizzo email del contatto.";
+$text['description-contact_email-add']['ka-ge'] = "კონტაქტის ელფოსტის მისამართის ინფორმაცია.";
+$text['description-contact_email-add']['nl-nl'] = "Kontact E-mail adres informatie.";
+$text['description-contact_email-add']['pl-pl'] = "Informacja o adresie email kontaktu.";
+$text['description-contact_email-add']['pt-br'] = "As informações de endereço de email do contato";
+$text['description-contact_email-add']['pt-pt'] = "As informações de contato endereço de email.";
+$text['description-contact_email-add']['ro-ro'] = "Informații despre adresa de e-mail de contact.";
+$text['description-contact_email-add']['ru-ru'] = "Контактный адрес электронной почты.";
+$text['description-contact_email-add']['sv-se'] = "Kontaktens E-post adress information.";
+$text['description-contact_email-add']['uk-ua'] = "Інформація про контактну електронну адресу.";
+$text['description-contact_email-add']['zh-cn'] = "联系电子邮件地址信息。";
+$text['description-contact_email-add']['ja-jp'] = "連絡先メールアドレス情報。";
+$text['description-contact_email-add']['ko-kr'] = "연락처 이메일 주소 정보.";
+
+$text['description-contact_email']['en-us'] = "Enter the email address.";
+$text['description-contact_email']['en-gb'] = "Enter the email address.";
+$text['description-contact_email']['ar-eg'] = "أدخل عنوان البريد الإلكتروني.";
+$text['description-contact_email']['de-at'] = "Geben Sie die Email Addresse ein.";
+$text['description-contact_email']['de-ch'] = "Geben Sie die Email Addresse ein.";
+$text['description-contact_email']['de-de'] = "Geben Sie die Email Addresse ein.";
+$text['description-contact_email']['el-gr'] = "Ορίστε τη διεύθυνση ηλεκτρονικής αλληλογραφίας.";
+$text['description-contact_email']['es-cl'] = "Ingrese la dirección de correo electrónico.";
+$text['description-contact_email']['es-mx'] = "Ingrese la dirección de correo electrónico.";
+$text['description-contact_email']['fr-ca'] = "Entrez l'adresse courriel.";
+$text['description-contact_email']['fr-fr'] = "Entrez l'adresse courriel.";
+$text['description-contact_email']['he-il'] = "הזן את כתובת המייל.";
+$text['description-contact_email']['it-it'] = "Inserire l'indirizzo email.";
+$text['description-contact_email']['ka-ge'] = "შეიყვანეთ ელფოსტის მისამართი.";
+$text['description-contact_email']['nl-nl'] = "Voer E-mail adres in.";
+$text['description-contact_email']['pl-pl'] = "Wprowadź adres email.";
+$text['description-contact_email']['pt-br'] = "Insira o endereço de email";
+$text['description-contact_email']['pt-pt'] = "Introduza o endereço de email.";
+$text['description-contact_email']['ro-ro'] = "Introdu adresa de e-mail.";
+$text['description-contact_email']['ru-ru'] = "Введите адрес электронной почты.";
+$text['description-contact_email']['sv-se'] = "Ange E-postadressen";
+$text['description-contact_email']['uk-ua'] = "Введіть адресу електронної пошти.";
+$text['description-contact_email']['zh-cn'] = "输入电子邮件地址。";
+$text['description-contact_email']['ja-jp'] = "メールアドレスを入力してください。";
+$text['description-contact_email']['ko-kr'] = "이메일 주소를 입력하세요.";
+
+$text['description-contact_category_import']['en-us'] = "Set a category for the contacts.";
+$text['description-contact_category_import']['en-gb'] = "Set a category for the contacts.";
+$text['description-contact_category_import']['ar-eg'] = "قم بتعيين فئة جهات الاتصال.";
+$text['description-contact_category_import']['de-at'] = "Wählen Sie eine Kategorie für diese Kontakte";
+$text['description-contact_category_import']['de-ch'] = "Wählen Sie eine Kategorie für diese Kontakte";
+$text['description-contact_category_import']['de-de'] = "Wählen Sie eine Kategorie für diese Kontakte";
+$text['description-contact_category_import']['el-gr'] = "Ορίστε μια κατηγορία επαφής.";
+$text['description-contact_category_import']['es-cl'] = "Establezca una categoría para los contactos.";
+$text['description-contact_category_import']['es-mx'] = "Establezca una categoría para los contactos.";
+$text['description-contact_category_import']['fr-ca'] = "Définir une catégorie pour les contacts.";
+$text['description-contact_category_import']['fr-fr'] = "Définir une catégorie pour les contacts.";
+$text['description-contact_category_import']['he-il'] = "הגדר קטגוריה עבור אנשי הקשר.";
+$text['description-contact_category_import']['it-it'] = "Selezionare una categoria per il contatto.";
+$text['description-contact_category_import']['ka-ge'] = "დააყენეთ კატეგორია კონტაქტებისთვის.";
+$text['description-contact_category_import']['nl-nl'] = "Stel een categorie voor de kontacten in.";
+$text['description-contact_category_import']['pl-pl'] = "Ustaw kategorię kontaktów.";
+$text['description-contact_category_import']['pt-br'] = "Defina uma categoria para os contatos";
+$text['description-contact_category_import']['pt-pt'] = "Definir uma categoria para os contatos.";
+$text['description-contact_category_import']['ro-ro'] = "Setați o categorie pentru contacte.";
+$text['description-contact_category_import']['ru-ru'] = "Укажите категорию контактов.";
+$text['description-contact_category_import']['sv-se'] = "Ange en kategori för kontakterna.";
+$text['description-contact_category_import']['uk-ua'] = "Встановіть категорію для контактів.";
+$text['description-contact_category_import']['zh-cn'] = "为联系人设置类别。";
+$text['description-contact_category_import']['ja-jp'] = "連絡先のカテゴリを設定します。";
+$text['description-contact_category_import']['ko-kr'] = "연락처에 대한 범주를 설정합니다.";
+
+$text['description-contact_category']['en-us'] = "Set the contact category.";
+$text['description-contact_category']['en-gb'] = "Set the contact category.";
+$text['description-contact_category']['ar-eg'] = "قم بتعيين فئة الاتصال.";
+$text['description-contact_category']['de-at'] = "Setzen Sie die Kontakt Kategorie.";
+$text['description-contact_category']['de-ch'] = "Setzen Sie die Kontakt Kategorie.";
+$text['description-contact_category']['de-de'] = "Setzen Sie die Kontakt Kategorie.";
+$text['description-contact_category']['el-gr'] = "Ορίστε την κατηγορία επαφής.";
+$text['description-contact_category']['es-cl'] = "Establezca la categoría de contactos.";
+$text['description-contact_category']['es-mx'] = "Establezca la categoría de contactos.";
+$text['description-contact_category']['fr-ca'] = "Définissez la catégorie de contacts.";
+$text['description-contact_category']['fr-fr'] = "Définissez la catégorie de contacts.";
+$text['description-contact_category']['he-il'] = "הגדר את קטגוריית אנשי הקשר.";
+$text['description-contact_category']['it-it'] = "Selezionare una categoria per il contatto.";
+$text['description-contact_category']['ka-ge'] = "დააყენეთ კონტაქტის კატეგორია.";
+$text['description-contact_category']['nl-nl'] = "Stel kontact categorie in.";
+$text['description-contact_category']['pl-pl'] = "Ustaw kategorię kontaktów";
+$text['description-contact_category']['pt-br'] = "Defina uma categoria de contato";
+$text['description-contact_category']['pt-pt'] = "Defina a categoria de contato.";
+$text['description-contact_category']['ro-ro'] = "Setați categoria de contact.";
+$text['description-contact_category']['ru-ru'] = "Установите категорию контакта.";
+$text['description-contact_category']['sv-se'] = "Ange kategori för kontakten.";
+$text['description-contact_category']['uk-ua'] = "Встановіть категорію контакту.";
+$text['description-contact_category']['zh-cn'] = "设置联系人类别。";
+$text['description-contact_category']['ja-jp'] = "連絡先のカテゴリを設定します。";
+$text['description-contact_category']['ko-kr'] = "연락처 카테고리를 설정합니다.";
+
+$text['description-contact_addresses-edit']['en-us'] = "Contact address information.";
+$text['description-contact_addresses-edit']['en-gb'] = "Contact address information.";
+$text['description-contact_addresses-edit']['ar-eg'] = "معلومات عنوان الاتصال.";
+$text['description-contact_addresses-edit']['de-at'] = "Address Informationen des Kontakts.";
+$text['description-contact_addresses-edit']['de-ch'] = "Address Informationen des Kontakts.";
+$text['description-contact_addresses-edit']['de-de'] = "Address Informationen des Kontakts.";
+$text['description-contact_addresses-edit']['el-gr'] = "Πληροφορίες διεύθυνσης επαφής.";
+$text['description-contact_addresses-edit']['es-cl'] = "Información de dirección de contacto";
+$text['description-contact_addresses-edit']['es-mx'] = "Información de dirección de contacto";
+$text['description-contact_addresses-edit']['fr-ca'] = "Informations sur l'adresse du contact.";
+$text['description-contact_addresses-edit']['fr-fr'] = "Informations sur l'adresse du contact.";
+$text['description-contact_addresses-edit']['he-il'] = "פרטי כתובת ליצירת קשר.";
+$text['description-contact_addresses-edit']['it-it'] = "Indirizzo del Contatto.";
+$text['description-contact_addresses-edit']['ka-ge'] = "საკონტაქტო მისამართი.";
+$text['description-contact_addresses-edit']['nl-nl'] = "Kontact adres informatie.";
+$text['description-contact_addresses-edit']['pl-pl'] = "Informacja o adresie kontaktowym.";
+$text['description-contact_addresses-edit']['pt-br'] = "Informações do endereço do contato";
+$text['description-contact_addresses-edit']['pt-pt'] = "Informação de endereço do contacto";
+$text['description-contact_addresses-edit']['ro-ro'] = "Informații despre adresa de contact.";
+$text['description-contact_addresses-edit']['ru-ru'] = "Контактный адрес.";
+$text['description-contact_addresses-edit']['sv-se'] = "Kontaktens adress information.";
+$text['description-contact_addresses-edit']['uk-ua'] = "Інформація про контактну адресу.";
+$text['description-contact_addresses-edit']['zh-cn'] = "联系地址信息。";
+$text['description-contact_addresses-edit']['ja-jp'] = "連絡先情報。";
+$text['description-contact_addresses-edit']['ko-kr'] = "연락처 정보.";
+
+$text['description-contact_addresses-add']['en-us'] = "Contact address information.";
+$text['description-contact_addresses-add']['en-gb'] = "Contact address information.";
+$text['description-contact_addresses-add']['ar-eg'] = "معلومات عنوان الاتصال.";
+$text['description-contact_addresses-add']['de-at'] = "Address Informationen des Kontakts.";
+$text['description-contact_addresses-add']['de-ch'] = "Address Informationen des Kontakts.";
+$text['description-contact_addresses-add']['de-de'] = "Address Informationen des Kontakts.";
+$text['description-contact_addresses-add']['el-gr'] = "Πληροφορίες διεύθυνσης επαφής.";
+$text['description-contact_addresses-add']['es-cl'] = "Información de dirección de contacto";
+$text['description-contact_addresses-add']['es-mx'] = "Información de dirección de contacto";
+$text['description-contact_addresses-add']['fr-ca'] = "Informations sur l'adresse du contact.";
+$text['description-contact_addresses-add']['fr-fr'] = "Informations sur l'adresse du contact.";
+$text['description-contact_addresses-add']['he-il'] = "פרטי כתובת ליצירת קשר.";
+$text['description-contact_addresses-add']['it-it'] = "Indirizzo del Contatto.";
+$text['description-contact_addresses-add']['ka-ge'] = "საკონტაქტო მისამართის ინფორმაცია.";
+$text['description-contact_addresses-add']['nl-nl'] = "Kontact adres informatie.";
+$text['description-contact_addresses-add']['pl-pl'] = "Informacja o adresie kontaktowym.";
+$text['description-contact_addresses-add']['pt-br'] = "Informações do endereço do contato";
+$text['description-contact_addresses-add']['pt-pt'] = "Informação de endereço do contacto";
+$text['description-contact_addresses-add']['ro-ro'] = "Informații despre adresa de contact.";
+$text['description-contact_addresses-add']['ru-ru'] = "Контактный адрес.";
+$text['description-contact_addresses-add']['sv-se'] = "Kontaktens adress information.";
+$text['description-contact_addresses-add']['uk-ua'] = "Інформація про контактну адресу.";
+$text['description-contact_addresses-add']['zh-cn'] = "联系地址信息。";
+$text['description-contact_addresses-add']['ja-jp'] = "連絡先情報。";
+$text['description-contact_addresses-add']['ko-kr'] = "연락처 정보.";
+
+$text['description-contact-edit']['en-us'] = "The contact is a list of individuals and organizations.";
+$text['description-contact-edit']['en-gb'] = "The contact is a list of individuals and organizations.";
+$text['description-contact-edit']['ar-eg'] = "جهة الاتصال هي قائمة الأفراد والمنظمات.";
+$text['description-contact-edit']['de-at'] = "Kontakte sind Benutzer, externe Personen oder Unternehmen.";
+$text['description-contact-edit']['de-ch'] = "Kontakte sind Benutzer, externe Personen oder Unternehmen.";
+$text['description-contact-edit']['de-de'] = "Kontakte sind Benutzer, externe Personen oder Unternehmen.";
+$text['description-contact-edit']['el-gr'] = "Η επαφή είναι μια λίστα ατόμων και οργανισμών.";
+$text['description-contact-edit']['es-cl'] = "El contacto es una lista de personas y organizaciones";
+$text['description-contact-edit']['es-mx'] = "El contacto es una lista de personas y organizaciones";
+$text['description-contact-edit']['fr-ca'] = "Fourni une liste d'individus et d'organisations.";
+$text['description-contact-edit']['fr-fr'] = "Fourni une liste d'individus et d'organisations.";
+$text['description-contact-edit']['he-il'] = "איש הקשר הוא רשימה של אנשים וארגונים.";
+$text['description-contact-edit']['it-it'] = "Il contatto è una lista di individui e organizzazioni.";
+$text['description-contact-edit']['ka-ge'] = "კონტაქტი პიროვნებებისა და ორგანიზაციების ჩამონათვალია.";
+$text['description-contact-edit']['nl-nl'] = "Kontact is een lisjt van personen en organisaties.";
+$text['description-contact-edit']['pl-pl'] = "Kontakt to lista osób i organizacji.";
+$text['description-contact-edit']['pt-br'] = "Adicionar a lista de contato individuais";
+$text['description-contact-edit']['pt-pt'] = "O contacto é uma lista de indivíduos e organizações.";
+$text['description-contact-edit']['ro-ro'] = "Contactul este o listă de persoane și organizații.";
+$text['description-contact-edit']['ru-ru'] = "Контакт - это список лиц и организаций.";
+$text['description-contact-edit']['sv-se'] = "Kontakten är en lista på individer och organisationer.";
+$text['description-contact-edit']['uk-ua'] = "Контакт – це список осіб та організацій.";
+$text['description-contact-edit']['zh-cn'] = "联系人是个人和组织的列表。";
+$text['description-contact-edit']['ja-jp'] = "連絡先は個人および組織のリストです。";
+$text['description-contact-edit']['ko-kr'] = "연락처는 개인 및 조직의 목록입니다.";
+
+$text['description-contact-add']['en-us'] = "The contact is a list of individuals and organizations.";
+$text['description-contact-add']['en-gb'] = "The contact is a list of individuals and organizations.";
+$text['description-contact-add']['ar-eg'] = "جهة الاتصال هي قائمة الأفراد والمنظمات.";
+$text['description-contact-add']['de-at'] = "Kontakte sind Benutzer, externe Personen oder Unternehmen.";
+$text['description-contact-add']['de-ch'] = "Kontakte sind Benutzer, externe Personen oder Unternehmen.";
+$text['description-contact-add']['de-de'] = "Kontakte sind Benutzer, externe Personen oder Unternehmen.";
+$text['description-contact-add']['el-gr'] = "Η επαφή είναι μια λίστα ατόμων και οργανισμών.";
+$text['description-contact-add']['es-cl'] = "El contacto es una lista de personas y organizaciones";
+$text['description-contact-add']['es-mx'] = "El contacto es una lista de personas y organizaciones";
+$text['description-contact-add']['fr-ca'] = "Fourni une liste d'individus et d'organisations.";
+$text['description-contact-add']['fr-fr'] = "Fourni une liste d'individus et d'organisations.";
+$text['description-contact-add']['he-il'] = "איש הקשר הוא רשימה של אנשים וארגונים.";
+$text['description-contact-add']['it-it'] = "Il contatto è una lista di individui e organizzazioni.";
+$text['description-contact-add']['ka-ge'] = "კონტაქტი პიროვნებებისა და ორგანიზაციების ჩამონათვალია.";
+$text['description-contact-add']['nl-nl'] = "Het kontact is een lijst van personen en organisaties.";
+$text['description-contact-add']['pl-pl'] = "Kontakt to lista osób i organizacji.";
+$text['description-contact-add']['pt-br'] = "Editar a lista de contato individuais";
+$text['description-contact-add']['pt-pt'] = "O contacto é uma lista de indivíduos e organizações.";
+$text['description-contact-add']['ro-ro'] = "Contactul este o listă de persoane și organizații.";
+$text['description-contact-add']['ru-ru'] = "Контакт - это список лиц и организаций.";
+$text['description-contact-add']['sv-se'] = "Kontakten är en lista på individer och organisationer.";
+$text['description-contact-add']['uk-ua'] = "Контакт – це список осіб та організацій.";
+$text['description-contact-add']['zh-cn'] = "联系人是个人和组织的列表。";
+$text['description-contact-add']['ja-jp'] = "連絡先は個人および組織のリストです。";
+$text['description-contact-add']['ko-kr'] = "연락처는 개인 및 조직의 목록입니다.";
+
+$text['description-address_type']['en-us'] = "Define the address type (used for vCard generation).";
+$text['description-address_type']['en-gb'] = "Define the address type (used for vCard generation).";
+$text['description-address_type']['ar-eg'] = "حدد نوع العنوان (المستخدم في إنشاء vCard).";
+$text['description-address_type']['de-at'] = "Geben Sie den Art der Addresse an (für vCard verwendet)";
+$text['description-address_type']['de-ch'] = "Geben Sie den Art der Addresse an (für vCard verwendet)";
+$text['description-address_type']['de-de'] = "Geben Sie den Art der Addresse an (für vCard verwendet)";
+$text['description-address_type']['el-gr'] = "Ορίστε ρον τύπο διεύθυνσης (για τη δημιουργία vCard)";
+$text['description-address_type']['es-cl'] = "Definir el tipo de dirección (utilizado para la generación de vCard).";
+$text['description-address_type']['es-mx'] = "Definir el tipo de dirección (utilizado para la generación de vCard).";
+$text['description-address_type']['fr-ca'] = "Définir le type d'adresse (utilisé pour la production vCard).";
+$text['description-address_type']['fr-fr'] = "Définir le type d'adresse (utilisé pour la production vCard).";
+$text['description-address_type']['he-il'] = "הגדר את סוג הכתובת (המשמש ליצירת vCard).";
+$text['description-address_type']['it-it'] = "Definisci il tipo di indirizzo (usato per la generazione vCard).";
+$text['description-address_type']['ka-ge'] = "აღწერეთ მისამათის ტიპი (გამოიყენება vCard-ის გენერაციისას).";
+$text['description-address_type']['nl-nl'] = "Definieer adres type (voor vCard aanmaak).";
+$text['description-address_type']['pl-pl'] = "Określ typ adresu (używany do generowania vCard ).";
+$text['description-address_type']['pt-br'] = "Defina o tipo de endereço (usado para geração de vCard). ";
+$text['description-address_type']['pt-pt'] = "Defina o tipo de endereço (usado para geração de vCard).";
+$text['description-address_type']['ro-ro'] = "Definiți tipul de adresă (utilizat pentru generarea vCard).";
+$text['description-address_type']['ru-ru'] = "Определите тип адреса (используется для генерации vCard).";
+$text['description-address_type']['sv-se'] = "Definiera adresstypen (används för vCard generering).";
+$text['description-address_type']['uk-ua'] = "Визначте тип адреси (використовується для генерації vCard).";
+$text['description-address_type']['zh-cn'] = "定义地址类型(用于 vCard 生成)。";
+$text['description-address_type']['ja-jp'] = "アドレス タイプを定義します (vCard 生成に使用)。";
+$text['description-address_type']['ko-kr'] = "주소 유형을 정의합니다(vCard 생성에 사용됨).";
+
+$text['description-address_region']['en-us'] = "Enter the state or province.";
+$text['description-address_region']['en-gb'] = "Enter the state or province.";
+$text['description-address_region']['ar-eg'] = "أدخل الولاية أو المقاطعة.";
+$text['description-address_region']['de-at'] = "Geben Sie das Bundesland an.";
+$text['description-address_region']['de-ch'] = "Geben Sie das Bundesland an.";
+$text['description-address_region']['de-de'] = "Geben Sie das Bundesland an.";
+$text['description-address_region']['el-gr'] = "Εισάγετε πόλη ή γεωγραφικό τομέα.";
+$text['description-address_region']['es-cl'] = "Ingrese el estado o provincia.";
+$text['description-address_region']['es-mx'] = "Ingrese el estado o provincia.";
+$text['description-address_region']['fr-ca'] = "Entrez l'état ou province.";
+$text['description-address_region']['fr-fr'] = "Entrez l'état ou province.";
+$text['description-address_region']['he-il'] = "הזן את המדינה או המחוז.";
+$text['description-address_region']['it-it'] = "Inserire lo stato o la provincia.";
+$text['description-address_region']['ka-ge'] = "შეიყვანეთ შტატი ან პროვინცია.";
+$text['description-address_region']['nl-nl'] = "Voer staat of provincie in.";
+$text['description-address_region']['pl-pl'] = "Wprowadź województwo.";
+$text['description-address_region']['pt-br'] = "Insira o estado ou provincia";
+$text['description-address_region']['pt-pt'] = "Introduza o estado ou província.";
+$text['description-address_region']['ro-ro'] = "Introduceți statul sau provincia.";
+$text['description-address_region']['ru-ru'] = "Введите штат или область.";
+$text['description-address_region']['sv-se'] = "Ange stat eller provins.";
+$text['description-address_region']['uk-ua'] = "Введіть назву спільноти";
+$text['description-address_region']['zh-cn'] = "输入州或省。";
+$text['description-address_region']['ja-jp'] = "都道府県を入力します。";
+$text['description-address_region']['ko-kr'] = "시/도를 입력합니다.";
+
+$text['description-address_primary']['en-us'] = "Set as the primary Address for this contact.";
+$text['description-address_primary']['en-gb'] = "Set as the primary Address for this contact.";
+$text['description-address_primary']['ar-eg'] = "تعيين كعنوان أساسي لجهة الاتصال هذه.";
+$text['description-address_primary']['de-at'] = "Als primäre Addresse für diesen Kontakt setzen.";
+$text['description-address_primary']['de-ch'] = "Als primäre Addresse für diesen Kontakt setzen.";
+$text['description-address_primary']['de-de'] = "Als primäre Addresse für diesen Kontakt setzen.";
+$text['description-address_primary']['el-gr'] = "Ορίστε την ως κύρια διύθυνση για αυτή την επαφή.";
+$text['description-address_primary']['es-cl'] = "Establecer como dirección principal para este contacto.";
+$text['description-address_primary']['es-mx'] = "Establecer como dirección principal para este contacto.";
+$text['description-address_primary']['fr-ca'] = "Définir comme adresse principale pour ce contact.";
+$text['description-address_primary']['fr-fr'] = "Définir comme adresse principale pour ce contact.";
+$text['description-address_primary']['he-il'] = "הגדר ככתובת הראשית של איש קשר זה.";
+$text['description-address_primary']['it-it'] = "Imposta come l'indirizzo principale per questo contatto.";
+$text['description-address_primary']['ka-ge'] = "ამ კონტაქტისთვის ძირითად მისამართად დაყენება.";
+$text['description-address_primary']['nl-nl'] = "Stel in als primaire adres voor dit kontact.";
+$text['description-address_primary']['pl-pl'] = "Ustaw jako główny adres tego kontaktu";
+$text['description-address_primary']['pt-br'] = "Defina endereço principal para este contato";
+$text['description-address_primary']['pt-pt'] = "Definir como o principal endereço para este contato.";
+$text['description-address_primary']['ro-ro'] = "Setați ca adresă principală pentru acest contact.";
+$text['description-address_primary']['ru-ru'] = "Укажите в качестве основного адреса для этого контакта.";
+$text['description-address_primary']['sv-se'] = "Ange som primär adress för denna kontakt.";
+$text['description-address_primary']['uk-ua'] = "Встановити як основну адресу для цього контакту.";
+$text['description-address_primary']['zh-cn'] = "设置为此联系人的主要地址。";
+$text['description-address_primary']['ja-jp'] = "この連絡先のプライマリ アドレスとして設定します。";
+$text['description-address_primary']['ko-kr'] = "이 연락처의 기본 주소로 설정합니다.";
+
+$text['description-address_postal_code']['en-us'] = "Enter the postal code.";
+$text['description-address_postal_code']['en-gb'] = "Enter the postal code.";
+$text['description-address_postal_code']['ar-eg'] = "أدخل الرمز البريدي.";
+$text['description-address_postal_code']['de-at'] = "Geben Sie die Postleitzahl ein.";
+$text['description-address_postal_code']['de-ch'] = "Geben Sie die Postleitzahl ein.";
+$text['description-address_postal_code']['de-de'] = "Geben Sie die Postleitzahl ein.";
+$text['description-address_postal_code']['el-gr'] = "Εισάγετε τον ταχυδρομικό κωδικό.";
+$text['description-address_postal_code']['es-cl'] = "Ingrese el código postal.";
+$text['description-address_postal_code']['es-mx'] = "Ingrese el código postal.";
+$text['description-address_postal_code']['fr-ca'] = "Entrez le code postal.";
+$text['description-address_postal_code']['fr-fr'] = "Entrez le code postal.";
+$text['description-address_postal_code']['he-il'] = "הזן את המיקוד.";
+$text['description-address_postal_code']['it-it'] = "Inserire C.A.P.";
+$text['description-address_postal_code']['ka-ge'] = "შეიყვანეთ საფოსტო კოდი.";
+$text['description-address_postal_code']['nl-nl'] = "Voer de postcode in.";
+$text['description-address_postal_code']['pl-pl'] = "Wprowadź kod pocztowy.";
+$text['description-address_postal_code']['pt-br'] = "Insira o código postal";
+$text['description-address_postal_code']['pt-pt'] = "Introduza o código postal.";
+$text['description-address_postal_code']['ro-ro'] = "Introdu codul poștal.";
+$text['description-address_postal_code']['ru-ru'] = "Введите почтовый индекс.";
+$text['description-address_postal_code']['sv-se'] = "Ange postkod.";
+$text['description-address_postal_code']['uk-ua'] = "Введіть поштовий індекс";
+$text['description-address_postal_code']['zh-cn'] = "输入邮政编码。";
+$text['description-address_postal_code']['ja-jp'] = "郵便番号を入力してください。";
+$text['description-address_postal_code']['ko-kr'] = "우편번호를 입력하세요.";
+
+$text['description-address_longitude']['en-us'] = "Enter the longitude.";
+$text['description-address_longitude']['en-gb'] = "Enter the longitude.";
+$text['description-address_longitude']['ar-eg'] = "أدخل خط الطول.";
+$text['description-address_longitude']['de-at'] = "Geben Sie den Längengrad ein.";
+$text['description-address_longitude']['de-ch'] = "Geben Sie den Längengrad ein.";
+$text['description-address_longitude']['de-de'] = "Geben Sie den Längengrad ein.";
+$text['description-address_longitude']['el-gr'] = "Εισάγετε το γεωγραφικό μήκος.";
+$text['description-address_longitude']['es-cl'] = "Ingrese la longitud.";
+$text['description-address_longitude']['es-mx'] = "Ingrese la longitud.";
+$text['description-address_longitude']['fr-ca'] = "Coordonnées GPS: longitude.";
+$text['description-address_longitude']['fr-fr'] = "Coordonnées GPS: longitude.";
+$text['description-address_longitude']['he-il'] = "הזן את קו האורך.";
+$text['description-address_longitude']['it-it'] = "Inserire la longitudine.";
+$text['description-address_longitude']['ka-ge'] = "შეიყვანეთ გრძედი.";
+$text['description-address_longitude']['nl-nl'] = "Voer lengtegraad in.";
+$text['description-address_longitude']['pl-pl'] = "Wprowadź długość geograficzną.";
+$text['description-address_longitude']['pt-br'] = "Insira a longitude";
+$text['description-address_longitude']['pt-pt'] = "Introduza a longitude.";
+$text['description-address_longitude']['ro-ro'] = "Introduceți longitudinea.";
+$text['description-address_longitude']['ru-ru'] = "Введите долготу.";
+$text['description-address_longitude']['sv-se'] = "Ange longitude.";
+$text['description-address_longitude']['uk-ua'] = "Введіть довготу";
+$text['description-address_longitude']['zh-cn'] = "输入经度。";
+$text['description-address_longitude']['ja-jp'] = "経度を入力します。";
+$text['description-address_longitude']['ko-kr'] = "경도를 입력합니다.";
+
+$text['description-address_locality']['en-us'] = "Enter the city.";
+$text['description-address_locality']['en-gb'] = "Enter the city.";
+$text['description-address_locality']['ar-eg'] = "أدخل المدينة.";
+$text['description-address_locality']['de-at'] = "Geben Sie die Stadt ein.";
+$text['description-address_locality']['de-ch'] = "Geben Sie die Stadt ein.";
+$text['description-address_locality']['de-de'] = "Geben Sie die Stadt ein.";
+$text['description-address_locality']['el-gr'] = "Εισάγετε την πόλη.";
+$text['description-address_locality']['es-cl'] = "Ingrese la ciudad";
+$text['description-address_locality']['es-mx'] = "Ingrese la ciudad";
+$text['description-address_locality']['fr-ca'] = "Entrez la ville.";
+$text['description-address_locality']['fr-fr'] = "Entrez dans la ville.";
+$text['description-address_locality']['he-il'] = "היכנס לעיר.";
+$text['description-address_locality']['it-it'] = "Inserire la città.";
+$text['description-address_locality']['ka-ge'] = "შეიყვანეთ ქალაქი.";
+$text['description-address_locality']['nl-nl'] = "Voer stad in.";
+$text['description-address_locality']['pl-pl'] = "Wprowadź miasto.";
+$text['description-address_locality']['pt-br'] = "Insira a cidade";
+$text['description-address_locality']['pt-pt'] = "Introduza a cidade.";
+$text['description-address_locality']['ro-ro'] = "Intră în oraș.";
+$text['description-address_locality']['ru-ru'] = "Введите город.";
+$text['description-address_locality']['sv-se'] = "Ange Stad.";
+$text['description-address_locality']['uk-ua'] = "Введіть назву міста";
+$text['description-address_locality']['zh-cn'] = "进入城市。";
+$text['description-address_locality']['ja-jp'] = "街に入ります。";
+$text['description-address_locality']['ko-kr'] = "도시를 입력하십시오.";
+
+$text['description-address_latitude']['en-us'] = "Enter the latitude.";
+$text['description-address_latitude']['en-gb'] = "Enter the latitude.";
+$text['description-address_latitude']['ar-eg'] = "أدخل خط العرض.";
+$text['description-address_latitude']['de-at'] = "Geben Sie dden Breitengrad ein.";
+$text['description-address_latitude']['de-ch'] = "Geben Sie dden Breitengrad ein.";
+$text['description-address_latitude']['de-de'] = "Geben Sie dden Breitengrad ein.";
+$text['description-address_latitude']['el-gr'] = "Εισάγετε το γεωγραφικό πλάτος.";
+$text['description-address_latitude']['es-cl'] = "Ingrese la latitud.";
+$text['description-address_latitude']['es-mx'] = "Ingrese la latitud.";
+$text['description-address_latitude']['fr-ca'] = "Coordonnées GPS: latitude.";
+$text['description-address_latitude']['fr-fr'] = "Coordonnées GPS: latitude.";
+$text['description-address_latitude']['he-il'] = "הזן את קו הרוחב.";
+$text['description-address_latitude']['it-it'] = "Inserire la latitudine.";
+$text['description-address_latitude']['ka-ge'] = "შეიყვანეთ განედი.";
+$text['description-address_latitude']['nl-nl'] = "Voer breedtegraad in.";
+$text['description-address_latitude']['pl-pl'] = "Wprowadź szerokość geograficzną.";
+$text['description-address_latitude']['pt-br'] = "Insira a latitude";
+$text['description-address_latitude']['pt-pt'] = "Introduza a latitude.";
+$text['description-address_latitude']['ro-ro'] = "Introduceți latitudinea.";
+$text['description-address_latitude']['ru-ru'] = "Введите широту.";
+$text['description-address_latitude']['sv-se'] = "Ange Latitude.";
+$text['description-address_latitude']['uk-ua'] = "Введіть широту";
+$text['description-address_latitude']['zh-cn'] = "输入纬度。";
+$text['description-address_latitude']['ja-jp'] = "緯度を入力します。";
+$text['description-address_latitude']['ko-kr'] = "위도를 입력합니다.";
+
+$text['description-address_label']['en-us'] = "Select or enter a custom label.";
+$text['description-address_label']['en-gb'] = "Select or enter a custom label.";
+$text['description-address_label']['ar-eg'] = "حدد أو أدخل تسمية مخصصة.";
+$text['description-address_label']['de-at'] = "Wählen oder setzen Sie eine benutzerdefinierte Kennzeichnung.";
+$text['description-address_label']['de-ch'] = "Wählen oder setzen Sie eine benutzerdefinierte Kennzeichnung.";
+$text['description-address_label']['de-de'] = "Wählen oder setzen Sie eine benutzerdefinierte Kennzeichnung.";
+$text['description-address_label']['el-gr'] = "Επιλέξτε ή ορίστε μια προσωποποιημένη ετικέτα.";
+$text['description-address_label']['es-cl'] = "Seleccione o introduzca una etiqueta personalizada.";
+$text['description-address_label']['es-mx'] = "Seleccione o introduzca una etiqueta personalizada.";
+$text['description-address_label']['fr-ca'] = "Sélectionnez ou entrez une étiquette personnalisée.";
+$text['description-address_label']['fr-fr'] = "Sélectionnez ou entrez une étiquette personnalisée.";
+$text['description-address_label']['he-il'] = "בחר או הזן תווית מותאמת אישית.";
+$text['description-address_label']['it-it'] = "Seleziona o inserisci un'etichetta personalizzata.";
+$text['description-address_label']['ka-ge'] = "აირჩიეთ ან შეიყვანეთ მომხმარებლის ჭდე.";
+$text['description-address_label']['nl-nl'] = "Kies of voer een eigen kenmerk kenmerk in.";
+$text['description-address_label']['pl-pl'] = "Wprowadź własną etykietę";
+$text['description-address_label']['pt-br'] = "Selecione ou digite um identificador personalizado";
+$text['description-address_label']['pt-pt'] = "Selecione ou digite um rótulo personalizado.";
+$text['description-address_label']['ro-ro'] = "Selectați sau introduceți o etichetă personalizată.";
+$text['description-address_label']['ru-ru'] = "Выберите или введите настраиваемую метку.";
+$text['description-address_label']['sv-se'] = "Ange eller välj en egen etikett.";
+$text['description-address_label']['uk-ua'] = "Виберіть або введіть спеціальну мітку.";
+$text['description-address_label']['zh-cn'] = "选择或输入自定义标签。";
+$text['description-address_label']['ja-jp'] = "カスタム ラベルを選択または入力します。";
+$text['description-address_label']['ko-kr'] = "사용자 지정 레이블을 선택하거나 입력합니다.";
+
+$text['description-address_description']['en-us'] = "Enter a description.";
+$text['description-address_description']['en-gb'] = "Enter a description.";
+$text['description-address_description']['ar-eg'] = "أدخل وصفًا.";
+$text['description-address_description']['de-at'] = "Geben Sie eine Beschreibung an.";
+$text['description-address_description']['de-ch'] = "Geben Sie eine Beschreibung an.";
+$text['description-address_description']['de-de'] = "Geben Sie eine Beschreibung an.";
+$text['description-address_description']['el-gr'] = "Εισάγετε μια περιγραφή.";
+$text['description-address_description']['es-cl'] = "Ingrese una descripción";
+$text['description-address_description']['es-mx'] = "Ingrese una descripción";
+$text['description-address_description']['fr-ca'] = "Entrez une description.";
+$text['description-address_description']['fr-fr'] = "Entrez une description.";
+$text['description-address_description']['he-il'] = "הזן תיאור.";
+$text['description-address_description']['it-it'] = "Inserire una descrizione.";
+$text['description-address_description']['ka-ge'] = "შეიყვანეთ აღწერა.";
+$text['description-address_description']['nl-nl'] = "Voer een omschrijving in.";
+$text['description-address_description']['pl-pl'] = "Wprowadź opis";
+$text['description-address_description']['pt-br'] = "Insira uma descrição";
+$text['description-address_description']['pt-pt'] = "Introduza uma descrição.";
+$text['description-address_description']['ro-ro'] = "Introduceți o descriere.";
+$text['description-address_description']['ru-ru'] = "Введите Описание";
+$text['description-address_description']['sv-se'] = "Ange en beskrivning.";
+$text['description-address_description']['uk-ua'] = "Додайте опис";
+$text['description-address_description']['zh-cn'] = "输入说明。";
+$text['description-address_description']['ja-jp'] = "説明を入力します。";
+$text['description-address_description']['ko-kr'] = "설명을 입력합니다.";
+
+$text['description-address_country']['en-us'] = "Enter the country.";
+$text['description-address_country']['en-gb'] = "Enter the country.";
+$text['description-address_country']['ar-eg'] = "أدخل الدولة.";
+$text['description-address_country']['de-at'] = "Geben Sie das Land ein.";
+$text['description-address_country']['de-ch'] = "Geben Sie das Land ein.";
+$text['description-address_country']['de-de'] = "Geben Sie das Land ein.";
+$text['description-address_country']['el-gr'] = "Εισάγετε τη χώρα.";
+$text['description-address_country']['es-cl'] = "Ingrese el país.";
+$text['description-address_country']['es-mx'] = "Ingrese el país.";
+$text['description-address_country']['fr-ca'] = "Entrez le pays.";
+$text['description-address_country']['fr-fr'] = "Entrez le pays.";
+$text['description-address_country']['he-il'] = "היכנסו לארץ.";
+$text['description-address_country']['it-it'] = "Inserire un paese.";
+$text['description-address_country']['ka-ge'] = "შეიყვანეთ ქვეყანა.";
+$text['description-address_country']['nl-nl'] = "Voer land in.";
+$text['description-address_country']['pl-pl'] = "Wprowadź państwo";
+$text['description-address_country']['pt-br'] = "Insira o país";
+$text['description-address_country']['pt-pt'] = "Introduza o país.";
+$text['description-address_country']['ro-ro'] = "Intră în țară.";
+$text['description-address_country']['ru-ru'] = "Введите страну.";
+$text['description-address_country']['sv-se'] = "Ange Land.";
+$text['description-address_country']['uk-ua'] = "Введіть назву країни";
+$text['description-address_country']['zh-cn'] = "进入国家。";
+$text['description-address_country']['ja-jp'] = "国に入ります。";
+$text['description-address_country']['ko-kr'] = "국가를 입력하십시오.";
+
+$text['description-address_community']['en-us'] = "Enter the community.";
+$text['description-address_community']['en-gb'] = "Enter the community.";
+$text['description-address_community']['ar-eg'] = "أدخل المجتمع.";
+$text['description-address_community']['de-at'] = "Geben Sie eine Gemeinde an.";
+$text['description-address_community']['de-ch'] = "Geben Sie eine Gemeinde an.";
+$text['description-address_community']['de-de'] = "Geben Sie eine Gemeinde an.";
+$text['description-address_community']['el-gr'] = "Εισάγετε την κοινότητα.";
+$text['description-address_community']['es-cl'] = "Ingrese la comunidad.";
+$text['description-address_community']['es-mx'] = "Ingrese la comunidad.";
+$text['description-address_community']['fr-ca'] = "Entrez dans la communauté.";
+$text['description-address_community']['fr-fr'] = "Entrez dans la communauté.";
+$text['description-address_community']['he-il'] = "היכנסו לקהילה.";
+$text['description-address_community']['it-it'] = "Inserire una comunità";
+$text['description-address_community']['ka-ge'] = "შეიყვანეთ საზოგადოება.";
+$text['description-address_community']['nl-nl'] = "Voor gemeente in.";
+$text['description-address_community']['pl-pl'] = "Wprowadź wspólnotę";
+$text['description-address_community']['pt-br'] = "Endereço da comunidade";
+$text['description-address_community']['pt-pt'] = "Entre a comunidade.";
+$text['description-address_community']['ro-ro'] = "Intră în comunitate.";
+$text['description-address_community']['ru-ru'] = "Войдите в сообщество.";
+$text['description-address_community']['sv-se'] = "Ange samhälle.";
+$text['description-address_community']['uk-ua'] = "Введіть назву спільноти";
+$text['description-address_community']['zh-cn'] = "进入社区。";
+$text['description-address_community']['ja-jp'] = "コミュニティに入ります。";
+$text['description-address_community']['ko-kr'] = "커뮤니티에 들어가십시오.";
+
+$text['description-address_address']['en-us'] = "Enter the address.";
+$text['description-address_address']['en-gb'] = "Enter the address.";
+$text['description-address_address']['ar-eg'] = "أدخل العنوان.";
+$text['description-address_address']['de-at'] = "Geben Sie die Adresse ein.";
+$text['description-address_address']['de-ch'] = "Geben Sie die Adresse ein.";
+$text['description-address_address']['de-de'] = "Geben Sie die Adresse ein.";
+$text['description-address_address']['el-gr'] = "Εισάγετε τη διεύθυνση.";
+$text['description-address_address']['es-cl'] = "Ingrese la calle.";
+$text['description-address_address']['es-mx'] = "Ingrese la calle.";
+$text['description-address_address']['fr-ca'] = "Saisissez l'adresse.";
+$text['description-address_address']['fr-fr'] = "Saisissez l'adresse.";
+$text['description-address_address']['he-il'] = "הזן את הכתובת.";
+$text['description-address_address']['it-it'] = "Inserire l'indirizzo.";
+$text['description-address_address']['ka-ge'] = "შეიყვანეთ მისამართი.";
+$text['description-address_address']['nl-nl'] = "Voer adres in.";
+$text['description-address_address']['pl-pl'] = "Wprowadź adres";
+$text['description-address_address']['pt-br'] = "Insira o endereço da rua";
+$text['description-address_address']['pt-pt'] = "Introduza o endereço da rua";
+$text['description-address_address']['ro-ro'] = "Introdu adresa.";
+$text['description-address_address']['ru-ru'] = "Введите адрес.";
+$text['description-address_address']['sv-se'] = "Ange adressen.";
+$text['description-address_address']['uk-ua'] = "Введіть адресу";
+$text['description-address_address']['zh-cn'] = "输入地址。";
+$text['description-address_address']['ja-jp'] = "住所を入力します。";
+$text['description-address_address']['ko-kr'] = "주소를 입력하세요.";
+
+$text['confirm-delete']['en-us'] = "Do you really want to delete this?";
+$text['confirm-delete']['en-gb'] = "Do you really want to delete this?";
+$text['confirm-delete']['ar-eg'] = "هل تريد حقًا حذف هذا؟";
+$text['confirm-delete']['de-at'] = "Wollen Sie das wirklich löschen?";
+$text['confirm-delete']['de-ch'] = "Wollen Sie das wirklich löschen?";
+$text['confirm-delete']['de-de'] = "Wollen Sie das wirklich löschen?";
+$text['confirm-delete']['el-gr'] = "Επιθυμείτε να διαγραφεί;";
+$text['confirm-delete']['es-cl'] = "¿Realmente desea eliminar esto?";
+$text['confirm-delete']['es-mx'] = "¿Realmente desea eliminar esto?";
+$text['confirm-delete']['fr-ca'] = "Voulez-vous vraiment supprimer cela?";
+$text['confirm-delete']['fr-fr'] = "Voulez-vous vraiment supprimer cela?";
+$text['confirm-delete']['he-il'] = "האם אתה באמת רוצה למחוק את זה?";
+$text['confirm-delete']['it-it'] = "Vuoi veramente cancellarlo?";
+$text['confirm-delete']['ka-ge'] = "მართლა გნებავთ ამის წაშლა?";
+$text['confirm-delete']['nl-nl'] = "Wil je dit werkelijk verwijderen?";
+$text['confirm-delete']['pl-pl'] = "Czy na pewno chcesz to usunąć?";
+$text['confirm-delete']['pt-br'] = "Deseja realmente remover isto?";
+$text['confirm-delete']['pt-pt'] = "Deseja realmente remover isto?";
+$text['confirm-delete']['ro-ro'] = "Chiar vrei să ștergi asta?";
+$text['confirm-delete']['ru-ru'] = "Вы действительно хотите удалить это?";
+$text['confirm-delete']['sv-se'] = "Vill du verkligen ta bort detta?";
+$text['confirm-delete']['uk-ua'] = "Ви дійсно бажаєте це видалити?";
+$text['confirm-delete']['zh-cn'] = "您真的要删除它吗?";
+$text['confirm-delete']['ja-jp'] = "本当にこれを削除しますか?";
+$text['confirm-delete']['ko-kr'] = "정말 삭제하시겠습니까?";
+
+$text['button-vcard']['en-us'] = "vCard";
+$text['button-vcard']['en-gb'] = "vCard";
+$text['button-vcard']['ar-eg'] = "vCard";
+$text['button-vcard']['de-at'] = "vCard";
+$text['button-vcard']['de-ch'] = "vCard";
+$text['button-vcard']['de-de'] = "vCard";
+$text['button-vcard']['el-gr'] = "vCard";
+$text['button-vcard']['es-cl'] = "vCard";
+$text['button-vcard']['es-mx'] = "vCard";
+$text['button-vcard']['fr-ca'] = "vCard";
+$text['button-vcard']['fr-fr'] = "vCard";
+$text['button-vcard']['he-il'] = "vCard";
+$text['button-vcard']['it-it'] = "vCard";
+$text['button-vcard']['ka-ge'] = "vCard";
+$text['button-vcard']['nl-nl'] = "vCard";
+$text['button-vcard']['pl-pl'] = "vCard";
+$text['button-vcard']['pt-br'] = "vCard";
+$text['button-vcard']['pt-pt'] = "vCard";
+$text['button-vcard']['ro-ro'] = "vCard";
+$text['button-vcard']['ru-ru'] = "vCard";
+$text['button-vcard']['sv-se'] = "vCard";
+$text['button-vcard']['uk-ua'] = "vCard";
+$text['button-vcard']['zh-cn'] = "vCard";
+$text['button-vcard']['ja-jp'] = "vCard";
+$text['button-vcard']['ko-kr'] = "vCard";
+
+$text['button-upload']['en-us'] = "Upload";
+$text['button-upload']['en-gb'] = "Upload";
+$text['button-upload']['ar-eg'] = "رفع";
+$text['button-upload']['de-at'] = "Hochladen";
+$text['button-upload']['de-ch'] = "Hochladen";
+$text['button-upload']['de-de'] = "Hochladen";
+$text['button-upload']['el-gr'] = "Ανέβασμα";
+$text['button-upload']['es-cl'] = "Subir";
+$text['button-upload']['es-mx'] = "Subir";
+$text['button-upload']['fr-ca'] = "Télécharger";
+$text['button-upload']['fr-fr'] = "Télécharger";
+$text['button-upload']['he-il'] = "העלה";
+$text['button-upload']['it-it'] = "Carica";
+$text['button-upload']['ka-ge'] = "ატვირთვა";
+$text['button-upload']['nl-nl'] = "Opsturen";
+$text['button-upload']['pl-pl'] = "Wyślij";
+$text['button-upload']['pt-br'] = "Submeter";
+$text['button-upload']['pt-pt'] = "Submeter";
+$text['button-upload']['ro-ro'] = "Încărcați";
+$text['button-upload']['ru-ru'] = "Загрузить";
+$text['button-upload']['sv-se'] = "Ladda Upp";
+$text['button-upload']['uk-ua'] = "Завантажити";
+$text['button-upload']['zh-cn'] = "上传";
+$text['button-upload']['ja-jp'] = "アップロード";
+$text['button-upload']['ko-kr'] = "업로드";
+
+$text['button-timer']['en-us'] = "Timer";
+$text['button-timer']['en-gb'] = "Timer";
+$text['button-timer']['ar-eg'] = "الموقت";
+$text['button-timer']['de-at'] = "Timer";
+$text['button-timer']['de-ch'] = "Timer";
+$text['button-timer']['de-de'] = "Timer";
+$text['button-timer']['el-gr'] = "Χρονοδιακόπτης";
+$text['button-timer']['es-cl'] = "Timer";
+$text['button-timer']['es-mx'] = "Timer";
+$text['button-timer']['fr-ca'] = "Minuteur";
+$text['button-timer']['fr-fr'] = "Minuteur";
+$text['button-timer']['he-il'] = "שָׁעוֹן עֶצֶר";
+$text['button-timer']['it-it'] = "Timer";
+$text['button-timer']['ka-ge'] = "ტაიმერი";
+$text['button-timer']['nl-nl'] = "Timer";
+$text['button-timer']['pl-pl'] = "Regulator Czasowy";
+$text['button-timer']['pt-br'] = "Cronômetro";
+$text['button-timer']['pt-pt'] = "Cronômetro";
+$text['button-timer']['ro-ro'] = "Temporizator";
+$text['button-timer']['ru-ru'] = "Таймер";
+$text['button-timer']['sv-se'] = "Timer";
+$text['button-timer']['uk-ua'] = "таймер";
+$text['button-timer']['zh-cn'] = "定时器";
+$text['button-timer']['ja-jp'] = "タイマー";
+$text['button-timer']['ko-kr'] = "시간제 노동자";
+
+$text['button-time']['en-us'] = "Time";
+$text['button-time']['en-gb'] = "Time";
+$text['button-time']['ar-eg'] = "وقت";
+$text['button-time']['de-at'] = "Zeit";
+$text['button-time']['de-ch'] = "Zeit";
+$text['button-time']['de-de'] = "Zeit";
+$text['button-time']['el-gr'] = "Ώρα";
+$text['button-time']['es-cl'] = "Tiempo";
+$text['button-time']['es-mx'] = "Tiempo";
+$text['button-time']['fr-ca'] = "Temps";
+$text['button-time']['fr-fr'] = "Temps";
+$text['button-time']['he-il'] = "זְמַן";
+$text['button-time']['it-it'] = "Tempo";
+$text['button-time']['ka-ge'] = "დრო";
+$text['button-time']['nl-nl'] = "Tijd";
+$text['button-time']['pl-pl'] = "Czas";
+$text['button-time']['pt-br'] = "Tempo";
+$text['button-time']['pt-pt'] = "Tempo";
+$text['button-time']['ro-ro'] = "Timp";
+$text['button-time']['ru-ru'] = "Время";
+$text['button-time']['sv-se'] = "Tid";
+$text['button-time']['uk-ua'] = "час";
+$text['button-time']['zh-cn'] = "时间";
+$text['button-time']['ja-jp'] = "時間";
+$text['button-time']['ko-kr'] = "시간";
+
+$text['button-stop']['en-us'] = "Stop";
+$text['button-stop']['en-gb'] = "Stop";
+$text['button-stop']['ar-eg'] = "قف";
+$text['button-stop']['de-at'] = "Stopp";
+$text['button-stop']['de-ch'] = "Stopp";
+$text['button-stop']['de-de'] = "Stopp";
+$text['button-stop']['el-gr'] = "Διακοπή";
+$text['button-stop']['es-cl'] = "Deténgase";
+$text['button-stop']['es-mx'] = "Deténgase";
+$text['button-stop']['fr-ca'] = "Stop";
+$text['button-stop']['fr-fr'] = "Stop";
+$text['button-stop']['he-il'] = "תפסיק";
+$text['button-stop']['it-it'] = "Stop";
+$text['button-stop']['ka-ge'] = "გაჩერება";
+$text['button-stop']['nl-nl'] = "Stop";
+$text['button-stop']['pl-pl'] = "Stop";
+$text['button-stop']['pt-br'] = "Pare";
+$text['button-stop']['pt-pt'] = "Pare";
+$text['button-stop']['ro-ro'] = "Stop";
+$text['button-stop']['ru-ru'] = "Стоп";
+$text['button-stop']['sv-se'] = "Stanna";
+$text['button-stop']['uk-ua'] = "стоп";
+$text['button-stop']['zh-cn'] = "停止";
+$text['button-stop']['ja-jp'] = "ストップ";
+$text['button-stop']['ko-kr'] = "멈추다";
+
+$text['button-start']['en-us'] = "Start";
+$text['button-start']['en-gb'] = "Start";
+$text['button-start']['ar-eg'] = "يبدأ";
+$text['button-start']['de-at'] = "Start";
+$text['button-start']['de-ch'] = "Start";
+$text['button-start']['de-de'] = "Start";
+$text['button-start']['el-gr'] = "Έναρξη";
+$text['button-start']['es-cl'] = "Comienzo";
+$text['button-start']['es-mx'] = "Comienzo";
+$text['button-start']['fr-ca'] = "Début";
+$text['button-start']['fr-fr'] = "Début";
+$text['button-start']['he-il'] = "הַתחָלָה";
+$text['button-start']['it-it'] = "Start";
+$text['button-start']['ka-ge'] = "დაწყება";
+$text['button-start']['nl-nl'] = "Start";
+$text['button-start']['pl-pl'] = "Początek";
+$text['button-start']['pt-br'] = "Começo";
+$text['button-start']['pt-pt'] = "Começo";
+$text['button-start']['ro-ro'] = "start";
+$text['button-start']['ru-ru'] = "Старт";
+$text['button-start']['sv-se'] = "Start";
+$text['button-start']['uk-ua'] = "початок";
+$text['button-start']['zh-cn'] = "开始";
+$text['button-start']['ja-jp'] = "スタート";
+$text['button-start']['ko-kr'] = "시작";
+
+$text['button-sign_out']['en-us'] = "Sign Out";
+$text['button-sign_out']['en-gb'] = "Sign Out";
+$text['button-sign_out']['ar-eg'] = "خروج";
+$text['button-sign_out']['de-at'] = "Abmelden";
+$text['button-sign_out']['de-ch'] = "Abmelden";
+$text['button-sign_out']['de-de'] = "Abmelden";
+$text['button-sign_out']['el-gr'] = "Έξοδος";
+$text['button-sign_out']['es-cl'] = "Desconectar";
+$text['button-sign_out']['es-mx'] = "Desconectar";
+$text['button-sign_out']['fr-ca'] = "Se Déconnecter";
+$text['button-sign_out']['fr-fr'] = "Se Déconnecter";
+$text['button-sign_out']['he-il'] = "התנתק";
+$text['button-sign_out']['it-it'] = "Esci";
+$text['button-sign_out']['ka-ge'] = "გასვლა";
+$text['button-sign_out']['nl-nl'] = "Afloggen";
+$text['button-sign_out']['pl-pl'] = "Wyloguj";
+$text['button-sign_out']['pt-br'] = "Sair";
+$text['button-sign_out']['pt-pt'] = "Sair";
+$text['button-sign_out']['ro-ro'] = "Sign out";
+$text['button-sign_out']['ru-ru'] = "Выход";
+$text['button-sign_out']['sv-se'] = "Logga Ut";
+$text['button-sign_out']['uk-ua'] = "Вийти";
+$text['button-sign_out']['zh-cn'] = "登出";
+$text['button-sign_out']['ja-jp'] = "サインアウト";
+$text['button-sign_out']['ko-kr'] = "로그아웃";
+
+$text['button-search']['en-us'] = "Search";
+$text['button-search']['en-gb'] = "Search";
+$text['button-search']['ar-eg'] = "يبحث";
+$text['button-search']['de-at'] = "Suchen";
+$text['button-search']['de-ch'] = "Suchen";
+$text['button-search']['de-de'] = "Suchen";
+$text['button-search']['el-gr'] = "Αναζήτηση";
+$text['button-search']['es-cl'] = "Buscar";
+$text['button-search']['es-mx'] = "Buscar";
+$text['button-search']['fr-ca'] = "Chercher";
+$text['button-search']['fr-fr'] = "Chercher";
+$text['button-search']['he-il'] = "לחפש";
+$text['button-search']['it-it'] = "Ricerca";
+$text['button-search']['ka-ge'] = "ძებნა";
+$text['button-search']['nl-nl'] = "Zoeken";
+$text['button-search']['pl-pl'] = "Wyszukaj";
+$text['button-search']['pt-br'] = "Pesquisar";
+$text['button-search']['pt-pt'] = "Pesquisar";
+$text['button-search']['ro-ro'] = "Căutare";
+$text['button-search']['ru-ru'] = "Поиск";
+$text['button-search']['sv-se'] = "Sök";
+$text['button-search']['uk-ua'] = "Пошук";
+$text['button-search']['zh-cn'] = "搜索";
+$text['button-search']['ja-jp'] = "検索";
+$text['button-search']['ko-kr'] = "찾다";
+
+$text['button-save']['en-us'] = "Save";
+$text['button-save']['en-gb'] = "Save";
+$text['button-save']['ar-eg'] = "يحفظ";
+$text['button-save']['de-at'] = "Speichern";
+$text['button-save']['de-ch'] = "Speichern";
+$text['button-save']['de-de'] = "Speichern";
+$text['button-save']['el-gr'] = "Αποθήκευση";
+$text['button-save']['es-cl'] = "Guardar";
+$text['button-save']['es-mx'] = "Guardar";
+$text['button-save']['fr-ca'] = "Sauvegarder";
+$text['button-save']['fr-fr'] = "Sauvegarder";
+$text['button-save']['he-il'] = "שמור";
+$text['button-save']['it-it'] = "Salva";
+$text['button-save']['ka-ge'] = "შენახვა";
+$text['button-save']['nl-nl'] = "Opslaan";
+$text['button-save']['pl-pl'] = "Zapisz";
+$text['button-save']['pt-br'] = "Salvar";
+$text['button-save']['pt-pt'] = "Guardar";
+$text['button-save']['ro-ro'] = "Salvați";
+$text['button-save']['ru-ru'] = "Сохранить";
+$text['button-save']['sv-se'] = "Spara";
+$text['button-save']['uk-ua'] = "Зберегти";
+$text['button-save']['zh-cn'] = "节省";
+$text['button-save']['ja-jp'] = "保存";
+$text['button-save']['ko-kr'] = "구하다";
+
+$text['button-reload']['en-us'] = "Reload";
+$text['button-reload']['en-gb'] = "Reload";
+$text['button-reload']['ar-eg'] = "إعادة تحميل";
+$text['button-reload']['de-at'] = "Neu Laden";
+$text['button-reload']['de-ch'] = "Neu Laden";
+$text['button-reload']['de-de'] = "Neu Laden";
+$text['button-reload']['el-gr'] = "Επαναφόρτωση";
+$text['button-reload']['es-cl'] = "Recargar";
+$text['button-reload']['es-mx'] = "Recargar";
+$text['button-reload']['fr-ca'] = "Recharger";
+$text['button-reload']['fr-fr'] = "Recharger";
+$text['button-reload']['he-il'] = "לִטעוֹן מִחָדָשׁ";
+$text['button-reload']['it-it'] = "Ricarica";
+$text['button-reload']['ka-ge'] = "თავიდან ჩატვირთვა";
+$text['button-reload']['nl-nl'] = "Herladen";
+$text['button-reload']['pl-pl'] = "Przeładuj";
+$text['button-reload']['pt-br'] = "Recarregar";
+$text['button-reload']['pt-pt'] = "Recarregar";
+$text['button-reload']['ro-ro'] = "Reîncărcați";
+$text['button-reload']['ru-ru'] = "Перезагрузить";
+$text['button-reload']['sv-se'] = "Ladda Om";
+$text['button-reload']['uk-ua'] = "Перезавантажити";
+$text['button-reload']['zh-cn'] = "重新加载";
+$text['button-reload']['ja-jp'] = "リロード";
+$text['button-reload']['ko-kr'] = "새로고침";
+
+$text['button-qr_code']['en-us'] = "QR Code";
+$text['button-qr_code']['en-gb'] = "QR Code";
+$text['button-qr_code']['ar-eg'] = "رمز الاستجابة السريعة";
+$text['button-qr_code']['de-at'] = "QR Code";
+$text['button-qr_code']['de-ch'] = "QR Code";
+$text['button-qr_code']['de-de'] = "QR Code";
+$text['button-qr_code']['el-gr'] = "QR Code";
+$text['button-qr_code']['es-cl'] = "Código QR";
+$text['button-qr_code']['es-mx'] = "Código QR";
+$text['button-qr_code']['fr-ca'] = "Code QR";
+$text['button-qr_code']['fr-fr'] = "Code QR";
+$text['button-qr_code']['he-il'] = "קוד QR";
+$text['button-qr_code']['it-it'] = "QR Code";
+$text['button-qr_code']['ka-ge'] = "QR კოდი";
+$text['button-qr_code']['nl-nl'] = "QR code";
+$text['button-qr_code']['pl-pl'] = "Kod QR";
+$text['button-qr_code']['pt-br'] = "QR Code";
+$text['button-qr_code']['pt-pt'] = "Código QR.";
+$text['button-qr_code']['ro-ro'] = "Cod QR";
+$text['button-qr_code']['ru-ru'] = "QR Код";
+$text['button-qr_code']['sv-se'] = "QR Kod";
+$text['button-qr_code']['uk-ua'] = "QR-код";
+$text['button-qr_code']['zh-cn'] = "二维码";
+$text['button-qr_code']['ja-jp'] = "QRコード";
+$text['button-qr_code']['ko-kr'] = "QR 코드";
+
+$text['button-invoices']['en-us'] = "Invoices";
+$text['button-invoices']['en-gb'] = "Invoices";
+$text['button-invoices']['ar-eg'] = "الفواتير";
+$text['button-invoices']['de-at'] = "Rechnungen";
+$text['button-invoices']['de-ch'] = "Rechnungen";
+$text['button-invoices']['de-de'] = "Rechnungen";
+$text['button-invoices']['el-gr'] = "Τιμολόγια";
+$text['button-invoices']['es-cl'] = "Facturas";
+$text['button-invoices']['es-mx'] = "Facturas";
+$text['button-invoices']['fr-ca'] = "Factures";
+$text['button-invoices']['fr-fr'] = "Factures";
+$text['button-invoices']['he-il'] = "חשבוניות";
+$text['button-invoices']['it-it'] = "Fatture";
+$text['button-invoices']['ka-ge'] = "ინვოისები";
+$text['button-invoices']['nl-nl'] = "Rekeningen";
+$text['button-invoices']['pl-pl'] = "Faktury";
+$text['button-invoices']['pt-br'] = "Faturas";
+$text['button-invoices']['pt-pt'] = "Facturas";
+$text['button-invoices']['ro-ro'] = "Facturi";
+$text['button-invoices']['ru-ru'] = "Счета-фактуры";
+$text['button-invoices']['sv-se'] = "Fakturor";
+$text['button-invoices']['uk-ua'] = "Рахунки-фактури";
+$text['button-invoices']['zh-cn'] = "发票";
+$text['button-invoices']['ja-jp'] = "請求書";
+$text['button-invoices']['ko-kr'] = "인보이스";
+
+$text['button-import']['en-us'] = "Import";
+$text['button-import']['en-gb'] = "Import";
+$text['button-import']['ar-eg'] = "يستورد";
+$text['button-import']['de-at'] = "Importieren";
+$text['button-import']['de-ch'] = "Importieren";
+$text['button-import']['de-de'] = "Importieren";
+$text['button-import']['el-gr'] = "Εισαγωγή";
+$text['button-import']['es-cl'] = "Importar";
+$text['button-import']['es-mx'] = "Importar";
+$text['button-import']['fr-ca'] = "Importer";
+$text['button-import']['fr-fr'] = "Importer";
+$text['button-import']['he-il'] = "יְבוּא";
+$text['button-import']['it-it'] = "Importa";
+$text['button-import']['ka-ge'] = "იმპორტი";
+$text['button-import']['nl-nl'] = "Import";
+$text['button-import']['pl-pl'] = "Importuj";
+$text['button-import']['pt-br'] = "Importar";
+$text['button-import']['pt-pt'] = "Importat";
+$text['button-import']['ro-ro'] = "Import";
+$text['button-import']['ru-ru'] = "Импорт";
+$text['button-import']['sv-se'] = "Importera";
+$text['button-import']['uk-ua'] = "Імпорт";
+$text['button-import']['zh-cn'] = "进口";
+$text['button-import']['ja-jp'] = "輸入";
+$text['button-import']['ko-kr'] = "수입";
+
+$text['button-edit']['en-us'] = "Edit";
+$text['button-edit']['en-gb'] = "Edit";
+$text['button-edit']['ar-eg'] = "يحرر";
+$text['button-edit']['de-at'] = "Bearbeiten";
+$text['button-edit']['de-ch'] = "Bearbeiten";
+$text['button-edit']['de-de'] = "Bearbeiten";
+$text['button-edit']['el-gr'] = "Επεξεργασία";
+$text['button-edit']['es-cl'] = "Editar";
+$text['button-edit']['es-mx'] = "Editar";
+$text['button-edit']['fr-ca'] = "Modifier";
+$text['button-edit']['fr-fr'] = "Editer";
+$text['button-edit']['he-il'] = "לַעֲרוֹך";
+$text['button-edit']['it-it'] = "Modifica";
+$text['button-edit']['ka-ge'] = "ჩასწორება";
+$text['button-edit']['nl-nl'] = "Bewerken";
+$text['button-edit']['pl-pl'] = "Edytuj";
+$text['button-edit']['pt-br'] = "Editar";
+$text['button-edit']['pt-pt'] = "Editar";
+$text['button-edit']['ro-ro'] = "Editați | ×";
+$text['button-edit']['ru-ru'] = "Редактировать";
+$text['button-edit']['sv-se'] = "Editera";
+$text['button-edit']['uk-ua'] = "Редагувати";
+$text['button-edit']['zh-cn'] = "编辑";
+$text['button-edit']['ja-jp'] = "編集";
+$text['button-edit']['ko-kr'] = "편집하다";
+
+$text['button-delete']['en-us'] = "Delete";
+$text['button-delete']['en-gb'] = "Delete";
+$text['button-delete']['ar-eg'] = "يمسح";
+$text['button-delete']['de-at'] = "Löschen";
+$text['button-delete']['de-ch'] = "Löschen";
+$text['button-delete']['de-de'] = "Löschen";
+$text['button-delete']['el-gr'] = "Διαγραφή";
+$text['button-delete']['es-cl'] = "Eliminar";
+$text['button-delete']['es-mx'] = "Eliminar";
+$text['button-delete']['fr-ca'] = "Supprimer";
+$text['button-delete']['fr-fr'] = "Supprimer";
+$text['button-delete']['he-il'] = "לִמְחוֹק";
+$text['button-delete']['it-it'] = "Cancella";
+$text['button-delete']['ka-ge'] = "წაშლა";
+$text['button-delete']['nl-nl'] = "Verwijderen";
+$text['button-delete']['pl-pl'] = "Usuń";
+$text['button-delete']['pt-br'] = "Remover";
+$text['button-delete']['pt-pt'] = "Remover";
+$text['button-delete']['ro-ro'] = "Șterge";
+$text['button-delete']['ru-ru'] = "Удалить";
+$text['button-delete']['sv-se'] = "Ta Bort";
+$text['button-delete']['uk-ua'] = "Видалити";
+$text['button-delete']['zh-cn'] = "删除";
+$text['button-delete']['ja-jp'] = "消去";
+$text['button-delete']['ko-kr'] = "삭제";
+
+$text['button-certificate']['en-us'] = "Certificate";
+$text['button-certificate']['en-gb'] = "Certificate";
+$text['button-certificate']['ar-eg'] = "شهادة";
+$text['button-certificate']['de-at'] = "Zertifikate";
+$text['button-certificate']['de-ch'] = "Zertifikate";
+$text['button-certificate']['de-de'] = "Zertifikate";
+$text['button-certificate']['el-gr'] = "Πιστοποιητικό";
+$text['button-certificate']['es-cl'] = "Certificado";
+$text['button-certificate']['es-mx'] = "Certificado";
+$text['button-certificate']['fr-ca'] = "Certificat";
+$text['button-certificate']['fr-fr'] = "Certificat";
+$text['button-certificate']['he-il'] = "תְעוּדָה";
+$text['button-certificate']['it-it'] = "Certificato";
+$text['button-certificate']['ka-ge'] = "სერტიფიკატი";
+$text['button-certificate']['nl-nl'] = "Certificaat";
+$text['button-certificate']['pl-pl'] = "Ceryfikat";
+$text['button-certificate']['pt-br'] = "Certificado";
+$text['button-certificate']['pt-pt'] = "Certificado";
+$text['button-certificate']['ro-ro'] = "Certificat";
+$text['button-certificate']['ru-ru'] = "Сертификат";
+$text['button-certificate']['sv-se'] = "Certifikat";
+$text['button-certificate']['uk-ua'] = "Сертифікат";
+$text['button-certificate']['zh-cn'] = "证书";
+$text['button-certificate']['ja-jp'] = "証明書";
+$text['button-certificate']['ko-kr'] = "자격증";
+
+$text['button-back']['en-us'] = "Back";
+$text['button-back']['en-gb'] = "Back";
+$text['button-back']['ar-eg'] = "خلف";
+$text['button-back']['de-at'] = "Zurück";
+$text['button-back']['de-ch'] = "Zurück";
+$text['button-back']['de-de'] = "Zurück";
+$text['button-back']['el-gr'] = "Πίσω";
+$text['button-back']['es-cl'] = "Volver";
+$text['button-back']['es-mx'] = "Volver";
+$text['button-back']['fr-ca'] = "Retour";
+$text['button-back']['fr-fr'] = "Retour";
+$text['button-back']['he-il'] = "חזרה";
+$text['button-back']['it-it'] = "Indietro";
+$text['button-back']['ka-ge'] = "უკან";
+$text['button-back']['nl-nl'] = "Terug";
+$text['button-back']['pl-pl'] = "Wróć";
+$text['button-back']['pt-br'] = "Voltar";
+$text['button-back']['pt-pt'] = "Voltar";
+$text['button-back']['ro-ro'] = "Înapoi";
+$text['button-back']['ru-ru'] = "Назад";
+$text['button-back']['sv-se'] = "Tillbaka";
+$text['button-back']['uk-ua'] = "Назад";
+$text['button-back']['zh-cn'] = "后退";
+$text['button-back']['ja-jp'] = "戻る";
+$text['button-back']['ko-kr'] = "뒤쪽에";
+
+$text['button-add']['en-us'] = "Add";
+$text['button-add']['en-gb'] = "Add";
+$text['button-add']['ar-eg'] = "يضيف";
+$text['button-add']['de-at'] = "Hinzufügen";
+$text['button-add']['de-ch'] = "Hinzufügen";
+$text['button-add']['de-de'] = "Hinzufügen";
+$text['button-add']['el-gr'] = "Προσθήκη";
+$text['button-add']['es-cl'] = "Agregar";
+$text['button-add']['es-mx'] = "Agregar";
+$text['button-add']['fr-ca'] = "Ajouter";
+$text['button-add']['fr-fr'] = "Ajouter";
+$text['button-add']['he-il'] = "לְהוֹסִיף";
+$text['button-add']['it-it'] = "Inserisci";
+$text['button-add']['ka-ge'] = "დამატება";
+$text['button-add']['nl-nl'] = "Toevoegen";
+$text['button-add']['pl-pl'] = "Dodaj";
+$text['button-add']['pt-br'] = "Adicionar";
+$text['button-add']['pt-pt'] = "Adicionar";
+$text['button-add']['ro-ro'] = "Adăuga";
+$text['button-add']['ru-ru'] = "Добавить";
+$text['button-add']['sv-se'] = "Lägg Till";
+$text['button-add']['uk-ua'] = "Додати";
+$text['button-add']['zh-cn'] = "添加";
+$text['button-add']['ja-jp'] = "追加";
+$text['button-add']['ko-kr'] = "추가하다";
+
+$text['button-user']['en-us'] = "User";
+$text['button-user']['en-gb'] = "User";
+$text['button-user']['ar-eg'] = "مستخدم";
+$text['button-user']['de-at'] = "Benutzer";
+$text['button-user']['de-ch'] = "Benutzer";
+$text['button-user']['de-de'] = "Benutzer";
+$text['button-user']['el-gr'] = "Χρήστης";
+$text['button-user']['es-cl'] = "Usuario";
+$text['button-user']['es-mx'] = "Usuario";
+$text['button-user']['fr-ca'] = "Utilisateurs";
+$text['button-user']['fr-fr'] = "Utilisateurs";
+$text['button-user']['he-il'] = "מִשׁתַמֵשׁ";
+$text['button-user']['it-it'] = "Utente";
+$text['button-user']['ka-ge'] = "მომხმარებელი";
+$text['button-user']['nl-nl'] = "Gebruiker";
+$text['button-user']['pl-pl'] = "Użytkownik";
+$text['button-user']['pt-br'] = "Usuário";
+$text['button-user']['pt-pt'] = "Utilizador";
+$text['button-user']['ro-ro'] = "Utilizator";
+$text['button-user']['ru-ru'] = "Пользователь";
+$text['button-user']['sv-se'] = "Användare";
+$text['button-user']['uk-ua'] = "Користувач";
+$text['button-user']['zh-cn'] = "用户";
+$text['button-user']['ja-jp'] = "ユーザー";
+$text['button-user']['ko-kr'] = "사용자";
+
+$text['label-click_to_call']['en-us'] = "Click to Call";
+$text['label-click_to_call']['en-gb'] = "Click to Call";
+$text['label-click_to_call']['ar-eg'] = "اضغط للاتصال";
+$text['label-click_to_call']['de-at'] = "Click to Call";
+$text['label-click_to_call']['de-ch'] = "Click to Call";
+$text['label-click_to_call']['de-de'] = "Click to Call";
+$text['label-click_to_call']['es-cl'] = "Pulse para Llamar";
+$text['label-click_to_call']['es-mx'] = "Pulse para Llamar";
+$text['label-click_to_call']['fr-ca'] = "Cliquez pour appeler";
+$text['label-click_to_call']['fr-fr'] = "Cliquez pour appeler";
+$text['label-click_to_call']['he-il'] = "לחץ כדי להתקשר";
+$text['label-click_to_call']['it-it'] = "Clicca per Chiamare";
+$text['label-click_to_call']['ka-ge'] = "დააწკაპუნეთ დასარეკად";
+$text['label-click_to_call']['nl-nl'] = "Klik voor oproep";
+$text['label-click_to_call']['pl-pl'] = "Kliknij by zadzwonić";
+$text['label-click_to_call']['pt-br'] = "Clique para chamar";
+$text['label-click_to_call']['pt-pt'] = "Clique para chamar";
+$text['label-click_to_call']['ro-ro'] = "Fă clic pentru a apela";
+$text['label-click_to_call']['ru-ru'] = "Вызов по клику";
+$text['label-click_to_call']['sv-se'] = "Klicka för att ringa";
+$text['label-click_to_call']['uk-ua'] = "Натисніть, щоб подзвонити";
+$text['label-click_to_call']['zh-cn'] = "点击通话";
+$text['label-click_to_call']['ja-jp'] = "電話するにはクリック";
+$text['label-click_to_call']['ko-kr'] = "클릭 투 콜";
+
+$text['label-search']['en-us'] = "Search...";
+$text['label-search']['en-gb'] = "Search...";
+$text['label-search']['ar-eg'] = "يبحث";
+$text['label-search']['de-at'] = "Suchen...";
+$text['label-search']['de-ch'] = "Suchen...";
+$text['label-search']['de-de'] = "Suchen...";
+$text['label-search']['el-gr'] = "Αναζήτηση...";
+$text['label-search']['es-cl'] = "Buscar...";
+$text['label-search']['es-mx'] = "Buscar...";
+$text['label-search']['fr-ca'] = "Chercher...";
+$text['label-search']['fr-fr'] = "Chercher...";
+$text['label-search']['he-il'] = "לחפש";
+$text['label-search']['it-it'] = "Ricerca...";
+$text['label-search']['ka-ge'] = "ძებნა...";
+$text['label-search']['nl-nl'] = "Zoeken...";
+$text['label-search']['pl-pl'] = "Wyszukaj...";
+$text['label-search']['pt-br'] = "Pesquisar...";
+$text['label-search']['pt-pt'] = "Pesquisar...";
+$text['label-search']['ro-ro'] = "Căutare...";
+$text['label-search']['ru-ru'] = "Поиск...";
+$text['label-search']['sv-se'] = "Sök...";
+$text['label-search']['uk-ua'] = "Пошук...";
+$text['label-search']['zh-cn'] = "搜索";
+$text['label-search']['ja-jp'] = "検索";
+$text['label-search']['ko-kr'] = "찾다";
+
+$text['label-setting']['en-us'] = "Setting";
+$text['label-setting']['en-gb'] = "Setting";
+$text['label-setting']['ar-eg'] = "جلسة";
+$text['label-setting']['de-at'] = "Einstellungen";
+$text['label-setting']['de-ch'] = "Einstellungen";
+$text['label-setting']['de-de'] = "Einstellungen";
+$text['label-setting']['es-cl'] = "Ajustes";
+$text['label-setting']['es-mx'] = "Ajustes";
+$text['label-setting']['fr-ca'] = "Paramètre";
+$text['label-setting']['fr-fr'] = "Paramètre";
+$text['label-setting']['he-il'] = "הגדרות";
+$text['label-setting']['it-it'] = "Parametri";
+$text['label-setting']['ka-ge'] = "მორგება";
+$text['label-setting']['nl-nl'] = "Instelling";
+$text['label-setting']['pl-pl'] = "Ustawienia";
+$text['label-setting']['pt-br'] = "Definiçõe";
+$text['label-setting']['pt-pt'] = "Definiçõe";
+$text['label-setting']['ro-ro'] = "Setare";
+$text['label-setting']['ru-ru'] = "Настройки";
+$text['label-setting']['sv-se'] = "Inställningar";
+$text['label-setting']['uk-ua'] = "Налаштування";
+$text['label-setting']['zh-cn'] = "环境";
+$text['label-setting']['ja-jp'] = "設定";
+$text['label-setting']['ko-kr'] = "환경";
+
+$text['label-email']['en-us'] = "Email";
+$text['label-email']['en-gb'] = "Email";
+$text['label-email']['ar-eg'] = "البريد الإليكتروني";
+$text['label-email']['de-at'] = "Email";
+$text['label-email']['de-ch'] = "Email";
+$text['label-email']['de-de'] = "Email";
+$text['label-email']['es-cl'] = "Email";
+$text['label-email']['es-mx'] = "Email";
+$text['label-email']['fr-ca'] = "Courriel";
+$text['label-email']['fr-fr'] = "Courriel";
+$text['label-email']['he-il'] = "אימייל";
+$text['label-email']['it-it'] = "Email";
+$text['label-email']['ka-ge'] = "ელფოსტა";
+$text['label-email']['nl-nl'] = "E-mail";
+$text['label-email']['pl-pl'] = "Email";
+$text['label-email']['pt-br'] = "Email";
+$text['label-email']['pt-pt'] = "Email";
+$text['label-email']['ro-ro'] = "E-mail";
+$text['label-email']['ru-ru'] = "Электронная Почта";
+$text['label-email']['sv-se'] = "E-post";
+$text['label-email']['uk-ua'] = "Електронна пошта";
+$text['label-email']['zh-cn'] = "电子邮件";
+$text['label-email']['ja-jp'] = "Eメール";
+$text['label-email']['ko-kr'] = "이메일";
+
+$text['label-url']['en-us'] = "URL";
+$text['label-url']['en-gb'] = "URL";
+$text['label-url']['ar-eg'] = "URL";
+$text['label-url']['de-at'] = "URL";
+$text['label-url']['de-ch'] = "URL";
+$text['label-url']['de-de'] = "URL";
+$text['label-url']['es-cl'] = "URL";
+$text['label-url']['es-mx'] = "URL";
+$text['label-url']['fr-ca'] = "URL";
+$text['label-url']['fr-fr'] = "URL";
+$text['label-url']['he-il'] = "URL";
+$text['label-url']['it-it'] = "URL";
+$text['label-url']['ka-ge'] = "URL";
+$text['label-url']['nl-nl'] = "URL";
+$text['label-url']['pl-pl'] = "URL";
+$text['label-url']['pt-br'] = "URL";
+$text['label-url']['pt-pt'] = "URL";
+$text['label-url']['ro-ro'] = "URL";
+$text['label-url']['ru-ru'] = "URL-адрес";
+$text['label-url']['sv-se'] = "URL";
+$text['label-url']['uk-ua'] = "URL";
+$text['label-url']['zh-cn'] = "URL";
+$text['label-url']['ja-jp'] = "URL";
+$text['label-url']['ko-kr'] = "URL";
+
+$text['label-image']['en-us'] = "Image";
+$text['label-image']['en-gb'] = "Image";
+$text['label-image']['ar-eg'] = "صورة";
+$text['label-image']['de-at'] = "Bild";
+$text['label-image']['de-ch'] = "Bild";
+$text['label-image']['de-de'] = "Bild";
+$text['label-image']['es-cl'] = "Imagen";
+$text['label-image']['es-mx'] = "Imagen";
+$text['label-image']['fr-ca'] = "image";
+$text['label-image']['fr-fr'] = "image";
+$text['label-image']['he-il'] = "תמונה";
+$text['label-image']['it-it'] = "Immagine";
+$text['label-image']['ka-ge'] = "გამოსახულება";
+$text['label-image']['nl-nl'] = "Afbeelding";
+$text['label-image']['pl-pl'] = "Obraz";
+$text['label-image']['pt-br'] = "Imagem";
+$text['label-image']['pt-pt'] = "Imagem";
+$text['label-image']['ro-ro'] = "Imagine";
+$text['label-image']['ru-ru'] = "Изображение";
+$text['label-image']['sv-se'] = "Bild";
+$text['label-image']['uk-ua'] = "зображення";
+$text['label-image']['zh-cn'] = "图像";
+$text['label-image']['ja-jp'] = "画像";
+$text['label-image']['ko-kr'] = "영상";
+
+$text['label-file']['en-us'] = "File";
+$text['label-file']['en-gb'] = "File";
+$text['label-file']['ar-eg'] = "ملف";
+$text['label-file']['de-at'] = "Dateien";
+$text['label-file']['de-ch'] = "Dateien";
+$text['label-file']['de-de'] = "Dateien";
+$text['label-file']['es-cl'] = "Archivo";
+$text['label-file']['es-mx'] = "Archivo";
+$text['label-file']['fr-ca'] = "Fichier";
+$text['label-file']['fr-fr'] = "Fichier";
+$text['label-file']['he-il'] = "קוֹבֶץ";
+$text['label-file']['it-it'] = "File";
+$text['label-file']['ka-ge'] = "ფაილი";
+$text['label-file']['nl-nl'] = "Bestanden";
+$text['label-file']['pl-pl'] = "Plik";
+$text['label-file']['pt-br'] = "Arquivo";
+$text['label-file']['pt-pt'] = "Ficheiro";
+$text['label-file']['ro-ro'] = "Fişier";
+$text['label-file']['zh-cn'] = "文件";
+$text['label-file']['ja-jp'] = "ファイル";
+$text['label-file']['ko-kr'] = "파일";
+
+$text['label-properties']['en-us'] = "Properties";
+$text['label-properties']['en-gb'] = "Properties";
+$text['label-properties']['ar-eg'] = "ملكيات";
+$text['label-properties']['de-at'] = "Eigenschaften";
+$text['label-properties']['de-ch'] = "Eigenschaften";
+$text['label-properties']['de-de'] = "Eigenschaften";
+$text['label-properties']['es-cl'] = "Propiedades";
+$text['label-properties']['es-mx'] = "Propiedades";
+$text['label-properties']['fr-ca'] = "Propriétés";
+$text['label-properties']['fr-fr'] = "Propriétés";
+$text['label-properties']['he-il'] = "נכסים";
+$text['label-properties']['it-it'] = "Proprietà";
+$text['label-properties']['ka-ge'] = "თვისებები";
+$text['label-properties']['nl-nl'] = "Eigenschappen";
+$text['label-properties']['pl-pl'] = "Nieruchomości";
+$text['label-properties']['pt-br'] = "Propriedades";
+$text['label-properties']['pt-pt'] = "Propriedades";
+$text['label-properties']['ro-ro'] = "Proprietăți";
+$text['label-properties']['ru-ru'] = "Характеристики";
+$text['label-properties']['sv-se'] = "Egenskaper";
+$text['label-properties']['uk-ua'] = "Властивості";
+$text['label-properties']['zh-cn'] = "特性";
+$text['label-properties']['ja-jp'] = "プロパティ";
+$text['label-properties']['ko-kr'] = "속성";
+
+$text['label-contact']['en-us'] = "Contact";
+$text['label-contact']['en-gb'] = "Contact";
+$text['label-contact']['ar-eg'] = "اتصال";
+$text['label-contact']['de-at'] = "Kontakt";
+$text['label-contact']['de-ch'] = "Kontakt";
+$text['label-contact']['de-de'] = "Kontakt";
+$text['label-contact']['el-gr'] = "Επαφή";
+$text['label-contact']['es-cl'] = "Contacto";
+$text['label-contact']['es-mx'] = "Contacto";
+$text['label-contact']['fr-ca'] = "Contact";
+$text['label-contact']['fr-fr'] = "Contact";
+$text['label-contact']['he-il'] = "איש קשר";
+$text['label-contact']['it-it'] = "Contatto";
+$text['label-contact']['ka-ge'] = "კონტაქტი";
+$text['label-contact']['nl-nl'] = "Kontact";
+$text['label-contact']['pl-pl'] = "Kontakt";
+$text['label-contact']['pt-br'] = "Contato";
+$text['label-contact']['pt-pt'] = "Contacto";
+$text['label-contact']['ro-ro'] = "Contact";
+$text['label-contact']['ru-ru'] = "Контакт";
+$text['label-contact']['sv-se'] = "Kontakt";
+$text['label-contact']['uk-ua'] = "Контакт";
+$text['label-contact']['zh-cn'] = "接触";
+$text['label-contact']['ja-jp'] = "コンタクト";
+$text['label-contact']['ko-kr'] = "연락하다";
+
+$text['label-permissions']['en-us'] = "Permissions";
+$text['label-permissions']['en-gb'] = "Permissions";
+$text['label-permissions']['ar-eg'] = "أذونات";
+$text['label-permissions']['de-at'] = "Berechtigungen";
+$text['label-permissions']['de-ch'] = "Berechtigungen";
+$text['label-permissions']['de-de'] = "Berechtigungen";
+$text['label-permissions']['es-cl'] = "Permisos";
+$text['label-permissions']['es-mx'] = "Permisos";
+$text['label-permissions']['fr-ca'] = "Permissions";
+$text['label-permissions']['fr-fr'] = "Permissions";
+$text['label-permissions']['he-il'] = "הרשאות";
+$text['label-permissions']['it-it'] = "Permessi";
+$text['label-permissions']['ka-ge'] = "წვდომები";
+$text['label-permissions']['nl-nl'] = "Rechten";
+$text['label-permissions']['pl-pl'] = "Uprawnienia";
+$text['label-permissions']['pt-br'] = "Permissões";
+$text['label-permissions']['pt-pt'] = "Permissões";
+$text['label-permissions']['ro-ro'] = "Permisiuni";
+$text['label-permissions']['ru-ru'] = "Права";
+$text['label-permissions']['sv-se'] = "Rättigheter";
+$text['label-permissions']['uk-ua'] = "Привілеї";
+$text['label-permissions']['zh-cn'] = "权限";
+$text['label-permissions']['ja-jp'] = "権限";
+$text['label-permissions']['ko-kr'] = "권한";
+
+?>

+ 38 - 0
core/contacts/app_menu.php

@@ -0,0 +1,38 @@
+<?php
+
+	$y=0;
+	$apps[$x]['menu'][$y]['title']['en-us'] = "Contacts";
+	$apps[$x]['menu'][$y]['title']['en-gb'] = "Contacts";
+	$apps[$x]['menu'][$y]['title']['ar-eg'] = "الاتصالات";
+	$apps[$x]['menu'][$y]['title']['de-at'] = "Kontakte";
+	$apps[$x]['menu'][$y]['title']['de-ch'] = "Ansprechpartner";
+	$apps[$x]['menu'][$y]['title']['de-de'] = "Kontakte";
+	$apps[$x]['menu'][$y]['title']['es-cl'] = "Contactos";
+	$apps[$x]['menu'][$y]['title']['es-mx'] = "Contactos";
+	$apps[$x]['menu'][$y]['title']['fr-ca'] = "Contacts";
+	$apps[$x]['menu'][$y]['title']['fr-fr'] = "Contacts";
+	$apps[$x]['menu'][$y]['title']['he-il'] = "אנשי קשר";
+	$apps[$x]['menu'][$y]['title']['it-it'] = "Contatti";
+	$apps[$x]['menu'][$y]['title']['ka-ge'] = "კონტაქტები";
+	$apps[$x]['menu'][$y]['title']['nl-nl'] = "Contacten";
+	$apps[$x]['menu'][$y]['title']['pl-pl'] = "Kontakty";
+	$apps[$x]['menu'][$y]['title']['pt-br'] = "Contatos";
+	$apps[$x]['menu'][$y]['title']['pt-pt'] = "Contactos";
+	$apps[$x]['menu'][$y]['title']['ro-ro'] = "Contacte";
+	$apps[$x]['menu'][$y]['title']['ru-ru'] = "Контакты";
+	$apps[$x]['menu'][$y]['title']['sv-se'] = "Kontakter";
+	$apps[$x]['menu'][$y]['title']['uk-ua'] = "Контакти";
+	$apps[$x]['menu'][$y]['title']['zh-cn'] = "联系人";
+	$apps[$x]['menu'][$y]['title']['ja-jp'] = "コンタクト";
+	$apps[$x]['menu'][$y]['title']['ko-kr'] = "콘택트 렌즈";
+	$apps[$x]['menu'][$y]['uuid'] = "f14e6ab6-6565-d4e6-cbad-a51d2e3e8ec6";
+	$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
+	$apps[$x]['menu'][$y]['category'] = "internal";
+	$apps[$x]['menu'][$y]['icon'] = "";
+	$apps[$x]['menu'][$y]['path'] = "/app/contacts/contacts.php";
+	$apps[$x]['menu'][$y]['order'] = "";
+	$apps[$x]['menu'][$y]['groups'][] = "admin";
+	$apps[$x]['menu'][$y]['groups'][] = "superadmin";
+	$y++;
+
+?>

+ 473 - 0
core/contacts/contact_address_edit.php

@@ -0,0 +1,473 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+	Luis Daniel Lucio Quiroz <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_address_edit') || permission_exists('contact_address_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//set the defaults
+	$address_label = '';
+	$address_label_custom = '';
+	$address_street = '';
+	$address_extended = '';
+	$address_community = '';
+	$address_locality = '';
+	$address_region = '';
+	$address_postal_code  = '';
+	$address_country = '';
+	$address_latitude = '';
+	$address_longitude = '';
+	$address_description = '';
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$contact_address_uuid = $_REQUEST["id"];
+	}
+	else {
+		$action = "add";
+	}
+
+//get the contact uuid
+	if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
+		$contact_uuid = $_GET["contact_uuid"];
+	}
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+		$address_type = $_POST["address_type"];
+		$address_label = $_POST["address_label"];
+		$address_label_custom = $_POST["address_label_custom"];
+		$address_street = $_POST["address_street"];
+		$address_extended = $_POST["address_extended"];
+		$address_community = $_POST["address_community"];
+		$address_locality = $_POST["address_locality"];
+		$address_region = $_POST["address_region"];
+		$address_postal_code = $_POST["address_postal_code"];
+		$address_country = $_POST["address_country"];
+		$address_latitude = $_POST["address_latitude"];
+		$address_longitude = $_POST["address_longitude"];
+		$address_primary = $_POST["address_primary"];
+		$address_description = $_POST["address_description"];
+
+		//use custom label if set
+		$address_label = !empty($address_label_custom) ? $address_label_custom : $address_label;
+	}
+
+//process the form data
+	if (!empty($_POST) && empty($_POST["persistformvar"])) {
+
+		//set the uuid
+			if ($action == "update") {
+				$contact_address_uuid = $_POST["contact_address_uuid"];
+			}
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contacts.php');
+				exit;
+			}
+
+		//check for all required data
+			$msg = '';
+			if (!empty($msg) && empty($_POST["persistformvar"])) {
+				require_once "resources/header.php";
+				require_once "resources/persist_form_var.php";
+				echo "<div align='center'>\n";
+				echo "<table><tr><td>\n";
+				echo $msg."<br />";
+				echo "</td></tr></table>\n";
+				persistformvar($_POST);
+				echo "</div>\n";
+				require_once "resources/footer.php";
+				return;
+			}
+
+		//add or update the database
+			if (empty($_POST["persistformvar"])) {
+
+				//update last modified
+					$array['contacts'][0]['contact_uuid'] = $contact_uuid;
+					$array['contacts'][0]['domain_uuid'] = $domain_uuid;
+					$array['contacts'][0]['last_mod_date'] = 'now()';
+					$array['contacts'][0]['last_mod_user'] = $_SESSION['username'];
+
+					$p = new permissions;
+					$p->add('contact_edit', 'temp');
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+
+					$p->delete('contact_edit', 'temp');
+
+				//if primary, unmark other primary addresses
+					if ($email_primary) {
+						$sql = "update v_contact_addresses set address_primary = 0 ";
+						$sql .= "where domain_uuid = :domain_uuid ";
+						$sql .= "and contact_uuid = :contact_uuid ";
+						$parameters['domain_uuid'] = $domain_uuid;
+						$parameters['contact_uuid'] = $contact_uuid;
+						$database = new database;
+						$database->execute($sql, $parameters);
+						unset($sql, $parameters);
+					}
+
+				if ($action == "add" && permission_exists('contact_address_add')) {
+					$contact_address_uuid = uuid();
+					$array['contact_addresses'][0]['contact_address_uuid'] = $contact_address_uuid;
+
+					message::add($text['message-add']);
+				}
+
+				if ($action == "update" && permission_exists('contact_address_edit')) {
+					$array['contact_addresses'][0]['contact_address_uuid'] = $contact_address_uuid;
+
+					message::add($text['message-update']);
+				}
+
+				if (!empty($array)) {
+					$array['contact_addresses'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
+					$array['contact_addresses'][0]['contact_uuid'] = $contact_uuid;
+					$array['contact_addresses'][0]['address_type'] = $address_type;
+					$array['contact_addresses'][0]['address_label'] = $address_label;
+					$array['contact_addresses'][0]['address_street'] = $address_street;
+					$array['contact_addresses'][0]['address_extended'] = $address_extended;
+					$array['contact_addresses'][0]['address_community'] = $address_community;
+					$array['contact_addresses'][0]['address_locality'] = $address_locality;
+					$array['contact_addresses'][0]['address_region'] = $address_region;
+					$array['contact_addresses'][0]['address_postal_code'] = $address_postal_code;
+					$array['contact_addresses'][0]['address_country'] = $address_country;
+					$array['contact_addresses'][0]['address_latitude'] = $address_latitude;
+					$array['contact_addresses'][0]['address_longitude'] = $address_longitude;
+					$array['contact_addresses'][0]['address_primary'] = $address_primary ? 1 : 0;
+					$array['contact_addresses'][0]['address_description'] = $address_description;
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+				}
+
+				header("Location: contact_edit.php?id=".$contact_uuid);
+				exit;
+
+			}
+	}
+
+//pre-populate the form
+	if (!empty($_GET) && empty($_POST["persistformvar"])) {
+		$contact_address_uuid = $_GET["id"] ?? '';
+		$sql = "select * from v_contact_addresses ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_address_uuid = :contact_address_uuid ";
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_address_uuid'] = $contact_address_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (!empty($row)) {
+			$address_type = $row["address_type"];
+			$address_label = $row["address_label"];
+			$address_street = $row["address_street"];
+			$address_extended = $row["address_extended"];
+			$address_community = $row["address_community"];
+			$address_locality = $row["address_locality"];
+			$address_region = $row["address_region"];
+			$address_postal_code = $row["address_postal_code"];
+			$address_country = $row["address_country"];
+			$address_latitude = $row["address_latitude"];
+			$address_longitude = $row["address_longitude"];
+			$address_primary = $row["address_primary"];
+			$address_description = $row["address_description"];
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	if ($action == "update") {
+		$document['title'] = $text['title-contact_addresses-edit'];
+	}
+	else if ($action == "add") {
+		$document['title'] = $text['title-contact_addresses-add'];
+	}
+	require_once "resources/header.php";
+
+//javascript to toggle input/select boxes
+	echo "<script type='text/javascript'>";
+	echo "	function toggle_custom(field) {";
+	echo "		$('#'+field).toggle();";
+	echo "		document.getElementById(field).selectedIndex = 0;";
+	echo "		document.getElementById(field+'_custom').value = '';";
+	echo "		$('#'+field+'_custom').toggle();";
+	echo "		if ($('#'+field+'_custom').is(':visible')) { $('#'+field+'_custom').trigger('focus'); } else { $('#'+field).trigger('focus'); }";
+	echo "	}";
+	echo "</script>";
+
+//show the content
+	echo "<form method='post' name='frm' id='frm'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'>";
+	if ($action == "update") {
+		echo "<b>".$text['header-contact_addresses-edit']."</b>";
+	}
+	else if ($action == "add") {
+		echo "<b>".$text['header-contact_addresses-add']."</b>";
+	}
+	echo "	</div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid)]);
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	if ($action == "update") {
+		echo $text['description-contact_addresses-edit'];
+	}
+	else if ($action == "add") {
+		echo $text['description-contact_addresses-add'];
+	}
+	echo "<br /><br />\n";
+
+	echo "<div class='card'>\n";
+	echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+	echo "<tr>\n";
+	echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_label']."\n";
+	echo "</td>\n";
+	echo "<td width='70%' class='vtable' align='left'>\n";
+	if (!empty($_SESSION["contact"]["address_label"])) {
+		sort($_SESSION["contact"]["address_label"]);
+		foreach($_SESSION["contact"]["address_label"] as $row) {
+			$address_label_options[] = "<option value='".$row."' ".(($row == $address_label) ? "selected='selected'" : null).">".$row."</option>";
+		}
+		$address_label_found = (in_array($address_label, $_SESSION["contact"]["address_label"])) ? true : false;
+	}
+	else {
+		$selected[$address_label] = "selected";
+		$default_labels[] = $text['option-work'];
+		$default_labels[] = $text['option-home'];
+		$default_labels[] = $text['option-mailing'];
+		$default_labels[] = $text['option-physical'];
+		$default_labels[] = $text['option-shipping'];
+		$default_labels[] = $text['option-billing'];
+		$default_labels[] = $text['option-other'];
+		foreach ($default_labels as $default_label) {
+			$address_label_options[] = "<option value='".$default_label."' ".!empty($selected[$default_label]).">".$default_label."</option>";
+		}
+		$address_label_found = (in_array($address_label, $default_labels)) ? true : false;
+	}
+	echo "	<select class='formfld' ".((!empty($address_label) && !$address_label_found) ? "style='display: none;'" : null)." name='address_label' id='address_label' onchange=\"getElementById('address_label_custom').value='';\">\n";
+	echo "		<option value=''></option>\n";
+	echo 		(!empty($address_label_options)) ? implode("\n", $address_label_options) : null;
+	echo "	</select>\n";
+	echo "	<input type='text' class='formfld' ".((empty($address_label) || $address_label_found) ? "style='display: none;'" : null)." name='address_label_custom' id='address_label_custom' value=\"".((!$address_label_found) ? htmlentities($address_label) : null)."\">\n";
+	echo "	<input type='button' id='btn_toggle_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('address_label');\">\n";
+	echo "<br />\n";
+	echo $text['description-address_label']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_type']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<select class='formfld' name='address_type' id='address_type'>\n";
+	echo "		<option value=''></option>\n";
+	$vcard_address_types = array(
+		'work' => $text['option-work'],
+		'home' => $text['option-home'],
+		'dom' => $text['option-dom'],
+		'intl' => $text['option-intl'],
+		'postal' => $text['option-postal'],
+		'parcel' => $text['option-parcel'],
+		'pref' => $text['option-pref']
+		);
+	foreach ($vcard_address_types as $vcard_address_type_value => $vcard_address_type_label) {
+		echo "	<option value='".$vcard_address_type_value."' ".(!empty($address_type) && $address_type == $vcard_address_type_value ? "selected" : null).">".$vcard_address_type_label."</option>\n";
+	}
+	echo "	</select>\n";
+	echo "<br />\n";
+	echo $text['description-address_type']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_address']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<textarea class='formfld' name='address_street' style='margin-bottom: 3px;'>".$address_street."</textarea><br>\n";
+	echo "	<input class='formfld' type='text' name='address_extended' maxlength='255' value=\"".escape($address_extended)."\">\n";
+	echo "<br />\n";
+	echo $text['description-address_address']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_community']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='address_community' maxlength='255' value=\"".escape($address_community)."\">\n";
+	echo "<br />\n";
+	echo $text['description-address_community']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_locality']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='address_locality' maxlength='255' value=\"".escape($address_locality)."\">\n";
+	echo "<br />\n";
+	echo $text['description-address_locality']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_region']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='address_region' maxlength='255' value=\"".escape($address_region)."\">\n";
+	echo "<br />\n";
+	echo $text['description-address_region']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_postal_code']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='address_postal_code' maxlength='255' value=\"".escape($address_postal_code)."\">\n";
+	echo "<br />\n";
+	echo $text['description-address_postal_code']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_country']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='address_country' maxlength='255' value=\"".escape($address_country)."\">\n";
+	echo "<br />\n";
+	echo $text['description-address_country']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_latitude']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='number' name='address_latitude' maxlength='255' min='-90' max='90' step='0.0000001' value=\"".escape($address_latitude)."\">\n";
+	echo "<br />\n";
+	echo $text['description-address_latitude']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_longitude']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='number' name='address_longitude' maxlength='255' min='-180' max='180' step='0.0000001' value=\"".escape($address_longitude)."\">\n";
+	echo "<br />\n";
+	echo $text['description-address_longitude']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-primary']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<select class='formfld' name='address_primary' id='address_primary'>\n";
+	echo "		<option value='0'>".$text['option-false']."</option>\n";
+	echo "		<option value='1' ".(!empty($address_primary) && $address_primary ? "selected" : null).">".$text['option-true']."</option>\n";
+	echo "	</select>\n";
+	echo "<br />\n";
+	echo $text['description-address_primary']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-address_description']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='address_description' maxlength='255' value=\"".escape($address_description)."\">\n";
+	echo "<br />\n";
+	echo $text['description-address_description']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>";
+	echo "</div>\n";
+	echo "<br><br>";
+
+	echo "<input type='hidden' name='contact_uuid' value='".escape($contact_uuid)."'>\n";
+	if ($action == "update") {
+		echo "<input type='hidden' name='contact_address_uuid' value='".escape($contact_address_uuid)."'>\n";
+	}
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 125 - 0
core/contacts/contact_addresses.php

@@ -0,0 +1,125 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_address_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set from session variables
+	$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
+
+//set the uuid
+	if (!empty($_GET['id']) && is_uuid($_GET['id'])) {
+		$contact_uuid = $_GET['id'];
+	}
+
+//get the address list
+	$sql = "select * from v_contact_addresses ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by address_primary desc, address_label asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_addresses = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_addresses)) {
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".!empty($text['label-addresses'])."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			if (permission_exists('contact_address_delete')) {
+				echo "	<th class='checkbox'>\n";
+				echo "		<input type='checkbox' id='checkbox_all_addresses' name='checkbox_all' onclick=\"edit_all_toggle('addresses');\" ".(!empty($contact_addresses) ?: "style='visibility: hidden;'").">\n";
+				echo "	</th>\n";
+			}
+			echo "<th class='pct-15'>".!empty($text['label-address_label'])."</th>\n";
+			echo "<th>".!empty($text['label-address_address'])."</th>\n";
+			echo "<th>".!empty($text['label-address_locality']).", ".!empty($text['label-address_region'])."</th>\n";
+			echo "<th class='center'>".!empty($text['label-address_country'])."</th>\n";
+			echo "<th class='shrink'>&nbsp;</th>\n";
+			echo "<th class='hide-md-dn'>".!empty($text['label-address_description'])."</th>\n";
+			if (permission_exists('contact_address_edit') && $list_row_edit_button == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_addresses)) {
+				$x = 0;
+				foreach ($contact_addresses as $row) {
+					$map_query = $row['address_street']." ".$row['address_extended'].", ".$row['address_locality'].", ".$row['address_region'].", ".$row['address_region'].", ".$row['address_postal_code'];
+					if (permission_exists('contact_address_edit')) {
+						$list_row_url = "contact_address_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_address_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."'>\n";
+					if (permission_exists('contact_address_delete')) {
+						echo "	<td class='checkbox'>\n";
+						echo "		<input type='checkbox' name='contact_addresses[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_addresses' value='true' onclick=\"edit_delete_action('addresses');\">\n";
+						echo "		<input type='hidden' name='contact_addresses[$x][uuid]' value='".escape($row['contact_address_uuid'])."' />\n";
+						echo "	</td>\n";
+					}
+					echo "	<td>".escape($row['address_label'])." ".($row['address_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+					$address = escape($row['address_street']).(!empty($row['address_extended']) ? " ".escape($row['address_extended']) : null);
+					echo "	<td class='pct-25 overflow no-wrap'><a href='".$list_row_url."'>".$address."</a>&nbsp;</td>\n";
+					echo "	<td class='no-wrap'>".escape($row['address_locality']).((!empty($row['address_locality']) && !empty($row['address_region'])) ? ", " : null).escape($row['address_region'])."&nbsp;</td>\n";
+					echo "	<td class='center'>".escape($row['address_country'])."&nbsp;</td>\n";
+					echo "	<td class='button no-link'><a href=\"http://maps.google.com/maps?q=".urlencode($map_query)."&hl=en\" target=\"_blank\"><img src='resources/images/icon_gmaps.png' style='width: 21px; height: 21px; alt='".!empty($text['label-google_map'])."' title='".!empty($text['label-google_map'])."'></a></td>\n";
+					echo "	<td class='description overflow hide-md-dn'>".escape($row['address_description'])."&nbsp;</td>\n";
+					if (permission_exists('contact_address_edit') && $list_row_edit_button == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+				unset($contact_addresses);
+			}
+
+			echo "</table>\n";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 98 - 0
core/contacts/contact_addresses_view.php

@@ -0,0 +1,98 @@
+<?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-2020
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_address_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the address list
+	$sql = "select * from v_contact_addresses ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by address_primary desc, address_label asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_addresses = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_addresses)) {
+
+		//show the content
+			echo "<div class='grid' style='grid-template-columns: 70px auto 30px;'>\n";
+			$x = 0;
+			foreach ($contact_addresses as $row) {
+				$map_query = $row['address_street']." ".$row['address_extended'].", ".$row['address_locality'].", ".$row['address_region'].", ".$row['address_region'].", ".$row['address_postal_code'];
+				echo "<div class='box contact-details-label'>".escape($row['address_label'])."</div>\n";
+// 				($row['address_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+				echo "<div class='box'>";
+				echo "<a href='http://maps.google.com/maps?q=".urlencode($map_query)."&hl=en' target='_blank' alt='".$text['label-google_map']."' title='".$text['label-google_map']."'>";
+				$previous_data = false;
+				if ($row['address_street']) {
+					echo escape($row['address_street']);
+					$previous_data = true;
+				}
+				if ($row['address_extended']) {
+					echo $previous_data ? ', ' : null;
+					echo escape($row['address_extended']);
+					$previous_data = true;
+				}
+				if ($row['address_locality']) {
+					echo $previous_data ? ', ' : null;
+					echo escape($row['address_locality']);
+					$previous_data = true;
+				}
+				if ($row['address_region']) {
+					echo $previous_data ? ', ' : null;
+					echo escape($row['address_region']);
+					$previous_data = true;
+				}
+				if ($row['address_country']) {
+					echo $previous_data ? ', ' : null;
+					echo escape($row['address_country']);
+					$previous_data = true;
+				}
+				echo "</a>";
+				echo "</div>\n";
+				echo "<div class='box' style='text-align: right;'><i class='fas fa-map-marked-alt fa-fw'></i></div>\n";
+				$x++;
+			}
+			echo "</div>\n";
+			unset($contact_addresses);
+
+	}
+
+?>

+ 86 - 0
core/contacts/contact_attachment.php

@@ -0,0 +1,86 @@
+<?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) 2016-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//get attachment uuid
+	$contact_attachment_uuid = $_GET['id'] ?? '';
+	$action = $_GET['action'] ?? '';
+	$session_id = $_GET['sid'] ?? '';
+
+//get media
+	if (!empty($contact_attachment_uuid) && is_uuid($contact_attachment_uuid)) {
+
+		$sql = "select attachment_filename, attachment_content from v_contact_attachments ";
+		$sql .= "where contact_attachment_uuid = :contact_attachment_uuid ";
+		$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
+		$parameters['contact_attachment_uuid'] = $contact_attachment_uuid;
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$database = new database;
+		$attachment = $database->select($sql, $parameters ?? null, 'row');
+		unset($sql, $parameters);
+
+		$attachment_type = strtolower(pathinfo($attachment['attachment_filename'] ?? '', PATHINFO_EXTENSION));
+
+		//determine mime type
+		$content_type = 'application/octet-stream'; //set default
+		$allowed_attachment_types = json_decode($_SESSION['contact']['allowed_attachment_types']['text'] ?? '', true);
+		if (!empty($allowed_attachment_types)) {
+			if ($allowed_attachment_types[$attachment_type] != '') {
+				$content_type = $allowed_attachment_types[$attachment_type];
+			}
+		}
+
+		switch ($action) {
+			case 'download':
+				header("Content-type: ".$content_type."; charset=utf-8");
+				header("Content-Disposition: attachment; filename=\"".$attachment['attachment_filename']."\"");
+				header("Content-Length: ".strlen(base64_decode($attachment['attachment_content'])));
+				if (!empty($session_id)) {
+					header("Cache-Control: max-age=86400"); // 24h
+					header("Expires: ". gmdate('D, d M Y H:i:s \G\M\T', time() + 86400)); // 24h
+				}
+				echo base64_decode($attachment['attachment_content']);
+				break;
+			case 'display':
+				echo "	<table cellpadding='0' cellspacing='0' border='0' width='100%' height='100%'>\n";
+				echo "		<tr>\n";
+				echo "			<td align='center' valign='middle'>\n";
+				echo "				<img src=\"data:".$content_type.";base64,".$attachment['attachment_content']."\" style='width: auto; max-width: 95%; height: auto; max-height: 800px; box-shadow: 0px 1px 20px #888; background-color: #fff; cursor: pointer;' onclick=\"$('#contact_attachment_layer').fadeOut(200);\" oncontextmenu=\"window.open('contact_attachment.php?id=".$contact_attachment_uuid."&action=download'); return false;\" title=\"\">\n";
+				echo "			</td>\n";
+				echo "		</tr>\n";
+				echo "	</table>\n";
+				break;
+		}
+
+	}
+
+?>

+ 283 - 0
core/contacts/contact_attachment_edit.php

@@ -0,0 +1,283 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+	Luis Daniel Lucio Quiroz <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (!permission_exists('contact_attachment_edit') && !permission_exists('contact_attachment_add')) {
+		echo "access denied"; exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//action add or update
+	$contact_attachment_uuid = $_REQUEST['id'] ?? '';
+	$contact_uuid = $_REQUEST['contact_uuid'] ?? '';
+
+	if (!empty($contact_attachment_uuid) && !empty($contact_uuid) && is_uuid($contact_attachment_uuid) && is_uuid($contact_uuid)) {
+		$action = 'update';
+	}
+	else if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$action = 'add';
+	}
+	else {
+		exit;
+	}
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+
+		//set the variables
+		$attachment = $_FILES['attachment'];
+		$attachment_primary = $_POST['attachment_primary'];
+		$attachment_description = $_POST['attachment_description'];
+
+		//validate the token
+		$token = new token;
+		if (!$token->validate($_SERVER['PHP_SELF'])) {
+			message::add($text['message-invalid_token'],'negative');
+			header('Location: contacts.php');
+			exit;
+		}
+
+		//get the attachment type
+		if (empty($attachment) || sizeof($attachment) == 0) {
+			$attachment_type = strtolower(pathinfo($_POST['attachment_filename'], PATHINFO_EXTENSION));
+		}
+		else {
+			$attachment_type = strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION));
+		}
+
+		//unflag others as primary
+		$allowed_primary_attachment = false;
+		if ($attachment_primary && ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png')) {
+			$sql = "update v_contact_attachments set attachment_primary = 0 ";
+			$sql .= "where domain_uuid = :domain_uuid ";
+			$sql .= "and contact_uuid = :contact_uuid ";
+			$parameters['domain_uuid'] = $domain_uuid;
+			$parameters['contact_uuid'] = $contact_uuid;
+			$database = new database;
+			$database->execute($sql, $parameters ?? null);
+			unset($sql, $parameters);
+
+			$allowed_primary_attachment = true;
+		}
+
+		//get the allowed extensions
+		$allowed_extensions = array_keys(json_decode($_SESSION['contact']['allowed_attachment_types']['text'], true));
+
+		//get the attachment extension
+		$attachment_extension = strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION));
+
+		//check the allowed extensions
+		if ($attachment['error'] == '0' && in_array($attachment_extension, $allowed_extensions)) {
+			//get the attachment content
+			$attachment_content = file_get_contents($attachment['tmp_name']);
+
+			//list of image extensions
+			$image_extensions = array('png','jpg','jpeg','gif','bmp', 'webp');
+
+			//read the image from the string then output the image without meta data
+			if (in_array($attachment_extension, $image_extensions)) {
+				//create the image object from the content string
+				$image = imagecreatefromstring($attachment_content);
+				imagealphablending($image, FALSE);
+				imagesavealpha($image, TRUE);
+
+				//start output buffering to capture the image data
+				ob_start();
+
+				//output the image without the EXIF data
+				imagepng($image);
+
+				//get the image from the buffer
+				$attachment_content = ob_get_contents();
+
+				//end the buffering
+				ob_end_clean();
+
+				//free up the memory
+				imagedestroy($image);
+			}
+		}
+
+		//prepare the array
+		$array['contact_attachments'][0]['contact_attachment_uuid'] = $action == 'update' ? $contact_attachment_uuid : uuid();
+		$array['contact_attachments'][0]['domain_uuid'] = $_SESSION['domain_uuid'] ?? '';
+		$array['contact_attachments'][0]['contact_uuid'] = $contact_uuid;
+		$array['contact_attachments'][0]['attachment_primary'] = $allowed_primary_attachment ? 1 : 0;
+		if ($attachment['error'] == '0' && in_array(strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION)), $allowed_extensions)) {
+			$array['contact_attachments'][0]['attachment_filename'] = $attachment['name'];
+			$array['contact_attachments'][0]['attachment_content'] = base64_encode($attachment_content);
+		}
+		$array['contact_attachments'][0]['attachment_description'] = $attachment_description;
+		if ($action == 'add') {
+			$array['contact_attachments'][0]['attachment_uploaded_date'] = 'now()';
+			$array['contact_attachments'][0]['attachment_uploaded_user_uuid'] = $_SESSION['user_uuid'];
+		}
+
+		//save data
+		$database = new database;
+		$database->app_name = 'contacts';
+		$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+		$database->save($array);
+		unset($array);
+
+		//redirect
+		message::add($text['message-'.($action == 'update' ? 'update' : 'uploaded')]);
+		header('Location: contact_edit.php?id='.$contact_uuid);
+		exit;
+	}
+
+//get form data
+	if (!empty($_GET)) {
+		$sql = "select * from v_contact_attachments ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_attachment_uuid = :contact_attachment_uuid ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_attachment_uuid'] = $contact_attachment_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (!empty($row)) {
+			$attachment_primary = $row["attachment_primary"];
+			$attachment_filename = $row["attachment_filename"];
+			$attachment_content = $row["attachment_content"];
+			$attachment_description = $row["attachment_description"];
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	if ($action == "update") {
+		$document['title'] = $text['title-contact_attachment-edit'];
+	}
+	else if ($action == "add") {
+		$document['title'] = $text['title-contact_attachment-add'];
+	}
+	require_once "resources/header.php";
+
+//show the content
+	echo "<form method='post' name='frm' id='frm' enctype='multipart/form-data'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'>";
+	if ($action == "update") {
+		echo "<b>".$text['header-contact_attachment-edit']."</b>";
+	}
+	else if ($action == "add") {
+		echo "<b>".$text['header-contact_attachment-add']."</b>";
+	}
+	echo "	</div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid)]);
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	echo "<div class='card'>\n";
+	echo "<table width='100%'  border='0' cellpadding='0' cellspacing='0'>\n";
+
+	echo "<tr>\n";
+	echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-attachment']."\n";
+	echo "</td>\n";
+	echo "<td width='70%' class='vtable' align='left'>\n";
+	$attachment_type = strtolower(pathinfo($attachment_filename ?? '', PATHINFO_EXTENSION));
+	if ($action == 'update') {
+		echo "<input type='hidden' name='attachment_filename' value=\"".escape($attachment_filename)."\">\n";
+		if ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png') {
+			echo "<img src='data:image/".$attachment_type.";base64,".$attachment_content."' style='border: none; width: auto; max-height: 400px;' oncontextmenu=\"window.open('contact_attachment.php?id=".$contact_attachment_uuid."&action=download'); return false;\">";
+		}
+		else {
+			echo "<a href='contact_attachment.php?id=".$contact_attachment_uuid."&action=download' style='font-size: 120%;'>".$attachment_filename."</a>";
+		}
+	}
+	else {
+		$allowed_attachment_types = json_decode($_SESSION['contact']['allowed_attachment_types']['text'], true);
+		echo "	<input type='file' class='formfld' name='attachment' id='attachment' accept='.".implode(',.',array_keys($allowed_attachment_types))."'>\n";
+		echo "	<span style='display: inline-block; margin-top: 5px; font-size: 80%;'>".strtoupper(implode(', ', array_keys($allowed_attachment_types)))."</span>";
+	}
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	if ($action == 'update' && ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png')) {
+		echo "<tr>\n";
+		echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+		echo "	".$text['label-attachment_filename']."\n";
+		echo "</td>\n";
+		echo "<td class='vtable' align='left'>\n";
+		echo "	<a href='contact_attachment.php?id=".$contact_attachment_uuid."&action=download' style='font-size: 120%;'>".$attachment_filename."</a>";
+		echo "</td>\n";
+		echo "</tr>\n";
+	}
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-primary']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<select class='formfld' name='attachment_primary' id='attachment_primary'>\n";
+	echo "		<option value='0'>".$text['option-false']."</option>\n";
+	echo "		<option value='1' ".(!empty($attachment_primary) && $attachment_primary ? "selected" : null).">".$text['option-true']."</option>\n";
+	echo "	</select>\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-attachment_description']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='attachment_description' maxlength='255' value=\"".escape($attachment_description ?? '')."\">\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>";
+	echo "</div>\n";
+	echo "<br><br>";
+
+	echo "<input type='hidden' name='contact_uuid' value='".escape($contact_uuid)."'>\n";
+	if ($action == "update") {
+		echo "<input type='hidden' name='contact_attachment_uuid' value='".escape($contact_attachment_uuid)."'>\n";
+	}
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 149 - 0
core/contacts/contact_attachments.php

@@ -0,0 +1,149 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_attachment_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set from session variables
+	$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
+
+//get the contact attachment list
+	$sql = "select *, length(decode(attachment_content,'base64')) as attachment_size from v_contact_attachments ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by attachment_primary desc, attachment_filename asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_attachments = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_attachments)) {
+
+		//styles and attachment layer
+			echo "<style>\n";
+			echo "	#contact_attachment_layer {\n";
+			echo "		z-index: 999999;\n";
+			echo "		position: absolute;\n";
+			echo "		left: 0px;\n";
+			echo "		top: 0px;\n";
+			echo "		right: 0px;\n";
+			echo "		bottom: 0px;\n";
+			echo "		text-align: center;\n";
+			echo "		vertical-align: middle;\n";
+			echo "	}\n";
+			echo "</style>\n";
+			echo "<div id='contact_attachment_layer' style='display: none;'></div>\n";
+
+		//script
+			echo "<script>\n";
+			echo "	function display_attachment(id) {\n";
+			echo "		$('#contact_attachment_layer').load('contact_attachment.php?id=' + id + '&action=display', function(){\n";
+			echo "			$('#contact_attachment_layer').fadeIn(200);\n";
+			echo "		});\n";
+			echo "	}\n";
+			echo "</script>\n";
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".$text['label-attachments']."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			if (permission_exists('contact_attachment_delete')) {
+				echo "	<th class='checkbox'>\n";
+				echo "		<input type='checkbox' id='checkbox_all_attachments' name='checkbox_all' onclick=\"edit_all_toggle('attachments');\" ".(!empty($contact_attachments) ?: "style='visibility: hidden;'").">\n";
+				echo "	</th>\n";
+			}
+			echo "<th class='pct-15'>".$text['label-type']."</th>\n";
+			echo "<th>".$text['label-attachment_filename']."</th>\n";
+			echo "<th>".$text['label-attachment_size']."</th>\n";
+			echo "<th>".$text['label-tools']."</th>\n";
+			echo "<th class='hide-md-dn'>".$text['label-attachment_description']."</th>\n";
+			if (permission_exists('contact_attachment_edit') && $list_row_edit_button == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_attachments)) {
+				$x = 0;
+				foreach ($contact_attachments as $row) {
+					$attachment_type = strtolower(pathinfo($row['attachment_filename'], PATHINFO_EXTENSION));
+					$attachment_type_label = $attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png' ? $text['label-image'] : $text['label-file'];
+					if (permission_exists('contact_attachment_edit')) {
+						$list_row_url = "contact_attachment_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_attachment_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."'>\n";
+					if (permission_exists('contact_attachment_delete')) {
+						echo "	<td class='checkbox'>\n";
+						echo "		<input type='checkbox' name='contact_attachments[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_attachments' value='true' onclick=\"edit_delete_action('attachments');\">\n";
+						echo "		<input type='hidden' name='contact_attachments[$x][uuid]' value='".escape($row['contact_attachment_uuid'])."' />\n";
+						echo "	</td>\n";
+					}
+					echo "	<td>".$attachment_type_label." ".($row['attachment_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+					echo "	<td><a href='".$list_row_url."'>".escape($row['attachment_filename'])."</a></td>\n";
+					echo "	<td>".strtoupper(byte_convert($row['attachment_size']))."</td>\n";
+					echo "	<td class='no-link' style='cursor: pointer;'>";
+					if ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png') {
+						echo button::create(['type'=>'button','class'=>'link','label'=>$text['button-view'],'onclick'=>"display_attachment('".escape($row['contact_attachment_uuid'])."');"]);
+					}
+					else {
+						echo button::create(['type'=>'button','class'=>'link','label'=>$text['label-download'],'onclick'=>"window.location='contact_attachment.php?id=".urlencode($row['contact_attachment_uuid'])."&action=download';"]);
+					}
+					echo "	</td>\n";
+					echo "	<td class='description overflow hide-md-dn'>".escape($row['attachment_description'])."</td>\n";
+					if (permission_exists('contact_attachment_edit') && $list_row_edit_button == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+			}
+			unset($contact_attachments);
+
+			echo "</table>";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 102 - 0
core/contacts/contact_attachments_view.php

@@ -0,0 +1,102 @@
+<?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-2020
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_attachment_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the contact attachment list
+	$sql = "select *, length(decode(attachment_content,'base64')) as attachment_size from v_contact_attachments ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by attachment_primary desc, attachment_filename asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_attachments = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_attachments)) {
+
+		//styles and attachment layer
+			echo "<style>\n";
+			echo "	#contact_attachment_layer {\n";
+			echo "		z-index: 999999;\n";
+			echo "		position: fixed;\n";
+			echo "		left: 0px;\n";
+			echo "		top: 0px;\n";
+			echo "		right: 0px;\n";
+			echo "		bottom: 0px;\n";
+			echo "		text-align: center;\n";
+			echo "		vertical-align: middle;\n";
+			echo "	}\n";
+			echo "</style>\n";
+			echo "<div id='contact_attachment_layer' style='display: none;'></div>\n";
+
+		//display script
+			echo "<script>\n";
+			echo "	function display_attachment(id) {\n";
+			echo "		$('#contact_attachment_layer').load('contact_attachment.php?id=' + id + '&action=display', function(){\n";
+			echo "			$('#contact_attachment_layer').fadeIn(200);\n";
+			echo "		});\n";
+			echo "	}\n";
+			echo "</script>\n";
+
+		//show the content
+			echo "<div class='grid' style='grid-template-columns: 70px auto 75px;'>\n";
+			$x = 0;
+			foreach ($contact_attachments as $row) {
+				$attachment_type = strtolower(pathinfo($row['attachment_filename'], PATHINFO_EXTENSION));
+				$attachment_type_label = $attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png' ? $text['label-image'] : $text['label-file'];
+				echo "<div class='box contact-details-label'>".$attachment_type_label."</div>\n";
+// 				($row['attachment_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+				echo "<div class='box'>";
+				if ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png') {
+					echo button::create(['type'=>'button','class'=>'link','label'=>escape($row['attachment_filename']),'onclick'=>"display_attachment('".escape($row['contact_attachment_uuid'])."');"]);
+				}
+				else {
+					echo button::create(['type'=>'button','class'=>'link','label'=>escape($row['attachment_filename']),'onclick'=>"window.location='contact_attachment.php?id=".urlencode($row['contact_attachment_uuid'])."&action=download';"]);
+				}
+				echo "</div>\n";
+				echo "<div class='box' style='text-align: right; font-size: 90%;'>".strtoupper(byte_convert($row['attachment_size']))."</div>\n";
+				$x++;
+			}
+			echo "</div>\n";
+			unset($contact_attachments);
+
+	}
+
+?>

+ 120 - 0
core/contacts/contact_auth.php

@@ -0,0 +1,120 @@
+<?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 files
+require_once dirname(__DIR__, 2) . "/resources/require.php";
+require_once "resources/check_auth.php";
+if (permission_exists('contact_add')) {
+	//access granted
+}
+else {
+	echo "access denied";
+	exit;
+}
+
+/*
+echo "bang!";
+exit;
+*/
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+
+$_SESSION['contact_auth']['source'] = ($_SESSION['contact_auth']['source'] == '') ? $_REQUEST['source'] : $_SESSION['contact_auth']['source'];
+$_SESSION['contact_auth']['target'] = ($_SESSION['contact_auth']['target'] == '') ? $_REQUEST['target'] : $_SESSION['contact_auth']['target'];
+
+
+//google api authentication
+if ($_SESSION['contact_auth']['source'] == 'google') {
+
+	if ($_REQUEST['error']) {
+		message::add(($text['message-'.$_REQUEST['error']] != '') ? $text['message-'.$_REQUEST['error']] : $_REQUEST['error'], 'negative');
+		header("Location: ".$_SESSION['contact_auth']['referer']);
+		unset($_SESSION['contact_auth']);
+		exit;
+	}
+
+	if (isset($_REQUEST['signout'])) {
+		unset($_SESSION['contact_auth']['token']);
+		message::add($text['message-google_signed_out']);
+		header("Location: https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=".(($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].PROJECT_PATH."/app/contacts/".$_SESSION['contact_auth']['referer']);
+		exit;
+	}
+
+	if ($_GET['code'] == '') {
+		header("Location: https://accounts.google.com/o/oauth2/auth?client_id=".$_SESSION['contact']['google_oauth_client_id']['text']."&redirect_uri=".(($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."&scope=https://www.google.com/m8/feeds/&response_type=code");
+		exit;
+	}
+	else {
+		$auth_code = $_GET["code"];
+	}
+
+	/*******************************************************************************************/
+	// request access token
+
+	$fields = array(
+		'code' => urlencode($auth_code),
+		'client_id' => urlencode($_SESSION['contact']['google_oauth_client_id']['text']),
+		'client_secret' => urlencode($_SESSION['contact']['google_oauth_client_secret']['text']),
+		'redirect_uri' => urlencode((($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']),
+		'grant_type' => urlencode('authorization_code')
+		);
+
+	foreach($fields as $key => $value) {
+		$post_fields[] = $key.'='.$value;
+	}
+	$post_fields = implode("&", $post_fields);
+
+	$curl = curl_init();
+	curl_setopt($curl, CURLOPT_URL, 'https://accounts.google.com/o/oauth2/token');
+	curl_setopt($curl, CURLOPT_POST, 5);
+	curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields);
+	curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
+	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
+	$result = curl_exec($curl);
+	curl_close($curl);
+
+	$response =  json_decode($result);
+	$access_token = $response->access_token;
+
+	if ($access_token != '') {
+		// redirect to target script
+		$_SESSION['contact_auth']['token'] = $access_token;
+		header("Location: ".$_SESSION['contact_auth']['target']);
+		exit;
+	}
+
+}
+else {
+
+	message::add($text['message-access_denied'], 'negative');
+	header("Location: ".$_SESSION['contact_auth']['referer']);
+	unset($_SESSION['contact_auth']);
+	exit;
+
+}
+?>

+ 2754 - 0
core/contacts/contact_edit.php

@@ -0,0 +1,2754 @@
+<?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) 2018-2024
+	the Initial Developer. All Rights Reserved.
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_add') || permission_exists('contact_edit')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//connect to the database
+	$database = new database;
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//set the defaults
+	$contact_organization = '';
+	$contact_name_prefix = '';
+	$contact_name_given = '';
+	$contact_name_middle = '';
+	$contact_name_family = '';
+	$contact_name_suffix = '';
+	$contact_nickname = '';
+	$contact_title = '';
+	$contact_role = '';
+	$contact_category = '';
+	$contact_note = '';
+	$url_label = '';
+	$relation_label = '';
+	$contact_attachments = [];
+
+//set from session variables
+	$body_text_color = !empty($_SESSION['theme']['body_text_color']['text']) ? $_SESSION['theme']['body_text_color']['text'] : 'false';
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$contact_uuid = $_REQUEST["id"];
+		$id = $_REQUEST["id"];
+	}
+	else {
+		$action = "add";
+	}
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+		$contact_organization = $_POST["contact_organization"];
+		$contact_name_prefix = $_POST["contact_name_prefix"];
+		$contact_name_given = $_POST["contact_name_given"];
+		$contact_name_middle = $_POST["contact_name_middle"];
+		$contact_name_family = $_POST["contact_name_family"];
+		$contact_name_suffix = $_POST["contact_name_suffix"];
+		$contact_nickname = $_POST["contact_nickname"];
+
+		$contact_type = $_POST["contact_type"];
+		$contact_title = $_POST["contact_title"];
+		$contact_role = $_POST["contact_role"];
+		$contact_category = $_POST["contact_category"];
+		$contact_time_zone = $_POST["contact_time_zone"];
+		$contact_note = $_POST["contact_note"];
+
+		$last_mod_date = $_POST["last_mod_date"] ?? null;
+		$last_mod_user = $_POST["last_mod_user"] ?? null;
+
+		//$contact_users = $_POST["contact_users"];
+		//$contact_groups = $_POST["contact_groups"];
+		$contact_user_uuid = ($_SESSION['contact']['permissions']['boolean'] == "true") ? ($_POST["contact_user_uuid"] ?? $_SESSION["user_uuid"]) : ($contact_user_uuid = $_POST["contact_user_uuid"] ?? null);
+		$contact_group_uuid = $_POST["contact_group_uuid"] ?? null;
+
+		$contact_phones = $_POST["contact_phones"];
+		$contact_addresses = $_POST["contact_addresses"];
+		$contact_emails = $_POST["contact_emails"];
+		$contact_urls = $_POST["contact_urls"];
+		$contact_relations = $_POST["contact_relations"];
+		$contact_settings = $_POST["contact_settings"];
+		$contact_attachments = $_POST["contact_attachments"] ?? null;
+		$contact_times = $_POST["contact_times"] ?? null;
+		$contact_notes = $_POST["contact_notes"] ?? null;
+	}
+
+//process the user data and save it to the database
+	if (!empty($_POST) && empty($_POST["persistformvar"])) {
+
+		//debug info
+			//view_array($_POST, true);
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contacts.php');
+				exit;
+			}
+
+		//process the http post data by submitted action
+			if (!empty($_POST['action'])) {
+
+				//prepare the array(s)
+				$x = 0;
+				if (!empty($_POST['contact_users']) && is_array($_POST['contact_users']) && @sizeof($_POST['contact_users']) != 0) {
+					foreach ($_POST['contact_users'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_users'][]['contact_user_uuid'] = $row['contact_user_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_groups']) && is_array($_POST['contact_groups']) && @sizeof($_POST['contact_groups']) != 0) {
+					foreach ($_POST['contact_groups'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_groups'][]['contact_group_uuid'] = $row['contact_group_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_phones']) && is_array($_POST['contact_phones']) && @sizeof($_POST['contact_phones']) != 0) {
+					foreach ($_POST['contact_phones'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_phones'][]['contact_phone_uuid'] = $row['contact_phone_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_addresses']) && is_array($_POST['contact_addresses']) && @sizeof($_POST['contact_addresses']) != 0) {
+					foreach ($_POST['contact_addresses'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_addresses'][]['contact_address_uuid'] = $row['contact_address_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_emails']) && is_array($_POST['contact_emails']) && @sizeof($_POST['contact_emails']) != 0) {
+					foreach ($_POST['contact_emails'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_emails'][]['contact_email_uuid'] = $row['contact_email_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_urls']) && is_array($_POST['contact_urls']) && @sizeof($_POST['contact_urls']) != 0) {
+					foreach ($_POST['contact_urls'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_urls'][]['contact_url_uuid'] = $row['contact_url_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_relations']) && is_array($_POST['contact_relations']) && @sizeof($_POST['contact_relations']) != 0) {
+					foreach ($_POST['contact_relations'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_relations'][]['contact_relation_uuid'] = $row['contact_relation_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_settings']) && is_array($_POST['contact_settings']) && @sizeof($_POST['contact_settings']) != 0) {
+					foreach ($_POST['contact_settings'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_settings'][]['contact_setting_uuid'] = $row['contact_setting_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_attachments']) && is_array($_POST['contact_attachments']) && @sizeof($_POST['contact_attachments']) != 0) {
+					foreach ($_POST['contact_attachments'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_attachments'][]['contact_attachment_uuid'] = $row['contact_attachment_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_times']) && is_array($_POST['contact_times']) && @sizeof($_POST['contact_times']) != 0) {
+					foreach ($_POST['contact_times'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_times'][]['contact_time_uuid'] = $row['contact_time_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (!empty($_POST['contact_notes']) && is_array($_POST['contact_notes']) && @sizeof($_POST['contact_notes']) != 0) {
+					foreach ($_POST['contact_notes'] as $row) {
+						if (!empty($row['contact_uuid']) && is_uuid($row['contact_uuid']) && !empty($row['checked']) && $row['checked'] === 'true') {
+							$array['contacts'][$x]['checked'] = $row['checked'];
+							$array['contacts'][$x]['contact_notes'][]['contact_note_uuid'] = $row['contact_note_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				//send the array to the database class
+				if (!empty($array)) {
+					switch ($_POST['action']) {
+						case 'copy':
+							if (permission_exists('contact_add')) {
+								$database->copy($array);
+							}
+							break;
+						case 'delete':
+							if (permission_exists('contact_delete')) {
+								$database->delete($array);
+							}
+							break;
+						case 'toggle':
+							if (permission_exists('contact_update')) {
+								$database->toggle($array);
+							}
+							break;
+					}
+				}
+
+				//redirect the user
+				if (in_array($_POST['action'], array('copy', 'delete', 'toggle'))) {
+					header('Location: contact_edit.php?id='.$id);
+					exit;
+				}
+			}
+
+		//check for all required data
+			$msg = '';
+			//if (empty($contact_type)) { $msg .= $text['message-required']." ".$text['label-contact_type']."<br>\n"; }
+			//if (empty($contact_title)) { $msg .= $text['message-required']." ".$text['label-contact_title']."<br>\n"; }
+			//if (empty($contact_role)) { $msg .= $text['message-required']." ".$text['label-contact_role']."<br>\n"; }
+			//if (empty($contact_category)) { $msg .= $text['message-required']." ".$text['label-contact_category']."<br>\n"; }
+			//if (empty($contact_organization)) { $msg .= $text['message-required']." ".$text['label-contact_organization']."<br>\n"; }
+			//if (empty($contact_name_prefix)) { $msg .= $text['message-required']." ".$text['label-contact_name_prefix']."<br>\n"; }
+			//if (empty($contact_name_given)) { $msg .= $text['message-required']." ".$text['label-contact_name_given']."<br>\n"; }
+			//if (empty($contact_name_middle)) { $msg .= $text['message-required']." ".$text['label-contact_name_middle']."<br>\n"; }
+			//if (empty($contact_name_family)) { $msg .= $text['message-required']." ".$text['label-contact_name_family']."<br>\n"; }
+			//if (empty($contact_name_suffix)) { $msg .= $text['message-required']." ".$text['label-contact_name_suffix']."<br>\n"; }
+			//if (empty($contact_nickname)) { $msg .= $text['message-required']." ".$text['label-contact_nickname']."<br>\n"; }
+			//if (empty($contact_time_zone)) { $msg .= $text['message-required']." ".$text['label-contact_time_zone']."<br>\n"; }
+			//if (empty($last_mod_date)) { $msg .= $text['message-required']." ".$text['label-last_mod_date']."<br>\n"; }
+			//if (empty($last_mod_user)) { $msg .= $text['message-required']." ".$text['label-last_mod_user']."<br>\n"; }
+			//if (empty($contact_phones)) { $msg .= $text['message-required']." ".$text['label-contact_phones']."<br>\n"; }
+			//if (empty($contact_addresses)) { $msg .= $text['message-required']." ".$text['label-contact_addresses']."<br>\n"; }
+			//if (empty($contact_emails)) { $msg .= $text['message-required']." ".$text['label-contact_emails']."<br>\n"; }
+			//if (empty($contact_urls)) { $msg .= $text['message-required']." ".$text['label-contact_urls']."<br>\n"; }
+			//if (empty($contact_settings)) { $msg .= $text['message-required']." ".$text['label-contact_settings']."<br>\n"; }
+			//if (empty($contact_user_uuid)) { $msg .= $text['message-required']." ".$text['label-contact_user_uuid']."<br>\n"; }
+			//if (empty($contact_group_uuid)) { $msg .= $text['message-required']." ".$text['label-contact_group_uuid']."<br>\n"; }
+			//if (empty($contact_note)) { $msg .= $text['message-required']." ".$text['label-contact_note']."<br>\n"; }
+			if (!empty($msg) && empty($_POST["persistformvar"])) {
+				require_once "resources/header.php";
+				require_once "resources/persist_form_var.php";
+				echo "<div align='center'>\n";
+				echo "<table><tr><td>\n";
+				echo $msg."<br />";
+				echo "</td></tr></table>\n";
+				persistformvar($_POST);
+				echo "</div>\n";
+				require_once "resources/footer.php";
+				return;
+			}
+
+		//add the contact_uuid
+			if (empty($_POST["contact_uuid"])) {
+				$contact_uuid = uuid();
+			}
+
+		//prepare the array
+			$array['contacts'][0]['contact_uuid'] = $contact_uuid;
+			$array['contacts'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
+			$array['contacts'][0]['contact_type'] = $contact_type;
+			$array['contacts'][0]['contact_title'] = $contact_title;
+			$array['contacts'][0]['contact_role'] = $contact_role;
+			$array['contacts'][0]['contact_category'] = $contact_category;
+			$array['contacts'][0]['contact_organization'] = $contact_organization;
+			$array['contacts'][0]['contact_name_prefix'] = $contact_name_prefix;
+			$array['contacts'][0]['contact_name_given'] = $contact_name_given;
+			$array['contacts'][0]['contact_name_middle'] = $contact_name_middle;
+			$array['contacts'][0]['contact_name_family'] = $contact_name_family;
+			$array['contacts'][0]['contact_name_suffix'] = $contact_name_suffix;
+			$array['contacts'][0]['contact_nickname'] = $contact_nickname;
+			$array['contacts'][0]['contact_time_zone'] = $contact_time_zone;
+			$array['contacts'][0]['last_mod_date'] = "now()";
+			$array['contacts'][0]['last_mod_user'] = $_SESSION['user_uuid'];
+			$array['contacts'][0]['contact_note'] = $contact_note;
+
+			$y = 0;
+			if (isset($contact_user_uuid)) {
+				$sql = "select contact_uuid from v_contact_users ";
+				$sql .= "where contact_uuid = :contact_uuid ";
+				$sql .= "and user_uuid = :user_uuid ";
+				$parameters['contact_uuid'] = $contact_uuid;
+				$parameters['user_uuid'] = $contact_user_uuid;
+				$users = $database->select($sql, $parameters, 'all');
+				unset($sql, $parameters);
+
+				if (is_array($users) === false || count($users) === 0)
+				{
+						$array['contacts'][0]['contact_users'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
+						$array['contacts'][0]['contact_users'][$y]['contact_user_uuid'] = uuid();
+						$array['contacts'][0]['contact_users'][$y]['contact_uuid'] = $contact_uuid;
+						$array['contacts'][0]['contact_users'][$y]['user_uuid'] = $contact_user_uuid;
+						$y++;
+				}
+			}
+
+			$y = 0;
+			if (isset($contact_group_uuid)) {
+				$array['contacts'][0]['contact_groups'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
+				$array['contacts'][0]['contact_groups'][$y]['contact_group_uuid'] = uuid();
+				$array['contacts'][0]['contact_groups'][$y]['contact_uuid'] = $contact_uuid;
+				$array['contacts'][0]['contact_groups'][$y]['group_uuid'] = $contact_group_uuid;
+				$y++;
+			}
+
+			$y = 0;
+			if (!empty($contact_phones)) {
+				foreach ($contact_phones as $row) {
+					if (!empty($row['phone_number'])) {
+						//add the speed dial
+						$array['contacts'][0]['contact_phones'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
+						$array['contacts'][0]['contact_phones'][$y]['contact_uuid'] = $contact_uuid;
+						$array['contacts'][0]['contact_phones'][$y]['contact_phone_uuid'] = $row["contact_phone_uuid"];
+						$array['contacts'][0]['contact_phones'][$y]['phone_label'] = $row["phone_label"];
+						$array['contacts'][0]['contact_phones'][$y]['phone_type_voice'] = $row["phone_type_voice"] ?? null;
+						$array['contacts'][0]['contact_phones'][$y]['phone_type_fax'] = $row["phone_type_fax"] ?? null;
+						$array['contacts'][0]['contact_phones'][$y]['phone_type_video'] = $row["phone_type_video"] ?? null;
+						$array['contacts'][0]['contact_phones'][$y]['phone_type_text'] = $row["phone_type_text"] ?? null;
+						$array['contacts'][0]['contact_phones'][$y]['phone_speed_dial'] = $row["phone_speed_dial"];
+						$array['contacts'][0]['contact_phones'][$y]['phone_country_code'] = $row["phone_country_code"];
+						$array['contacts'][0]['contact_phones'][$y]['phone_number'] = $row["phone_number"];
+						$array['contacts'][0]['contact_phones'][$y]['phone_extension'] = $row["phone_extension"];
+						$array['contacts'][0]['contact_phones'][$y]['phone_primary'] = $row["phone_primary"];
+						$array['contacts'][0]['contact_phones'][$y]['phone_description'] = $row["phone_description"];
+
+						//clear the cache
+						if (!empty($row["phone_speed_dial"])) {
+							$cache = new cache;
+							$cache->delete("app.dialplan.speed_dial.".$row["phone_speed_dial"]."@".$_SESSION['domain_name']);
+						}
+
+						//increment the row id
+						$y++;
+					}
+				}
+			}
+
+			$y = 0;
+			if (!empty($contact_addresses)) {
+				foreach ($contact_addresses as $row) {
+					if (!empty($row['address_street'])) {
+						$array['contacts'][0]['contact_addresses'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
+						$array['contacts'][0]['contact_addresses'][$y]['contact_uuid'] = $contact_uuid;
+						$array['contacts'][0]['contact_addresses'][$y]['contact_address_uuid'] = $row["contact_address_uuid"];
+						$array['contacts'][0]['contact_addresses'][$y]['address_label'] = $row["address_label"];
+						$array['contacts'][0]['contact_addresses'][$y]['address_type'] = $row["address_type"];
+						$array['contacts'][0]['contact_addresses'][$y]['address_street'] = $row["address_street"];
+						$array['contacts'][0]['contact_addresses'][$y]['address_extended'] = $row["address_extended"];
+						if (permission_exists('address_community')) {
+							$array['contacts'][0]['contact_addresses'][$y]['address_community'] = $row["address_community"];
+						}
+						$array['contacts'][0]['contact_addresses'][$y]['address_locality'] = $row["address_locality"];
+						$array['contacts'][0]['contact_addresses'][$y]['address_region'] = $row["address_region"];
+						$array['contacts'][0]['contact_addresses'][$y]['address_postal_code'] = $row["address_postal_code"];
+						$array['contacts'][0]['contact_addresses'][$y]['address_country'] = $row["address_country"];
+						if (permission_exists('address_latitude')) {
+							$array['contacts'][0]['contact_addresses'][$y]['address_latitude'] = $row["address_latitude"];
+						}
+						if (permission_exists('address_longitude')) {
+							$array['contacts'][0]['contact_addresses'][$y]['address_longitude'] = $row["address_longitude"];
+						}
+						$array['contacts'][0]['contact_addresses'][$y]['address_primary'] = $row["address_primary"];
+						$array['contacts'][0]['contact_addresses'][$y]['address_description'] = $row["address_description"];
+						$y++;
+					}
+				}
+			}
+
+			$y = 0;
+			if (!empty($contact_emails)) {
+				foreach ($contact_emails as $row) {
+					if (!empty($row['email_address'])) {
+						$array['contacts'][0]['contact_emails'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
+						$array['contacts'][0]['contact_emails'][$y]['contact_uuid'] = $contact_uuid;
+						$array['contacts'][0]['contact_emails'][$y]['contact_email_uuid'] = $row["contact_email_uuid"];
+						$array['contacts'][0]['contact_emails'][$y]['email_label'] = $row["email_label"];
+						$array['contacts'][0]['contact_emails'][$y]['email_address'] = $row["email_address"];
+						$array['contacts'][0]['contact_emails'][$y]['email_primary'] = $row["email_primary"];
+						$array['contacts'][0]['contact_emails'][$y]['email_description'] = $row["email_description"];
+						$y++;
+					}
+				}
+
+			}
+
+			$y = 0;
+			if (!empty($contact_urls)) {
+				foreach ($contact_urls as $row) {
+					if (!empty($row['url_address'])) {
+						$array['contacts'][0]['contact_urls'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
+						$array['contacts'][0]['contact_urls'][$y]['contact_uuid'] = $contact_uuid;
+						$array['contacts'][0]['contact_urls'][$y]['contact_url_uuid'] = $row["contact_url_uuid"];
+						$array['contacts'][0]['contact_urls'][$y]['url_type'] = $row["url_type"] ?? '';
+						$array['contacts'][0]['contact_urls'][$y]['url_label'] = $row["url_label"];
+						$array['contacts'][0]['contact_urls'][$y]['url_address'] = $row["url_address"];
+						$array['contacts'][0]['contact_urls'][$y]['url_primary'] = $row["url_primary"];
+						$array['contacts'][0]['contact_urls'][$y]['url_description'] = $row["url_description"];
+						$y++;
+					}
+				}
+			}
+
+			$y = 0;
+			if (!empty($contact_relations)) {
+				foreach ($contact_relations as $row) {
+					if (!empty($row['contact_relation_uuid'])) {
+						$array['contacts'][0]['contact_relations'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
+						$array['contacts'][0]['contact_relations'][$y]['contact_uuid'] = $contact_uuid;
+						$array['contacts'][0]['contact_relations'][$y]['contact_relation_uuid'] = $row["contact_relation_uuid"];
+						$array['contacts'][0]['contact_relations'][$y]['relation_label'] = $row["relation_label"];
+						$array['contacts'][0]['contact_relations'][$y]['relation_contact_uuid'] = $row["relation_contact_uuid"];
+						$y++;
+					}
+				}
+			}
+
+			$y = 0;
+			if (!empty($contact_settings)) {
+				foreach ($contact_settings as $row) {
+					if (strlen($row['contact_setting_category']) > 0 && strlen($row['contact_setting_subcategory']) > 0 && !empty($row['contact_setting_name'])) {
+						$array['contacts'][0]['contact_settings'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
+						$array['contacts'][0]['contact_settings'][$y]['contact_uuid'] = $contact_uuid;
+						$array['contacts'][0]['contact_settings'][$y]['contact_setting_uuid'] = $row["contact_setting_uuid"];
+						$array['contacts'][0]['contact_settings'][$y]['contact_setting_category'] = $row["contact_setting_category"];
+						$array['contacts'][0]['contact_settings'][$y]['contact_setting_subcategory'] = $row["contact_setting_subcategory"];
+						$array['contacts'][0]['contact_settings'][$y]['contact_setting_name'] = $row["contact_setting_name"];
+						$array['contacts'][0]['contact_settings'][$y]['contact_setting_value'] = $row["contact_setting_value"];
+						$array['contacts'][0]['contact_settings'][$y]['contact_setting_order'] = $row["contact_setting_order"];
+						$array['contacts'][0]['contact_settings'][$y]['contact_setting_enabled'] = $row["contact_setting_enabled"];
+						$array['contacts'][0]['contact_settings'][$y]['contact_setting_description'] = $row["contact_setting_description"];
+						$y++;
+					}
+				}
+			}
+
+			$y = 0;
+			if (!empty($contact_attachments)) {
+				foreach ($contact_attachments as $row) {
+					$array['contacts'][0]['contact_attachments'][$y]['contact_attachment_uuid'] = $row["contact_attachment_uuid"];
+					$array['contacts'][0]['contact_attachments'][$y]['domain_uuid'] = $row["domain_uuid"];
+					$array['contacts'][0]['contact_attachments'][$y]['contact_uuid'] = $row["contact_uuid"];
+					$array['contacts'][0]['contact_attachments'][$y]['attachment_primary'] = $row["attachment_primary"];
+					//$array['contacts'][0]['contact_attachments'][$y]['attachment_filename'] = $row["attachment_filename"];
+					//$array['contacts'][0]['contact_attachments'][$y]['attachment_content'] = $row["attachment_content"];
+					$array['contacts'][0]['contact_attachments'][$y]['attachment_description'] = $row["attachment_description"] ?? null;
+					//$array['contacts'][0]['contact_attachments'][$y]['attachment_uploaded_date'] = $row["attachment_uploaded_date"];
+					//$array['contacts'][0]['contact_attachments'][$y]['attachment_uploaded_user_uuid'] = $row["attachment_uploaded_user_uuid"];
+					//$array['contacts'][0]['contact_attachments'][$y]['attachment_size'] = $row["attachment_size"];
+					$y++;
+				}
+			}
+
+			$y = 0;
+			if (!empty($contact_times)) {
+				foreach ($contact_times as $row) {
+					if (!empty($row['time_start'])) {
+						$array['contacts'][0]['contact_times'][$y]['contact_time_uuid'] = $row["contact_time_uuid"];
+						$array['contacts'][0]['contact_times'][$y]['domain_uuid'] = $row["domain_uuid"];
+						$array['contacts'][0]['contact_times'][$y]['contact_uuid'] = $row["contact_uuid"];
+						$array['contacts'][0]['contact_times'][$y]['time_start'] = $row["time_start"];
+						$array['contacts'][0]['contact_times'][$y]['time_stop'] = $row["time_stop"];
+						$array['contacts'][0]['contact_times'][$y]['time_description'] = $row["time_description"];
+						$y++;
+					}
+				}
+			}
+
+			$y = 0;
+			if (!empty($contact_notes)) {
+				foreach ($contact_notes as $row) {
+					if (!empty($row['contact_note'])) {
+						$array['contacts'][0]['contact_notes'][$y]['contact_note_uuid'] = $row["contact_note_uuid"];
+						$array['contacts'][0]['contact_notes'][$y]['domain_uuid'] = $row["domain_uuid"];
+						$array['contacts'][0]['contact_notes'][$y]['contact_uuid'] = $row["contact_uuid"];
+						$array['contacts'][0]['contact_notes'][$y]['contact_note'] = $row["contact_note"];
+						$array['contacts'][0]['contact_notes'][$y]['last_mod_date'] = 'now()';
+						$array['contacts'][0]['contact_notes'][$y]['last_mod_user'] = $_SESSION['username'];
+						$y++;
+					}
+				}
+			}
+
+		//save the data
+			if (!empty($array)) {
+				//add the permission object
+				$p = new permissions;
+				$p->add('contact_add', 'temp');
+				$p->add('contact_phone_add', 'temp');
+				$p->add('contact_address_add', 'temp');
+				$p->add('contact_user_add', 'temp');
+				$p->add('contact_group_add', 'temp');
+
+				//view_array($array);
+
+				$database->app_name = 'contacts';
+				$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+				$database->save($array);
+				$message = $database->message;
+				unset($array);
+
+				//view_array($message);
+
+				$p->delete('contact_add', 'temp');
+				$p->delete('contact_phone_add', 'temp');
+				$p->delete('contact_address_add', 'temp');
+				$p->delete('contact_user_add', 'temp');
+				$p->delete('contact_group_add', 'temp');
+			}
+
+		//redirect the user
+			if (isset($action)) {
+				if ($action == "add") {
+					$_SESSION["message"] = $text['message-add'];
+				}
+				if ($action == "update") {
+					$_SESSION["message"] = $text['message-update'];
+				}
+				//header('Location: contacts.php');
+				header('Location: contact_edit.php?id='.urlencode($contact_uuid ?? null));
+				return;
+			}
+	}
+
+//pre-populate the form
+	if (!empty($_GET) && empty($_POST["persistformvar"])) {
+		$sql = "select * from v_contacts ";
+		$sql .= "where contact_uuid = :contact_uuid ";
+		//$sql .= "and domain_uuid = :domain_uuid ";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_uuid'] = $contact_uuid;
+		$row = $database->select($sql, $parameters ?? null, 'row');
+		if (!empty($row)) {
+			$contact_organization = $row["contact_organization"];
+			$contact_name_prefix = $row["contact_name_prefix"];
+			$contact_name_given = $row["contact_name_given"];
+			$contact_name_middle = $row["contact_name_middle"];
+			$contact_name_family = $row["contact_name_family"];
+			$contact_name_suffix = $row["contact_name_suffix"];
+			$contact_nickname = $row["contact_nickname"];
+
+			$contact_type = $row["contact_type"];
+			$contact_title = $row["contact_title"];
+			$contact_role = $row["contact_role"];
+			$contact_category = $row["contact_category"];
+			$contact_time_zone = $row["contact_time_zone"];
+			$contact_note = $row["contact_note"];
+
+			$last_mod_date = $row["last_mod_date"];
+			$last_mod_user = $row["last_mod_user"];
+
+			//$contact_phones = $row["contact_phones"];
+			//$contact_addresses = $row["contact_addresses"];
+			//$contact_emails = $row["contact_emails"];
+			//$contact_urls = $row["contact_urls"];
+			//$contact_settings = $row["contact_settings"];
+			//$contact_user_uuid = $row["contact_user_uuid"];
+
+			$contact_user_uuid = $row["contact_user_uuid"] ?? '';
+			$contact_group_uuid = $row["contact_group_uuid"] ?? '';
+
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//get the users array
+	$sql = "select * from v_users ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "order by username asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$users = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//determine if contact assigned to a user
+	if (!empty($users)) {
+		foreach ($users as $user) {
+			if (!empty($contact_uuid) && $user['contact_uuid'] == $contact_uuid) {
+				$contact_user_uuid = $user['user_uuid'];
+				break;
+			}
+		}
+	}
+
+//get the users assigned to this contact
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select c.domain_uuid, c.contact_uuid, u.username, u.user_uuid, a.contact_user_uuid ";
+		$sql .= "from v_contacts as c, v_users as u, v_contact_users as a ";
+		$sql .= "where c.contact_uuid = :contact_uuid ";
+		$sql .= "and c.domain_uuid = :domain_uuid ";
+		$sql .= "and u.user_uuid = a.user_uuid ";
+		$sql .= "and c.contact_uuid = a.contact_uuid ";
+		$sql .= "order by u.username asc ";
+		$parameters['contact_uuid'] = $contact_uuid;
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$contact_users_assigned = $database->select($sql, $parameters, 'all');
+		unset($sql, $parameters);
+	}
+
+//get the assigned groups of this contact
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select g.*, cg.contact_group_uuid ";
+		$sql .= "from v_groups as g, v_contact_groups as cg ";
+		$sql .= "where cg.group_uuid = g.group_uuid ";
+		$sql .= "and cg.domain_uuid = :domain_uuid ";
+		$sql .= "and cg.contact_uuid = :contact_uuid ";
+		$sql .= "and cg.group_uuid <> :group_uuid ";
+		$sql .= "order by g.group_name asc ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_uuid'] = $contact_uuid;
+		$parameters['group_uuid'] = $_SESSION["user_uuid"];
+		$contact_groups_assigned = $database->select($sql, $parameters, 'all');
+		if (!empty($contact_groups_assigned)) {
+			foreach ($contact_groups_assigned as $field) {
+				$contact_groups[] = "'".$field['group_uuid']."'";
+			}
+		}
+		unset($sql, $parameters);
+	}
+
+//get the available groups to this contact
+	$sql = "select group_uuid, group_name from v_groups ";
+	$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+	if (!empty($contact_groups)) {
+		$sql .= "and group_uuid not in (".implode(',', $contact_groups).") ";
+	}
+	$sql .= "order by group_name asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$contact_groups_available = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters, $contact_groups);
+
+//get the child data
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select * from v_contact_phones ";
+		$sql .= "where contact_uuid = :contact_uuid ";
+		//$sql .= "and domain_uuid = '".$domain_uuid."' ";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_uuid'] = $contact_uuid;
+		$contact_phones = $database->select($sql, $parameters, 'all');
+		unset ($sql, $parameters);
+	}
+
+//add the $contact_phone_uuid
+	if (empty($contact_phone_uuid)) {
+		$contact_phone_uuid = uuid();
+	}
+
+//add an empty row
+	if (empty($contact_phones) || count($contact_phones) == 0) {
+		$x = !empty($contact_phones) ? count($contact_phones) : 0;
+		$contact_phones[$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+		$contact_phones[$x]['contact_uuid'] = $contact_uuid ?? null;
+		$contact_phones[$x]['contact_phone_uuid'] = uuid();
+		$contact_phones[$x]['phone_label'] = '';
+		$contact_phones[$x]['phone_type_voice'] = '';
+		$contact_phones[$x]['phone_type_fax'] = '';
+		$contact_phones[$x]['phone_type_video'] = '';
+		$contact_phones[$x]['phone_type_text'] = '';
+		$contact_phones[$x]['phone_speed_dial'] = '';
+		$contact_phones[$x]['phone_country_code'] = '';
+		$contact_phones[$x]['phone_number'] = '';
+		$contact_phones[$x]['phone_extension'] = '';
+		$contact_phones[$x]['phone_primary'] = '';
+		$contact_phones[$x]['phone_description'] = '';
+	}
+
+//get the child data
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select * from v_contact_addresses ";
+		$sql .= "where contact_uuid = :contact_uuid ";
+		//$sql .= "and domain_uuid = '".$domain_uuid."' ";
+		$sql .= "order by address_street asc";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_uuid'] = $contact_uuid;
+		$contact_addresses = $database->select($sql, $parameters, 'all');
+		unset ($sql, $parameters);
+	}
+
+//add the $contact_address_uuid
+	if (empty($contact_address_uuid)) {
+		$contact_address_uuid = uuid();
+	}
+
+//add an empty row
+	if (empty($contact_addresses) || count($contact_addresses) == 0) {
+		$x = !empty($contact_addresses) ? count($contact_addresses) : 0;
+		$contact_addresses[$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+		$contact_addresses[$x]['contact_uuid'] = $contact_uuid ?? null;
+		$contact_addresses[$x]['contact_address_uuid'] = uuid();
+		$contact_addresses[$x]['address_label'] = '';
+		$contact_addresses[$x]['address_type'] = '';
+		$contact_addresses[$x]['address_street'] = '';
+		$contact_addresses[$x]['address_extended'] = '';
+		$contact_addresses[$x]['address_community'] = '';
+		$contact_addresses[$x]['address_locality'] = '';
+		$contact_addresses[$x]['address_region'] = '';
+		$contact_addresses[$x]['address_postal_code'] = '';
+		$contact_addresses[$x]['address_country'] = '';
+		$contact_addresses[$x]['address_latitude'] = '';
+		$contact_addresses[$x]['address_longitude'] = '';
+		$contact_addresses[$x]['address_primary'] = '';
+		$contact_addresses[$x]['address_description'] = '';
+	}
+
+//get the child data
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select * from v_contact_emails ";
+		$sql .= "where contact_uuid = :contact_uuid ";
+		//$sql .= "and domain_uuid = '".$domain_uuid."' ";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_uuid'] = $contact_uuid;
+		$contact_emails = $database->select($sql, $parameters, 'all');
+		unset ($sql, $parameters);
+	}
+
+//add the $contact_email_uuid
+	if (empty($contact_email_uuid)) {
+		$contact_email_uuid = uuid();
+	}
+
+//add an empty row
+	if (empty($contact_emails) || count($contact_emails) == 0) {
+		$x = !empty($contact_emails) ? count($contact_emails) : 0;
+		$contact_emails[$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+		$contact_emails[$x]['contact_uuid'] = $contact_uuid ?? null;
+		$contact_emails[$x]['contact_email_uuid'] = uuid();
+		$contact_emails[$x]['email_label'] = '';
+		$contact_emails[$x]['email_address'] = '';
+		$contact_emails[$x]['email_primary'] = '';
+		$contact_emails[$x]['email_description'] = '';
+	}
+
+//get the child data
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select * from v_contact_urls ";
+		$sql .= "where contact_uuid = :contact_uuid ";
+		//$sql .= "and domain_uuid = '".$domain_uuid."' ";
+		$sql .= "order by url_address asc";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_uuid'] = $contact_uuid;
+		$contact_urls = $database->select($sql, $parameters, 'all');
+		unset ($sql, $parameters);
+	}
+
+//add the $contact_url_uuid
+	if (empty($contact_url_uuid)) {
+		$contact_url_uuid = uuid();
+	}
+
+//add an empty row
+	if (empty($contact_urls) || count($contact_urls) == 0) {
+		$x = !empty($contact_urls) ? count($contact_urls) : 0;
+		$contact_urls[$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+		$contact_urls[$x]['contact_uuid'] = $contact_uuid ?? null;
+		$contact_urls[$x]['contact_url_uuid'] = uuid();
+		$contact_urls[$x]['url_type'] = '';
+		$contact_urls[$x]['url_label'] = '';
+		$contact_urls[$x]['url_address'] = '';
+		$contact_urls[$x]['url_primary'] = '';
+		$contact_urls[$x]['url_description'] = '';
+	}
+
+//get the child data
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select * from v_contact_relations ";
+		$sql .= "where contact_uuid = :contact_uuid ";
+		//$sql .= "and domain_uuid = '".$domain_uuid."' ";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_uuid'] = $contact_uuid ?? null;
+		$contact_relations = $database->select($sql, $parameters, 'all');
+		unset ($sql, $parameters);
+	}
+
+//add the $contact_setting_uuid
+	if (empty($contact_relation_uuid)) {
+		$contact_relation_uuid = uuid();
+	}
+
+//add an empty row
+	if (empty($contact_relations) || count($contact_relations) == 0) {
+		$x = !empty($contact_relations) ? count($contact_relations) : 0;
+		$contact_relations[$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+		$contact_relations[$x]['contact_uuid'] = $contact_uuid ?? null;
+		$contact_relations[$x]['contact_relation_uuid'] = uuid();
+		$contact_relations[$x]['relation_label'] = '';
+		$contact_relations[$x]['relation_contact_uuid'] = '';
+	}
+
+//get the child data
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select * from v_contact_settings ";
+		$sql .= "where contact_uuid = :contact_uuid ";
+		//$sql .= "and domain_uuid = '".$domain_uuid."' ";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_uuid'] = $contact_uuid;
+		$contact_settings = $database->select($sql, $parameters, 'all');
+		unset ($sql, $parameters);
+	}
+
+//add the $contact_setting_uuid
+	if (empty($contact_setting_uuid)) {
+		$contact_setting_uuid = uuid();
+	}
+
+//add an empty row
+	if (empty($contact_settings) || count($contact_settings) == 0) {
+		$x = !empty($contact_settings) ? count($contact_settings) : 0;
+		$contact_settings[$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+		$contact_settings[$x]['contact_uuid'] = $contact_uuid ?? null;
+		$contact_settings[$x]['contact_setting_uuid'] = uuid();
+		$contact_settings[$x]['contact_setting_category'] = '';
+		$contact_settings[$x]['contact_setting_subcategory'] = '';
+		$contact_settings[$x]['contact_setting_name'] = '';
+		$contact_settings[$x]['contact_setting_value'] = '';
+		$contact_settings[$x]['contact_setting_order'] = '';
+		$contact_settings[$x]['contact_setting_enabled'] = '';
+		$contact_settings[$x]['contact_setting_description'] = '';
+	}
+
+//get the contact attachments
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select *, length(decode(attachment_content,'base64')) as attachment_size from v_contact_attachments ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_uuid = :contact_uuid ";
+		$sql .= "order by attachment_primary desc, attachment_filename asc ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_uuid'] = $contact_uuid;
+		$contact_attachments = $database->select($sql, $parameters, 'all');
+		unset($sql, $parameters);
+	}
+
+//get the child data
+	if (!empty($contact_uuid) && is_uuid($contact_uuid)) {
+		$sql = "select * from v_contact_times ";
+		$sql .= "where contact_uuid = :contact_uuid ";
+		//$sql .= "and domain_uuid = '".$domain_uuid."' ";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_uuid'] = $contact_uuid;
+		$contact_times = $database->select($sql, $parameters, 'all');
+		unset ($sql, $parameters);
+	}
+
+//add the $contact_time_uuid
+	if (empty($contact_time_uuid)) {
+		$contact_time_uuid = uuid();
+	}
+
+//add an empty row
+	if (empty($contact_times)) {
+		$x = !empty($contact_times) ? count($contact_times) : 0;
+		$contact_times[$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+		$contact_times[$x]['contact_uuid'] = $contact_uuid ?? null;
+		$contact_times[$x]['contact_time_uuid'] = uuid();
+	}
+
+//get the contact notes
+	$sql = "select * from v_contact_notes ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by last_mod_date desc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? null;
+	$contact_notes = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//add an empty row
+	if (empty($contact_times)) {
+		$x = !empty($contact_times) ? count($contact_times) : 0;
+		$contact_times[$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+		$contact_times[$x]['contact_uuid'] = $contact_uuid ?? null;
+		$contact_times[$x]['contact_time_uuid'] = uuid();
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	$document['title'] = $text['title-contact-edit'];
+	require_once "resources/header.php";
+
+?>
+
+<script type="text/javascript">
+	function get_contacts(element_id, id, search) {
+		var xhttp = new XMLHttpRequest();
+		xhttp.onreadystatechange = function() {
+			if (this.readyState == 4 && this.status == 200) {
+				//create a handle for the contact select object
+				select = document.getElementById(element_id);
+
+				//remove current options
+				while (select.options.length > 0) {
+					select.remove(0);
+				}
+
+				//add an empty row
+				//select.add(new Option('', ''));
+
+				//add new options from the json results
+				obj = JSON.parse(this.responseText);
+				for (var i=0; i < obj.length; i++) {
+					select.add(new Option(obj[i].name, obj[i].id));
+				}
+			}
+		};
+		if (search) {
+			xhttp.open("GET", "/app/contacts/contact_json.php?search="+search, true);
+		}
+		else {
+			xhttp.open("GET", "/app/contacts/contact_json.php", true);
+		}
+		xhttp.send();
+	}
+</script>
+
+<?php
+
+//determine qr branding
+	if (!empty($_SESSION['theme']['qr_brand_image']['text']) && $_SESSION['theme']['qr_brand_type']['text'] == 'image') {
+		echo "<img id='img-buffer' style='display: none;' src='".$_SESSION["theme"]["qr_brand_image"]["text"]."'>";
+		$qr_option = "image: $('#img-buffer')[0],";
+		$qr_mode = '4';
+		$qr_size = '0.2';
+	}
+	elseif (empty($_SESSION['theme']['qr_brand_image']['text']) && !empty($_SESSION['theme']['qr_brand_type']['text']) && $_SESSION['theme']['qr_brand_type']['text'] == 'image') {
+		$qr_option = '';
+		$qr_mode = '3';
+		$qr_size = '0';
+	}
+	elseif (!empty($_SESSION['theme']['qr_brand_image']['text']) && $_SESSION['theme']['qr_brand_type']['text'] == 'text') {
+		$qr_option = 'label: "'.$_SESSION['theme']['qr_brand_text']['text'].'"';
+		$qr_mode = '2';
+		$qr_size = '0.05';
+	}
+	elseif (!empty($_SESSION['theme']['qr_brand_image']['text']) && $_SESSION['theme']['qr_brand_type']['text'] == 'none') {
+		$qr_option = '';
+		$qr_mode = '3';
+		$qr_size = '0';
+	}
+	else {
+		echo "<img id='img-buffer' style='display: none;' src='".PROJECT_PATH."/themes/".$_SESSION["domain"]["template"]["name"]."/images/qr_code.png'>";
+		$qr_option = "image: $('#img-buffer')[0],";
+		$qr_mode = '4';
+		$qr_size = '0.2';
+	}
+
+//qr code generation
+	$_GET['type'] = "text";
+	$qr_vcard = true;
+	include "contacts_vcard.php";
+	echo "<input type='hidden' id='qr_vcard' value=\"".$qr_vcard."\">";
+	echo "<style>";
+	echo "	#qr_code_container {";
+	echo "		z-index: 999999; ";
+	echo "		position: fixed; ";
+	echo "		left: 0; ";
+	echo "		top: 0; ";
+	echo "		right: 0; ";
+	echo "		bottom: 0; ";
+	echo "		text-align: center; ";
+	echo "		vertical-align: middle;";
+	echo "	}";
+	echo "	#qr_code {";
+	echo "		display: block; ";
+	echo "		width: 100%; ";
+	echo "		max-width: 650px; ";
+	echo "		height: auto; ";
+	echo "		-webkit-box-shadow: 0px 1px 20px #888; ";
+	echo "		-moz-box-shadow: 0px 1px 20px #888; ";
+	echo "		box-shadow: 0px 1px 20px #888;";
+	echo "	}";
+	echo "	#qr_code > img {";
+	echo "		width: 100%; ";
+	echo "		max-width: 650px; ";
+	echo "		height: auto; ";
+	echo "	}";
+	echo "</style>";
+	echo "<script src='".PROJECT_PATH."/resources/jquery/jquery-qrcode.min.js'></script>";
+	echo "<script language='JavaScript' type='text/javascript'>";
+	echo "	$(document).ready(function() {";
+	echo "		$('#qr_code').qrcode({ ";
+	echo "			render: 'image', ";
+	echo "			minVersion: 6, ";
+	echo "			maxVersion: 40, ";
+	echo "			ecLevel: 'H', ";
+	echo "			size: 650, ";
+	echo "			radius: 0.2, ";
+	echo "			quiet: 6, ";
+	echo "			background: '#fff', ";
+	echo "			mode: ".$qr_mode.", ";
+	echo "			mSize: ".$qr_size.", ";
+	echo "			mPosX: 0.5, ";
+	echo "			mPosY: 0.5, ";
+	echo "			text: document.getElementById('qr_vcard').value, ";
+	echo "			".$qr_option;
+	echo "		});";
+	echo "	});";
+	echo "</script>";
+
+//styles and attachment viewing layer
+	if (permission_exists('contact_attachment_view') && !empty($contact_attachments) && is_array($contact_attachments)) {
+		echo "<style>\n";
+		echo "	#contact_attachment_layer {\n";
+		echo "		z-index: 999999;\n";
+		echo "		position: fixed;\n";
+		echo "		left: 0px;\n";
+		echo "		top: 0px;\n";
+		echo "		right: 0px;\n";
+		echo "		bottom: 0px;\n";
+		echo "		text-align: center;\n";
+		echo "		vertical-align: middle;\n";
+		echo "	}\n";
+		echo "</style>\n";
+		echo "<div id='contact_attachment_layer' style='display: none;'></div>\n";
+	}
+
+//show the content
+	echo "<form name='frm' id='frm' method='post' action=''>\n";
+	echo "<input class='formfld' type='hidden' name='contact_uuid' value='".escape($contact_uuid)."'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'><b>".$text['title-contact-edit']."</b></div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','collapse'=>'hide-xs','style'=>'margin-right: 15px;','link'=>'contact_view.php?id='.$contact_uuid]);
+	if ($action == 'update') {
+		if (permission_exists('contact_phone_add')) {
+			echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display: none;','onclick'=>"modal_open('modal-copy','btn_copy');"]);
+		}
+		if (permission_exists('contact_phone_delete')) {
+			echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none; margin-right: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
+		}
+	}
+
+	//add edit
+	if (isset($id)) {
+		if (permission_exists('contact_time_add')) {
+			//detect timer state (and start time)
+			$sql = "select ";
+			$sql .= "time_start ";
+			$sql .= "from v_contact_times ";
+			$sql .= "where domain_uuid = :domain_uuid ";
+			$sql .= "and user_uuid = :user_uuid ";
+			$sql .= "and contact_uuid = :contact_uuid ";
+			$sql .= "and time_start is not null ";
+			$sql .= "and time_stop is null ";
+			$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+			$parameters['user_uuid'] = $_SESSION['user']['user_uuid'];
+			$parameters['contact_uuid'] = $contact_uuid;
+			$time_start = $database->select($sql, $parameters, 'column');
+			$btn_style = $time_start ? 'color: #fff; background-color: #3693df; background-image: none;' : null;
+			unset($sql, $parameters);
+			echo button::create(['type'=>'button','label'=>$text['button-timer'],'icon'=>'clock','style'=>$btn_style,'title'=>$time_start,'collapse'=>'hide-sm-dn','onclick'=>"window.open('contact_timer.php?domain_uuid=".urlencode($domain_uuid)."&contact_uuid=".urlencode($contact_uuid)."','contact_time_".escape($contact_uuid)."','width=300, height=375, top=30, left='+(screen.width - 350)+', menubar=no, scrollbars=no, status=no, toolbar=no, resizable=no');"]);
+		}
+
+		echo button::create(['type'=>'button','label'=>$text['button-qr_code'],'icon'=>'qrcode','collapse'=>'hide-sm-dn','onclick'=>"$('#qr_code_container').fadeIn(400);"]);
+		echo button::create(['type'=>'button','label'=>$text['button-vcard'],'icon'=>'address-card','collapse'=>'hide-sm-dn','link'=>'contacts_vcard.php?id='.urlencode($contact_uuid ?? null).'&type=download']);
+	}
+	//add edit
+	//if (isset($id)) {
+		//echo button::create(['type'=>'button','label'=>$text['button-notes'],'icon'=>'','collapse'=>'hide-xs','style'=>'margin-right: 0px;','link'=>"contact_notes.php?id=$id"]);
+	//}
+
+	//add user
+	if (isset($id) && permission_exists('user_edit')) {
+		echo button::create(['type'=>'button','label'=>$text['button-user'],'icon'=>'user','collapse'=>'hide-sm-dn','link'=>'../../core/users/user_edit.php?id='.urlencode($contact_user_uuid ?? '')]);
+	}
+	if (
+		$action == "update" && (
+		permission_exists('contact_phone_add') ||
+		permission_exists('contact_address_add') ||
+		permission_exists('contact_email_add') ||
+		permission_exists('contact_url_add') ||
+		permission_exists('contact_relation_add') ||
+		permission_exists('contact_note_add') ||
+		permission_exists('contact_time_add') ||
+		permission_exists('contact_setting_add') ||
+		permission_exists('contact_attachment_add')
+		)) {
+		echo 		"<select class='formfld' style='width: auto; margin-left: 15px;' id='select_add' onchange=\"document.location.href='contact_' + (this.options[this.selectedIndex].value) + '_edit.php?contact_uuid=".urlencode($contact_uuid ?? null)."';\">\n";
+		echo "			<option value=''>".$text['button-add']."...</option>\n";
+		if (permission_exists('contact_phone_add')) { echo "<option value='phone'>".$text['label-phone_number']."</option>\n"; }
+		if (permission_exists('contact_address_add')) { echo "<option value='address'>".$text['label-address_address']."</option>\n"; }
+		if (permission_exists('contact_email_add')) { echo "<option value='email'>".$text['label-email']."</option>\n"; }
+		if (permission_exists('contact_url_add')) { echo "<option value='url'>".$text['label-url']."</option>\n"; }
+		if (permission_exists('contact_relation_add')) { echo "<option value='relation'>".$text['label-contact_relation_label']."</option>\n"; }
+		if (permission_exists('contact_note_add')) { echo "<option value='note'>".$text['label-contact_note']."</option>\n"; }
+		if (permission_exists('contact_time_add')) { echo "<option value='time'>".$text['label-time_time']."</option>\n"; }
+		if (permission_exists('contact_setting_add')) { echo "<option value='setting'>".$text['label-setting']."</option>\n"; }
+		if (permission_exists('contact_attachment_add')) { echo "<option value='attachment'>".$text['label-attachment']."</option>\n"; }
+		echo "		</select>";
+	}
+	if (
+		$action == "update" && (
+		permission_exists('contact_delete') ||
+		permission_exists('contact_user_delete') ||
+		permission_exists('contact_group_delete') ||
+		permission_exists('contact_phone_delete') ||
+		permission_exists('contact_address_delete') ||
+		permission_exists('contact_email_delete') ||
+		permission_exists('contact_url_delete') ||
+		permission_exists('contact_relation_delete') ||
+		permission_exists('contact_note_delete') ||
+		permission_exists('contact_time_delete') ||
+		permission_exists('contact_setting_delete') ||
+		permission_exists('contact_attachment_delete')
+		)) {
+		echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'name'=>'btn_delete','collapse'=>'hide-sm-dn','onclick'=>"modal_open('modal-delete','btn_delete');"]);
+	}
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'style'=>'margin-left: 15px;','id'=>'btn_save','collapse'=>'hide-xs']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	echo $text['description-contact-edit']."\n";
+	echo "<br /><br />\n";
+
+	if ($action == 'update') {
+		if (permission_exists('contact_add')) {
+			echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'copy','onclick'=>"modal_close();"])]);
+		}
+		if (permission_exists('contact_delete')) {
+			echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]);
+		}
+	}
+
+?>
+
+<style>
+* {
+	box-sizing: border-box;
+	}
+
+input[type=text], select, textarea {
+	width: 100%;
+	padding: 12px;
+	border: 1px solid #ccc;
+	border-radius: 4px;
+	resize: vertical;
+	}
+
+label {
+	padding: 12px 12px 12px 0;
+	display: inline-block;
+	}
+
+input[type=submit] {
+	background-color: #4CAF50;
+	color: white;
+	padding: 12px 20px;
+	border: none;
+	border-radius: 100px;
+	cursor: pointer;
+	float: right;
+	}
+
+input[type=submit]:hover {
+	background-color: #45a049;
+	}
+
+option:first-child {
+	color: #ccc;
+	}
+
+.container {
+	border-radius: 5px;
+	background-color: #f2f2f2;
+	padding: 20px;
+	}
+
+.col-25 {
+	float: left;
+	width: 25%;
+	margin-top: 6px;
+	}
+
+.col-75 {
+	float: left;
+	width: 75%;
+	margin-top: 6px;
+	}
+
+/* clear floats after columns */
+.row:after {
+	content: "";
+	display: table;
+	clear: both;
+	}
+
+/* xs */
+@media screen and (max-width: 600px) {
+	div.form_grid {
+		width: 100%;
+	}
+
+	div.form_set {
+		width: 100% !important;
+		padding: 20px;
+	}
+	}
+
+/* sm+ */
+@media screen and (min-width: 601px) {
+	div.form_grid {
+		width: calc(100% + 20px);
+		}
+
+	div.form_set {
+		width: calc(100% - 20px);
+		padding: 20px;
+		}
+	}
+
+div.card {
+	margin-bottom: 20px;
+	}
+
+/* xs - make the two columns stack on top of each other instead of next to each other */
+@media screen and (max-width: 600px) {
+	.col-25, .col-75, input[type=submit] {
+		width: 100%;
+		margin-top: 0;
+		}
+	}
+
+@media screen and (max-width: 941px) {
+	.empty_row {
+		display: none;
+		}
+	}
+</style>
+
+<?php
+
+echo "<div class='form_grid'>\n";
+
+echo "	<div class='form_set card'>\n";
+echo "		<div class='heading'>\n";
+echo "			<b>".$text['label-name']."</b>\n";
+echo "		</div>\n";
+echo "		<div style='clear: both;'></div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_organization']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+echo "			<input class='formfld' type='text' name='contact_organization' placeholder='' maxlength='255' value='".escape($contact_organization)."'>\n";
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_name_prefix']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+echo "			<input class='formfld' type='text' name='contact_name_prefix' placeholder='' maxlength='255' value='".escape($contact_name_prefix)."'>\n";
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_name_given']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+echo "			<input class='formfld' type='text' name='contact_name_given' placeholder='' maxlength='255' value='".escape($contact_name_given)."'>\n";
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_name_middle']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+echo "			<input class='formfld' type='text' name='contact_name_middle' placeholder='' maxlength='255' value='".escape($contact_name_middle)."'>\n";
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_name_family']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+echo "			<input class='formfld' type='text' name='contact_name_family' placeholder='' maxlength='255' value='".escape($contact_name_family)."'>\n";
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_name_suffix']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+echo "			<input class='formfld' type='text' name='contact_name_suffix' placeholder='' maxlength='255' value='".escape($contact_name_suffix)."'>\n";
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_nickname']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+echo "			<input class='formfld' type='text' name='contact_nickname' placeholder='' maxlength='255' value='".escape($contact_nickname)."'>\n";
+echo "		</div>\n";
+
+echo "		<div class='label empty_row' style='grid-row: 10 / span 99;'>\n";
+echo "			&nbsp;\n";
+echo "		</div>\n";
+echo "		<div class='field empty_row' style='grid-row: 10 / span 99;'>\n";
+echo "			&nbsp;\n";
+echo "		</div>\n";
+echo "	</div>\n";
+
+echo "	<div class='form_set card'>\n";
+echo "		<div class='heading'>\n";
+echo "			<b>".$text['option-other']."</b>\n";
+echo "		</div>\n";
+echo "		<div style='clear: both;'></div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_type']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+if (!empty($_SESSION["contact"]["type"])) {
+	sort($_SESSION["contact"]["type"]);
+	echo "	<select class='formfld' name='contact_type'>\n";
+	echo "		<option value=''></option>\n";
+	foreach($_SESSION["contact"]["type"] as $type) {
+		echo "		<option value='".escape($type)."' ".(($type == $contact_type) ? "selected='selected'" : null).">".escape($type)."</option>\n";
+	}
+	echo "	</select>\n";
+}
+else {
+	echo "	<select class='formfld' name='contact_type'>\n";
+	echo "		<option value=''></option>\n";
+	echo "		<option value='customer' ".(!empty($contact_type) && $contact_type == "customer" ? "selected='selected'" : null).">".$text['option-contact_type_customer']."</option>\n";
+	echo "		<option value='contractor' ".(!empty($contact_type) && $contact_type == "contractor" ? "selected='selected'" : null).">".$text['option-contact_type_contractor']."</option>\n";
+	echo "		<option value='friend' ".(!empty($contact_type) && $contact_type == "friend" ? "selected='selected'" : null).">".$text['option-contact_type_friend']."</option>\n";
+	echo "		<option value='lead' ".(!empty($contact_type) && $contact_type == "lead" ? "selected='selected'" : null).">".$text['option-contact_type_lead']."</option>\n";
+	echo "		<option value='member' ".(!empty($contact_type) && $contact_type == "member" ? "selected='selected'" : null).">".$text['option-contact_type_member']."</option>\n";
+	echo "		<option value='family' ".(!empty($contact_type) && $contact_type == "family" ? "selected='selected'" : null).">".$text['option-contact_type_family']."</option>\n";
+	echo "		<option value='subscriber' ".(!empty($contact_type) && $contact_type == "subscriber" ? "selected='selected'" : null).">".$text['option-contact_type_subscriber']."</option>\n";
+	echo "		<option value='supplier' ".(!empty($contact_type) && $contact_type == "supplier" ? "selected='selected'" : null).">".$text['option-contact_type_supplier']."</option>\n";
+	echo "		<option value='provider' ".(!empty($contact_type) && $contact_type == "provider" ? "selected='selected'" : null).">".$text['option-contact_type_provider']."</option>\n";
+	echo "		<option value='user' ".(!empty($contact_type) && $contact_type == "user" ? "selected='selected'" : null).">".$text['option-contact_type_user']."</option>\n";
+	echo "		<option value='volunteer' ".(!empty($contact_type) && $contact_type == "volunteer" ? "selected='selected'" : null).">".$text['option-contact_type_volunteer']."</option>\n";
+	echo "	</select>\n";
+}
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_title']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+if (!empty($_SESSION['contact']['contact_title'])) {
+	echo "		<select class='formfld' name='contact_title'>\n";
+	echo "			<option value=''></option>\n";
+	sort($_SESSION['contact']['contact_title']);
+	foreach($_SESSION['contact']['contact_title'] as $row) {
+		echo "			<option value='".escape($row)."' ".(($row == $contact_title) ? "selected='selected'" : null).">".escape(ucwords($row))."</option>\n";
+	}
+	echo "		</select>\n";
+}
+else {
+	echo "		<input class='formfld' type='text' name='contact_title' placeholder='' maxlength='255' value='".escape($contact_title)."'>\n";
+}
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_role']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+if (!empty($_SESSION['contact']['contact_role'])) {
+	echo "		<select class='formfld' name='contact_role'>\n";
+	echo "			<option value=''>".$text['label-contact_category']."</option>\n";
+	sort($_SESSION['contact']['contact_role']);
+	foreach($_SESSION['contact']['contact_role'] as $row) {
+		echo "			<option value='".escape($row)."' ".(($row == $contact_role) ? "selected='selected'" : null).">".escape(ucwords($row))."</option>\n";
+	}
+	echo "		</select>\n";
+}
+else {
+	echo "		<input class='formfld' type='text' name='contact_role'  placeholder='' maxlength='255' value='".escape($contact_role)."'>\n";
+}
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_category']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+if (!empty($_SESSION['contact']['contact_category'])) {
+	echo "	<select class='formfld' name='contact_category'>\n";
+	echo "		<option value=''></option>\n";
+	sort($_SESSION['contact']['contact_category']);
+	foreach($_SESSION['contact']['contact_category'] as $row) {
+		echo "		<option value='".escape($row)."' ".(($row == $contact_category) ? "selected='selected'" : null).">".escape(ucwords($row))."</option>\n";
+	}
+	echo "	</select>\n";
+}
+else {
+	echo "	<input class='formfld' type='text' name='contact_category' placeholder='' maxlength='255' value='".escape($contact_category)."'>\n";
+}
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_time_zone']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+echo "			<select class='formfld' id='contact_time_zone' name='contact_time_zone' 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 => $val) {
+	$time_zone = explode("/", $val);
+	$category = $time_zone[0];
+	if ($category != $previous_category) {
+		if ($x > 0) {
+			echo "			</optgroup>\n";
+		}
+		echo "			<optgroup label='".$category."'>\n";
+	}
+	if (!empty($val)) {
+		$time_zone_offset = get_time_zone_offset($val)/3600;
+		$time_zone_offset_hours = floor($time_zone_offset);
+		$time_zone_offset_minutes = ($time_zone_offset - $time_zone_offset_hours) * 60;
+		$time_zone_offset_minutes = number_pad($time_zone_offset_minutes, 2);
+		if ($time_zone_offset > 0) {
+			$time_zone_offset_hours = number_pad($time_zone_offset_hours, 2);
+			$time_zone_offset_hours = "+".$time_zone_offset_hours;
+		}
+		else {
+			$time_zone_offset_hours = str_replace("-", "", $time_zone_offset_hours);
+			$time_zone_offset_hours = "-".number_pad($time_zone_offset_hours, 2);
+		}
+	}
+	echo "				<option value='".$val."' ".(!empty($contact_time_zone) && $val == $contact_time_zone ? "selected='selected'" : null).">(UTC ".$time_zone_offset_hours.":".$time_zone_offset_minutes.") ".$val."</option>\n";
+	$previous_category = $category;
+	$x++;
+}
+echo "			</select>\n";
+echo "		</div>\n";
+
+echo "		<div class='label'>\n";
+echo "			".$text['label-contact_note']."\n";
+echo "		</div>\n";
+echo "		<div class='field no-wrap'>\n";
+echo "			<textarea class='formfld' style='width: 100%; height: 100%;' name='contact_note'>".$contact_note."</textarea>\n";
+echo "		</div>\n";
+
+echo "		<div class='label empty_row' style='grid-row: 8 / span 99;'>\n";
+echo "			&nbsp;\n";
+echo "		</div>\n";
+echo "		<div class='field empty_row' style='grid-row: 8 / span 99;'>\n";
+echo "			&nbsp;\n";
+echo "		</div>\n";
+
+echo "	</div>\n";
+unset($contact_note);
+
+if ($_SESSION['contact']['permissions']['boolean'] == "true") {
+	if (permission_exists('contact_user_view') || permission_exists('contact_group_view')) {
+		echo "	<div class='form_set card'>\n";
+		echo "		<div class='heading'>\n";
+		echo "			<b>".$text['label-permissions']."</b>\n";
+		echo "		</div>\n";
+		echo "		<div style='clear: both;'></div>\n";
+
+		if (permission_exists('contact_user_edit')) {
+			echo "		<div class='label' valign='top'>".$text['label-users']."</div>\n";
+			echo "		<div class='field no-wrap' align='left'>";
+			if ($action == "update" && !empty($contact_users_assigned)) {
+				echo "			<div class='vtable'>".$text['label-username']."\n";
+				if ($contact_users_assigned && permission_exists('contact_user_delete')) {
+					//echo "			<div class='edit_delete_checkbox_all' onmouseover=\"swap_display('delete_label_users', 'delete_toggle_users');\" onmouseout=\"swap_display('delete_label_users', 'delete_toggle_users');\">\n";
+					echo "			<div style='float: right;'\">\n";
+					echo "				<span>".$text['label-delete']."</span>\n";
+					//echo "				<span id='delete_label_users'>".$text['label-delete']."</span>\n";
+					//echo "				<span id='delete_toggle_users'><input type='checkbox' id='checkbox_all_users' name='checkbox_all' onclick=\"edit_all_toggle('users');\"></span>\n";
+					echo "			</div>\n";
+				}
+				echo "		</div>\n";
+				foreach ($contact_users_assigned as $x => $field) {
+					echo "		<div class='vtable'>".escape($field['username'])."\n";
+					if ($contact_users_assigned && permission_exists('contact_user_delete')) {
+						if (is_uuid($field['contact_user_uuid'])) {
+							echo "		<div style='text-align: center; padding-bottom: 3px; float: right; margin-right: 10px;'>\n";
+							//echo "			<input type='checkbox' name='contact_users_delete[".$x."][checked]' value='true' class='chk_delete checkbox_users' onclick=\"edit_delete_action('users');\">\n";
+							//echo "			<input type='hidden' name='contact_users_delete[".$x."][uuid]' value='".escape($field['contact_user_uuid'])."' />\n";
+							echo "			<input type='checkbox' name='contact_users[".$x."][checked]' value='true' class='chk_delete checkbox_users' onclick=\"edit_delete_action('users');\">\n";
+							echo "			<input type='hidden' name='contact_users[".$x."][uuid]' value='".escape($field['contact_user_uuid'])."' />\n";
+							echo "			<input type='hidden' name='contact_users[$x][domain_uuid]' value=\"".escape($_SESSION['domain_uuid'])."\">\n";
+							echo "			<input type='hidden' name='contact_users[$x][contact_user_uuid]' value='".escape($field['contact_user_uuid'])."' />\n";
+							echo "			<input type='hidden' name='contact_users[$x][contact_uuid]' value='".escape($field['contact_uuid'])."' />\n";
+						}
+						else {
+							echo "		<div>\n";
+						}
+						echo "	</div>\n";
+					}
+					echo "	</div>\n";
+				}
+			}
+			if (permission_exists('contact_user_add')) {
+				echo "		<div class='vtable' style='border-bottom: none;'>\n";
+				echo "			<select name='contact_user_uuid' class='formfld' style='width: auto;'>\n";
+				echo "				<option value=''></option>\n";
+				foreach ($users as $field) {
+					if (!empty($contact_users_assigned) && in_array($field['user_uuid'], array_column($contact_users_assigned, 'user_uuid'))) { continue; } //skip users already assigned
+					echo "					<option value='".escape($field['user_uuid'])."'>".escape($field['username'])."</option>\n";
+				}
+				echo "			</select>\n";
+				if ($action == "update") {
+					echo button::create(['type'=>'submit','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add']]);
+				}
+				unset($users);
+				echo "		</div>\n";
+			}
+			echo "			".$text['description-users']."\n";
+			echo "		</div>\n";
+		}
+
+		if (permission_exists('contact_group_view')) {
+			echo "	<div class='label'>".$text['label-groups']."</div>";
+			echo "	<div class='field no-wrap'>";
+			if (!empty($contact_groups_assigned)) {
+				echo "		<div class='vtable'>".$text['label-group']."\n";
+				if ($contact_groups_assigned && permission_exists('contact_group_delete')) {
+					//echo "		<div class='edit_delete_checkbox_all' style='float: right;' onmouseover=\"swap_display('delete_label_groups', 'delete_toggle_groups');\" onmouseout=\"swap_display('delete_label_groups', 'delete_toggle_groups');\">\n";
+					echo "		<div style='float: right;'\">\n";
+					echo "			<span>".$text['label-delete']."</span>\n";
+					//echo "			<span id='delete_label_groups'>".$text['label-delete']."</span>\n";
+					//echo "			<span id='delete_toggle_groups' style='margin-right: 10px;'><input type='checkbox' id='checkbox_all_groups' name='checkbox_all' onclick=\"edit_all_toggle('groups');\"></span>\n";
+					echo "		</div>\n";
+				}
+				echo "		</div>\n";
+				foreach ($contact_groups_assigned as $x => $field) {
+					if (!empty($field['group_name'])) {
+						echo "		<div class='vtable'>".escape($field['group_name'])."\n";
+						if (permission_exists('contact_group_delete')) {
+							if (is_uuid($field['contact_group_uuid'])) {
+								echo "		<div style='text-align: center; padding-bottom: 3px; float: right; margin-right: 10px;'>";
+								//echo "			<input type='checkbox' name='contact_groups_delete[".$x."][checked]' value='true' class='chk_delete checkbox_groups' onclick=\"edit_delete_action('groups');\">\n";
+								//echo "			<input type='hidden' name='contact_groups_delete[".$x."][uuid]' value='".escape($field['contact_group_uuid'])."' />\n";
+								echo "			<input type='checkbox' name='contact_groups[".$x."][checked]' value='true' class='chk_delete checkbox_groups' onclick=\"edit_delete_action('groups');\">\n";
+								echo "			<input type='hidden' name='contact_groups[".$x."][uuid]' value='".escape($field['contact_group_uuid'])."' />\n";
+								echo "			<input type='hidden' name='contact_groups[$x][domain_uuid]' value=\"".escape($_SESSION['domain_uuid'])."\">\n";
+								echo "			<input type='hidden' name='contact_groups[$x][contact_group_uuid]' value='".escape($field['contact_group_uuid'])."' />\n";
+								echo "			<input type='hidden' name='contact_groups[$x][contact_uuid]' value='".escape($contact_uuid)."' />\n";
+							}
+							else {
+								echo "		<div>";
+							}
+							echo "		</div>\n";
+						}
+						echo "		</div>\n";
+					}
+				}
+			}
+
+			if (permission_exists('contact_group_add')) {
+				if (!empty($contact_groups_available)) {
+					echo "	<div class='vtable' style='border-bottom: none;'>\n";
+					echo "		<select name='contact_group_uuid' class='formfld' style='width: auto; margin-right: 3px;'>\n";
+					echo "			<option value=''></option>\n";
+					foreach ($contact_groups_available as $field) {
+						if ($field['group_name'] == "superadmin" && !if_group("superadmin")) { continue; }	//only show superadmin group to superadmins
+						if ($field['group_name'] == "admin" && (!if_group("superadmin") && !if_group("admin"))) { continue; }	//only show admin group to admins
+						echo "			<option value='".escape($field['group_uuid'])."'>".escape($field['group_name'])."</option>\n";
+					}
+					echo "		</select>";
+					if ($action == "update") {
+						echo button::create(['type'=>'submit','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add']]);
+					}
+					echo "	</div>\n";
+				}
+			}
+			echo "		".$text['description-groups']."\n";
+			echo "	</div>\n";
+		}
+
+		echo "		<div class='label empty_row' style='grid-row: 4 / span 99;'>\n";
+		echo "			&nbsp;\n";
+		echo "		</div>\n";
+		echo "		<div class='field empty_row' style='grid-row: 4 / span 99;'>\n";
+		echo "		</div>\n";
+
+		echo "	</div>\n";
+	}
+}
+
+if (permission_exists('contact_phone_view')) {
+
+	echo "<script type=\"text/javascript\">\n";
+	echo "function send_cmd(url) {\n";
+	echo "	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari\n";
+	echo "		xmlhttp=new XMLHttpRequest();\n";
+	echo "	}\n";
+	echo "	else {// code for IE6, IE5\n";
+	echo "		xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");\n";
+	echo "	}\n";
+	echo "	xmlhttp.open(\"GET\",url,true);\n";
+	echo "	xmlhttp.send(null);\n";
+	echo "	document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;\n";
+	echo "}\n";
+	echo "</script>\n";
+
+	$x = 0;
+	foreach($contact_phones as $row) {
+		echo "	<div class='form_set card'>\n";
+		echo "		<div class='heading'>\n";
+		echo "			<b style='float: left;'>".$text['label-phone_numbers']."</b>\n";
+		if (permission_exists('contact_phone_delete')) {
+			echo "			<div class='checkbox' style='float: left; margin-top: 3px; margin-left: 8px;'>\n";
+			echo "				<input type='checkbox' name='contact_phones[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_phones' value='true' onclick=\"edit_delete_action('phones');\">\n";
+			echo "				<input type='hidden' name='contact_phones[$x][uuid]' value='".escape($row['contact_phone_uuid'])."' />\n";
+			echo "			</div>\n";
+		}
+		echo "			<div class='button no-link' style='float: left; margin-top: 1px; margin-left: 8px;'>\n";
+		echo "				<a href='../xml_cdr/xml_cdr.php?caller_id_number=".urlencode($row['phone_number'] ?? '')."'>\n";
+		echo "					<i class='fas fa-search fa-fw' style='color: ".$body_text_color."; float: left; margin-top: 7px; margin-left: 3px; margin-right: 3px;' title=\"".$text['button-cdr']."\"></i>\n";
+		echo "				</a>\n";
+
+		$call = "send_cmd('";
+		$call .= PROJECT_PATH."/app/click_to_call/click_to_call.php";
+		$call .= "?src_cid_name=".urlencode($row['phone_number'] ?? '');
+		$call .= "&src_cid_number=".urlencode($row['phone_number'] ?? '');
+		$call .= "&dest_cid_name=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_name'] ?? '');
+		$call .= "&dest_cid_number=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_number'] ?? '');
+		$call .= "&src=".urlencode($_SESSION['user']['extension'][0]['user'] ?? '');
+		$call .= "&dest=".urlencode($row['phone_number'] ?? '');
+		$call .= "&rec=false";
+		$call .= "&ringback=us-ring";
+		$call .= "&auto_answer=true";
+		$call .= "');";
+
+		echo "				<a href='' onclick=\"".$call."\">\n";
+		echo "					<i class='fas fa-phone fa-fw' style='color: ".$body_text_color."; float: left; margin-top: 7px; margin-left: 7px;' title=\"".urlencode($row['phone_number'] ?? '')."\"></i>\n";
+		echo "				</a>\n";
+
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "		<div style='clear: both;'>\n";
+		if ($row['phone_primary'] == "1") {
+			echo "		<i class='fa-solid fa-star fa-sm' style='color: ".$body_text_color."; float: right; margin-top: 7px; margin-left: 8px;' title=\"".$text['label-primary']."\"></i>\n";
+		}
+		echo "		</div>\n";
+
+		echo "		<input type='hidden' name='contact_phones[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+		echo "		<input type='hidden' name='contact_phones[$x][contact_uuid]' value=\"".escape($row["contact_uuid"])."\">\n";
+		echo "		<input type='hidden' name='contact_phones[$x][contact_phone_uuid]' value=\"".escape($row["contact_phone_uuid"])."\">\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-phone_label']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<select class='formfld' name='contact_phones[$x][phone_label]' style=''>\n";
+		echo "				<option value=''></option>\n";
+		if ($row['phone_label'] == "work") {
+			echo "				<option value='work' selected='selected'>".$text['option-work']."</option>\n";
+		}
+		else {
+			echo "				<option value='work'>".$text['option-work']."</option>\n";
+		}
+		if ($row['phone_label'] == "home") {
+			echo "				<option value='home' selected='selected'>".$text['option-home']."</option>\n";
+		}
+		else {
+			echo "				<option value='home'>".$text['option-home']."</option>\n";
+		}
+		if ($row['phone_label'] == "mobile") {
+			echo "				<option value='mobile' selected='selected'>".$text['option-mobile']."</option>\n";
+		}
+		else {
+			echo "				<option value='mobile'>".$text['option-mobile']."</option>\n";
+		}
+		if ($row['phone_label'] == "main") {
+			echo "				<option value='main' selected='selected'>".$text['option-main']."</option>\n";
+		}
+		else {
+			echo "				<option value='main'>".$text['option-main']."</option>\n";
+		}
+		if ($row['phone_label'] == "billing") {
+			echo "				<option value='billing' selected='selected'>".$text['option-billing']."</option>\n";
+		}
+		else {
+			echo "				<option value='billing'>".$text['option-billing']."</option>\n";
+		}
+		if ($row['phone_label'] == "fax") {
+			echo "				<option value='fax' selected='selected'>".$text['option-fax']."</option>\n";
+		}
+		else {
+			echo "				<option value='fax'>".$text['option-fax']."</option>\n";
+		}
+		if ($row['phone_label'] == "voicemail") {
+			echo "				<option value='voicemail' selected='selected'>".$text['option-voicemail']."</option>\n";
+		}
+		else {
+			echo "				<option value='voicemail'>".$text['option-voicemail']."</option>\n";
+		}
+		if ($row['phone_label'] == "text") {
+			echo "				<option value='text' selected='selected'>".$text['option-text']."</option>\n";
+		}
+		else {
+			echo "				<option value='text'>".$text['option-text']."</option>\n";
+		}
+		if ($row['phone_label'] == "other") {
+			echo "				<option value='other' selected='selected'>".$text['option-other']."</option>\n";
+		}
+		else {
+			echo "				<option value='other'>".$text['option-other']."</option>\n";
+		}
+		echo "			</select>\n";
+		//echo 				$text['description-phone_label']."\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-phone_type']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_voice]' id='phone_type_voice' value='1' ".(($row['phone_type_voice']) ? "checked='checked'" : null)."> ".$text['label-voice']."</label>&nbsp;\n";
+		echo "			<label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_fax]' id='phone_type_fax' value='1' ".(($row['phone_type_fax']) ? "checked='checked'" : null)."> ".$text['label-fax']."</label>&nbsp;\n";
+		echo "			<label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_video]' id='phone_type_video' value='1' ".(($row['phone_type_video']) ? "checked='checked'" : null)."> ".$text['label-video']."</label>&nbsp;\n";
+		echo "			<label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_text]' id='phone_type_text' value='1' ".(($row['phone_type_text']) ? "checked='checked'" : null)."> ".$text['label-text']."</label>\n";
+		echo "			<br />\n";
+		//echo 			$text['description-phone_type']."\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-phone_speed_dial']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_phones[$x][phone_speed_dial]' placeholder='' maxlength='255' style='' value=\"".escape($row["phone_speed_dial"])."\">\n";
+		//echo 				$text['description-phone_extension']."\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-phone_country_code']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_phones[$x][phone_country_code]' placeholder='' maxlength='6' style='' value=\"".escape($row["phone_country_code"])."\">\n";
+		//echo 				$text['description-phone_country_code']."\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label required'>\n";
+		echo "			".$text['label-phone_number']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_phones[$x][phone_number]' placeholder='' style=''  maxlength='255' style='max-width:90px;' value=\"".escape($row["phone_number"])."\">\n";
+		//echo 				$text['description-phone_speed_dial']."\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-phone_extension']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_phones[$x][phone_extension]' placeholder='' style='' maxlength='255' value=\"".escape($row["phone_extension"])."\">\n";
+		//echo 				$text['description-phone_number']."\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-primary']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+
+		echo "			<select class='formfld' name='contact_phones[$x][phone_primary]' style='width: auto;'>\n";
+		echo "				<option value=''></option>\n";
+		if ($row['phone_primary'] == "1") {
+			echo "				<option value='1' selected='selected'>".$text['label-true']."</option>\n";
+		}
+		else {
+			echo "				<option value='1'>".$text['label-true']."</option>\n";
+		}
+		if ($row['phone_primary'] == "0") {
+			echo "				<option value='0' selected='selected'>".$text['label-false']."</option>\n";
+		}
+		else {
+			echo "				<option value='0'>".$text['label-false']."</option>\n";
+		}
+		echo "			</select>\n";
+		//echo 				$text['description-phone_primary']."\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-phone_description']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_phones[$x][phone_description]' placeholder='' maxlength='255' value=\"".escape($row["phone_description"])."\">\n";
+		//echo 				$text['description-phone_description']."\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label empty_row' style='grid-row: 10 / span 99;'>\n";
+		echo "			&nbsp;\n";
+		echo "		</div>\n";
+		echo "		<div class='field empty_row' style='grid-row: 10 / span 99;'>\n";
+		echo "			&nbsp;\n";
+		echo "		</div>\n";
+
+		//if (!empty($contact_phones) && @sizeof($contact_phones) > 1 && permission_exists('contact_phone_delete')) {
+		//	echo "		<div class='label'>\n";
+		//	echo "			".$text['label-action']."\n";
+		//	echo "		</div>\n";
+		//	echo "		<div class='field no-wrap'>\n";
+		//	//echo "			<span id='delete_label_details'>".$text['label-action']."</span>\n";
+		//	echo "			<span id='delete_toggle_details'>\n";
+		//	//echo "				<input type='checkbox' name='contact_phones[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n";
+		//	echo "				<input type='checkbox' id='checkbox_all_details' name='checkbox_all' onclick=\"edit_all_toggle('details'); checkbox_on_change(this);\">\n";
+		//	echo "			</span>\n";
+		//	echo "		</div>\n";
+		//}
+
+		echo "	</div>\n";
+		$x++;
+	}
+}
+
+if (permission_exists('contact_address_view')) {
+	$x = 0;
+	foreach($contact_addresses as $row) {
+		echo "	<div class='form_set card'>\n";
+		echo "		<div class='heading'>\n";
+		echo "			<b style='float: left;'>".$text['label-addresses']."</b>\n";
+		if (permission_exists('contact_address_delete')) {
+			echo "			<div class='checkbox' style='float: left; margin-top: 3px; margin-left: 8px;'>\n";
+			echo "				<input type='checkbox' name='contact_addresses[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_addresses' value='true' onclick=\"edit_delete_action('addresses');\">\n";
+			echo "				<input type='hidden' name='contact_addresses[$x][uuid]' value='".escape($row['contact_address_uuid'])."' />\n";
+			echo "			</div>\n";
+		}
+		echo "			<div class='button no-link' style='float: left; margin-top: 1px; margin-left: 8px;'>\n";
+		$map_query = $row['address_street']." ".$row['address_extended'].", ".$row['address_locality'].", ".$row['address_region'].", ".$row['address_region'].", ".$row['address_postal_code'];
+		echo " 				<a href=\"http://maps.google.com/maps?q=".urlencode($map_query)."&hl=en\" target=\"_blank\">";
+		echo " 					<img src='resources/images/icon_gmaps.png' style='width: 17px; height: 17px;' alt='".$text['label-google_map']."' title='".$text['label-google_map']."'>";
+		echo " 				</a>\n";
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "		<div style='clear: both;'>\n";
+		if ($row['address_primary'] == "1") {
+			echo "		<i class='fa-solid fa-star fa-sm' style='color: ".$body_text_color."; float: right; margin-top: 7px; margin-left: 8px;' title=\"".$text['label-primary']."\"></i>\n";
+		}
+		echo "		</div>\n";
+
+		echo "		<input type='hidden' name='contact_addresses[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+		echo "		<input type='hidden' name='contact_addresses[$x][contact_uuid]' value=\"".escape($row["contact_uuid"])."\">\n";
+		echo "		<input type='hidden' name='contact_addresses[$x][contact_address_uuid]' value=\"".escape($row["contact_address_uuid"])."\">\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-address_label']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<select class='formfld' name='contact_addresses[$x][address_label]'>\n";
+		echo "				<option value=''></option>\n";
+		if ($row['address_label'] == "work") {
+			echo "				<option value='work' selected='selected'>".$text['option-work']."</option>\n";
+		}
+		else {
+			echo "				<option value='work'>".$text['option-work']."</option>\n";
+		}
+		if ($row['address_label'] == "home") {
+			echo "				<option value='home' selected='selected'>".$text['option-home']."</option>\n";
+		}
+		else {
+			echo "				<option value='home'>".$text['option-home']."</option>\n";
+		}
+		if ($row['address_label'] == "mobile") {
+			echo "				<option value='mobile' selected='selected'>".$text['option-mobile']."</option>\n";
+		}
+		else {
+			echo "				<option value='mobile'>".$text['option-mobile']."</option>\n";
+		}
+		if ($row['address_label'] == "main") {
+			echo "				<option value='main' selected='selected'>".$text['option-main']."</option>\n";
+		}
+		else {
+			echo "				<option value='main'>".$text['option-main']."</option>\n";
+		}
+		if ($row['address_label'] == "billing") {
+			echo "				<option value='billing' selected='selected'>".$text['option-billing']."</option>\n";
+		}
+		else {
+			echo "				<option value='billing'>".$text['option-billing']."</option>\n";
+		}
+
+		if ($row['address_label'] == "fax") {
+			echo "				<option value='fax' selected='selected'>".$text['option-fax']."</option>\n";
+		}
+		else {
+			echo "				<option value='fax'>".$text['option-fax']."</option>\n";
+		}
+		if ($row['address_label'] == "pager") {
+			echo "				<option value='pager' selected='selected'>".$text['option-pager']."</option>\n";
+		}
+		else {
+			echo "				<option value='pager'>".$text['option-pager']."</option>\n";
+		}
+		if ($row['address_label'] == "voicemail") {
+			echo "				<option value='voicemail' selected='selected'>".$text['option-voicemail']."</option>\n";
+		}
+		else {
+			echo "				<option value='voicemail'>".$text['option-voicemail']."</option>\n";
+		}
+		if ($row['address_label'] == "text") {
+			echo "				<option value='text' selected='selected'>".$text['option-text']."</option>\n";
+		}
+		else {
+			echo "				<option value='text'>".$text['option-text']."</option>\n";
+		}
+		echo "			</select>\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-address_type']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<select class='formfld' name='contact_addresses[$x][address_type]'>\n";
+		echo "				<option value=''></option>\n";
+		if ($row['address_type'] == "work") {
+			echo "				<option value='work' selected='selected'>".$text['option-work']."</option>\n";
+		}
+		else {
+			echo "				<option value='work'>".$text['option-work']."</option>\n";
+		}
+		if ($row['address_type'] == "home") {
+			echo "				<option value='home' selected='selected'>".$text['option-home']."</option>\n";
+		}
+		else {
+			echo "				<option value='home'>".$text['option-home']."</option>\n";
+		}
+		if ($row['address_type'] == "domestic") {
+			echo "				<option value='domestic' selected='selected'>".$text['option-dom']."</option>\n";
+		}
+		else {
+			echo "				<option value='domestic'>".$text['option-dom']."</option>\n";
+		}
+		if ($row['address_type'] == "international") {
+			echo "				<option value='international' selected='selected'>".$text['option-intl']."</option>\n";
+		}
+		else {
+			echo "				<option value='international'>".$text['option-intl']."</option>\n";
+		}
+		if ($row['address_type'] == "postal") {
+			echo "				<option value='postal' selected='selected'>".$text['option-postal']."</option>\n";
+		}
+		else {
+			echo "				<option value='postal'>".$text['option-postal']."</option>\n";
+		}
+		if ($row['address_type'] == "parcel") {
+			echo "				<option value='parcel' selected='selected'>".$text['option-parcel']."</option>\n";
+		}
+		else {
+			echo "				<option value='parcel'>".$text['option-parcel']."</option>\n";
+		}
+		if ($row['address_type'] == "preferred") {
+			echo "				<option value='preferred' selected='selected'>".$text['option-pref']."</option>\n";
+		}
+		else {
+			echo "				<option value='preferred'>".$text['option-pref']."</option>\n";
+		}
+		echo "			</select>\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label required'>\n";
+		echo "			".$text['label-address_address']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_street]' placeholder='".$text['label-address_address']." 1' maxlength='255' value=\"".escape($row["address_street"])."\"><br />\n";
+		echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_extended]' placeholder='".$text['label-address_address']." 2' maxlength='255' value=\"".escape($row["address_extended"])."\">\n";
+		echo "		</div>\n";
+
+		if (permission_exists('address_community')) {
+			echo "		<div class='label'>\n";
+			echo "			".$text['label-address_community']."\n";
+			echo "		</div>\n";
+			echo "		<div class='field no-wrap'>\n";
+			echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_community]' placeholder='' maxlength='255' value=\"".escape($row["address_community"])."\">\n";
+			echo "		</div>\n";
+		}
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-address_locality']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_locality]' placeholder='' maxlength='255' value=\"".escape($row["address_locality"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-address_region']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_region]' placeholder='' maxlength='255' value=\"".escape($row["address_region"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-address_postal_code']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_postal_code]' placeholder='' maxlength='255' value=\"".escape($row["address_postal_code"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-address_country']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_country]' placeholder='' maxlength='255' value=\"".escape($row["address_country"])."\">\n";
+		echo "		</div>\n";
+
+		if (permission_exists('address_latitude')) {
+			echo "		<div class='label'>\n";
+			echo "			".$text['label-address_latitude']."\n";
+			echo "		</div>\n";
+			echo "		<div class='field no-wrap'>\n";
+			echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_latitude]' placeholder='".escape($text['label-address_latitude'])."' maxlength='255' value=\"".escape($row["address_latitude"])."\">\n";
+			echo "		</div>\n";
+		}
+
+		if (permission_exists('address_longitude')) {
+			echo "		<div class='label'>\n";
+			echo "			".$text['label-address_longitude']."\n";
+			echo "		</div>\n";
+			echo "		<div class='field no-wrap'>\n";
+			echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_longitude]' placeholder='".escape($text['label-address_longitude'])."' maxlength='255' value=\"".escape($row["address_longitude"])."\">\n";
+			echo "		</div>\n";
+		}
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-primary']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<select class='formfld' name='contact_addresses[$x][address_primary]' style='width: auto;'>\n";
+		echo "				<option value=''>".escape($text['label-address_primary'] ?? '')."</option>\n";
+		if ($row['address_primary'] == "1") {
+			echo "			<option value='1' selected='selected'>".$text['label-true']."</option>\n";
+		}
+		else {
+			echo "			<option value='1'>".$text['label-true']."</option>\n";
+		}
+		if ($row['address_primary'] == "0") {
+			echo "			<option value='0' selected='selected'>".$text['label-false']."</option>\n";
+		}
+		else {
+			echo "			<option value='0'>".$text['label-false']."</option>\n";
+		}
+		echo "			</select>\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-address_description']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<input class='formfld' type='text' name='contact_addresses[$x][address_description]' placeholder='' maxlength='255' value=\"".escape($row["address_description"])."\">\n";
+		echo "		</div>\n";
+
+		//if (!empty($contact_addresses) && @sizeof($contact_addresses) > 1 && permission_exists('contact_address_delete')) {
+		//	if (is_uuid($row['contact_address_uuid'])) {
+		//		echo "		<div class='label'>\n";
+		//		echo "			".$text['label-action']."\n";
+		//		echo "		</div>\n";
+		//		echo "		<div class='field no-wrap'>\n";
+		//		echo "			<input type='checkbox' name='contact_addresses[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n";
+		//		echo "		</div>\n";
+		//	}
+		//}
+
+		echo "	</div>\n";
+		$x++;
+	}
+}
+
+if (permission_exists('contact_email_view')) {
+	$x = 0;
+	foreach($contact_emails as $row) {
+		echo "	<div class='form_set card'>\n";
+		echo "		<div class='heading'>\n";
+		echo "			<b style='float: left;'>".$text['label-emails']."</b>\n";
+		if (permission_exists('contact_email_delete')) {
+			echo "			<div class='checkbox' style='float: left; margin-top: 3px; margin-left: 8px;'>\n";
+			echo "				<input type='checkbox' name='contact_emails[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_emails' value='true' onclick=\"edit_delete_action('emails');\">\n";
+			echo "				<input type='hidden' name='contact_emails[$x][uuid]' value='".escape($row['contact_email_uuid'])."' />\n";
+			echo "			</div>\n";
+		}
+		echo "			<div class='button no-link' style='float: left; margin-top: 1px; margin-left: 8px;'>\n";
+		echo "				<a href='mailto:".escape($row['email_address'])."'>\n";
+		echo "					<i class='fas fa-envelope fa-fw' style='color: ".$body_text_color."; float: left; margin-top: 5px; margin-left: 3px;' title=\"".escape($row["email_label"])."\"></i>\n";
+		echo "				</a>\n";
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "		<div style='clear: both;'>\n";
+		if ($row['email_primary'] == "1") {
+			echo "		<i class='fa-solid fa-star fa-sm' style='color: ".$body_text_color."; float: right; margin-top: 7px; margin-left: 8px;' title=\"".$text['label-primary']."\"></i>\n";
+		}
+		echo "		</div>\n";
+
+		echo "		<input type='hidden' name='contact_emails[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+		echo "		<input type='hidden' name='contact_emails[$x][contact_uuid]' value=\"".escape($row["contact_uuid"])."\">\n";
+		echo "		<input type='hidden' name='contact_emails[$x][contact_email_uuid]' value=\"".escape($row["contact_email_uuid"])."\">\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-email_label']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_emails[$x][email_label]' placeholder='".escape($text['label-email_label'])."' maxlength='255' value=\"".escape($row["email_label"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label required'>\n";
+		echo "			".$text['label-email_address']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_emails[$x][email_address]' placeholder='".escape($text['label-email_address'])."' maxlength='255' value=\"".escape($row["email_address"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-primary']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<select class='formfld' name='contact_emails[$x][email_primary]' style='width: auto;'>\n";
+		echo "				<option value=''>".escape($text['label-contact_emails'] ?? '')."</option>\n";
+		if ($row['email_primary'] == "1") {
+			echo "				<option value='1' selected='selected'>".$text['label-true']."</option>\n";
+		}
+		else {
+			echo "				<option value='1'>".$text['label-true']."</option>\n";
+		}
+		if ($row['email_primary'] == "0") {
+			echo "				<option value='0' selected='selected'>".$text['label-false']."</option>\n";
+		}
+		else {
+			echo "				<option value='0'>".$text['label-false']."</option>\n";
+		}
+		echo "			</select>\n";
+		//echo "				<br />\n";
+		//echo 				$text['description-email_primary']."\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-email_description']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_emails[$x][email_description]' placeholder='' maxlength='255' value=\"".escape($row["email_description"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label empty_row' style='grid-row: 6 / span 99;'>\n";
+		echo "			&nbsp;\n";
+		echo "		</div>\n";
+		echo "		<div class='field empty_row' style='grid-row: 6 / span 99;'>\n";
+		echo "		</div>\n";
+
+		//if (!empty($contact_emails) && @sizeof($contact_emails) > 1 && permission_exists('contact_email_delete')) {
+		//	if (is_uuid($row['contact_email_uuid'])) {
+		//		echo "		<div class='label'>\n";
+		//		echo "			".$text['label-action']."\n";
+		//		echo "		</div>\n";
+		//		echo "		<div class='field no-wrap'>\n";
+		//		echo "			<input type='checkbox' name='contact_emails[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n";
+		//		echo "		</div>\n";
+		//	}
+		//}
+		echo "	</div>\n";
+		$x++;
+	}
+}
+
+if (permission_exists('contact_url_view')) {
+	$x = 0;
+	foreach($contact_urls as $row) {
+		echo "	<div class='form_set card'>\n";
+		echo "		<div class='heading'>\n";
+		echo "			<b style='float: left;'>".$text['label-contact_url']."</b>\n";
+		if (permission_exists('contact_url_delete')) {
+			echo "			<div class='checkbox' style='float: left; margin-top: 3px; margin-left: 8px;'>\n";
+			echo "				<input type='checkbox' name='contact_urls[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_urls' value='true' onclick=\"edit_delete_action('urls');\">\n";
+			echo "				<input type='hidden' name='contact_urls[$x][uuid]' value='".escape($row['contact_url_uuid'])."' />\n";
+			echo "			</div>\n";
+		}
+		echo "			<div class='button no-link' style='float: left; margin-top: 1px; margin-left: 8px;'>\n";
+		echo "				<a href='".escape($row['url_address'])."' target='_blank'>\n";
+		echo "					<span class='fas fa-link fa-fw' style='color: ".$body_text_color."; float: left; margin-top: 7px; margin-left: 3px;' title=\"".str_replace("http://", "", str_replace("https://", "", escape($row['url_address'])))."\"></span>\n";
+		echo "				</a>\n";
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "		<div style='clear: both;'>\n";
+		if ($row['url_primary'] == "1") {
+			echo "		<i class='fa-solid fa-star fa-sm' style='color: ".$body_text_color."; float: right; margin-top: 7px; margin-left: 8px;' title=\"".$text['label-primary']."\"></i>\n";
+		}
+		echo "		</div>\n";
+		echo "			<input type='hidden' name='contact_urls[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+		echo "			<input type='hidden' name='contact_urls[$x][contact_uuid]' value=\"".escape($row["contact_uuid"])."\">\n";
+		echo "			<input type='hidden' name='contact_urls[$x][contact_url_uuid]' value=\"".escape($row["contact_url_uuid"])."\">\n";
+		//echo "			<td class='formfld'>\n";
+		//echo "			<div class='label'>\n";
+		//echo "				".$text['label-url_type']."\n";
+		//echo "			</div>\n";
+		//echo "			<div class='field no-wrap'>\n";
+		//echo "					<input class='formfld' type='text' name='contact_urls[$x][url_type]' placeholder='".escape($text['label-url_type'])."' maxlength='255' value=\"".escape($row["url_type"])."\">\n";
+		//echo "			</div>\n";
+		echo "			<div class='label'>\n";
+		echo "				".$text['label-url_label']."\n";
+		echo "			</div>\n";
+		echo "			<div class='field no-wrap'>\n";;
+
+		//if there are no custom labels add defaults
+		if (!empty($_SESSION["contact"]["url_label"])) {
+			$contact_url_labels = $_SESSION["contact"]["url_label"];
+		}
+		else {
+			$contact_url_labels[] = $text['option-work'];
+			$contact_url_labels[] = $text['option-personal'];
+			$contact_url_labels[] = $text['option-other'];
+		}
+		sort($contact_url_labels);
+		foreach($contact_url_labels as $label) {
+			$url_label_options[] = "<option value='".$label."' ".(($label == $row['url_label']) ? "selected='selected'" : null).">".$label."</option>";
+		}
+		$url_label_found = (in_array($url_label, $contact_url_labels)) ? true : false;
+
+		echo "				<select class='formfld' ".((!empty($url_label) && !$url_label_found) ? "style='display: none;'" : "style='width: auto;'")." name='contact_urls[$x][url_label]' id='url_label' onchange=\"getElementById('url_label_custom').value='';\">\n";
+		echo "					<option value=''></option>\n";
+
+		echo 					(!empty($url_label_options)) ? implode("\n", $url_label_options) : null;
+		echo "				</select>\n";
+		echo "				<input type='text' class='formfld' ".((empty($url_label) || $url_label_found) ? "style='display: none;'" : null)." name='url_label_custom' id='url_label_custom' value=\"".((!$url_label_found) ? htmlentities($url_label ?? '') : null)."\">\n";
+		//echo "				<input type='button' id='btn_toggle_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('url_label');\">\n";
+		echo "			</div>\n";
+
+		echo "			<div class='label required'>\n";
+		echo "				".$text['label-url_address']."\n";
+		echo "			</div>\n";
+		echo "			<div class='field no-wrap'>\n";
+
+		echo "					<input class='formfld' type='text' name='contact_urls[$x][url_address]' placeholder='http://...' maxlength='255' value=\"".escape($row["url_address"])."\">\n";
+		echo "			</div>\n";
+
+		echo "			<div class='label'>\n";
+		echo "				".$text['label-primary']."\n";
+		echo "			</div>\n";
+		echo "			<div class='field no-wrap'>\n";
+		echo "				<select class='formfld' name='contact_urls[$x][url_primary]' style='width: auto;'>\n";
+		echo "					<option value=''></option>\n";
+		if ($row['url_primary'] == "1") {
+			echo "					<option value='1' selected='selected'>".$text['label-true']."</option>\n";
+		}
+		else {
+			echo "					<option value='1'>".$text['label-true']."</option>\n";
+		}
+		if ($row['url_primary'] == "0") {
+			echo "					<option value='0' selected='selected'>".$text['label-false']."</option>\n";
+		}
+		else {
+			echo "					<option value='0'>".$text['label-false']."</option>\n";
+		}
+		echo "				</select>\n";
+		echo "			</div>\n";
+
+		echo "			<div class='label'>\n";
+		echo "				".$text['label-url_description']."\n";
+		echo "			</div>\n";
+		echo "			<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_urls[$x][url_description]' placeholder='' maxlength='255' value=\"".escape($row["url_description"])."\">\n";
+		echo "			</div>\n";
+		if (!empty($contact_urls) && @sizeof($contact_urls) > 1 && permission_exists('contact_url_delete')) {
+			if (is_uuid($row['contact_url_uuid'])) {
+				echo "			<input type='checkbox' name='contact_urls[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n";
+			}
+		}
+		//echo "			<br />\n";
+		//echo "			".$text['description-contact_organization']."\n";
+		echo "			<div class='label empty_row' style='grid-row: 6 / span 99;'>\n";
+		echo "				&nbsp;\n";
+		echo "			</div>\n";
+		echo "			<div class='field empty_row' style='grid-row: 6 / span 99;'>\n";
+		echo "			</div>\n";
+		echo "	</div>\n";
+		$x++;
+	}
+}
+
+if (permission_exists('contact_relation_view')) {
+	if (!empty($contact_relations)) {
+
+		$x = 0;
+		foreach($contact_relations as $row) {
+
+			//get contact details and contact_name
+			$sql = "select contact_uuid, contact_organization, contact_name_given, contact_name_family, contact_nickname ";
+			$sql .= "from v_contacts ";
+			$sql .= "where domain_uuid = :domain_uuid ";
+			$sql .= "and contact_uuid <> :contact_uuid ";
+			$sql .= "order by contact_organization desc, contact_name_given asc, contact_name_family asc ";
+			$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+			$parameters['contact_uuid'] = $row['contact_uuid'];
+			$contacts = $database->select($sql, $parameters, 'all');
+			if (!empty($contacts) && is_uuid($row['relation_contact_uuid'])) {
+				foreach($contacts as $field) {
+					if ($field['contact_uuid'] == $row['relation_contact_uuid']) {
+						$name = array();
+						if (!empty($field['contact_organization'])) { $name[] = $field['contact_organization']; }
+						if (!empty($field['contact_name_family'])) { $name[] = $field['contact_name_family']; }
+						if (!empty($field['contact_name_given'])) { $name[] = $field['contact_name_given']; }
+						if (empty($field['contact_name_family']) && empty($field['contact_name_given']) && !empty($field['contact_nickname'])) { $name[] = $field['contact_nickname']; }
+						$contact_name = implode(', ', $name);
+						break;
+					}
+				}
+			}
+
+			echo "	<div class='form_set card'>\n";
+			echo "		<div class='heading'>\n";
+			echo "			<b style='float: left;'>".$text['label-contact_relation_label']."</b>\n";
+			if (permission_exists('contact_relation_delete')) {
+				echo "			<div class='checkbox' style='float: left; margin-top: 3px; margin-left: 8px;'>\n";
+				echo "				<input type='checkbox' name='contact_relations[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_relations' value='true' onclick=\"edit_delete_action('relations');\">\n";
+				echo "				<input type='hidden' name='contact_relations[$x][uuid]' value='".escape($row['contact_relation_uuid'])."' />\n";
+				echo "				<input type='hidden' name='contact_relations[$x][contact_relation_uuid]' value='".escape($row['contact_relation_uuid'])."' />\n";
+				echo "				<input type='hidden' name='contact_relations[$x][contact_uuid]' value='".escape($row['contact_uuid'])."' />\n";
+				echo "			</div>\n";
+			}
+			echo "			<div class='button no-link' style='float: left; margin-top: 1px; margin-left: 8px;'>\n";
+			echo "				<a href='contact_edit.php?id=".escape($row['relation_contact_uuid'])."' target='_blank'>\n";
+			echo "					<span class='fas fa-user-group' style='color: ".$body_text_color."; float: left; margin-top: 7px; margin-left: 3px;'></span>\n";
+			echo "				</a>\n";
+			echo "			</div>\n";
+			echo "		</div>\n";
+			echo "		<div style='clear: both;'></div>\n";
+
+			echo "		<div class='label required'>\n";
+			echo "			".$text['label-contact_relation_label']."\n";
+			echo "		</div>\n";
+			echo "		<div class='field no-wrap'>\n";
+
+
+			//if there are no custom labels add defaults
+			if (!empty($_SESSION["contact"]["relation_label"])) {
+				$relation_labels = $_SESSION["contact"]["url_label"];
+			}
+			else {
+				$relation_labels[] = $text['label-contact_relation_option_parent'];
+				$relation_labels[] = $text['label-contact_relation_option_child'];
+				$relation_labels[] = $text['label-contact_relation_option_employee'];
+				$relation_labels[] = $text['label-contact_relation_option_member'];
+				$relation_labels[] = $text['label-contact_relation_option_associate'];
+				$relation_labels[] = $text['label-contact_relation_option_other'];
+			}
+			sort($relation_labels);
+			foreach($relation_labels as $label) {
+				$relation_label_options[] = "<option value='".escape($label)."' ".(($label == $row['relation_label']) ? "selected='selected'" : null).">".escape($label)."</option>";
+			}
+			$relation_label_found = (in_array($relation_label, $relation_labels)) ? true : false;
+			echo "			<select class='formfld' ".((!empty($relation_label) && !$relation_label_found) ? "style='display: none;'" : "style='auto;'")." name='contact_relations[$x][relation_label]' id='relation_label' onchange=\"getElementById('relation_label_custom').value='';\">\n";
+			echo "				<option value=''></option>\n";
+			echo 		(!empty($relation_label_options)) ? implode("\n", $relation_label_options) : null;
+			echo "			</select>\n";
+			//echo "			<input type='text' class='formfld' ".((empty($relation_label) || $relation_label_found) ? "style='display: none;'" : null)." name='contact_relations[$x][relation_label_custom]' id='relation_label_custom' value=\"".((!$relation_label_found) ? htmlentities($relation_label ?? '') : null)."\">\n";
+			//echo "			<input type='button' id='btn_toggle_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('relation_label');\">\n";
+			//echo "			<br />\n";
+			//echo 				$text['description-relation_label']."\n";
+			echo "		</div>\n";
+
+			echo "		<div class='label required'>\n";
+			echo "			".$text['label-contact_relation_contact']."\n";
+			echo "		</div>\n";
+			echo "		<div class='field no-wrap'>\n";
+			echo "			<div id='contacts' class='field no-wrap' style=\"width: auto; display: inline;\">\n";
+			echo "				<input class=\"formfld\" type=\"text\" name=\"contact_search\" placeholder=\"".$text['label-search']."\" style=\"width: calc(30% - 5px);\" onkeyup=\"get_contacts('contact_select_".$x."', 'contact_uuid', this.value);\" maxlength=\"255\" value=\"\">\n";
+			echo "				<select class='formfld' style=\"width: 70%;\" id=\"contact_select_".$x."\" name=\"contact_relations[".$x."][relation_contact_uuid]\" >\n";
+			echo "					<option value='".escape($row['relation_contact_uuid'])."'>".escape($contact_name ?? '')."</option>\n";
+			echo "				</select>\n";
+			echo "			</div>\n";
+			echo "		</div>\n";
+
+			echo "		<div class='label empty_row' style='grid-row: 4 / span 99;'>\n";
+			echo "			&nbsp;\n";
+			echo "		</div>\n";
+			echo "		<div class='field no-wrap empty_row' style='grid-row: 4 / span 99;'>\n";
+			echo "		</div>\n";
+
+			echo "	</div>\n";
+			$x++;
+		}
+	}
+}
+
+if (permission_exists('contact_setting_view')) {
+	$x = 0;
+	foreach($contact_settings as $row) {
+		echo "	<div class='form_set card'>\n";
+		echo "		<div class='heading'>\n";
+		echo "			<b style='float: left;'>".$text['label-contact_settings']."</b>\n";
+		if (permission_exists('contact_setting_delete')) {
+			echo "			<div class='checkbox' style='float: left; margin-top: 3px; margin-left: 8px;'>\n";
+			echo "				<input type='checkbox' name='contact_settings[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_settings' value='true' onclick=\"edit_delete_action('settings');\">\n";
+			echo "				<input type='hidden' name='contact_settings[$x][uuid]' value='".escape($row['contact_setting_uuid'])."' />\n";
+			echo "			</div>\n";
+		}
+		echo "		</div>\n";
+		echo "		<div style='clear: both;'></div>\n";
+
+		echo "		<input type='hidden' name='contact_settings[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+		echo "		<input type='hidden' name='contact_settings[$x][contact_uuid]' value=\"".escape($row["contact_uuid"])."\">\n";
+		echo "		<input type='hidden' name='contact_settings[$x][contact_setting_uuid]' value=\"".escape($row["contact_setting_uuid"])."\">\n";
+
+		echo "		<div class='label required'>\n";
+		echo "			".$text['label-contact_setting_category']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_settings[$x][contact_setting_category]'  placeholder='' maxlength='255' value=\"".escape($row["contact_setting_category"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label required'>\n";
+		echo "			".$text['label-contact_setting_subcategory']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_settings[$x][contact_setting_subcategory]' placeholder='' maxlength='255' value=\"".escape($row["contact_setting_subcategory"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label required'>\n";
+		echo "			".$text['label-name']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_settings[$x][contact_setting_name]' placeholder='' maxlength='255' value=\"".escape($row["contact_setting_name"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-contact_setting_value']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_settings[$x][contact_setting_value]' placeholder='' maxlength='255' value=\"".escape($row["contact_setting_value"])."\">\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-order']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<select name='contact_settings[$x][contact_setting_order]' class='formfld'>\n";
+		echo "				<option value=''></option>\n";
+		$i=0;
+		while ($i<=999) {
+			$selected = ($i == $row["contact_setting_order"]) ? "selected='selected'" : null;
+			if (strlen($i) == 1) {
+				echo "				<option value='00$i' ".$selected.">00$i</option>\n";
+			}
+			if (strlen($i) == 2) {
+				echo "				<option value='0$i' ".$selected.">0$i</option>\n";
+			}
+			if (strlen($i) == 3) {
+				echo "				<option value='$i' ".$selected.">$i</option>\n";
+			}
+			$i++;
+		}
+		echo "			</select>\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label required'>\n";
+		echo "			".$text['label-enabled']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "			<select class='formfld' name='contact_settings[$x][contact_setting_enabled]' style='width: 5em;'>\n";
+		echo "				<option value=''><b>".escape($text['label-contact_setting_enabled'] ?? '')."</b></option>\n";
+		if ($row['contact_setting_enabled'] == "true") {
+			echo "				<option value='true' selected='selected'>".$text['label-true']."</option>\n";
+		}
+		else {
+			echo "				<option value='true'>".$text['label-true']."</option>\n";
+		}
+		if ($row['contact_setting_enabled'] == "false") {
+			echo "				<option value='false' selected='selected'>".$text['label-false']."</option>\n";
+		}
+		else {
+			echo "				<option value='false'>".$text['label-false']."</option>\n";
+		}
+		echo "			</select>\n";
+		echo "		</div>\n";
+
+		echo "		<div class='label'>\n";
+		echo "			".$text['label-description']."\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap'>\n";
+		echo "				<input class='formfld' type='text' name='contact_settings[$x][contact_setting_description]' placeholder='".escape($text['label-contact_setting_description'] ?? '')."' maxlength='255' value=\"".escape($row["contact_setting_description"])."\">\n";
+		echo "		</div>\n";
+
+		if (!empty($contact_settings) && @sizeof($contact_settings) > 1 && permission_exists('contact_setting_delete')) {
+			if (!empty($row['contact_setting_uuid']) && is_uuid($row['contact_setting_uuid'])) {
+				echo "		<div class='label'>\n";
+				echo "			".$text['label-enabled']."\n";
+				echo "		</div>\n";
+				echo "		<div class='field no-wrap'>\n";
+				echo "			<input type='checkbox' name='contact_settings[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n";
+				echo "		</div>\n";
+			}
+		}
+
+		echo "		<div class='label empty_row' style='grid-row: 9 / span 99;'>\n";
+		echo "			&nbsp;\n";
+		echo "		</div>\n";
+		echo "		<div class='field no-wrap empty_row' style='grid-row: 9 / span 99;'>\n";
+		echo "		</div>\n";
+
+		echo "	</div>\n";
+		$x++;
+	}
+}
+
+if (permission_exists('contact_attachment_view')) {
+	$x = 0;
+	foreach($contact_attachments as $row) {
+		$attachment_type = strtolower(pathinfo($row['attachment_filename'], PATHINFO_EXTENSION));
+		$attachment_type_label = $attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png' ? $text['label-image'] : $text['label-file'];
+		echo "<div class='form_set card'>\n";
+		echo "	<div class='heading'>\n";
+		echo " 		<b style='float: left;'>".$text['label-attachments']."</b>\n";
+		if (permission_exists('contact_attachment_delete')) {
+			echo "		<div class='checkbox' style='float: left; margin-top: 3px; margin-left: 8px;'>\n";
+			echo "			<input type='checkbox' name='contact_attachments[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_attachments' value='true' onclick=\"edit_delete_action('attachments');\">\n";
+			echo "			<input type='hidden' name='contact_attachments[$x][uuid]' value='".escape($row['contact_attachment_uuid'])."' />\n";
+			echo "			<input type='hidden' name='contact_attachments[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+			echo "			<input type='hidden' name='contact_attachments[$x][contact_attachment_uuid]' value='".escape($row['contact_attachment_uuid'])."' />\n";
+			echo "			<input type='hidden' name='contact_attachments[$x][contact_uuid]' value='".escape($row['contact_uuid'])."' />\n";
+			echo "		</div>\n";
+		}
+		echo "	</div>\n";
+		echo "		<div style='clear: both;'>\n";
+		if ($row['attachment_primary'] == "1") {
+			echo "		<i class='fa-solid fa-star fa-sm' style='color: ".$body_text_color."; float: right; margin-top: 7px; margin-left: 8px;' title=\"".$text['label-primary']."\"></i>\n";
+		}
+		echo "		</div>\n";
+
+		//script
+		echo "<script>\n";
+		echo "	function display_attachment(id) {\n";
+		echo "		$('#contact_attachment_layer').load('contact_attachment.php?id=' + id + '&action=display', function(){\n";
+		echo "			$('#contact_attachment_layer').fadeIn(200);\n";
+		echo "		});\n";
+		echo "	}\n";
+		echo "</script>\n";
+
+		echo "	<div class='label'>\n";
+		echo "		".$text['label-attachment']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap'>\n";
+		$attachment_type = strtolower(pathinfo($row['attachment_filename'], PATHINFO_EXTENSION));
+		//if ($action == 'update') {
+			echo "<input type='hidden' name='attachment_filename' value=\"".escape($row['attachment_filename'])."\">\n";
+			if ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png') {
+				echo "<img src='data:image/".$attachment_type.";base64,".escape($row['attachment_content'])."' style='border: none; cursor: pointer; width: 100%; height: auto;' onclick=\"display_attachment('".escape($row['contact_attachment_uuid'])."');\">";
+			}
+			else {
+				echo "<a href='contact_attachment.php?id=".escape($row['contact_attachment_uuid'])."&action=download' style='font-size: 120%;'>".escape($row['attachment_filename'])."</a>";
+			}
+		//}
+		//else {
+		//	$allowed_attachment_types = json_decode($_SESSION['contact']['allowed_attachment_types']['text'], true);
+		//	echo "	<input type='file' class='formfld' name='attachment' id='attachment' accept='.".implode(',.',array_keys($allowed_attachment_types))."'>\n";
+		//	echo "	<span style='display: inline-block; margin-top: 5px; font-size: 80%;'>".strtoupper(implode(', ', array_keys($allowed_attachment_types)))."</span>";
+		//}
+		echo "	</div>\n";
+
+		echo "	<div class='label'>\n";
+		echo "		".$text['label-attachment_filename']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap'>\n";
+		echo "		<a href='contact_attachment.php?id=".escape($row['contact_attachment_uuid'])."&action=download' style='font-size: 120%;'>".escape($row['attachment_filename'])."</a>";
+		echo "	</div>\n";
+
+		echo "	<div class='label'>\n";
+		echo "		".$text['label-attachment_size']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap'>\n";
+		echo 		strtoupper(byte_convert($row['attachment_size']))."\n";
+		echo "	</div>\n";
+
+		echo "	<div class='label'>\n";
+		echo "		".$text['label-primary']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap'>\n";
+		echo "		<select class='formfld' name='contact_attachments[$x][attachment_primary]' id='attachment_primary' style='width: auto;'>\n";
+		echo "			<option value='0'>".$text['option-false']."</option>\n";
+		echo "			<option value='1' ".(($row['attachment_primary']) ? "selected" : null).">".$text['option-true']."</option>\n";
+		echo "		</select>\n";
+		echo "	</div>\n";
+
+		echo "	<div class='label'>\n";
+		echo "		".$text['label-description']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap'>\n";
+		echo "		<input class='formfld' type='text' name='contact_attachments[$x][attachment_description]' maxlength='255' value=\"".escape($row['attachment_description'])."\">\n";
+		echo "	</div>\n";
+
+		echo "	<div class='label empty_row' style='grid-row: 9 / span 99;'>\n";
+		echo "		&nbsp;\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap empty_row' style='grid-row: 9 / span 99;'>\n";
+		echo "	</div>\n";
+
+		echo "</div>\n";
+		$x++;
+	}
+}
+
+if (permission_exists('contact_time_view')) {
+	$x = 0;
+	foreach ($contact_times as $row) {
+		echo "<div class='form_set card'>\n";
+		echo "	<div class='heading'>\n";
+		echo " 		<b style='float: left;'>".$text['header_contact_times']."</b>\n";
+		if (permission_exists('contact_time_delete')) {
+			echo "		<div class='checkbox' style='float: left; margin-top: 3px; margin-left: 8px;'>\n";
+			echo "			<input type='checkbox' name='contact_times[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_times' value='true' onclick=\"edit_delete_action('times');\">\n";
+			echo "			<input type='hidden' name='contact_times[$x][uuid]' value='".escape($row['contact_time_uuid'])."' />\n";
+			echo "			<input type='hidden' name='contact_times[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+			echo "			<input type='hidden' name='contact_times[$x][contact_time_uuid]' value='".escape($row['contact_time_uuid'])."' />\n";
+			echo "			<input type='hidden' name='contact_times[$x][contact_uuid]' value='".escape($row['contact_uuid'])."' />\n";
+			echo "		</div>\n";
+		}
+		echo "	</div>\n";
+		echo "	<div style='clear: both;'></div>\n";
+
+		echo "	<div class='label required'>\n";
+		echo "		".$text['label-time_start']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap'>\n";
+		echo "		<input class='formfld datetimesecpicker' data-toggle='datetimepicker' data-target='#time_start' type='text' name='contact_times[$x][time_start]' id='time_start' style='min-width: 135px; width: 135px;' value='".escape($row["time_start"])."' onblur=\"$(this).datetimepicker('hide');\">\n";
+		echo "	</div>\n";
+
+		echo "	<div class='label'>\n";
+		echo "		".$text['label-time_stop']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap'>\n";
+		echo "		<input class='formfld datetimesecpicker' data-toggle='datetimepicker' data-target='#time_stop' type='text' name='contact_times[$x][time_stop]' id='time_stop' style='min-width: 135px; width: 135px;' value='".escape($row["time_stop"])."' onblur=\"$(this).datetimepicker('hide');\">\n";
+		echo "	</div>\n";
+
+		echo "	<div class='label'>\n";
+		echo "		".$text['label-time_description']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap'>\n";
+		echo "  	<textarea class='formfld' type='text' name='contact_times[$x][time_description]' id='time_description' style='width: 100%; height: 100%;'>".escape($row["time_description"])."</textarea>\n";
+		echo "	</div>\n";
+
+		echo "	<div class='label empty_row' style='grid-row: 5 / span 99;'>\n";
+		echo "		&nbsp;\n";
+		echo "	</div>\n";
+		echo "	<div class='field empty_row' style='grid-row: 5 / span 99;'>\n";
+		echo "	</div>\n";
+
+		echo "</div>\n";
+		$x++;
+	}
+	unset($contact_times);
+}
+
+if (permission_exists('contact_note_view')) {
+	$x = 0;
+	foreach($contact_notes as $row) {
+		$contact_note = $row['contact_note'];
+		$contact_note = escape($contact_note);
+		$contact_note = str_replace("\n","<br />",$contact_note);
+		if (permission_exists('contact_note_add')) {
+			$list_row_url = "contact_note_edit.php?contact_uuid=".escape($row['contact_uuid'])."&id=".escape($row['contact_note_uuid']);
+		}
+
+		echo "<div class='form_set card'>\n";
+		echo "	<div class='heading'>\n";
+		echo "		<b style='float: left;'>".$text['label-contact_notes']."</b>\n";
+		if (permission_exists('contact_note_delete')) {
+			echo "		<div class='checkbox' style='float: left; margin-top: 3px; margin-left: 8px;'>\n";
+			echo "			<input type='checkbox' name='contact_notes[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_notes' value='true' onclick=\"edit_delete_action('notes');\">\n";
+			echo "			<input type='hidden' name='contact_notes[$x][uuid]' value='".escape($row['contact_note_uuid'])."' />\n";
+			echo "			<input type='hidden' name='contact_notes[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+			echo "			<input type='hidden' name='contact_notes[$x][contact_note_uuid]' value='".escape($row['contact_note_uuid'])."' />\n";
+			echo "			<input type='hidden' name='contact_notes[$x][contact_uuid]' value='".escape($row['contact_uuid'])."' />\n";
+			echo "		</div>\n";
+		}
+		echo "	</div>\n";
+		echo "	<div style='clear: both;'></div>\n";
+
+		echo "	<div class='label required'>\n";
+		echo "		".$text['label-contact_note']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap' style='float: left;'>\n";
+		echo "  	<textarea class='formfld' name=\"contact_notes[$x][contact_note]\" style='min-width: 100%; height: 275px;'>".$contact_note."</textarea>\n";
+		echo "	</div>\n";
+
+		echo "	<div class='label'>\n";
+		echo "		".$text['label-note_user']."\n";
+		echo "	</div>\n";
+		echo "	<div class='field no-wrap' style='margin-top: 2px;'>\n";
+		echo "		<div class='description'><strong>".escape($row['last_mod_user'])."</strong>: ".date("j M Y @ H:i:s", strtotime($row['last_mod_date']))."</div>\n";
+		echo "	</div>\n";
+
+		echo "	<div class='label empty_row' style='grid-row: 4 / span 99;'>\n";
+		echo "		&nbsp;\n";
+		echo "	</div>\n";
+		echo "	<div class='field empty_row' style='grid-row: 4 / span 99;'>\n";
+		echo "	</div>\n";
+
+		echo "</div>\n";
+		$x++;
+	}
+	unset($contact_notes);
+}
+
+//close the grid
+	echo "</div>\n";
+	echo "<br /><br />";
+
+//end the form
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 327 - 0
core/contacts/contact_email_edit.php

@@ -0,0 +1,327 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+	Luis Daniel Lucio Quiroz <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_email_edit') || permission_exists('contact_email_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//set the defaults
+	$email_label = '';
+	$email_address = '';
+	$email_description = '';
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$contact_email_uuid = $_REQUEST["id"];
+	}
+	else {
+		$action = "add";
+	}
+
+if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
+	$contact_uuid = $_GET["contact_uuid"];
+}
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+		$email_label = $_POST["email_label"];
+		$email_label_custom = $_POST["email_label_custom"];
+		$email_address = $_POST["email_address"];
+		$email_primary = $_POST["email_primary"];
+		$email_description = $_POST["email_description"];
+
+		//use custom label if set
+		$email_label = !empty($email_label_custom) ? $email_label_custom : $email_label;
+	}
+
+//process the form data
+	if (!empty($_POST) && empty($_POST["persistformvar"])) {
+
+		//set the uuid
+			if ($action == "update") {
+				$contact_email_uuid = $_POST["contact_email_uuid"];
+			}
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contacts.php');
+				exit;
+			}
+
+		//check for all required data
+			$msg = '';
+			if (!empty($msg) && empty($_POST["persistformvar"])) {
+				require_once "resources/header.php";
+				require_once "resources/persist_form_var.php";
+				echo "<div align='center'>\n";
+				echo "<table><tr><td>\n";
+				echo $msg."<br />";
+				echo "</td></tr></table>\n";
+				persistformvar($_POST);
+				echo "</div>\n";
+				require_once "resources/footer.php";
+				return;
+			}
+
+		//add or update the database
+			if (empty($_POST["persistformvar"])) {
+
+				//update last modified
+					$array['contacts'][0]['contact_uuid'] = $contact_uuid;
+					$array['contacts'][0]['domain_uuid'] = $domain_uuid;
+					$array['contacts'][0]['last_mod_date'] = 'now()';
+					$array['contacts'][0]['last_mod_user'] = $_SESSION['username'];
+
+					$p = new permissions;
+					$p->add('contact_edit', 'temp');
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+
+					$p->delete('contact_edit', 'temp');
+
+				//if primary, unmark other primary emails
+					if ($email_primary) {
+						$sql = "update v_contact_emails set email_primary = 0 ";
+						$sql .= "where domain_uuid = :domain_uuid ";
+						$sql .= "and contact_uuid = :contact_uuid ";
+						$parameters['domain_uuid'] = $domain_uuid;
+						$parameters['contact_uuid'] = $contact_uuid;
+						$database = new database;
+						$database->execute($sql, $parameters);
+						unset($sql, $parameters);
+					}
+
+				if ($action == "add" && permission_exists('contact_email_add')) {
+					$contact_email_uuid = uuid();
+					$array['contact_emails'][0]['contact_email_uuid'] = $contact_email_uuid;
+
+					message::add($text['message-add']);
+				}
+
+				if ($action == "update" && permission_exists('contact_email_edit')) {
+					$array['contact_emails'][0]['contact_email_uuid'] = $contact_email_uuid;
+
+					message::add($text['message-update']);
+				}
+
+				if (!empty($array)) {
+					$array['contact_emails'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
+					$array['contact_emails'][0]['contact_uuid'] = $contact_uuid;
+					$array['contact_emails'][0]['email_label'] = $email_label;
+					$array['contact_emails'][0]['email_address'] = $email_address;
+					$array['contact_emails'][0]['email_primary'] = $email_primary ? 1 : 0;
+					$array['contact_emails'][0]['email_description'] = $email_description;
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+				}
+
+				header("Location: contact_edit.php?id=".$contact_uuid);
+				exit;
+
+			}
+	}
+
+//pre-populate the form
+	if (!empty($_GET) && empty($_POST["persistformvar"])) {
+		$contact_email_uuid = $_GET["id"] ?? '';
+		$sql = "select * from v_contact_emails ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_email_uuid = :contact_email_uuid ";
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_email_uuid'] = $contact_email_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');;
+		if (!empty($row)) {
+			$email_label = $row["email_label"];
+			$email_address = $row["email_address"];
+			$email_primary = $row["email_primary"];
+			$email_description = $row["email_description"];
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	if ($action == "update") {
+		$document['title'] = $text['title-contact_email-edit'];
+	}
+	else if ($action == "add") {
+		$document['title'] = $text['title-contact_email-add'];
+	}
+	require_once "resources/header.php";
+
+//javascript to toggle input/select boxes
+	echo "<script type='text/javascript'>";
+	echo "	function toggle_custom(field) {";
+	echo "		$('#'+field).toggle();";
+	echo "		document.getElementById(field).selectedIndex = 0;";
+	echo "		document.getElementById(field+'_custom').value = '';";
+	echo "		$('#'+field+'_custom').toggle();";
+	echo "		if ($('#'+field+'_custom').is(':visible')) { $('#'+field+'_custom').trigger('focus'); } else { $('#'+field).trigger('focus'); }";
+	echo "	}";
+	echo "</script>";
+
+//show the content
+	echo "<form method='post' name='frm' id='frm'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'>";
+	if ($action == "update") {
+		echo "<b>".$text['header-contact_email-edit']."</b>";
+	}
+	else if ($action == "add") {
+		echo "<b>".$text['header-contact_email-add']."</b>";
+	}
+	echo "	</div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid ?? '')]);
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	if ($action == "update") {
+		echo $text['description-contact_email-edit'];
+	}
+	else if ($action == "add") {
+		echo $text['description-contact_email-add'];
+	}
+	echo "<br /><br />\n";
+
+	echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+	echo "<tr>\n";
+	echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-email_label']."\n";
+	echo "</td>\n";
+	echo "<td width='70%' class='vtable' align='left'>\n";
+	if (!empty($_SESSION["contact"]["email_label"])) {
+		sort($_SESSION["contact"]["email_label"]);
+		foreach($_SESSION["contact"]["email_label"] as $row) {
+			$email_label_options[] = "<option value='".$row."' ".(($row == $email_label) ? "selected='selected'" : null).">".$row."</option>";
+		}
+		$email_label_found = (in_array($email_label, $_SESSION["contact"]["email_label"])) ? true : false;
+	}
+	else {
+		$selected[$email_label] = "selected";
+		$default_labels[] = $text['option-work'];
+		$default_labels[] = $text['option-home'];
+		$default_labels[] = $text['option-other'];
+		foreach ($default_labels as $default_label) {
+			$email_label_options[] = "<option value='".$default_label."' ".!empty($selected[$default_label]).">".$default_label."</option>";
+		}
+		$email_label_found = (in_array($email_label, $default_labels)) ? true : false;
+	}
+	echo "	<select class='formfld' ".((!empty($email_label) && !$email_label_found) ? "style='display: none;'" : null)." name='email_label' id='email_label' onchange=\"getElementById('email_label_custom').value='';\">\n";
+	echo "		<option value=''></option>\n";
+	echo 		(!empty($email_label_options)) ? implode("\n", $email_label_options) : null;
+	echo "	</select>\n";
+	echo "	<input type='text' class='formfld' ".((empty($email_label) || $email_label_found) ? "style='display: none;'" : null)." name='email_label_custom' id='email_label_custom' value=\"".((!$email_label_found) ? htmlentities($email_label ?? '') : null)."\">\n";
+	echo "	<input type='button' id='btn_toggle_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('email_label');\">\n";
+	echo "<br />\n";
+	echo !empty($text['description-email_label'])."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-email_address']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='email_address' maxlength='255' value=\"".escape($email_address)."\">\n";
+	echo "<br />\n";
+	echo !empty($text['description-email_address'])."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-primary']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<select class='formfld' name='email_primary' id='email_primary'>\n";
+	echo "		<option value='0'>".$text['option-false']."</option>\n";
+	echo "		<option value='1' ".(!empty($email_primary) && $email_primary ? "selected" : null).">".$text['option-true']."</option>\n";
+	echo "	</select>\n";
+	echo "<br />\n";
+	echo $text['description-email_primary']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-email_description']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='email_description' maxlength='255' value=\"".escape($email_description)."\">\n";
+	echo "<br />\n";
+	echo !empty($text['description-email_description'])."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>";
+	echo "<br><br>";
+
+	echo "<input type='hidden' name='contact_uuid' value='".escape($contact_uuid ?? '')."'>\n";
+	if ($action == "update") {
+		echo "<input type='hidden' name='contact_email_uuid' value='".escape($contact_email_uuid)."'>\n";
+	}
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 112 - 0
core/contacts/contact_emails.php

@@ -0,0 +1,112 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_email_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set from session variables
+	$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
+
+//get the contact list
+	$sql = "select * from v_contact_emails ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by email_primary desc, email_label asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_emails = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_emails)) {
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".$text['label-emails']."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			if (permission_exists('contact_email_delete')) {
+				echo "	<th class='checkbox'>\n";
+				echo "		<input type='checkbox' id='checkbox_all_emails' name='checkbox_all' onclick=\"edit_all_toggle('emails');\" ".(!empty($contact_emails) ?: "style='visibility: hidden;'").">\n";
+				echo "	</th>\n";
+			}
+			echo "<th class='pct-15'>".$text['label-email_label']."</th>\n";
+			echo "<th>".$text['label-email_address']."</th>\n";
+			echo "<th class='hide-md-dn'>".$text['label-email_description']."</th>\n";
+			if (permission_exists('contact_email_edit') && $list_row_edit_button == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_emails)) {
+				$x = 0;
+				foreach ($contact_emails as $row) {
+					if (permission_exists('contact_email_edit')) {
+						$list_row_url = "contact_email_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_email_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."'>\n";
+					if (permission_exists('contact_email_delete')) {
+						echo "	<td class='checkbox'>\n";
+						echo "		<input type='checkbox' name='contact_emails[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_emails' value='true' onclick=\"edit_delete_action('emails');\">\n";
+						echo "		<input type='hidden' name='contact_emails[$x][uuid]' value='".escape($row['contact_email_uuid'])."' />\n";
+						echo "	</td>\n";
+					}
+					echo "	<td>".escape($row['email_label'])." ".($row['email_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+					echo "	<td class='no-link'><a href='mailto:".escape($row['email_address'])."'>".escape($row['email_address'])."</a>&nbsp;</td>\n";
+					echo "	<td class='description overflow hide-md-dn'>".escape($row['email_description'])."&nbsp;</td>\n";
+					if (permission_exists('contact_email_edit') && $list_row_edit_button == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+			}
+			unset($contact_emails);
+
+			echo "</table>";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 68 - 0
core/contacts/contact_emails_view.php

@@ -0,0 +1,68 @@
+<?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-2020
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_email_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the contact list
+	$sql = "select * from v_contact_emails ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by email_primary desc, email_label asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_emails = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_emails)) {
+
+		//show the content
+			echo "<div class='grid' style='grid-template-columns: 70px auto;'>\n";
+			$x = 0;
+			foreach ($contact_emails as $row) {
+				echo "<div class='box contact-details-label'>".($row['email_label'] == strtolower($row['email_label'] ?? '') ? ucwords($row['email_label'] ?? '') : $row['email_label'])."</div>\n";
+// 				($row['email_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+				echo "<div class='box'><a href='mailto:".escape($row['email_address'])."'>".escape($row['email_address'])."</a></div>\n";
+				$x++;
+			}
+			echo "</div>\n";
+			unset($contact_emails);
+
+	}
+
+?>

+ 111 - 0
core/contacts/contact_extensions.php

@@ -0,0 +1,111 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_extension_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set from session variables
+	$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
+
+//get the extension list
+	$sql = "select e.extension_uuid, e.extension, e.enabled, e.description ";
+	$sql .= "from v_extensions e, v_extension_users eu, v_users u ";
+	$sql .= "where e.extension_uuid = eu.extension_uuid ";
+	$sql .= "and u.user_uuid = eu.user_uuid ";
+	$sql .= "and e.domain_uuid = :domain_uuid ";
+	$sql .= "and u.contact_uuid = :contact_uuid ";
+	$sql .= "order by e.extension asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_extensions = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_extensions)) {
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".$text['label-contact_extensions']."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			echo "<th>".$text['label-extension']."</th>\n";
+			echo "<th class='center'>".$text['label-enabled']."</th>\n";
+			echo "<th class='hide-md-dn'>".$text['label-description']."</th>\n";
+			if (permission_exists('extension_edit') && $list_row_edit_button == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_extensions)) {
+				$x = 0;
+				foreach ($contact_extensions as $row) {
+					if (permission_exists('extension_edit')) {
+						$list_row_url = PROJECT_PATH.'/app/extensions/extension_edit.php?id='.urlencode($row['extension_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."' ".($row['url_primary'] ? "style='font-weight: bold;'" : null).">\n";
+					echo "	<td>";
+					if (permission_exists('extension_edit')) {
+						echo 	"<a href='".PROJECT_PATH."/app/extensions/extension_edit.php?id=".urlencode($row['extension_uuid'])."'>".escape($row['extension'])."</a>";
+					}
+					else {
+						echo $row['extension'];
+					}
+					echo "	</td>\n";
+					echo "	<td class='center'>".$text['label-'.escape($row['enabled'])]."&nbsp;</td>\n";
+					echo "	<td class='description overflow hide-md-dn'>".$row['description']."&nbsp;</td>\n";
+					if (permission_exists('extension_edit') && $list_row_edit_button == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+			}
+			unset($contact_extensions);
+
+			echo "</table>";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 90 - 0
core/contacts/contact_extensions_view.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-2020
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_extension_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the extension list
+	$sql = "select e.extension_uuid, e.extension, e.enabled, e.description ";
+	$sql .= "from v_extensions e, v_extension_users eu, v_users u ";
+	$sql .= "where e.extension_uuid = eu.extension_uuid ";
+	$sql .= "and u.user_uuid = eu.user_uuid ";
+	$sql .= "and e.domain_uuid = :domain_uuid ";
+	$sql .= "and u.contact_uuid = :contact_uuid ";
+	$sql .= "order by e.extension asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_extensions = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_extensions)) {
+
+		//javascript function: send_cmd
+			echo "<script type='text/javascript'>\n";
+			echo "function send_cmd(url) {\n";
+			echo "	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari\n";
+			echo "		xmlhttp=new XMLHttpRequest();\n";
+			echo "	}\n";
+			echo "	else {// code for IE6, IE5\n";
+			echo "		xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');\n";
+			echo "	}\n";
+			echo "	xmlhttp.open('GET',url,true);\n";
+			echo "	xmlhttp.send(null);\n";
+			echo "	document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;\n";
+			echo "}\n";
+			echo "</script>\n";
+
+		//show the content
+			echo "<div class='grid' style='grid-template-columns: 70px 100px auto;'>\n";
+			$x = 0;
+			foreach ($contact_extensions as $row) {
+				if ($row['enabled'] != 'true') { continue; } //skip disabled extensions
+				echo "<div class='box contact-details-label'>".$text['label-extension']."</div>\n";
+// 				($row['url_primary'] ? "style='font-weight: bold;'" : null).">\n";
+				echo "<div class='box'>";
+				echo button::create(['type'=>'button','class'=>'link','label'=>escape($row['extension']),'title'=>$text['label-click_to_call'],'onclick'=>"send_cmd('".PROJECT_PATH."/app/click_to_call/click_to_call.php?src_cid_name=".urlencode($row['extension'])."&src_cid_number=".urlencode($row['extension'])."&dest_cid_name=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_name'])."&dest_cid_number=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_number'])."&src=".urlencode($_SESSION['user']['extension'][0]['user'])."&dest=".urlencode($row['extension'])."&rec=false&ringback=us-ring&auto_answer=true');"]);
+				echo "</div>\n";
+				echo "<div class='box'>".$row['description']."</div>\n";
+				$x++;
+			}
+			echo "</div>\n";
+			unset($contact_extensions);
+
+	}
+
+?>

+ 535 - 0
core/contacts/contact_import.php

@@ -0,0 +1,535 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//connect to the database
+	$database = new database;
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//built in str_getcsv requires PHP 5.3 or higher, this function can be used to reproduct the functionality but requirs PHP 5.1.0 or higher
+	if (!function_exists('str_getcsv')) {
+		function str_getcsv($input, $delimiter = ",", $enclosure = '"', $escape = "\\") {
+			$fp = fopen("php://memory", 'r+');
+			fputs($fp, $input);
+			rewind($fp);
+			$data = fgetcsv($fp, null, $delimiter, $enclosure); // $escape only got added in 5.3.0
+			fclose($fp);
+			return $data;
+		}
+	}
+
+//set the max php execution time
+	ini_set('max_execution_time', 7200);
+
+//get the http get values and set them as php variables
+	$action = $_POST["action"] ?? '';
+	$from_row = $_POST["from_row"] ?? '';
+	$delimiter = $_POST["data_delimiter"] ?? '';
+	$enclosure = $_POST["data_enclosure"] ?? '';
+
+//save the data to the csv file
+	if (isset($_POST['data'])) {
+		$file = $_SESSION['server']['temp']['dir']."/contacts-".$_SESSION['domain_name'].".csv";
+		file_put_contents($file, $_POST['data']);
+		$_SESSION['file'] = $file;
+	}
+
+//copy the csv file
+	//$_POST['submit'] == "Upload" &&
+	if (!empty($_FILES['ulfile']['tmp_name']) && is_uploaded_file($_FILES['ulfile']['tmp_name']) && permission_exists('contact_upload')) {
+		if ($_POST['type'] == 'csv') {
+			move_uploaded_file($_FILES['ulfile']['tmp_name'], $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name']);
+			$save_msg = "Uploaded file to ".$_SESSION['server']['temp']['dir']."/". htmlentities($_FILES['ulfile']['name']);
+			//system('chmod -R 744 '.$_SESSION['server']['temp']['dir'].'*');
+			$file = $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name'];
+			$_SESSION['file'] = $file;
+		}
+	}
+
+//get the schema
+	if (!empty($delimiter)) {
+		//get the first line
+			$line = fgets(fopen($_SESSION['file'], 'r'));
+			$line_fields = explode($delimiter, $line);
+
+		//get the schema
+			$x = 0;
+			include "app/contacts/app_config.php";
+			$i = 0;
+			foreach ($apps[0]['db'] as $table) {
+				//get the table name and parent name
+				$table_name = $table["table"]['name'];
+				$parent_name = $table["table"]['parent'];
+
+				//remove the v_ table prefix
+				if (substr($table_name, 0, 2) == 'v_') {
+					$table_name = substr($table_name, 2);
+				}
+				if (substr($parent_name, 0, 2) == 'v_') {
+					$parent_name = substr($parent_name, 2);
+				}
+
+				//filter for specific tables and build the schema array
+				if ($table_name == "contacts" || $table_name == "contact_addresses" || 
+					$table_name == "contact_phones" || $table_name == "contact_emails" || 
+					$table_name == "contact_urls") {
+
+					$schema[$i]['table'] = $table_name;
+					$schema[$i]['parent'] = $parent_name;
+					foreach ($table['fields'] as $row) {
+						if (empty($row['deprecated']) || !empty($row['deprecated']) && $row['deprecated'] !== 'true') {
+							if (!empty($row['name']['text'])) {
+								$field_name = $row['name']['text'];
+							}
+							else {
+								$field_name = $row['name'];
+							}
+							$schema[$i]['fields'][] = $field_name;
+						}
+					}
+					$i++;
+				}
+			}
+			$schema[$i]['table'] = 'contact_groups';
+			$schema[$i]['parent'] = 'contacts';
+			$schema[$i]['fields'][] = 'group_name';
+			$i++;
+			$schema[$i]['table'] = 'contact_users';
+			$schema[$i]['parent'] = 'contacts';
+			$schema[$i]['fields'][] = 'username';
+	}
+
+//match the column names to the field names
+	if (!empty($delimiter) && file_exists($_SESSION['file']) && $action != 'import') {
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contact_import.php');
+				exit;
+			}
+
+		//create token
+			$object = new token;
+			$token = $object->create($_SERVER['PHP_SELF']);
+
+		//include header
+			$document['title'] = $text['title-contacts_import'];
+			require_once "resources/header.php";
+
+		//form to match the fields to the column names
+			echo "<form name='frmUpload' method='post' enctype='multipart/form-data'>\n";
+
+			echo "<div class='action_bar' id='action_bar'>\n";
+			echo "	<div class='heading'><b>".$text['header-contacts_import']."</b></div>\n";
+			echo "	<div class='actions'>\n";
+			echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_import.php']);
+			echo button::create(['type'=>'submit','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'id'=>'btn_save']);
+			echo "	</div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo $text['description-contacts_import']."\n";
+			echo "<br /><br />\n";
+
+			echo "<div class='card'>\n";
+			echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+			//define phone label options
+			if (!empty($_SESSION["contact"]["phone_label"])) {
+				sort($_SESSION["contact"]["phone_label"]);
+				foreach($_SESSION["contact"]["phone_label"] as $row) {
+					$label_options[] = "<option value='".$row.">".$row."</option>";
+				}
+			}
+			else {
+				$default_labels[] = $text['option-work'];
+				$default_labels[] = $text['option-home'];
+				$default_labels[] = $text['option-mobile'];
+				$default_labels[] = $text['option-main'];
+				$default_labels[] = $text['option-fax'];
+				$default_labels[] = $text['option-pager'];
+				$default_labels[] = $text['option-voicemail'];
+				$default_labels[] = $text['option-text'];
+				$default_labels[] = $text['option-other'];
+				foreach ($default_labels as $default_label) {
+					$label_options[] = "<option value='".$default_label."'>".$default_label."</option>";
+				}
+			}
+
+			//loop through user columns
+			$x = 0;
+			foreach ($line_fields as $line_field) {
+				$line_field = preg_replace('#[^a-zA-Z0-9_]#', '', $line_field);
+				echo "<tr>\n";
+				echo "	<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+				echo $line_field;
+				echo "	</td>\n";
+				echo "	<td width='70%' class='vtable' align='left'>\n";
+				echo "		<select class='formfld' style='' name='fields[$x]' onchange=\"document.getElementById('labels_$x').style.display = this.options[this.selectedIndex].value == 'contact_phones.phone_number' ? 'inline' : 'none';\">\n";
+				echo "			<option value=''></option>\n";
+				foreach($schema as $row) {
+					echo "			<optgroup label='".$row['table']."'>\n";
+					foreach($row['fields'] as $field) {
+						//if ($field == 'phone_label') { continue; }
+ 						//if ($field == 'contact_url') { continue; } // can remove this after field is removed from the table
+						$selected = '';
+						if ($field == $line_field) {
+							$selected = "selected='selected'";
+						}
+						if (substr($field, -5) != '_uuid') {
+							echo "				<option value='".$row['table'].".".$field."' ".$selected.">".$field."</option>\n";
+						}
+					}
+					echo "			</optgroup>\n";
+				}
+				echo "		</select>\n";
+				//echo "		<select class='formfld' style='display: none;' id='labels_$x' name='labels[$x]'>\n";
+				//echo 			is_array($label_options) ? implode("\n", $label_options) : null;
+				//echo "		</select>\n";
+				echo "	</td>\n";
+				echo "</tr>\n";
+				$x++;
+			}
+
+			echo "</table>\n";
+			echo "</div>\n";
+			echo "<br /><br />\n";
+
+			echo "<input name='action' type='hidden' value='import'>\n";
+			echo "<input name='from_row' type='hidden' value='$from_row'>\n";
+			echo "<input name='data_delimiter' type='hidden' value='$delimiter'>\n";
+			echo "<input name='data_enclosure' type='hidden' value='$enclosure'>\n";
+			echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+			echo "</form>\n";
+
+			require_once "resources/footer.php";
+
+		//normalize the column names
+			//$line = strtolower($line);
+			//$line = str_replace("-", "_", $line);
+			//$line = str_replace($delimiter."title".$delimiter, $delimiter."contact_title".$delimiter, $line);
+			//$line = str_replace("firstname", "name_given", $line);
+			//$line = str_replace("lastname", "name_family", $line);
+			//$line = str_replace("company", "organization", $line);
+			//$line = str_replace("company", "contact_email", $line);
+
+		//end the script
+			exit;
+	}
+
+//get the parent table
+	function get_parent($schema,$table_name) {
+		foreach ($schema as $row) {
+			if ($row['table'] == $table_name) {
+				return $row['parent'];
+			}
+		}
+	}
+
+//upload the csv
+	if (!empty($_SESSION['file']) && file_exists($_SESSION['file']) && $action == 'import') {
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contact_import.php');
+				exit;
+			}
+
+		//user selected fields, labels
+			$fields = $_POST['fields'] ?? [];
+			$labels = $_POST['labels'] ?? [];
+
+		//set the domain_uuid
+			$domain_uuid = $_SESSION['domain_uuid'];
+
+		//get the groups
+			$sql = "select * from v_groups where domain_uuid is null ";
+			$groups = $database->select($sql, null, 'all');
+			unset($sql);
+
+		//get the users
+			$sql = "select * from v_users where domain_uuid = :domain_uuid ";
+			$parameters['domain_uuid'] = $domain_uuid;
+			$users = $database->select($sql, $parameters, 'all');
+			unset($sql, $parameters);
+
+		//get the contents of the csv file and convert them into an array
+			$handle = @fopen($_SESSION['file'], "r");
+			if ($handle) {
+				//set the starting identifiers
+					$row_id = 0;
+					$row_number = 1;
+
+				//loop through the array
+					while (($line = fgets($handle, 4096)) !== false) {
+						if ($from_row <= $row_number) {
+							//format the data
+								$y = 0;
+								foreach ($fields as $key => $value) {
+									//get the line
+									$result = str_getcsv($line, $delimiter, $enclosure);
+
+									//get the table and field name
+									$field_array = explode(".",$value);
+									$table_name = $field_array[0];
+									$field_name = $field_array[1];
+									//echo "value: $value<br />\n";
+									//echo "table_name: $table_name<br />\n";
+									//echo "field_name: $field_name<br />\n";
+
+									//get the parent table name
+									$parent = get_parent($schema, $table_name);
+
+									//count the field names
+									if (isset($field_count[$table_name][$field_name])) {
+										$field_count[$table_name][$field_name]++;
+									}
+									else {
+										$field_count[$table_name][$field_name] = 0;
+									}
+
+									//set the ordinal ID
+									$id = $field_count[$table_name][$field_name];
+
+									//remove formatting from the phone number
+									if ($field_name == "phone_number") {
+										$result[$key] = preg_replace('{(?!^\+)[\D]}', '', $result[$key]);
+									}
+
+									//build the data array
+									if (!empty($table_name)) {
+										if (empty($parent)) {
+											$array[$table_name][$row_id]['domain_uuid'] = $domain_uuid;
+											$array[$table_name][$row_id][$field_name] = $result[$key];
+										}
+										else {
+											if ($field_name != "username" && $field_name != "group_name") {
+												$array[$parent][$row_id][$table_name][$id]['domain_uuid'] = $domain_uuid;
+												$array[$parent][$row_id][$table_name][$id][$field_name] = $result[$key];
+												//if ($field_name == 'phone_number') {
+												//	$array[$parent][$row_id][$table_name][$id]['phone_label'] = $labels[$key];
+												//}
+											}
+										}
+
+										if ($field_name == "group_name") {
+											foreach ($groups as $field) {
+												if ($field['group_name'] == $result[$key]) {
+													//$array[$parent][$row_id]['contact_group_uuid'] = uuid();
+													$array[$parent][$row_id]['contact_groups'][$id]['domain_uuid'] = $domain_uuid;
+													//$array['contact_groups'][$x]['contact_uuid'] = $row['contact_uuid'];
+													$array[$parent][$row_id]['contact_groups'][$id]['group_uuid'] = $field['group_uuid'];
+												}
+											}
+										}
+
+										if ($field_name == "username") {
+											foreach ($users as $field) {
+												if ($field['username'] == $result[$key]) {
+													//$array[$parent][$row_id]['contact_users'][$id]['contact_group_uuid'] = uuid();
+													$array[$parent][$row_id]['contact_users'][$id]['domain_uuid'] = $domain_uuid;
+													//$array['contact_groups'][$x]['contact_uuid'] = $row['contact_uuid'];
+													$array[$parent][$row_id]['contact_users'][$id]['user_uuid'] = $field['user_uuid'];
+												}
+											}
+										}
+									}
+									if (!empty($array[$parent][$row_id])) { $y++; }
+								}
+
+							//debug information
+								//view_array($field_count);
+
+							//process a chunk of the array
+								if ($row_id === 1000) {
+									//save to the data
+										$database->app_name = 'contacts';
+										$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+										$database->save($array);
+
+									//clear the array
+ 										unset($array);
+
+									//set the row id back to 0
+										$row_id = 0;
+								}
+
+						} //if ($from_row <= $row_number)
+						unset($field_count);
+						$row_number++;
+						$row_id++;
+					} //end while
+					fclose($handle);
+
+				//debug information
+					//view_array($array);
+
+				//save to the data
+					if (!empty($array)) {
+						$database->app_name = 'contacts';
+						$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+						$database->save($array);
+						unset($array);
+					}
+
+				//send the redirect header
+					header("Location: contacts.php");
+					exit;
+			}
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//include the header
+	$document['title'] = $text['title-contacts_import'];
+	require_once "resources/header.php";
+
+//show content
+	echo "<form name='frmUpload' method='post' enctype='multipart/form-data'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'><b>".$text['header-contacts_import']."</b></div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contacts.php']);
+	echo button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>$_SESSION['theme']['button_icon_upload'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	echo $text['description-contacts_import']."\n";
+	echo "<br /><br />\n";
+
+	echo "<div class='card'>\n";
+	echo "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
+
+	echo "<tr>\n";
+	echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "    ".$text['label-import_data']."\n";
+	echo "</td>\n";
+	echo "<td width='70%' class='vtable' align='left'>\n";
+	echo "    <textarea name='data' id='data' class='formfld' style='width: 100%; min-height: 150px;' wrap='off'></textarea>\n";
+	echo "<br />\n";
+	echo $text['description-import_data']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "    ".$text['label-from_row']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "		<select class='formfld' name='from_row'>\n";
+	$i=2;
+	while($i<=99) {
+		$selected = ($i == $from_row) ? "selected" : null;
+		echo "			<option value='$i' ".$selected.">$i</option>\n";
+		$i++;
+	}
+	echo "		</select>\n";
+	echo "<br />\n";
+	echo $text['description-from_row']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "    ".$text['label-import_delimiter']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "    <select class='formfld' style='width:40px;' name='data_delimiter'>\n";
+	echo "    <option value=','>,</option>\n";
+	echo "    <option value='|'>|</option>\n";
+	echo "    </select>\n";
+	echo "<br />\n";
+	echo $text['description-import_delimiter']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "    ".$text['label-import_enclosure']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "    <select class='formfld' style='width:40px;' name='data_enclosure'>\n";
+	echo "    <option value='\"'>\"</option>\n";
+	echo "    <option value=''></option>\n";
+	echo "    </select>\n";
+	echo "<br />\n";
+	echo $text['description-import_enclosure']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "			".$text['label-import_file_upload']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "			<input name='ulfile' type='file' class='formfld fileinput' id='ulfile'>\n";
+	echo "<br />\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>\n";
+	echo "</div>\n";
+	echo "<br />\n";
+
+	if (function_exists('curl_version') && !empty($_SESSION['contact']['google_oauth_client_id']['text']) && !empty($_SESSION['contact']['google_oauth_client_secret']['text'])) {
+		echo "<a href='contact_import_google.php'><img src='resources/images/icon_gcontacts.png' style='width: 21px; height: 21px; border: none; text-decoration: none; margin-right: 5px;' align='absmiddle'>".$text['header-contacts_import_google']."</a>\n";
+	}
+
+	echo "<br />\n";
+
+	echo "<input name='type' type='hidden' value='csv'>\n";
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 608 - 0
core/contacts/contact_import_google.php

@@ -0,0 +1,608 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+	require_once "resources/functions/google_get_groups.php";
+	require_once "resources/functions/google_get_contacts.php";
+
+//check permissions
+	if (permission_exists('contact_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//handle import
+if ($_POST['a'] == 'import') {
+	if (sizeof($_POST['group_id']) > 0) {
+		//get contact ids for those in the submitted groups
+		if (sizeof($_SESSION['contact_auth']['google']) > 0) {
+			foreach ($_SESSION['contact_auth']['google'] as $contact['id'] => $contact) {
+				foreach ($contact['groups'] as $contact_group['id'] => $meh) {
+					if (in_array($contact_group['id'], $_POST['group_id'])) {
+						$import_ids[] = $contact['id'];
+					}
+				}
+			}
+		}
+	}
+
+	if (sizeof($_POST['contact_id']) > 0) {
+		foreach ($_POST['contact_id'] as $contact_id) {
+			$import_ids[] = $contact_id;
+		}
+	}
+
+	//iterate selected contact ids, insert contact into database
+	$contacts_imported = 0;
+	$contacts_skipped = 0;
+	$contacts_replaced = 0;
+
+	if (sizeof($import_ids) > 0) {
+
+		$import_ids = array_unique($import_ids);
+		foreach ($import_ids as $index_1 => $contact_id) {
+
+			//check for duplicate contact (already exists, previously imported, etc)
+			$sql = "select contact_uuid from v_contact_settings ";
+			$sql .= "where domain_uuid = :domain_uuid ";
+			$sql .= "and contact_setting_category = 'google' ";
+			$sql .= "and contact_setting_subcategory = 'id' ";
+			$sql .= "and contact_setting_value = :contact_setting_value ";
+			$sql .= "and contact_setting_enabled = 'true' ";
+			$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+			$parameters['contact_setting_value'] = $contact_id;
+			$database = new database;
+			$result = $database->select($sql, $parameters, 'row');
+			if (is_uuid($result['contact_uuid'])) {
+				$duplicate_exists = true;
+				$duplicate_contact_uuid = $result['contact_uuid'];
+			}
+			else {
+				$duplicate_exists = false;
+			}
+			unset($sql, $parameters, $result);
+
+			//skip importing contact
+			if ($duplicate_exists && $_POST['import_duplicates'] == 'skip') {
+				$contacts_skipped++;
+				continue;
+			}
+			//replace contact (delete before inserts below)
+			else if ($duplicate_exists && $_POST['import_duplicates'] == 'replace') {
+				//build array
+					$array[0]['checked'] = 'true';
+					$array[0]['uuid'] = $duplicate_contact_uuid;
+					unset($duplicate_contact_uuid);
+
+				//grant temporary permissions
+					$p = new permissions;
+					$p->add('contact_delete', 'temp');
+
+				//delete duplicate contact
+					$obj = new contacts;
+					$obj->delete($array);
+					unset($array);
+
+				//revoke temporary permissions
+					$p->delete('contact_delete', 'temp');
+
+				//increase counter
+					$contacts_replaced++;
+			}
+
+			//extract contact record from array using contact id
+			$contact = $_SESSION['contact_auth']['google'][$contact_id];
+
+			//insert contact
+			$contact_uuid = uuid();
+			$array['contacts'][$index_1]['domain_uuid'] = $_SESSION['domain_uuid'];
+			$array['contacts'][$index_1]['contact_uuid'] = $contact_uuid;
+			$array['contacts'][$index_1]['contact_type'] = $_POST['import_type'];
+			$array['contacts'][$index_1]['contact_organization'] = $contact['organization'];
+			$array['contacts'][$index_1]['contact_name_prefix'] = $contact['name_prefix'];
+			$array['contacts'][$index_1]['contact_name_given'] = $contact['name_given'];
+			$array['contacts'][$index_1]['contact_name_middle'] = $contact['name_middle'];
+			$array['contacts'][$index_1]['contact_name_family'] = $contact['name_family'];
+			$array['contacts'][$index_1]['contact_name_suffix'] = $contact['name_suffix'];
+			$array['contacts'][$index_1]['contact_nickname'] = $contact['nickname'];
+			$array['contacts'][$index_1]['contact_title'] = $contact['title'];
+			$array['contacts'][$index_1]['contact_category'] = $_POST['import_category'];
+			$array['contacts'][$index_1]['contact_note'] = $contact['notes'];
+
+			//set sharing
+			if ($_POST['import_shared'] != 'true') {
+				$contact_group_uuid = uuid();
+				$array['contact_groups'][$index_1]['contact_group_uuid'] = $contact_group_uuid;
+				$array['contact_groups'][$index_1]['domain_uuid'] = $_SESSION['domain_uuid'];
+				$array['contact_groups'][$index_1]['contact_uuid'] = $contact_uuid;
+				$array['contact_groups'][$index_1]['group_uuid'] = $_SESSION["user_uuid"];
+			}
+
+			//insert emails
+			if (!empty($contact['emails']) && $_POST['import_fields']['email']) {
+				foreach ($contact['emails'] as $index_2 => $contact_email) {
+					$contact_email_uuid = uuid();
+					$array['contact_emails'][$index_2]['domain_uuid'] = $_SESSION['domain_uuid'];
+					$array['contact_emails'][$index_2]['contact_uuid'] = $contact_uuid;
+					$array['contact_emails'][$index_2]['contact_email_uuid'] = $contact_email_uuid;
+					$array['contact_emails'][$index_2]['email_label'] = $contact_email['label'];
+					$array['contact_emails'][$index_2]['email_address'] = $contact_email['address'];
+					$array['contact_emails'][$index_2]['email_primary'] = $contact_email['primary'] ? 1 : 0;
+				}
+			}
+
+			//insert numbers
+			if (!empty($contact['numbers']) && $_POST['import_fields']['number']) {
+				foreach ($contact['numbers'] as $index_3 => $contact_number) {
+					$contact_phone_uuid = uuid();
+					$array['contact_phones'][$index_3]['domain_uuid'] = $domain_uuid;
+					$array['contact_phones'][$index_3]['contact_uuid'] = $contact_uuid;
+					$array['contact_phones'][$index_3]['contact_phone_uuid'] = $contact_phone_uuid;
+					$array['contact_phones'][$index_3]['phone_type_voice'] = substr_count(strtoupper($contact_number['label']), strtoupper($text['label-fax'])) == 0 ? 1 : null;
+					$array['contact_phones'][$index_3]['phone_type_fax'] = substr_count(strtoupper($contact_number['label']), strtoupper($text['label-fax'])) != 0 ? 1 : null;
+					$array['contact_phones'][$index_3]['phone_label'] = $contact_number['label'];
+					$array['contact_phones'][$index_3]['phone_number'] = $contact_number['number'];
+					$array['contact_phones'][$index_3]['phone_primary'] = @sizeof($contact['numbers']) == 1 ? 1 : 0;
+				}
+			}
+
+			//insert urls
+			if (!empty($contact['urls']) && $_POST['import_fields']['url']) {
+				foreach ($contact['urls'] as $index_4 => $contact_url) {
+					$contact_url_uuid = uuid();
+					$array['contact_urls'][$index_4]['domain_uuid'] = $_SESSION['domain_uuid'];
+					$array['contact_urls'][$index_4]['contact_uuid'] = $contact_uuid;
+					$array['contact_urls'][$index_4]['contact_url_uuid'] = $contact_url_uuid;
+					$array['contact_urls'][$index_4]['url_label'] = $contact_url['label'];
+					$array['contact_urls'][$index_4]['url_address'] = $contact_url['url'];
+					$array['contact_urls'][$index_4]['url_primary'] = @sizeof($contact['urls']) == 1 ? 1 : 0;
+				}
+			}
+
+			//insert addresses
+			if (!empty($contact['addresses']) && $_POST['import_fields']['address']) {
+				foreach ($contact['addresses'] as $index_5 => $contact_address) {
+					$contact_address_uuid = uuid();
+					$array['contact_addresses'][$index_5]['domain_uuid'] = $_SESSION['domain_uuid'];
+					$array['contact_addresses'][$index_5]['contact_uuid'] = $contact_uuid;
+					$array['contact_addresses'][$index_5]['contact_address_uuid'] = $contact_address_uuid;
+					if (substr_count(strtoupper($contact_address['label']), strtoupper($text['option-home'])) != 0) {
+						$array['contact_addresses'][$index_5]['address_type'] = 'home';
+					}
+					else if (substr_count(strtoupper($contact_address['label']), strtoupper($text['option-work'])) != 0) {
+						$array['contact_addresses'][$index_5]['address_type'] = 'work';
+					}
+					else {
+						$array['contact_addresses'][$index_5]['address_type'] = null;
+					}
+					$array['contact_addresses'][$index_5]['address_label'] = $contact_address['label'];
+					$array['contact_addresses'][$index_5]['address_street'] = $contact_address['street'];
+					$array['contact_addresses'][$index_5]['address_extended'] = $contact_address['extended'];
+					$array['contact_addresses'][$index_5]['address_community'] = $contact_address['community'];
+					$array['contact_addresses'][$index_5]['address_locality'] = $contact_address['locality'];
+					$array['contact_addresses'][$index_5]['address_region'] = $contact_address['region'];
+					$array['contact_addresses'][$index_5]['address_postal_code'] = $contact_address['postal_code'];
+					$array['contact_addresses'][$index_5]['address_country'] = $contact_address['country'];
+					$array['contact_addresses'][$index_5]['address_primary'] = @sizeof($contact['addresses']) == 1 ? 1 : 0;
+				}
+			}
+
+			//add google contact id, etag and updated date to contact settings
+			$contact['updated'] = str_replace('T', ' ', $contact['updated']);
+			$contact['updated'] = str_replace('Z', '', $contact['updated']);
+			$contact_setting_columns = array('contact_setting_category', 'contact_setting_subcategory', 'contact_setting_name', 'contact_setting_value', 'contact_setting_order', 'contact_setting_enabled');
+			$contact_setting_array[] = array('sync', 'source', 'array', 'google', 0, 'true');
+			$contact_setting_array[] = array('google', 'id', 'text', $contact_id, 0, 'true');
+			$contact_setting_array[] = array('google', 'updated', 'date', $contact['updated'], 0, 'true');
+			$contact_setting_array[] = array('google', 'etag', 'text', $contact['etag'], 0, 'true');
+			foreach ($contact_setting_array as $index_6 => $values) {
+				$contact_setting_uuid = uuid();
+				$array['contact_settings'][$index_6]['contact_setting_uuid'] = $contact_setting_uuid;
+				$array['contact_settings'][$index_6]['contact_uuid'] = $contact_uuid;
+				$array['contact_settings'][$index_6]['domain_uuid'] = $_SESSION['domain_uuid'];
+				foreach ($values as $index_7 => $value) {
+					foreach ($contact_setting_columns as $column) {
+						$array['contact_settings'][$index_6][$contact_setting_columns[$index_7]] = $value;
+					}
+				}
+			}
+			unset($contact_setting_columns, $contact_setting_array);
+
+			//insert records
+			$database = new database;
+			$database->app_name = 'contacts';
+			$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+			$database->save($array);
+			unset($array);
+
+			//increment counter
+			$contacts_imported++;
+
+		}
+
+		$message = $text['message-contacts_imported']." ".$contacts_imported;
+		if ($contacts_replaced > 0) { $message .= " (".$text['message_contacts_imported_replaced']." ".$contacts_replaced.")"; }
+		if ($contacts_skipped > 0) { $message .= ", ".$text['message_contacts_imported_skipped']." ".$contacts_skipped; }
+		message::add($message);
+		header("Location: contacts.php");
+		exit;
+
+	}
+	else {
+
+		// no contacts imported
+		message::add($text['message-contacts_imported']." ".$contacts_imported, 'negative');
+
+	}
+}
+
+//*******************************************************************************************
+
+//check if authenticated
+if (empty($_SESSION['contact_auth']['token'])) {
+	$_SESSION['contact_auth']['referer'] = substr($_SERVER["HTTP_REFERER"], strrpos($_SERVER["HTTP_REFERER"],'/')+1);
+	header("Location: contact_auth.php?source=google&target=".substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"],'/')+1));
+	exit;
+}
+
+unset($_SESSION['contact_auth']['source'], $_SESSION['contact_auth']['target']);
+
+//get groups & contacts
+$groups = google_get_groups($_SESSION['contact_auth']['token']);
+$contacts = google_get_contacts($_SESSION['contact_auth']['token'], 1000);
+
+//store in session variable for use on import
+$_SESSION['contact_auth']['google'] = $contacts;
+
+//include the header
+$document['title'] = $text['title-contacts_import_google'];
+require_once "resources/header.php";
+
+echo "<table cellpadding='0' cellspacing='0' border='0' align='right'>";
+echo "	<tr>";
+echo "		<td style='text-align: right;'>";
+echo "			<input type='button' class='btn' id='btn_back' onclick=\"document.location.href='contact_import.php';\" value=\"".$text['button-back']."\">";
+echo "			<input type='button' class='btn' id='btn_refresh' onclick='document.location.reload();' value=\"".$text['button-reload']."\">";
+echo "			<input type='button' class='btn' id='btn_signout' onclick=\"document.location.href='contact_auth.php?source=google&signout'\" value=\"".$text['button-sign_out']."\">";
+echo "		</td>";
+echo "	</tr>";
+echo "	<tr>";
+echo "		<td style='text-align: right; white-space: nowrap; padding-top: 8px;'><span style='font-weight: bold; color: #000;'>".$_SESSION['contact_auth']['name']."</a> (<a href='https://www.google.com/contacts/#contacts' target='_blank'>".$_SESSION['contact_auth']['email']."</a>)"."</td>";
+echo "	</tr>";
+echo "</table>";
+echo "<b>".$text['header-contacts_import_google']."</b>";
+echo "<br><br>";
+echo $text['description-contacts_import_google'];
+echo "<br><br><br>";
+
+$row_style["0"] = "row_style0";
+$row_style["1"] = "row_style1";
+
+echo "<form name='frm_import' id='frm_import' method='post'>\n";
+echo "<input type='hidden' name='a' value='import'>\n";
+
+echo "<div class='card'>\n";
+echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+echo "<tr>\n";
+echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+echo "	".$text['label-import_fields']."\n";
+echo "</td>\n";
+echo "<td width='70%' class='vtable' align='left'>\n";
+echo "	<input type='checkbox' disabled='disabled' checked>&nbsp;".$text['label-contact_name']."&nbsp;\n";
+echo "	<input type='checkbox' disabled='disabled' checked>&nbsp;".$text['label-contact_organization']."&nbsp;\n";
+echo "	<input type='checkbox' name='import_fields[email]' id='field_email' value='1' checked><label for='field_email'>&nbsp;".$text['label-contact_email']."</label>&nbsp;\n";
+echo "	<input type='checkbox' name='import_fields[number]' id='field_number' value='1' checked><label for='field_number'>&nbsp;".$text['label-phone_number']."</label>&nbsp;\n";
+echo "	<input type='checkbox' name='import_fields[url]' id='field_url' value='1' checked><label for='field_url'>&nbsp;".$text['label-contact_url']."</label>&nbsp;\n";
+echo "	<input type='checkbox' name='import_fields[address]' id='field_address' value='1' checked><label for='field_address'>&nbsp;".$text['label-address_address']."</label>\n";
+echo "<br />\n";
+echo $text['description-import_fields']."\n";
+echo "</td>\n";
+echo "</tr>\n";
+
+echo "<tr>\n";
+echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+echo "	".$text['label-contact_type']."\n";
+echo "</td>\n";
+echo "<td class='vtable' align='left'>\n";
+if (!empty($_SESSION["contact"]["type"])) {
+	sort($_SESSION["contact"]["type"]);
+	echo "	<select class='formfld' name='import_type'>\n";
+	echo "		<option value=''></option>\n";
+	foreach($_SESSION["contact"]["type"] as $row) {
+		echo "	<option value='".$row."'>".$row."</option>\n";
+	}
+	echo "	</select>\n";
+}
+else {
+	echo "	<select class='formfld' name='import_type'>\n";
+	echo "		<option value=''></option>\n";
+	echo "		<option value='customer'>".$text['option-contact_type_customer']."</option>\n";
+	echo "		<option value='contractor'>".$text['option-contact_type_contractor']."</option>\n";
+	echo "		<option value='friend'>".$text['option-contact_type_friend']."</option>\n";
+	echo "		<option value='lead'>".$text['option-contact_type_lead']."</option>\n";
+	echo "		<option value='member'>".$text['option-contact_type_member']."</option>\n";
+	echo "		<option value='family'>".$text['option-contact_type_family']."</option>\n";
+	echo "		<option value='subscriber'>".$text['option-contact_type_subscriber']."</option>\n";
+	echo "		<option value='supplier'>".$text['option-contact_type_supplier']."</option>\n";
+	echo "		<option value='provider'>".$text['option-contact_type_provider']."</option>\n";
+	echo "		<option value='user'>".$text['option-contact_type_user']."</option>\n";
+	echo "		<option value='volunteer'>".$text['option-contact_type_volunteer']."</option>\n";
+	echo "	</select>\n";
+}
+echo "<br />\n";
+echo $text['description-contact_type_import']."\n";
+echo "</td>\n";
+echo "</tr>\n";
+
+echo "<tr>\n";
+echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+echo "	".$text['label-contact_category']."\n";
+echo "</td>\n";
+echo "<td class='vtable' align='left'>\n";
+if (!empty($_SESSION["contact"]["category"])) {
+	sort($_SESSION["contact"]["category"]);
+	echo "	<select class='formfld' name='import_category'>\n";
+	echo "		<option value=''></option>\n";
+	foreach($_SESSION["contact"]["category"] as $row) {
+		echo "	<option value='".$row."'>".$row."</option>\n";
+	}
+	echo "	</select>\n";
+}
+else {
+	echo "	<input class='formfld' type='text' name='import_category' maxlength='255'>\n";
+}
+echo "<br />\n";
+echo $text['description-contact_category_import']."\n";
+echo "</td>\n";
+echo "</tr>\n";
+
+echo "<tr>\n";
+echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+echo "	".$text['label-shared']."\n";
+echo "</td>\n";
+echo "<td class='vtable' align='left'>\n";
+echo "	<select class='formfld' name='import_shared' id='import_shared'>\n";
+echo "		<option value='false'>".$text['option-false']."</option>\n";
+echo "		<option value='true'>".$text['option-true']."</option>\n";
+echo "	</select>\n";
+echo "	<br />\n";
+echo $text['description-shared_import']."\n";
+echo "</td>\n";
+echo "</tr>\n";
+
+echo "<tr>\n";
+echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+echo "    ".$text['label-import_duplicates']."\n";
+echo "</td>\n";
+echo "<td class='vtable' align='left'>\n";
+echo "    <select class='formfld' style='width: 150px;' name='import_duplicates'>\n";
+echo "    <option value='skip'>".$text['option-import_duplicates_skip']."</option>\n";
+echo "    <option value='replace'>".$text['option-import_duplicates_replace']."</option>\n";
+echo "    </select>\n";
+echo "<br />\n";
+echo $text['description-import_duplicates']."\n";
+echo "</td>\n";
+echo "</tr>\n";
+
+echo "</table>";
+echo "<br><br>";
+
+//display groups
+echo "<b>".$text['label-groups']."</b>";
+echo "<br><br>";
+
+echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+echo "<tr>\n";
+echo "	<th style='width: 30px; text-align: center; padding: 0px;'>&nbsp;</th>";
+echo "	<th>".$text['label-contact_name']."</th>\n";
+echo "</tr>\n";
+
+//determine contact count in groups
+foreach ($contacts as $contact) {
+	foreach ($contact['groups'] as $group_id => $meh) {
+		$groups[$group_id]['count']++;
+	}
+}
+
+$c = 0;
+foreach ($groups as $group['id'] => $group) {
+	if ($group['count'] > 0) {
+		echo "<tr>\n";
+		echo "	<td valign='top' class='".$row_style[$c]."' style='text-align: center; padding: 3px 0px 0px 0px;'><input type='checkbox' name='group_id[]' id='group_id_".$group['id']."' value='".$group['id']."'></td>\n";
+		echo "	<td valign='top' class='".$row_style[$c]."' onclick=\"document.getElementById('group_id_".$group['id']."').checked = (document.getElementById('group_id_".$group['id']."').checked) ? false : true;\">".$group['name']." (".$group['count'].")</td>\n";
+		echo "</tr>\n";
+		$c=($c)?0:1;
+	}
+}
+echo "</table>\n";
+echo "<br>";
+
+echo "<div style='text-align: right;'><input type='submit' class='btn' id='btn_submit' value=\"".$text['button-import']."\"></div>";
+
+echo "<br>";
+
+//display contacts
+echo "<b>".$text['header-contacts']."</b>";
+echo "<br><br>";
+
+echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+echo "<tr>\n";
+echo "	<th style='width: 30px; text-align: center; padding: 0px;'><input type='checkbox' onchange=\"(this.checked) ? check('all') : check('none');\"></th>";
+echo "	<th>".$text['label-contact_name']."</th>\n";
+echo "	<th>".$text['label-contact_organization']."</th>\n";
+echo "	<th>".$text['label-contact_email']."</th>\n";
+echo "	<th>".$text['label-phone_number']."</th>\n";
+echo "	<th>".$text['label-contact_url']."</th>\n";
+echo "	<th>".$text['label-address_address']."</th>\n";
+echo "	<th>".$text['label-group']."</th>\n";
+echo "</tr>\n";
+$c = 0;
+foreach ($contacts as $contact['id'] => $contact) {
+	$contact_ids[] = $contact['id'];
+	echo "<tr>\n";
+	echo "	<td valign='top' class='".$row_style[$c]."' style='text-align: center; padding: 3px 0px 0px 0px;'><input type='checkbox' name='contact_id[]' id='contact_id_".$contact['id']."' value='".$contact['id']."'></td>\n";
+	echo "	<td valign='top' class='".$row_style[$c]."' onclick=\"document.getElementById('contact_id_".$contact['id']."').checked = (document.getElementById('contact_id_".$contact['id']."').checked) ? false : true;\">";
+	$contact_name[] = $contact['name_prefix'];
+	$contact_name[] = $contact['name_given'];
+	$contact_name[] = $contact['name_middle'];
+	$contact_name[] = $contact['name_family'];
+	$contact_name[] = $contact['name_suffix'];
+	echo "		".implode(' ', $contact_name)."&nbsp;";
+	unset($contact_name);
+	echo "	</td>\n";
+	echo "	<td valign='top' class='".$row_style[$c]."' style='max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'>";
+	echo "		".(($contact['title']) ? $contact['title']."<br>" : null).$contact['organization']."&nbsp;";
+	echo "	</td>\n";
+	echo "	<td valign='top' class='".$row_style[$c]."' style='width: 15%; max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'>";
+	if (sizeof($contact['emails']) > 0) {
+ 		foreach ($contact['emails'] as $contact_email) {
+ 			$contact_emails[] = "<span style='font-size: 80%;'>".$contact_email['label'].":</span> <a href='mailto: ".$contact_email['address']."'>".$contact_email['address']."</a>";
+ 		}
+		echo implode('<br>', $contact_emails);
+		unset($contact_emails);
+	} else { echo "&nbsp;"; }
+	echo "	</td>\n";
+	echo "	<td valign='top' class='".$row_style[$c]."' style='width: 15%; max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'>";
+	if (sizeof($contact['numbers']) > 0) {
+		foreach ($contact['numbers'] as $contact_number) {
+			$contact_number_part = "<span style='font-size: 80%;'>".$contact_number['label'].":</span> ";
+			if (substr_count(strtoupper($contact_number['label']), 'FAX') == 0) {
+				$contact_number_part .= "<a href='javascript:void(0);' onclick=\"send_cmd('".PROJECT_PATH."/app/click_to_call/click_to_call.php?src_cid_name=".urlencode($contact_number['number'])."&src_cid_number=".urlencode($contact_number['number'])."&dest_cid_name=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_name'])."&dest_cid_number=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_number'])."&src=".urlencode($_SESSION['user']['extension'][0]['user'])."&dest=".urlencode($contact_number['number'])."&rec=false&ringback=us-ring&auto_answer=true');\">";
+			}
+			$contact_number_part .= format_phone($contact_number['number']);
+			if (substr_count(strtoupper($contact_number['label']), 'FAX') == 0) {
+				$contact_number_part .= "</a>";
+			}
+			$contact_numbers[] = $contact_number_part;
+			unset($contact_number_part);
+		}
+		echo implode('<br>', $contact_numbers);
+		unset($contact_numbers);
+	} else { echo "&nbsp;"; }
+	echo "	</td>\n";
+	echo "	<td valign='top' class='".$row_style[$c]."' style='width: 15%; max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'>";
+	if (sizeof($contact['urls']) > 0) {
+		foreach ($contact['urls'] as $contact_url) {
+			$contact_urls[] = "<span style='font-size: 80%;'>".$contact_url['label'].":</span> <a href='".$contact_url['url']."' target='_blank'>".str_replace("http://", "", str_replace("https://", "", $contact_url['url']))."</a>";
+		}
+		echo implode('<br>', $contact_urls);
+		unset($contact_urls);
+	} else { echo "&nbsp;"; }
+	echo "	</td>\n";
+	echo "	<td valign='top' class='".$row_style[$c]."' style='width: 15%; max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'>";
+	if (sizeof($contact['addresses']) > 0) {
+		foreach ($contact['addresses'] as $contact_address) {
+			if ($contact_address['street'] != '') { $contact_address_parts[] = $contact_address['street']; }
+			if ($contact_address['extended'] != '') { $contact_address_parts[] = $contact_address['extended']; }
+			if ($contact_address['community'] != '') { $contact_address_parts[] = $contact_address['community']; }
+			if ($contact_address['locality'] != '') { $contact_address_parts[] = $contact_address['locality']; }
+			if ($contact_address['region'] != '') { $contact_address_parts[] = $contact_address['region']; }
+			if ($contact_address['postal_code'] != '') { $contact_address_parts[] = $contact_address['postal_code']; }
+			if ($contact_address['country'] != '') { $contact_address_parts[] = $contact_address['country']; }
+			$contact_addresses[] = "<span style='font-size: 80%;'>".$contact_address['label'].":</span> ".implode(', ', $contact_address_parts);
+			unset($contact_address_parts);
+		}
+		echo implode('<br>', $contact_addresses);
+		unset($contact_addresses);
+	} else { echo "&nbsp;"; }
+	echo "	</td>\n";
+	echo "	<td valign='top' class='".$row_style[$c]."' style='white-space: nowrap;'>";
+	foreach ($contact['groups'] as $contact_group['id'] => $contact_group['name']) {
+		$contact_groups[] = $contact_group['name'];
+	}
+	echo "		".implode('<br>', $contact_groups);
+	unset($contact_groups);
+	echo "	</td>\n";
+	echo "</tr>\n";
+	$c=($c)?0:1;
+}
+echo "</table>\n";
+echo "</div>\n";
+echo "<br>";
+
+echo "<div style='text-align: right;'><input type='submit' class='btn' id='btn_submit' value=\"".$text['button-import']."\"></div>";
+
+echo "</form>";
+echo "<br><br>";
+
+// check or uncheck all contact checkboxes
+if (sizeof($contact_ids) > 0) {
+	echo "<script>\n";
+	echo "	function check(what) {\n";
+	foreach ($contact_ids as $contact_id) {
+		echo "	document.getElementById('contact_id_".$contact_id."').checked = (what == 'all') ? true : false;\n";
+	}
+	echo "	}\n";
+	echo "</script>\n";
+}
+
+/*
+echo "<pre>";
+print_r($contacts);
+echo "</pre>";
+echo "<br><br>";
+
+echo "<hr>";
+echo "<br><br><b>SOURCE JSON DECODED ARRAY</b>...<br><br><pre>";
+print_r($records);
+echo "</pre>";
+*/
+
+//include the footer
+require_once "resources/footer.php";
+
+
+
+
+// used above
+function curl_file_get_contents($url) {
+	$curl = curl_init();
+	$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
+
+	curl_setopt($curl, CURLOPT_URL, $url);	//The URL to retrieve. This can also be set when initializing a session with curl_init().
+	curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);	//TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
+	curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);	//The number of seconds to wait while trying to connect.
+	curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);	//The contents of the "User-Agent: " header to be used in a HTTP request.
+	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);	//To follow any "Location: " header that the server sends as part of the HTTP header.
+	curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE);	//To automatically set the Referer: field in requests where it follows a Location: redirect.
+	curl_setopt($curl, CURLOPT_TIMEOUT, 10);	//The maximum number of seconds to allow cURL functions to execute.
+	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);	//To stop cURL from verifying the peer's certificate.
+
+	$contents = curl_exec($curl);
+	curl_close($curl);
+	return $contents;
+}
+?>

+ 170 - 0
core/contacts/contact_json.php

@@ -0,0 +1,170 @@
+<?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) 2022
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set additional variables
+	$show = $_GET["show"] ?? '';
+
+//retrieve current user's assigned groups (uuids)
+	foreach ($_SESSION['groups'] as $group_data) {
+		$user_group_uuids[] = $group_data['group_uuid'];
+	}
+
+//add user's uuid to group uuid list to include private (non-shared) contacts
+	$user_group_uuids[] = $_SESSION["user_uuid"];
+
+//add the search term
+	if (!empty($_GET["search"])) {
+		$search = strtolower($_GET["search"]);
+	}
+
+//get the list of contacts
+	$sql = "select *, ";
+	$sql .= "( ";
+	$sql .= "	select a.contact_attachment_uuid from v_contact_attachments as a ";
+	$sql .= "	where a.contact_uuid = c.contact_uuid and a.attachment_primary = 1 ";
+	$sql .= ") as contact_attachment_uuid ";
+	$sql .= "from v_contacts as c ";
+	$sql .= "where true ";
+	if ($show != "all" || !permission_exists('contact_all')) {
+		$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	}
+	if (!permission_exists('contact_domain_view')) {
+		$sql .= "and ( "; //only contacts assigned to current user's group(s) and those not assigned to any group
+		$sql .= "	contact_uuid in ( ";
+		$sql .= "		select contact_uuid from v_contact_groups ";
+		$sql .= "		where ";
+		if (!empty($user_group_uuids)) {
+			foreach ($user_group_uuids as $index => $user_group_uuid) {
+				if (is_uuid($user_group_uuid)) {
+					$sql_where_or[] = "group_uuid = :group_uuid_".$index;
+					$parameters['group_uuid_'.$index] = $user_group_uuid;
+				}
+			}
+			if (!empty($sql_where_or)) {
+				$sql .= " ( ".implode(' or ', $sql_where_or)." ) ";
+			}
+			unset($sql_where_or, $index, $user_group_uuid);
+		}
+		$sql .= "		and domain_uuid = :domain_uuid ";
+		$sql .= "	) ";
+		$sql .= "	or contact_uuid in ( ";
+		$sql .= "		select contact_uuid from v_contact_users ";
+		$sql .= "		where user_uuid = :user_uuid ";
+		$sql .= "		and domain_uuid = :domain_uuid ";
+		$sql .= "";
+		$sql .= "	) ";
+		$sql .= ") ";
+		$parameters['user_uuid'] = $_SESSION['user_uuid'];
+	}
+	if (isset($search)) {
+		if (is_numeric($search)) {
+			$sql .= "and contact_uuid in ( ";
+			$sql .= "	select contact_uuid from v_contact_phones ";
+			$sql .= "	where phone_number like :search ";
+			$sql .= ") ";
+		}
+		else {
+			//open container
+				$sql .= "and ( ";
+			//search contact
+				$sql .= "contact_uuid in ( ";
+				$sql .= "	select contact_uuid from v_contacts ";
+				$sql .= "	where domain_uuid = :domain_uuid ";
+				$sql .= "	and ( ";
+				$sql .= "		lower(contact_organization) like :search or ";
+				$sql .= "		lower(contact_name_given) like :search or ";
+				$sql .= "		lower(contact_name_family) like :search or ";
+				$sql .= "		lower(contact_nickname) like :search or ";
+				$sql .= "		lower(contact_title) like :search or ";
+				$sql .= "		lower(contact_category) like :search or ";
+				$sql .= "		lower(contact_role) like :search or ";
+				$sql .= "		lower(contact_url) like :search or ";
+				$sql .= "		lower(contact_time_zone) like :search or ";
+				$sql .= "		lower(contact_note) like :search or ";
+				$sql .= "		lower(contact_type) like :search ";
+				$sql .= "	) ";
+				$sql .= ") ";
+			//search contact emails
+				if (permission_exists('contact_email_view')) {
+					$sql .= "or contact_uuid in ( ";
+					$sql .= "	select contact_uuid from v_contact_emails ";
+					$sql .= "	where domain_uuid = :domain_uuid ";
+					$sql .= "	and ( ";
+					$sql .= "		lower(email_address) like :search or ";
+					$sql .= "		lower(email_description) like :search ";
+					$sql .= "	) ";
+					$sql .= ") ";
+				}
+			//search contact notes
+				if (permission_exists('contact_note_view')) {
+					$sql .= "or contact_uuid in ( ";
+					$sql .= "	select contact_uuid from v_contact_notes ";
+					$sql .= "	where domain_uuid = :domain_uuid ";
+					$sql .= "	and lower(contact_note) like :search ";
+					$sql .= ") ";
+				}
+			//close container
+				$sql .= ") ";
+		}
+		$parameters['search'] = '%'.$search.'%';
+	}
+	$sql .= "order by contact_organization asc ";
+	$sql .= "limit 300 ";
+	$database = new database;
+	$contact_array = $database->select($sql, $parameters ?? null, 'all');
+	unset($sql, $parameters);
+
+//return the contacts as json
+	$i = 0;
+	if (!empty($contact_array)) {
+		foreach($contact_array as $row) {
+			$contact_name = array();
+			if (!empty($row['contact_organization'])) { $contact_name[] = $row['contact_organization']; }
+			if (!empty($row['contact_name_family'])) { $contact_name[] = $row['contact_name_family']; }
+			if (!empty($row['contact_name_given'])) { $contact_name[] = $row['contact_name_given']; }
+			if (empty($row['contact_name_family']) && empty($row['contact_name_given']) && !empty($row['contact_nickname'])) { $contact_name[] = $row['contact_nickname']; }
+			$contacts[$i]['id'] = $row['contact_uuid'];
+			$contacts[$i]['name'] = implode(', ', $contact_name);
+			$i++;
+		}
+		echo json_encode($contacts, true);
+	}
+
+?>

+ 230 - 0
core/contacts/contact_note_edit.php

@@ -0,0 +1,230 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_note_edit') || permission_exists('contact_note_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$contact_note_uuid = $_REQUEST["id"];
+	}
+	else {
+		$action = "add";
+	}
+
+//get the primary id for the contact
+	if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
+		$contact_uuid = $_GET["contact_uuid"];
+	}
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+		$contact_note = $_POST["contact_note"];
+		$last_mod_date = $_POST["last_mod_date"] ?? null;
+		$last_mod_user = $_POST["last_mod_user"] ?? null;
+	}
+
+//process the form data
+	if (!empty($_POST) && empty($_POST["persistformvar"])) {
+
+		//get the primary id for the contact note
+			if ($action == "update") {
+				$contact_note_uuid = $_POST["contact_note_uuid"];
+			}
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contacts.php');
+				exit;
+			}
+
+		//check for all required data
+			$msg = '';
+			if (!empty($msg) && empty($_POST["persistformvar"])) {
+				require_once "resources/header.php";
+				require_once "resources/persist_form_var.php";
+				echo "<div align='center'>\n";
+				echo "<table><tr><td>\n";
+				echo $msg."<br />";
+				echo "</td></tr></table>\n";
+				persistformvar($_POST);
+				echo "</div>\n";
+				require_once "resources/footer.php";
+				return;
+			}
+
+		//add or update the database
+			if (empty($_POST["persistformvar"])) {
+
+				//update last modified
+					$array['contacts'][0]['contact_uuid'] = $contact_uuid;
+					$array['contacts'][0]['domain_uuid'] = $domain_uuid;
+					$array['contacts'][0]['last_mod_date'] = 'now()';
+					$array['contacts'][0]['last_mod_user'] = $_SESSION['username'];
+
+					$p = new permissions;
+					$p->add('contact_edit', 'temp');
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+
+					$p->delete('contact_edit', 'temp');
+
+				//add the note
+					if ($action == "add" && permission_exists('contact_note_add')) {
+						$contact_note_uuid = uuid();
+						$array['contact_notes'][0]['contact_note_uuid'] = $contact_note_uuid;
+
+						message::add($text['message-add']);
+					}
+
+				//update the note
+					if ($action == "update" && permission_exists('contact_note_edit')) {
+						$array['contact_notes'][0]['contact_note_uuid'] = $contact_note_uuid;
+
+						message::add($text['message-update']);
+					}
+
+				//execute
+					if (!empty($array)) {
+						$array['contact_notes'][0]['contact_uuid'] = $contact_uuid;
+						$array['contact_notes'][0]['domain_uuid'] = $domain_uuid;
+						$array['contact_notes'][0]['contact_note'] = $contact_note;
+						$array['contact_notes'][0]['last_mod_date'] = 'now()';
+						$array['contact_notes'][0]['last_mod_user'] = $_SESSION['username'];
+
+						$database = new database;
+						$database->app_name = 'contacts';
+						$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+						$database->save($array);
+						unset($array);
+					}
+
+				//redirect
+					header("Location: contact_edit.php?id=".escape($contact_uuid));
+					exit;
+
+			}
+	}
+
+//pre-populate the form
+	if (!empty($_GET) && empty($_POST["persistformvar"])) {
+		$contact_note_uuid = $_GET["id"] ?? '';
+		$sql = "select * from v_contact_notes ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_note_uuid = :contact_note_uuid ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_note_uuid'] = $contact_note_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (!empty($row)) {
+			$contact_note = $row["contact_note"];
+			$last_mod_date = $row["last_mod_date"];
+			$last_mod_user = $row["last_mod_user"];
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	if ($action == "update") {
+		$document['title'] = $text['title-contact_notes-edit'];
+	}
+	else if ($action == "add") {
+		$document['title'] = $text['title-contact_notes-add'];
+	}
+	require_once "resources/header.php";
+
+//show the content
+	echo "<form method='post' name='frm'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'>";
+	if ($action == "update") {
+		echo "<b>".$text['header-contact_notes-edit']."</b>";
+	}
+	else if ($action == "add") {
+		echo "<b>".$text['header-contact_notes-add']."</b>";
+	}
+	echo "	</div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid)]);
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	echo "<div class='card'>\n";
+	echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+	echo "<tr>\n";
+	echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-contact_note']."\n";
+	echo "</td>\n";
+	echo "<td width='70%' class='vtable' align='left'>\n";
+	echo "  <textarea class='formfld' name='contact_note' style='min-width: 100%; height: 400px;'>".escape($contact_note ?? '')."</textarea>\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>";
+	echo "</div>\n";
+	echo "<br><br>";
+
+	echo "<input type='hidden' name='contact_uuid' value='".escape($contact_uuid)."'>\n";
+	if ($action == "update") {
+		echo "<input type='hidden' name='contact_note_uuid' value='".escape($contact_note_uuid)."'>\n";
+	}
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 114 - 0
core/contacts/contact_notes.php

@@ -0,0 +1,114 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_note_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set the uuid
+	if (!empty($_GET['id']) && is_uuid($_GET['id'])) {
+		$contact_uuid = $_GET['id'];
+	}
+
+//get the contact list
+	$sql = "select * from v_contact_notes ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by last_mod_date desc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_notes = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_notes)) {
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".$text['label-contact_notes']."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			if (permission_exists('contact_note_delete')) {
+				echo "	<th class='checkbox'>\n";
+				echo "		<input type='checkbox' id='checkbox_all_notes' name='checkbox_all' onclick=\"edit_all_toggle('notes');\" ".(!empty($contact_notes) ?: "style='visibility: hidden;'").">\n";
+				echo "	</th>\n";
+			}
+			echo "<th>".$text['label-note_content']."</th>\n";
+			echo "<th class='shrink'>".$text['label-note_user']."</th>\n";
+			if (permission_exists('contact_note_edit') && $list_row_edit_button == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_notes)) {
+				foreach ($contact_notes as $row) {
+					$contact_note = $row['contact_note'];
+					$contact_note = escape($contact_note);
+					$contact_note = str_replace("\n","<br />",$contact_note);
+					if (permission_exists('contact_note_add')) {
+						$list_row_url = "contact_note_edit.php?contact_uuid=".escape($row['contact_uuid'])."&id=".escape($row['contact_note_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."'>\n";
+					if (permission_exists('contact_note_delete')) {
+						echo "	<td class='checkbox'>\n";
+						echo "		<input type='checkbox' name='contact_notes[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_notes' value='true' onclick=\"edit_delete_action('notes');\">\n";
+						echo "		<input type='hidden' name='contact_notes[$x][uuid]' value='".escape($row['contact_note_uuid'])."' />\n";
+						echo "	</td>\n";
+					}
+					echo "	<td class='overflow'>".$contact_note."</td>\n";
+					echo "	<td class='description no-wrap'><strong>".escape($row['last_mod_user'])."</strong>: ".date("j M Y @ H:i:s", strtotime($row['last_mod_date']))."</td>\n";
+					if (permission_exists('contact_note_edit') && $list_row_edit_button == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+			}
+			unset($contact_notes);
+
+			echo "</table>";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 68 - 0
core/contacts/contact_notes_view.php

@@ -0,0 +1,68 @@
+<?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-2020
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_note_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the contact list
+	$sql = "select * from v_contact_notes ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by last_mod_date desc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_notes = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_notes)) {
+
+		//show the content
+			echo "<div class='grid' style='grid-template-columns: auto 190px;'>\n";
+			$x = 0;
+			foreach ($contact_notes as $row) {
+				$contact_note = str_replace("\n","<br />",escape($row['contact_note']));
+				echo "<div class='box' style='padding-bottom: 15px;'>".$contact_note."</div>\n";
+				echo "<div class='box contact-details-label' style='padding-bottom: 15px; text-align: right;'><strong>".escape($row['last_mod_user'])."</strong>: ".date("j M Y @ H:i:s", strtotime($row['last_mod_date']))."</div>\n";
+				$x++;
+			}
+			echo "</div>\n";
+			unset($contact_notes);
+
+	}
+
+?>

+ 412 - 0
core/contacts/contact_phone_edit.php

@@ -0,0 +1,412 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+	Luis Daniel Lucio Quiroz <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_phone_edit') || permission_exists('contact_phone_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//set the defaults
+	$phone_label = '';
+	$phone_label_custom = '';
+	$phone_type_voice = '';
+	$phone_type_fax = '';
+	$phone_type_video = '';
+	$phone_type_text = '';
+	$phone_speed_dial = '';
+	$phone_country_code = '';
+	$phone_number = '';
+	$phone_extension = '';
+	$phone_primary = '';
+	$phone_description = '';
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$contact_phone_uuid = $_REQUEST["id"];
+	}
+	else {
+		$action = "add";
+	}
+
+//get the uuid
+	if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
+		$contact_uuid = $_GET["contact_uuid"];
+	}
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+		$phone_label = $_POST["phone_label"];
+		$phone_label_custom = $_POST["phone_label_custom"];
+		$phone_type_voice = $_POST["phone_type_voice"] ?? null;
+		$phone_type_fax = $_POST["phone_type_fax"] ?? null;
+		$phone_type_video = $_POST["phone_type_video"] ?? null;
+		$phone_type_text = $_POST["phone_type_text"] ?? null;
+		$phone_speed_dial = $_POST["phone_speed_dial"];
+		$phone_country_code = $_POST["phone_country_code"];
+		$phone_number = $_POST["phone_number"];
+		$phone_extension = $_POST["phone_extension"];
+		$phone_primary = $_POST["phone_primary"];
+		$phone_description = $_POST["phone_description"];
+
+		//remove any phone number formatting
+		$phone_number = preg_replace('{(?!^\+)[\D]}', '', $phone_number);
+
+		//use custom label if set
+		$phone_label = ($phone_label_custom != '') ? $phone_label_custom : $phone_label;
+	}
+
+//process the form data
+	if (!empty($_POST) && empty($_POST["persistformvar"])) {
+
+		//set thge uuid
+			if ($action == "update") {
+				$contact_phone_uuid = $_POST["contact_phone_uuid"];
+			}
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contacts.php');
+				exit;
+			}
+
+		//check for all required data
+			$msg = '';
+			if (!empty($msg) && empty($_POST["persistformvar"])) {
+				require_once "resources/header.php";
+				require_once "resources/persist_form_var.php";
+				echo "<div align='center'>\n";
+				echo "<table><tr><td>\n";
+				echo $msg."<br />";
+				echo "</td></tr></table>\n";
+				persistformvar($_POST);
+				echo "</div>\n";
+				require_once "resources/footer.php";
+				return;
+			}
+
+		//add or update the database
+			if (empty($_POST["persistformvar"])) {
+
+				//update last modified
+					$array['contacts'][0]['contact_uuid'] = $contact_uuid;
+					$array['contacts'][0]['domain_uuid'] = $domain_uuid;
+					$array['contacts'][0]['last_mod_date'] = 'now()';
+					$array['contacts'][0]['last_mod_user'] = $_SESSION['username'];
+
+					$p = new permissions;
+					$p->add('contact_edit', 'temp');
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+
+					$p->delete('contact_edit', 'temp');
+
+				//if primary, unmark other primary numbers
+					if ($phone_primary) {
+						$sql = "update v_contact_phones set phone_primary = 0 ";
+						$sql .= "where domain_uuid = :domain_uuid ";
+						$sql .= "and contact_uuid = :contact_uuid ";
+						$parameters['domain_uuid'] = $domain_uuid;
+						$parameters['contact_uuid'] = $contact_uuid;
+						$database = new database;
+						$database->execute($sql, $parameters);
+						unset($sql, $parameters);
+					}
+
+				//add the phone
+					if ($action == "add" && permission_exists('contact_phone_add')) {
+						$contact_phone_uuid = uuid();
+						$array['contact_phones'][0]['contact_phone_uuid'] = $contact_phone_uuid;
+
+						message::add($text['message-add']);
+					}
+
+				//update the phone
+					if ($action == "update" && permission_exists('contact_phone_edit')) {
+						$array['contact_phones'][0]['contact_phone_uuid'] = $contact_phone_uuid;
+
+						message::add($text['message-update']);
+					}
+
+				//execute
+					if (!empty($array)) {
+						$array['contact_phones'][0]['contact_uuid'] = $contact_uuid;
+						$array['contact_phones'][0]['domain_uuid'] = $domain_uuid;
+						$array['contact_phones'][0]['phone_label'] = $phone_label;
+						$array['contact_phones'][0]['phone_type_voice'] = $phone_type_voice ? 1 : null;
+						$array['contact_phones'][0]['phone_type_fax'] = $phone_type_fax ? 1 : null;
+						$array['contact_phones'][0]['phone_type_video'] = $phone_type_video ? 1 : null;
+						$array['contact_phones'][0]['phone_type_text'] = $phone_type_text ? 1 : null;
+						$array['contact_phones'][0]['phone_speed_dial'] = $phone_speed_dial;
+						$array['contact_phones'][0]['phone_country_code'] = $phone_country_code;
+						$array['contact_phones'][0]['phone_number'] = $phone_number;
+						$array['contact_phones'][0]['phone_extension'] = $phone_extension;
+						$array['contact_phones'][0]['phone_primary'] = $phone_primary ? 1 : 0;
+						$array['contact_phones'][0]['phone_description'] = $phone_description;
+
+						$database = new database;
+						$database->app_name = 'contacts';
+						$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+						$database->save($array);
+						unset($array);
+					}
+
+				//redirect
+					header("Location: contact_edit.php?id=".escape($contact_uuid));
+					exit;
+
+			}
+	}
+
+//pre-populate the form
+	if (!empty($_GET) && empty($_POST["persistformvar"])) {
+		$contact_phone_uuid = $_GET["id"] ?? '';
+		$sql = "select * from v_contact_phones ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_phone_uuid = :contact_phone_uuid ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_phone_uuid'] = $contact_phone_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (!empty($row)) {
+			$phone_label = $row["phone_label"];
+			$phone_type_voice = $row["phone_type_voice"];
+			$phone_type_fax = $row["phone_type_fax"];
+			$phone_type_video = $row["phone_type_video"];
+			$phone_type_text = $row["phone_type_text"];
+			$phone_speed_dial = $row["phone_speed_dial"];
+			$phone_country_code = $row["phone_country_code"];
+			$phone_number = $row["phone_number"];
+			$phone_extension = $row["phone_extension"];
+			$phone_primary = $row["phone_primary"];
+			$phone_description = $row["phone_description"];
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	if ($action == "update") {
+		$document['title'] = $text['title-contact_phones-edit'];
+	}
+	else if ($action == "add") {
+		$document['title'] = $text['title-contact_phones-add'];
+	}
+	require_once "resources/header.php";
+
+//javascript to toggle input/select boxes
+	echo "<script type='text/javascript'>\n";
+	echo "	function toggle_custom(field) {\n";
+	echo "		$('#'+field).toggle();\n";
+	echo "		document.getElementById(field).selectedIndex = 0;\n";
+	echo "		document.getElementById(field+'_custom').value = '';\n";
+	echo "		$('#'+field+'_custom').toggle();\n";
+	echo "		if ($('#'+field+'_custom').is(':visible')) { $('#'+field+'_custom').trigger('focus'); } else { $('#'+field).trigger('focus'); }\n";
+	echo "	}";
+	echo "</script>";
+
+//show the content
+	echo "<form method='post' name='frm' id='frm'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'>";
+	if ($action == "update") {
+		echo "<b>".$text['header-contact_phones-edit']."</b>";
+	}
+	else if ($action == "add") {
+		echo "<b>".$text['header-contact_phones-add']."</b>";
+	}
+	echo "	</div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid)]);
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	echo "<div class='card'>\n";
+	echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+	echo "<tr>\n";
+	echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-phone_label']."\n";
+	echo "</td>\n";
+	echo "<td width='70%' class='vtable' align='left'>\n";
+	if (!empty($_SESSION["contact"]["phone_label"])) {
+		sort($_SESSION["contact"]["phone_label"]);
+		foreach($_SESSION["contact"]["phone_label"] as $row) {
+			$phone_label_options[] = "<option value='".$row."' ".(($row == $phone_label) ? "selected='selected'" : null).">".$row."</option>";
+		}
+		$phone_label_found = (in_array($phone_label, $_SESSION["contact"]["phone_label"])) ? true : false;
+	}
+	else {
+		$selected[$phone_label] = "selected";
+		$default_labels[] = $text['option-work'];
+		$default_labels[] = $text['option-home'];
+		$default_labels[] = $text['option-mobile'];
+		$default_labels[] = $text['option-main'];
+		$default_labels[] = $text['option-fax'];
+		$default_labels[] = $text['option-pager'];
+		$default_labels[] = $text['option-voicemail'];
+		$default_labels[] = $text['option-text'];
+		$default_labels[] = $text['option-other'];
+		foreach ($default_labels as $default_label) {
+			$phone_label_options[] = "<option value='".$default_label."' ".!empty($selected[$default_label]).">".$default_label."</option>";
+		}
+		$phone_label_found = (in_array(!empty($phone_label), $default_labels)) ? true : false;
+	}
+	echo "	<select class='formfld' ".((!empty($phone_label) && !$phone_label_found) ? "style='display: none;'" : null)." name='phone_label' id='phone_label' onchange=\"getElementById('phone_label_custom').value='';\">\n";
+	echo "		<option value=''></option>\n";
+	echo 		(!empty($phone_label_options)) ? implode("\n", $phone_label_options) : null;
+	echo "	</select>\n";
+	echo "	<input type='text' class='formfld' ".((empty($phone_label) || $phone_label_found) ? "style='display: none;'" : null)." name='phone_label_custom' id='phone_label_custom' value=\"".((!$phone_label_found) ? htmlentities($phone_label ?? '') : null)."\">\n";
+	echo "	<input type='button' id='btn_toggle_type' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('phone_label');\">\n";
+	echo "<br />\n";
+	echo $text['description-phone_label']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-phone_type']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<label><input type='checkbox' name='phone_type_voice' id='phone_type_voice' value='1' ".(($phone_type_voice) ? "checked='checked'" : null)."> ".$text['label-voice']."</label>&nbsp;\n";
+	echo "	<label><input type='checkbox' name='phone_type_fax' id='phone_type_fax' value='1' ".(($phone_type_fax) ? "checked='checked'" : null)."> ".$text['label-fax']."</label>&nbsp;\n";
+	echo "	<label><input type='checkbox' name='phone_type_video' id='phone_type_video' value='1' ".(($phone_type_video) ? "checked='checked'" : null)."> ".$text['label-video']."</label>&nbsp;\n";
+	echo "	<label><input type='checkbox' name='phone_type_text' id='phone_type_text' value='1' ".(($phone_type_text) ? "checked='checked'" : null)."> ".$text['label-text']."</label>\n";
+	echo "<br />\n";
+	echo $text['description-phone_type']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-phone_speed_dial']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='phone_speed_dial' maxlength='255' min='0' step='1' value=\"".escape($phone_speed_dial)."\">\n";
+	echo "<br />\n";
+	echo $text['description-phone_speed_dial']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-phone_country_code']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='phone_country_code' maxlength='6' min='0' step='1' value=\"".escape($phone_country_code)."\">\n";
+	echo "<br />\n";
+	echo $text['description-phone_country_code']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-phone_number']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='phone_number' maxlength='255' min='0' step='1' value=\"".escape($phone_number)."\">\n";
+	echo "<br />\n";
+	echo $text['description-phone_number']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-phone_extension']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='number' name='phone_extension' min='0' step='1' maxlength='255' value=\"".escape($phone_extension)."\">\n";
+	echo "<br />\n";
+	echo $text['description-phone_extension']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-primary']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<select class='formfld' name='phone_primary' id='phone_primary'>\n";
+	echo "		<option value='0'>".$text['option-false']."</option>\n";
+	echo "		<option value='1' ".(($phone_primary) ? "selected" : null).">".$text['option-true']."</option>\n";
+	echo "	</select>\n";
+	echo "<br />\n";
+	echo $text['description-phone_primary']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-phone_description']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='phone_description' maxlength='255' value=\"".escape($phone_description)."\">\n";
+	echo "<br />\n";
+	echo $text['description-phone_description']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>";
+	echo "</div>\n";
+	echo "<br><br>";
+
+	echo "<input type='hidden' name='contact_uuid' value='".escape($contact_uuid)."'>\n";
+	if ($action == "update") {
+		echo "<input type='hidden' name='contact_phone_uuid' value='".escape($contact_phone_uuid)."'>\n";
+	}
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 146 - 0
core/contacts/contact_phones.php

@@ -0,0 +1,146 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_phone_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the contact list
+	$sql = "select * from v_contact_phones ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by phone_primary desc, phone_label asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_phones = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_phones)) {
+
+		//javascript function: send_cmd
+			echo "<script type=\"text/javascript\">\n";
+			echo "function send_cmd(url) {\n";
+			echo "	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari\n";
+			echo "		xmlhttp=new XMLHttpRequest();\n";
+			echo "	}\n";
+			echo "	else {// code for IE6, IE5\n";
+			echo "		xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");\n";
+			echo "	}\n";
+			echo "	xmlhttp.open(\"GET\",url,true);\n";
+			echo "	xmlhttp.send(null);\n";
+			echo "	document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;\n";
+			echo "}\n";
+			echo "</script>\n";
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".$text['label-phone_numbers']."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			if (permission_exists('contact_phone_delete')) {
+				echo "	<th class='checkbox'>\n";
+				echo "		<input type='checkbox' id='checkbox_all_phones' name='checkbox_all' onclick=\"edit_all_toggle('phones');\" ".($contact_phones ?: "style='visibility: hidden;'").">\n";
+				echo "	</th>\n";
+			}
+			echo "<th class='pct-15'>".$text['label-phone_label']."</th>\n";
+			echo "<th>".$text['label-phone_number']."</th>\n";
+			echo "<th>".$text['label-phone_type']."</th>\n";
+			echo "<th>".$text['label-phone_tools']."</th>\n";
+			echo "<th class='hide-md-dn'>".$text['label-phone_description']."</th>\n";
+			if (permission_exists('contact_phone_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_phones)) {
+				$x = 0;
+				foreach ($contact_phones as $row) {
+					if (permission_exists('contact_phone_edit')) {
+						$list_row_url = "contact_phone_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_phone_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."'>\n";
+					if (permission_exists('contact_phone_delete')) {
+						echo "	<td class='checkbox'>\n";
+						echo "		<input type='checkbox' name='contact_phones[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_phones' value='true' onclick=\"edit_delete_action('phones');\">\n";
+						echo "		<input type='hidden' name='contact_phones[$x][uuid]' value='".escape($row['contact_phone_uuid'])."' />\n";
+						echo "	</td>\n";
+					}
+					echo "	<td>".($row['phone_label'] == strtolower($row['phone_label']) ? ucwords($row['phone_label']) : $row['phone_label'])." ".($row['phone_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+					echo "	<td class='no-link'>\n";
+					echo button::create(['type'=>'button','class'=>'link','label'=>escape(format_phone($row['phone_number'])),'title'=>$text['label-click_to_call'],'onclick'=>"send_cmd('".PROJECT_PATH."/app/click_to_call/click_to_call.php?src_cid_name=".urlencode($row['phone_number'])."&src_cid_number=".urlencode($row['phone_number'])."&dest_cid_name=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_name'])."&dest_cid_number=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_number'])."&src=".urlencode($_SESSION['user']['extension'][0]['user'])."&dest=".urlencode($row['phone_number'])."&rec=false&ringback=us-ring&auto_answer=true');"]);
+					echo "	</td>\n";
+					echo "	<td class='no-wrap'>\n";
+					if ($row['phone_type_voice']) { $phone_types[] = "<i class='fas fa-phone fa-fw' style='margin-right: 3px;' title=\"".$text['label-voice']."\"></i>"; }
+					if ($row['phone_type_fax']) { $phone_types[] = "<i class='fas fa-fax fa-fw' style='margin-right: 3px;' title=\"".$text['label-fax']."\"></i>"; }
+					if ($row['phone_type_video']) { $phone_types[] = "<i class='fas fa-video fa-fw' style='margin-right: 3px;' title=\"".$text['label-video']."\"></i>"; }
+					if ($row['phone_type_text']) { $phone_types[] = "<i class='fas fa-sms fa-fw' style='margin-right: 3px;' title=\"".$text['label-text']."\"></i>"; }
+					if (is_array($phone_types)) {
+						echo "	".implode(" ", $phone_types)."\n";
+					}
+					unset($phone_types);
+					echo "	</td>\n";
+					echo "	<td class='no-link no-wrap'>\n";
+					echo "		<a href='../xml_cdr/xml_cdr.php?caller_id_number=".urlencode($row['phone_number'])."'>".$text['button-cdr']."</a>";
+					if ($row['phone_type_voice']) {
+						echo "&nbsp;<span class='hide-sm-dn'>\n";
+						echo button::create(['type'=>'button','class'=>'link','label'=>$text['label-phone_call'],'title'=>$text['label-click_to_call'],'onclick'=>"send_cmd('".PROJECT_PATH."/app/click_to_call/click_to_call.php?src_cid_name=".urlencode($row['phone_number'])."&src_cid_number=".urlencode($row['phone_number'])."&dest_cid_name=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_name'])."&dest_cid_number=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_number'])."&src=".urlencode($_SESSION['user']['extension'][0]['user'])."&dest=".urlencode($row['phone_number'])."&rec=false&ringback=us-ring&auto_answer=true');"]);
+						echo "</span>";
+					}
+					echo "	</td>\n";
+					echo "	<td class='description overflow hide-md-dn'>".escape($row['phone_description'])."&nbsp;</td>\n";
+					if (permission_exists('contact_phone_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+				unset($contact_phones);
+			}
+
+			echo "</table>\n";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 95 - 0
core/contacts/contact_phones_view.php

@@ -0,0 +1,95 @@
+<?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-2023
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_phone_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the contact list
+	$sql = "select * from v_contact_phones ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by phone_primary desc, phone_label asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_phones = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_phones)) {
+
+		//javascript function: send_cmd
+			echo "<script type='text/javascript'>\n";
+			echo "function send_cmd(url) {\n";
+			echo "	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari\n";
+			echo "		xmlhttp=new XMLHttpRequest();\n";
+			echo "	}\n";
+			echo "	else {// code for IE6, IE5\n";
+			echo "		xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');\n";
+			echo "	}\n";
+			echo "	xmlhttp.open('GET',url,true);\n";
+			echo "	xmlhttp.send(null);\n";
+			echo "	document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;\n";
+			echo "}\n";
+			echo "</script>\n";
+
+		//show the content
+			echo "<div class='grid' style='grid-template-columns: 70px 120px auto;'>\n";
+			$x = 0;
+			foreach ($contact_phones as $row) {
+				echo "<div class='box contact-details-label'>".(!empty($row['phone_label']) && $row['phone_label'] == strtolower($row['phone_label']) ? ucwords($row['phone_label']) : $row['phone_label'])."</div>\n";
+// 				($row['phone_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+				echo "<div class='box'>";
+				echo button::create(['type'=>'button','class'=>'link','label'=>escape(format_phone($row['phone_number'] ?? '')),'title'=>$text['label-click_to_call'],'onclick'=>"send_cmd('".PROJECT_PATH."/app/click_to_call/click_to_call.php?src_cid_name=".urlencode($row['phone_number'] ?? '')."&src_cid_number=".urlencode($row['phone_number'] ?? '')."&dest_cid_name=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_name'] ?? '')."&dest_cid_number=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_number'] ?? '')."&src=".urlencode($_SESSION['user']['extension'][0]['user'] ?? '')."&dest=".urlencode($row['phone_number'] ?? '')."&rec=false&ringback=us-ring&auto_answer=true');"]);
+				echo "</div>\n";
+				echo "<div class='box no-wrap'>";
+				if ($row['phone_type_voice']) { $phone_types[] = "<i class='fas fa-phone fa-fw' style='margin-right: 3px;' title=\"".$text['label-voice']."\"></i>"; }
+				if ($row['phone_type_fax']) { $phone_types[] = "<i class='fas fa-fax fa-fw' style='margin-right: 3px;' title=\"".$text['label-fax']."\"></i>"; }
+				if ($row['phone_type_video']) { $phone_types[] = "<i class='fas fa-video fa-fw' style='margin-right: 3px;' title=\"".$text['label-video']."\"></i>"; }
+				if ($row['phone_type_text']) { $phone_types[] = "<i class='fas fa-sms fa-fw' style='margin-right: 3px;' title=\"".$text['label-text']."\"></i>"; }
+				if (!empty($phone_types)) {
+					echo "	".implode(" ", $phone_types)."\n";
+				}
+				unset($phone_types);
+				echo "</div>\n";
+				$x++;
+			}
+			echo "</div>\n";
+			unset($contact_phones);
+
+	}
+
+?>

+ 382 - 0
core/contacts/contact_relation_edit.php

@@ -0,0 +1,382 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+	Luis Daniel Lucio Quiroz <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_relation_edit') || permission_exists('contact_relation_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$contact_relation_uuid = $_REQUEST["id"];
+	}
+	else {
+		$action = "add";
+	}
+
+//get the contact uuid
+	if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
+		$contact_uuid = $_GET["contact_uuid"];
+	}
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+		$relation_label = $_POST["relation_label"];
+		$relation_label_custom = $_POST["relation_label_custom"];
+		$relation_contact_uuid = $_POST["relation_contact_uuid"];
+		$relation_reciprocal = $_POST["relation_reciprocal"];
+		$relation_reciprocal_label = $_POST["relation_reciprocal_label"];
+		$relation_reciprocal_label_custom = $_POST["relation_reciprocal_label_custom"];
+
+		//use custom label(s), if set
+		$relation_label = ($relation_label_custom != '') ? $relation_label_custom : $relation_label;
+		$relation_reciprocal_label = ($relation_reciprocal_label_custom != '') ? $relation_reciprocal_label_custom : $relation_reciprocal_label;
+	}
+
+//process the form data
+	if (!empty($_POST) && empty($_POST["persistformvar"])) {
+
+		//set the uuid
+			if ($action == "update") {
+				$contact_relation_uuid = $_POST["contact_relation_uuid"];
+			}
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contacts.php');
+				exit;
+			}
+
+		//check for all required data
+			$msg = '';
+			if (!empty($msg) && empty($_POST["persistformvar"])) {
+				require_once "resources/header.php";
+				require_once "resources/persist_form_var.php";
+				echo "<div align='center'>\n";
+				echo "<table><tr><td>\n";
+				echo $msg."<br />";
+				echo "</td></tr></table>\n";
+				persistformvar($_POST);
+				echo "</div>\n";
+				require_once "resources/footer.php";
+				return;
+			}
+
+		//add or update the database
+			if (empty($_POST["persistformvar"])) {
+
+				//update last modified
+					$array['contacts'][0]['contact_uuid'] = $contact_uuid;
+					$array['contacts'][0]['domain_uuid'] = $domain_uuid;
+					$array['contacts'][0]['last_mod_date'] = 'now()';
+					$array['contacts'][0]['last_mod_user'] = $_SESSION['username'];
+
+					$p = new permissions;
+					$p->add('contact_edit', 'temp');
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+
+					$p->delete('contact_edit', 'temp');
+
+				//add the relation
+					if ($action == "add" && permission_exists('contact_relation_add')) {
+						$contact_relation_uuid = uuid();
+						$array['contact_relations'][0]['contact_relation_uuid'] = $contact_relation_uuid;
+
+						if ($relation_reciprocal) {
+							$contact_relation_uuid = uuid();
+							$array['contact_relations'][1]['contact_relation_uuid'] = $contact_relation_uuid;
+							$array['contact_relations'][1]['domain_uuid'] = $_SESSION['domain_uuid'];
+							$array['contact_relations'][1]['contact_uuid'] = $relation_contact_uuid;
+							$array['contact_relations'][1]['relation_label'] = $relation_reciprocal_label;
+							$array['contact_relations'][1]['relation_contact_uuid'] = $contact_uuid;
+						}
+
+						message::add($text['message-add']);
+					}
+
+				//update the relation
+					if ($action == "update" && permission_exists('contact_relation_edit')) {
+						$array['contact_relations'][0]['contact_relation_uuid'] = $contact_relation_uuid;
+
+						message::add($text['message-update']);
+					}
+
+				//execute
+					if (!empty($array)) {
+						$array['contact_relations'][0]['contact_uuid'] = $contact_uuid;
+						$array['contact_relations'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
+						$array['contact_relations'][0]['relation_label'] = $relation_label;
+						$array['contact_relations'][0]['relation_contact_uuid'] = $relation_contact_uuid;
+
+						$database = new database;
+						$database->app_name = 'contacts';
+						$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+						$database->save($array);
+						unset($array);
+					}
+
+				//redirect
+					header("Location: contact_edit.php?id=".escape($contact_uuid));
+					exit;
+
+			}
+	}
+
+//pre-populate the form
+	if (!empty($_GET) && empty($_POST["persistformvar"])) {
+		$contact_relation_uuid = $_GET["id"] ?? '';
+		$sql = "select * from v_contact_relations ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_relation_uuid = :contact_relation_uuid ";
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_relation_uuid'] = $contact_relation_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (is_array($row) && @sizeof($row) != 0) {
+			$relation_label = $row["relation_label"];
+			$relation_contact_uuid = $row["relation_contact_uuid"];
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//get contact details and contact_name
+	$sql = "select contact_uuid, contact_organization, contact_name_given, contact_name_family, contact_nickname ";
+	$sql .= "from v_contacts ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid <> :contact_uuid ";
+	$sql .= "order by contact_organization desc, contact_name_given asc, contact_name_family asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_relation_uuid;
+	$database = new database;
+	$contacts = $database->select($sql, $parameters, 'all');
+	if (!empty($contacts) && is_uuid($row['relation_contact_uuid'])) {
+		foreach($contacts as $field) {
+			if ($field['contact_uuid'] == $row['relation_contact_uuid']) {
+				$name = array();
+				if (!empty($field['contact_organization'])) { $name[] = $field['contact_organization']; }
+				if (!empty($field['contact_name_family'])) { $name[] = $field['contact_name_family']; }
+				if (!empty($field['contact_name_given'])) { $name[] = $field['contact_name_given']; }
+				if (empty($field['contact_name_family']) && empty($field['contact_name_given']) && !empty($field['contact_nickname'])) { $name[] = $field['contact_nickname']; }
+				$contact_name = implode(', ', $name);
+				break;
+			}
+		}
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	$document['title'] = $text['title-contact_relation'];
+	require_once "resources/header.php";
+
+?>
+
+<script type="text/javascript">
+	function get_contacts(element_id, id, search) {
+		var xhttp = new XMLHttpRequest();
+		xhttp.onreadystatechange = function() {
+			if (this.readyState == 4 && this.status == 200) {
+				//create a handle for the contact select object
+				select = document.getElementById(element_id);
+
+				//remove current options
+				while (select.options.length > 0) {
+					select.remove(0);
+				}
+
+				//add an empty row
+				//select.add(new Option('', ''));
+
+				//add new options from the json results
+				obj = JSON.parse(this.responseText);
+				for (var i=0; i < obj.length; i++) {
+					select.add(new Option(obj[i].name, obj[i].id));
+				}
+			}
+		};
+		if (search) {
+			xhttp.open("GET", "/app/contacts/contact_json.php?search="+search, true);
+		}
+		else {
+			xhttp.open("GET", "/app/contacts/contact_json.php", true);
+		}
+		xhttp.send();
+	}
+</script>
+
+<?php
+
+//javascript to toggle input/select boxes
+	echo "<script type='text/javascript'>";
+	echo "	function toggle_custom(field) {";
+	echo "		$('#'+field).toggle();";
+	echo "		document.getElementById(field).selectedIndex = 0;";
+	echo "		document.getElementById(field+'_custom').value = '';";
+	echo "		$('#'+field+'_custom').toggle();";
+	echo "		if ($('#'+field+'_custom').is(':visible')) { $('#'+field+'_custom').trigger('focus'); } else { $('#'+field).trigger('focus'); }";
+	echo "	}";
+	echo "</script>";
+
+//show the content
+	echo "<form method='post' name='frm'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'><b>".$text['header-contact_relation']."</b></div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid)]);
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	echo "<div class='card'>\n";
+	echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+	echo "<tr>\n";
+	echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-contact_relation_label']."\n";
+	echo "</td>\n";
+	echo "<td width='70%' class='vtable' align='left'>\n";
+	if (!empty($_SESSION["contact"]["relation_label"])) {
+		sort($_SESSION["contact"]["relation_label"]);
+		foreach($_SESSION["contact"]["relation_label"] as $row) {
+			$relation_label_options[] = "<option value='".$row."' ".(($row == $relation_label) ? "selected='selected'" : null).">".$row."</option>";
+		}
+		$relation_label_found = (in_array($relation_label, $_SESSION["contact"]["relation_label"])) ? true : false;
+	}
+	else {
+		$selected[!empty($relation_label)] = "selected";
+		$default_labels[] = $text['label-contact_relation_option_parent'];
+		$default_labels[] = $text['label-contact_relation_option_child'];
+		$default_labels[] = $text['label-contact_relation_option_employee'];
+		$default_labels[] = $text['label-contact_relation_option_member'];
+		$default_labels[] = $text['label-contact_relation_option_associate'];
+		$default_labels[] = $text['label-contact_relation_option_other'];
+		foreach ($default_labels as $default_label) {
+			$relation_label_options[] = "<option value='".$default_label."' ".!empty($selected[$default_label]).">".$default_label."</option>";
+		}
+		$relation_label_found = (in_array(!empty($relation_label), $default_labels)) ? true : false;
+	}
+	echo "	<select class='formfld' ".((!empty($relation_label) && !$relation_label_found) ? "style='display: none;'" : null)." name='relation_label' id='relation_label' onchange=\"getElementById('relation_label_custom').value='';\">\n";
+	echo "		<option value=''></option>\n";
+	echo 		(is_array($relation_label_options)) ? implode("\n", $relation_label_options) : null;
+	echo "	</select>\n";
+	echo "	<input type='text' class='formfld' ".((empty($relation_label) || $relation_label_found) ? "style='display: none;'" : null)." name='relation_label_custom' id='relation_label_custom' value=\"".((!$relation_label_found) ? htmlentities($relation_label ?? '') : null)."\">\n";
+	echo "	<input type='button' id='btn_toggle_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('relation_label');\">\n";
+	echo "<br />\n";
+	echo !empty($text['description-relation_label'])."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-contact_relation_contact']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class=\"formfld\" type=\"text\" name=\"contact_search\" placeholder=\"search\" style=\"width: 80px;\" onkeyup=\"get_contacts('contact_select', 'contact_uuid', this.value);\" maxlength=\"255\" value=\"\">\n";
+	echo "	<select class='formfld' style=\"width: 150px;\" id=\"contact_select\" name=\"relation_contact_uuid\" >\n";
+	echo "		<option value='".escape($relation_contact_uuid ?? '')."'>".escape($contact_name ?? '')."</option>\n";
+	echo "	</select>\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	if ($action == 'add') {
+		echo "<tr>\n";
+		echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+		echo "	".$text['label-contact_relation_reciprocal']."\n";
+		echo "</td>\n";
+		echo "<td class='vtable' align='left'>\n";
+		echo "	<select class='formfld' name='relation_reciprocal' id='relation_reciprocal' onchange=\"$('#reciprocal_label').slideToggle(400);\">\n";
+		echo "		<option value='0'>".$text['option-false']."</option>\n";
+		echo "		<option value='1'>".$text['option-true']."</option>\n";
+		echo "	</select>\n";
+		echo "<br />\n";
+		echo $text['description-contact_relation_reciprocal']."\n";
+		echo "</td>\n";
+		echo "</tr>\n";
+		echo "</table>\n";
+
+		echo "<div id='reciprocal_label' style='display: none;'>\n";
+		echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+		echo "<tr>\n";
+		echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+		echo "	".$text['label-contact_relation_reciprocal_label']."\n";
+		echo "</td>\n";
+		echo "<td width='70%' class='vtable' align='left'>\n";
+		echo "	<select class='formfld' name='relation_reciprocal_label' id='relation_reciprocal_label' onchange=\"getElementById('relation_reciprocal_label_custom').value='';\">\n";
+		echo "		<option value=''></option>\n";
+		echo 		(!empty($relation_label_options)) ? implode("\n", $relation_label_options) : null;
+		echo "	</select>\n";
+		echo "	<input type='text' class='formfld' style='display: none;' name='relation_reciprocal_label_custom' id='relation_reciprocal_label_custom' value=''>\n";
+		echo "	<input type='button' id='btn_toggle_reciprocal_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('relation_reciprocal_label');\">\n";
+		echo "<br />\n";
+		echo $text['description-contact_relation_reciprocal_label']."\n";
+		echo "</td>\n";
+		echo "</tr>\n";
+		echo "</table>\n";
+		echo "</div>\n";
+	}
+	else {
+		echo "</table>\n";
+	}
+	echo "</div>\n";
+	echo "<br><br>";
+
+	echo "<input type='hidden' name='contact_uuid' value='".escape($contact_uuid)."'>\n";
+	if ($action == "update") {
+		echo "<input type='hidden' name='contact_relation_uuid' value='".escape($contact_relation_uuid)."'>\n";
+	}
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 126 - 0
core/contacts/contact_relations.php

@@ -0,0 +1,126 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_relation_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set from session variables
+	$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
+
+//get the related contacts
+	$sql = "select ";
+	$sql .= "cr.contact_relation_uuid, ";
+	$sql .= "cr.relation_label, ";
+	$sql .= "c.contact_uuid, ";
+	$sql .= "c.contact_organization, ";
+	$sql .= "c.contact_name_given, ";
+	$sql .= "c.contact_name_family ";
+	$sql .= "from ";
+	$sql .= "v_contact_relations as cr, ";
+	$sql .= "v_contacts as c ";
+	$sql .= "where ";
+	$sql .= "cr.relation_contact_uuid = c.contact_uuid ";
+	$sql .= "and cr.domain_uuid = :domain_uuid ";
+	$sql .= "and cr.contact_uuid = :contact_uuid ";
+	$sql .= "order by ";
+	$sql .= "c.contact_organization desc, ";
+	$sql .= "c.contact_name_given asc, ";
+	$sql .= "c.contact_name_family asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_relations = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_relations)) {
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".$text['header-contact_relations']."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			if (permission_exists('contact_relation_delete')) {
+				echo "	<th class='checkbox'>\n";
+				echo "		<input type='checkbox' id='checkbox_all_relations' name='checkbox_all' onclick=\"edit_all_toggle('relations');\" ".(!empty($contact_relations) ?: "style='visibility: hidden;'").">\n";
+				echo "	</th>\n";
+			}
+			echo "<th>".$text['label-contact_relation_label']."</th>\n";
+			echo "<th>".$text['label-contact_relation_organization']."</th>\n";
+			echo "<th>".$text['label-contact_relation_name']."</th>\n";
+			if (permission_exists('contact_relation_edit') && $list_row_edit_button == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_relations)) {
+				$x = 0;
+				foreach ($contact_relations as $row) {
+					if (permission_exists('contact_relation_edit')) {
+						$list_row_url = "contact_relation_edit.php?contact_uuid=".urlencode($contact_uuid)."&id=".urlencode($row['contact_relation_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."'>\n";
+					if (permission_exists('contact_relation_delete')) {
+						echo "	<td class='checkbox'>\n";
+						echo "		<input type='checkbox' name='contact_relations[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_relations' value='true' onclick=\"edit_delete_action('relations');\">\n";
+						echo "		<input type='hidden' name='contact_relations[$x][uuid]' value='".escape($row['contact_relation_uuid'])."' />\n";
+						echo "	</td>\n";
+					}
+					echo "	<td>".escape($row['relation_label'])."&nbsp;</td>\n";
+					echo "	<td class='no-link'><a href='contact_edit.php?id=".urlencode($row['contact_uuid'])."'>".escape($row['contact_organization'])."</a>&nbsp;</td>\n";
+					echo "	<td class='no-link'><a href='contact_edit.php?id=".urlencode($row['contact_uuid'])."'>".escape($row['contact_name_given']).((!empty($row['contact_name_given']) && !empty($row['contact_name_family'])) ? ' ' : null).escape($row['contact_name_family'])."</a>&nbsp;</td>\n";
+					if (permission_exists('contact_relation_edit') && $list_row_edit_button == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+				unset($contact_relations);
+			}
+
+			echo "</table>";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 82 - 0
core/contacts/contact_relations_view.php

@@ -0,0 +1,82 @@
+<?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-2020
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_relation_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the related contacts
+	$sql = "select ";
+	$sql .= "cr.contact_relation_uuid, ";
+	$sql .= "cr.relation_label, ";
+	$sql .= "c.contact_uuid, ";
+	$sql .= "c.contact_organization, ";
+	$sql .= "c.contact_name_given, ";
+	$sql .= "c.contact_name_family ";
+	$sql .= "from ";
+	$sql .= "v_contact_relations as cr, ";
+	$sql .= "v_contacts as c ";
+	$sql .= "where ";
+	$sql .= "cr.relation_contact_uuid = c.contact_uuid ";
+	$sql .= "and cr.domain_uuid = :domain_uuid ";
+	$sql .= "and cr.contact_uuid = :contact_uuid ";
+	$sql .= "order by ";
+	$sql .= "c.contact_organization desc, ";
+	$sql .= "c.contact_name_given asc, ";
+	$sql .= "c.contact_name_family asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_relations = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_relations)) {
+
+		//show the content
+			echo "<div class='grid' style='grid-template-columns: 70px auto auto;'>\n";
+			$x = 0;
+			foreach ($contact_relations as $row) {
+				echo "<div class='box contact-details-label'>".escape($row['relation_label'])."</div>\n";
+				echo "<div class='box'><a href='contact_view.php?id=".urlencode($row['contact_uuid'])."'>".escape($row['contact_organization'])."</a></div>\n";
+				echo "<div class='box'><a href='contact_view.php?id=".urlencode($row['contact_uuid'])."'>".escape($row['contact_name_given']).(($row['contact_name_given'] && $row['contact_name_family']) ? ' ' : null).escape($row['contact_name_family'])."</a></div>\n";
+				$x++;
+			}
+			echo "</div>\n";
+			unset($contact_relations);
+
+	}
+
+?>

+ 370 - 0
core/contacts/contact_setting_edit.php

@@ -0,0 +1,370 @@
+<?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-2024
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+ Mark J Crane <[email protected]>
+ Luis Daniel Lucio Quiroz <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_setting_edit') || permission_exists('contact_setting_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//set the defaults
+	$contact_setting_category = '';
+	$contact_setting_subcategory = '';
+	$contact_setting_name = '';
+	$contact_setting_value = '';
+	$contact_setting_order = '';
+	$contact_setting_enabled = '';
+	$contact_setting_description = '';
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$contact_setting_uuid = $_REQUEST["id"];
+	}
+	else {
+		$action = "add";
+	}
+
+//get the contact uuid
+	if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
+		$contact_uuid = $_GET["contact_uuid"];
+	}
+
+//set the session domain uuid as a variable
+	$domain_uuid = $_SESSION['domain_uuid'];
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+		$contact_setting_category = strtolower($_POST["contact_setting_category"]);
+		$contact_setting_subcategory = strtolower($_POST["contact_setting_subcategory"]);
+		$contact_setting_name = strtolower($_POST["contact_setting_name"]);
+		$contact_setting_value = $_POST["contact_setting_value"];
+		$contact_setting_order = $_POST["contact_setting_order"] ?? null;
+		$contact_setting_enabled = strtolower($_POST["contact_setting_enabled"]);
+		$contact_setting_description = $_POST["contact_setting_description"];
+	}
+
+//process the form data
+	if (!empty($_POST) && empty($_POST["persistformvar"])) {
+
+		//set the uuid
+			if ($action == "update") {
+				$contact_setting_uuid = $_POST["contact_setting_uuid"];
+			}
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contacts.php');
+				exit;
+			}
+
+		//check for all required data
+			$msg = '';
+			//if (empty($domain_setting_category)) { $msg .= $text['message-required'].$text['label-category']."<br>\n"; }
+			//if (empty($domain_setting_subcategory)) { $msg .= $text['message-required'].$text['label-subcategory']."<br>\n"; }
+			//if (empty($domain_setting_name)) { $msg .= $text['message-required'].$text['label-type']."<br>\n"; }
+			//if (empty($domain_setting_value)) { $msg .= $text['message-required'].$text['label-value']."<br>\n"; }
+			//if (empty($domain_setting_order)) { $msg .= $text['message-required'].$text['label-order']."<br>\n"; }
+			//if (empty($domain_setting_enabled)) { $msg .= $text['message-required'].$text['label-enabled']."<br>\n"; }
+			//if (empty($domain_setting_description)) { $msg .= $text['message-required'].$text['label-description']."<br>\n"; }
+			if (!empty($msg) && empty($_POST["persistformvar"])) {
+				require_once "resources/header.php";
+				require_once "resources/persist_form_var.php";
+				echo "<div align='center'>\n";
+				echo "<table><tr><td>\n";
+				echo $msg."<br />";
+				echo "</td></tr></table>\n";
+				persistformvar($_POST);
+				echo "</div>\n";
+				require_once "resources/footer.php";
+				return;
+			}
+
+		//add or update the database
+			if (empty($_POST["persistformvar"])) {
+
+				//set the order
+					$contact_setting_order = $contact_setting_order != '' ? $contact_setting_order : null;
+
+				//update last modified
+					$array['contacts'][0]['contact_uuid'] = $contact_uuid;
+					$array['contacts'][0]['domain_uuid'] = $domain_uuid;
+					$array['contacts'][0]['last_mod_date'] = 'now()';
+					$array['contacts'][0]['last_mod_user'] = $_SESSION['username'];
+
+					$p = new permissions;
+					$p->add('contact_edit', 'temp');
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+
+					$p->delete('contact_edit', 'temp');
+
+				//add the setting
+					if ($action == "add" && permission_exists('contact_setting_add')) {
+						$contact_setting_uuid = uuid();
+						$array['contact_settings'][0]['contact_setting_uuid'] = $contact_setting_uuid;
+
+						message::add($text['message-add']);
+					}
+
+				//update the setting
+					if ($action == "update" && permission_exists('contact_setting_edit')) {
+						$array['contact_settings'][0]['contact_setting_uuid'] = $contact_setting_uuid;
+
+						message::add($text['message-update']);
+					}
+
+				//execute
+					if (!empty($array)) {
+						$array['contact_settings'][0]['contact_uuid'] = $contact_uuid;
+						$array['contact_settings'][0]['domain_uuid'] = $domain_uuid;
+						$array['contact_settings'][0]['contact_setting_category'] = $contact_setting_category;
+						$array['contact_settings'][0]['contact_setting_subcategory'] = $contact_setting_subcategory;
+						$array['contact_settings'][0]['contact_setting_name'] = $contact_setting_name;
+						$array['contact_settings'][0]['contact_setting_value'] = $contact_setting_value;
+						$array['contact_settings'][0]['contact_setting_order'] = $contact_setting_order;
+						$array['contact_settings'][0]['contact_setting_enabled'] = $contact_setting_enabled;
+						$array['contact_settings'][0]['contact_setting_description'] = $contact_setting_description;
+
+						$database = new database;
+						$database->app_name = 'contacts';
+						$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+						$database->save($array);
+						unset($array);
+					}
+
+				//redirect the browser
+					header("Location: contact_edit.php?id=".escape($contact_uuid));
+					exit;
+			}
+	}
+
+//pre-populate the form
+	if (!empty($_GET) && empty($_POST["persistformvar"])) {
+		$contact_setting_uuid = $_GET["id"] ?? '';
+		$sql = "select * from v_contact_settings ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_setting_uuid = :contact_setting_uuid ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_setting_uuid'] = $contact_setting_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (!empty($row)) {
+			$contact_setting_category = escape($row["contact_setting_category"]);
+			$contact_setting_subcategory = escape($row["contact_setting_subcategory"]);
+			$contact_setting_name = escape($row["contact_setting_name"]);
+			$contact_setting_value = escape($row["contact_setting_value"]);
+			$contact_setting_order = escape($row["contact_setting_order"]);
+			$contact_setting_enabled = escape($row["contact_setting_enabled"]);
+			$contact_setting_description = escape($row["contact_setting_description"]);
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	if ($action == "update") {
+		$document['title'] = $text['title-contact_setting_edit'];
+	}
+	elseif ($action == "add") {
+		$document['title'] = $text['title-contact_setting_add'];
+	}
+	require_once "resources/header.php";
+
+//show the content
+	echo "<form method='post' name='frm'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'>";
+	if ($action == "update") {
+		echo "<b>".$text['header-contact_setting_edit']."</b>";
+	}
+	else if ($action == "add") {
+		echo "<b>".$text['header-contact_setting_add']."</b>";
+	}
+	echo "	</div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid ?? '')]);
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	if ($action == "update") {
+		echo $text['description-contact_setting_edit'];
+	}
+	if ($action == "add") {
+		echo $text['description-contact_setting_add'];
+	}
+	echo "<br /><br />\n";
+
+	echo "<div class='card'>\n";
+	echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-contact_setting_category']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='contact_setting_category' maxlength='255' value=\"".escape($contact_setting_category)."\" required='required'>\n";
+	echo "<br />\n";
+	echo $text['description-contact_setting_category']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-contact_setting_subcategory']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='contact_setting_subcategory' maxlength='255' value=\"".escape($contact_setting_subcategory)."\">\n";
+	echo "<br />\n";
+	echo $text['description-contact_setting_subcategory']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-contact_setting_type']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='contact_setting_name' maxlength='255' value=\"".escape($contact_setting_name)."\">\n";
+	echo "<br />\n";
+	echo $text['description-contact_setting_type']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-contact_setting_value']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='contact_setting_value' maxlength='255' value=\"".escape($contact_setting_value)."\">\n";
+	echo "<br />\n";
+	echo $text['description-contact_setting_value']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	if ($contact_setting_name == "array") {
+		echo "<tr>\n";
+		echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap' width='30%'>\n";
+		echo "    ".$text['label-order']."\n";
+		echo "</td>\n";
+		echo "<td class='vtable' align='left'>\n";
+		echo "	<select name='contact_setting_order' class='formfld'>\n";
+		$i=0;
+		while($i<=999) {
+			$selected = ($i == $contact_setting_order) ? "selected" : null;
+			if (strlen($i) == 1) {
+				echo "		<option value='00$i' ".$selected.">00$i</option>\n";
+			}
+			if (strlen($i) == 2) {
+				echo "		<option value='0$i' ".$selected.">0$i</option>\n";
+			}
+			if (strlen($i) == 3) {
+				echo "		<option value='$i' ".$selected.">$i</option>\n";
+			}
+			$i++;
+		}
+		echo "	</select>\n";
+		echo "	<br />\n";
+		echo $text['description-order']."\n";
+		echo "</td>\n";
+		echo "</tr>\n";
+	}
+
+	echo "<tr>\n";
+	echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
+	echo "    ".$text['label-enabled']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "    <select class='formfld' name='contact_setting_enabled'>\n";
+	if ($contact_setting_enabled == "true") {
+		echo "    <option value='true' selected='selected'>".$text['label-true']."</option>\n";
+	}
+	else {
+		echo "    <option value='true'>".$text['label-true']."</option>\n";
+	}
+	if ($contact_setting_enabled == "false") {
+		echo "    <option value='false' selected='selected'>".$text['label-false']."</option>\n";
+	}
+	else {
+		echo "    <option value='false'>".$text['label-false']."</option>\n";
+	}
+	echo "    </select>\n";
+	echo "<br />\n";
+	echo $text['description-enabled']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-description']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='contact_setting_description' maxlength='255' value=\"".escape($contact_setting_description)."\">\n";
+	echo "<br />\n";
+	echo $text['description-description']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>";
+	echo "</div>\n";
+	echo "<br><br>";
+
+	echo "<input type='hidden' name='contact_uuid' value='".!empty($contact_uuid)."'>\n";
+	if ($action == "update") {
+		echo "<input type='hidden' name='contact_setting_uuid' value='".$contact_setting_uuid."'>\n";
+	}
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 135 - 0
core/contacts/contact_settings.php

@@ -0,0 +1,135 @@
+<?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-2024
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+ Mark J Crane <[email protected]>
+ Luis Daniel Lucio Quiroz <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_setting_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set from session variables
+	$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
+
+//get the list
+	$sql = "select * from v_contact_settings ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by ";
+	$sql .= "contact_setting_category asc ";
+	$sql .= ", contact_setting_subcategory asc ";
+	$sql .= ", contact_setting_order asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_settings = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_settings)) {
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".$text['label-contact_settings']."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			if (permission_exists('contact_setting_delete')) {
+				echo "	<th class='checkbox'>\n";
+				echo "		<input type='checkbox' id='checkbox_all_settings' name='checkbox_all' onclick=\"edit_all_toggle('settings');\" ".($contact_settings ?: "style='visibility: hidden;'").">\n";
+				echo "	</th>\n";
+			}
+			echo "<th class='pct-15'>".$text['label-contact_setting_category']."</th>";
+			echo "<th>".$text['label-contact_setting_subcategory']."</th>";
+			echo "<th>".$text['label-contact_setting_type']."</th>";
+			echo "<th>".$text['label-contact_setting_value']."</th>";
+			echo "<th class='center'>".$text['label-enabled']."</th>";
+			echo "<th class='hide-md-dn'>".$text['label-description']."</th>";
+			if (permission_exists('contact_setting_edit') && $list_row_edit_button == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_settings)) {
+				$x = 0;
+				foreach ($contact_settings as $row) {
+					if (permission_exists('contact_setting_edit')) {
+						$list_row_url = "contact_setting_edit.php?contact_uuid=".urlencode($contact_uuid)."&id=".urlencode($row['contact_setting_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."'>\n";
+					if (permission_exists('contact_setting_delete')) {
+						echo "	<td class='checkbox'>\n";
+						echo "		<input type='checkbox' name='contact_settings[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_settings' value='true' onclick=\"edit_delete_action('settings');\">\n";
+						echo "		<input type='hidden' name='contact_settings[$x][uuid]' value='".escape($row['contact_setting_uuid'])."' />\n";
+						echo "	</td>\n";
+					}
+					echo "	<td>".escape($row['contact_setting_category'])."&nbsp;</td>\n";
+					echo "	<td><a href='".$list_row_url."'>".escape($row['contact_setting_subcategory'])."</a></td>\n";
+					echo "	<td>".escape($row['contact_setting_name'])."&nbsp;</td>\n";
+					echo "	<td>\n";
+					$category = escape($row['contact_setting_category']);
+					$subcategory = escape($row['contact_setting_subcategory']);
+					$name = escape($row['contact_setting_name']);
+					if ($category == "callingcard" && $subcategory == "username" && $name == "var" ) {
+						echo "		********\n";
+					}
+					else if ($category == "callingcard" && $subcategory == "password" && $name == "var" ) {
+						echo "		********\n";
+					}
+					else {
+						echo escape($row['contact_setting_value']);
+					}
+					echo "	</td>\n";
+					echo "	<td class='center'>".$text['label-'.escape($row['contact_setting_enabled'])]."&nbsp;</td>\n";
+					echo "	<td class='description overflow hide-md-dn'>".$row['contact_setting_description']."&nbsp;</td>\n";
+					if (permission_exists('contact_setting_edit') && $list_row_edit_button == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+				unset($contact_settings);
+			}
+
+			echo "</table>";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 249 - 0
core/contacts/contact_time_edit.php

@@ -0,0 +1,249 @@
+<?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-2018
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_time_edit') || permission_exists('contact_time_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$contact_time_uuid = $_REQUEST["id"];
+	}
+	else {
+		$action = "add";
+	}
+
+//get the contact uuid
+	if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
+		$contact_uuid = $_GET["contact_uuid"];
+	}
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+		$time_start = $_POST["time_start"];
+		$time_stop = $_POST["time_stop"];
+		$time_description = $_POST["time_description"];
+	}
+
+//process the form data
+	if (!empty($_POST) && empty($_POST["persistformvar"])) {
+
+		//set the uuid
+			if ($action == "update") {
+				$contact_time_uuid = $_POST["contact_time_uuid"];
+			}
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contacts.php');
+				exit;
+			}
+
+		//check for all required data
+			$msg = '';
+			if (!empty($msg) && empty($_POST["persistformvar"])) {
+				require_once "resources/header.php";
+				require_once "resources/persist_form_var.php";
+				echo "<div align='center'>\n";
+				echo "<table><tr><td>\n";
+				echo $msg."<br />";
+				echo "</td></tr></table>\n";
+				persistformvar($_POST);
+				echo "</div>\n";
+				require_once "resources/footer.php";
+				return;
+			}
+
+		//add or update the database
+			if (empty($_POST["persistformvar"])) {
+
+				//update last modified
+				$array['contacts'][0]['contact_uuid'] = $contact_uuid;
+				$array['contacts'][0]['domain_uuid'] = $domain_uuid;
+				$array['contacts'][0]['last_mod_date'] = 'now()';
+				$array['contacts'][0]['last_mod_user'] = $_SESSION['username'];
+
+				$p = new permissions;
+				$p->add('contact_edit', 'temp');
+
+				$database = new database;
+				$database->app_name = 'contacts';
+				$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+				$database->save($array);
+				unset($array);
+
+				$p->delete('contact_edit', 'temp');
+
+				if ($action == "add" && permission_exists('contact_time_add')) {
+					$contact_time_uuid = uuid();
+					$array['contact_times'][0]['contact_time_uuid'] = $contact_time_uuid;
+
+					message::add($text['message-add']);
+				}
+
+				if ($action == "update" && permission_exists('contact_time_edit')) {
+					$array['contact_times'][0]['contact_time_uuid'] = $contact_time_uuid;
+
+					message::add($text['message-update']);
+				}
+
+				if (!empty($array)) {
+					$array['contact_times'][0]['domain_uuid'] = $domain_uuid;
+					$array['contact_times'][0]['contact_uuid'] = $contact_uuid;
+					$array['contact_times'][0]['user_uuid'] = $_SESSION["user"]["user_uuid"];
+					$array['contact_times'][0]['time_start'] = $time_start;
+					$array['contact_times'][0]['time_stop'] = $time_stop;
+					$array['contact_times'][0]['time_description'] = $time_description;
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+				}
+
+				header("Location: contact_edit.php?id=".$contact_uuid);
+				exit;
+
+			}
+	}
+
+//pre-populate the form
+	if (!empty($_GET) && empty($_POST["persistformvar"])) {
+		$contact_time_uuid = $_GET["id"];
+		$sql = "select ct.*, u.username ";
+		$sql .= "from v_contact_times as ct, v_users as u ";
+		$sql .= "where ct.user_uuid = u.user_uuid ";
+		$sql .= "and ct.domain_uuid = :domain_uuid ";
+		$sql .= "and ct.contact_uuid = :contact_uuid ";
+		$sql .= "and ct.user_uuid = :user_uuid ";
+		$sql .= "and contact_time_uuid = :contact_time_uuid ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_uuid'] = $contact_uuid ?? '';
+		$parameters['user_uuid'] = $_SESSION["user"]["user_uuid"];
+		$parameters['contact_time_uuid'] = $contact_time_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		$time_start = $row["time_start"];
+		$time_stop = $row["time_stop"];
+		$time_description = $row["time_description"];
+		unset($sql, $parameters, $row);
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	if ($action == "update") {
+		$document['title'] = $text['title-contact_time_edit'];
+	}
+	else if ($action == "add") {
+		$document['title'] = $text['title-contact_time_add'];
+	}
+	require_once "resources/header.php";
+
+//show the content
+	echo "<form method='post' name='frm'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'>";
+	if ($action == "update") {
+		echo "<b>".$text['header-contact_time_edit']."</b>";
+	}
+	else if ($action == "add") {
+		echo "<b>".$text['header-contact_time_add']."</b>";
+	}
+	echo "	</div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid ?? '')]);
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	echo "<div class='card'>\n";
+	echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+	echo "<tr>\n";
+	echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-time_start']."\n";
+	echo "</td>\n";
+	echo "<td width='70%' class='vtable' style='position: relative;' align='left'>\n";
+	echo "	<input class='formfld datetimesecpicker' data-toggle='datetimepicker' data-target='#time_start' type='text' name='time_start' id='time_start' style='min-width: 135px; width: 135px;' value='".$time_start."' onblur=\"$(this).datetimepicker('hide');\">\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-time_stop']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' style='position: relative;' align='left'>\n";
+	echo "	<input class='formfld datetimesecpicker' data-toggle='datetimepicker' data-target='#time_stop' type='text' name='time_stop' id='time_stop' style='min-width: 135px; width: 135px;' value='".$time_stop."' onblur=\"$(this).datetimepicker('hide');\">\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-time_description']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "  <textarea class='formfld' type='text' name='time_description' id='time_description' style='width: 400px; height: 100px;'>".$time_description."</textarea>\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>";
+	echo "</div>\n";
+	echo "<br><br>";
+
+	echo "<input type='hidden' name='contact_uuid' value='".escape($contact_uuid)."'>\n";
+	if ($action == "update") {
+		echo "<input type='hidden' name='contact_time_uuid' value='".escape($contact_time_uuid)."'>\n";
+	}
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 361 - 0
core/contacts/contact_timer.php

@@ -0,0 +1,361 @@
+<?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 files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+	if (!permission_exists('contact_time_add')) { echo "access denied"; exit; }
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//get contact uuid
+	$domain_uuid = $_REQUEST['domain_uuid'];
+	$contact_uuid = $_REQUEST['contact_uuid'];
+
+//get posted variables & set time status
+	if (!empty($_POST)) {
+		$contact_time_uuid = $_POST['contact_time_uuid'];
+		$contact_uuid = $_POST['contact_uuid'];
+		$time_action = $_POST['time_action'];
+		$time_description = $_POST['time_description'];
+
+		if ($time_description == 'Description...') { unset($time_description); }
+
+		if ($time_action == 'start') {
+			$contact_time_uuid = uuid();
+			$array['contact_times'][0]['domain_uuid'] = $domain_uuid;
+			$array['contact_times'][0]['contact_time_uuid'] = $contact_time_uuid;
+			$array['contact_times'][0]['contact_uuid'] = $contact_uuid;
+			$array['contact_times'][0]['user_uuid'] = $_SESSION["user"]["user_uuid"];
+			$array['contact_times'][0]['time_start'] = date("Y-m-d H:i:s");
+			$array['contact_times'][0]['time_description'] = $time_description;
+		}
+		if ($time_action == 'stop') {
+			$array['contact_times'][0]['contact_time_uuid'] = $contact_time_uuid;
+			$array['contact_times'][0]['time_stop'] = date("Y-m-d H:i:s");
+			$array['contact_times'][0]['time_description'] = $time_description;
+		}
+
+		if (!empty($array)) {
+			$database = new database;
+			$database->app_name = 'contacts';
+			$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+			$database->save($array);
+			unset($array);
+		}
+
+		header("Location: contact_timer.php?domain_uuid=".$domain_uuid."&contact_uuid=".$contact_uuid);
+	}
+
+//get contact details
+	$sql = "select ";
+	$sql .= "contact_organization, ";
+	$sql .= "contact_name_given, ";
+	$sql .= "contact_name_family, ";
+	$sql .= "contact_nickname ";
+	$sql .= "from v_contacts ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid;
+	$database = new database;
+	$row = $database->select($sql, $parameters, 'row');
+	if (!empty($row)) {
+		$contact_organization = $row["contact_organization"];
+		$contact_name_given = $row["contact_name_given"];
+		$contact_name_family = $row["contact_name_family"];
+		$contact_nickname = $row["contact_nickname"];
+	}
+	else {
+		exit;
+	}
+	unset($sql, $parameters, $row);
+
+//determine timer state and action
+	$sql = "select ";
+	$sql .= "contact_time_uuid, ";
+	$sql .= "time_description ";
+	$sql .= "from v_contact_times ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and user_uuid = :user_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "and time_start is not null ";
+	$sql .= "and time_stop is null ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['user_uuid'] = $_SESSION['user']['user_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$row = $database->select($sql, $parameters, 'row');
+	if (!empty($row)) {
+		$contact_time_uuid = $row["contact_time_uuid"];
+		$time_description = $row["time_description"];
+	}
+	unset($sql, $parameters, $row);
+
+	$timer_state = is_uuid($contact_time_uuid) ? 'running' : 'stopped';
+	$timer_action = $timer_state == 'running' ? 'stop' : 'start';
+
+//determine contact name to display
+	if (!empty($contact_nickname)) {
+		$contact = $contact_nickname;
+	}
+	else if (!empty($contact_name_given)) {
+		$contact = $contact_name_given;
+	}
+	if (!empty($contact_name_family)) {
+		$contact .= (!empty($contact)) ? ' '.$contact_name_family : $contact_name_family;
+	}
+	if (!empty($contact_organization)) {
+		$contact .= (!empty($contact)) ? ', '.$contact_organization : $contact_organization;
+	}
+
+//get the browser version
+	$user_agent = http_user_agent();
+	$browser_version =  $user_agent['version'];
+	$browser_name =  $user_agent['name'];
+	$browser_version_array = explode('.', $browser_version);
+
+//set the doctype
+	echo ($browser_name != "Internet Explorer") ? "<!DOCTYPE html>\n" : "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
+
+?>
+<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
+<head>
+	<title><?php echo $text['label-time_timer']; ?>: <?php echo $contact; ?></title>
+	<style>
+		body {
+			color: #5f5f5f;
+			font-size: 12px;
+			font-family: arial;
+			margin: 0;
+			padding: 15px;
+			}
+
+		b {
+			color: #952424;
+			font-size: 15px;
+			font-family: arial;
+			}
+
+		a {
+			color: #004083;
+			width: 100%;
+			}
+
+		a:hover {
+			color: #5082ca;
+			}
+
+		form {
+			margin: 0;
+			}
+
+		input.btn, input.button {
+			font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, Arial, sans-serif;
+			padding: 2px 6px 3px 6px;
+			color: #fff;
+			font-weight: bold;
+			cursor: pointer;
+			font-size: 11px;
+			-moz-border-radius: 3px;
+			-webkit-border-radius: 3px;
+			-khtml-border-radius: 3px;
+			border-radius: 3px;
+			background-image: -moz-linear-gradient(top, #524f59 25%, #000 64%);
+			background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.25, #524f59), color-stop(0.64, #000));
+			border: 1px solid #26242a;
+			background-color: #000;
+			text-align: center;
+			text-transform: uppercase;
+			text-shadow: 0px 0px 1px rgba(0, 0, 0, 0.85);
+			opacity: 0.9;
+			-moz-opacity: 0.9;
+			}
+
+		input.btn:hover, input.button:hover, img.list_control_icon:hover {
+			box-shadow: 0 0 5px #cddaf0;
+			-webkit-box-shadow: 0 0 5px #cddaf0;
+			-moz-box-shadow: 0 0 5px #cddaf0;
+			opacity: 1.0;
+			-moz-opacity: 1.0;
+			cursor: pointer;
+			}
+
+		input.txt, textarea.txt, select.txt, .formfld {
+			font-family: arial;
+			font-size: 12px;
+			color: #000;
+			text-align: left;
+			padding: 5px;
+			border: 1px solid #c0c0c0;
+			background-color: #fff;
+			box-shadow: 0 0 3px #cddaf0 inset;
+			-moz-box-shadow: 0 0 3px #cddaf0 inset;
+			-webkit-box-shadow: 0 0 3px #cddaf0 inset;
+			border-radius: 3px;
+			-moz-border-radius: 3px;
+			-webkit-border-radius: 3px;
+			}
+
+		input.txt, .formfld {
+			transition: width 0.25s;
+			-moz-transition: width 0.25s;
+			-webkit-transition: width 0.25s;
+			max-width: 500px;
+			}
+
+		input.txt:focus, .formfld:focus {
+			-webkit-box-shadow: 0 0 5px #cddaf0;
+			-moz-box-shadow: 0 0 5px #cddaf0;
+			box-shadow: 0 0 5px #cddaf0;
+			}
+
+		td {
+			color: #5f5f5f;
+			font-size: 12px;
+			font-family: arial;
+			}
+
+		.vncell {
+			border-bottom: 1px solid #fff;
+			background-color: #e5e9f0;
+			padding: 8px;
+			text-align: right;
+			color: #000;
+			-moz-border-radius: 4px;
+			-webkit-border-radius: 4px;
+			border-radius: 4px;
+			border-right: 3px solid #e5e9f0;
+			}
+
+		DIV.timer_running {
+			vertical-align: middle;
+			padding-top: 7px;
+			line-height: 50px;
+			width: 100%;
+			height: 53px;
+			text-align: center;
+			background-color: #2C9DE8;
+			font-size: 50px;
+			color: #FFFFFF;
+			/*-webkit-text-shadow: 0px 0px 5px #000;*/
+			/*-moz-text-shadow: 0px 0px 5px #000;*/
+			/*text-shadow: 0px 0px 5px #000;*/
+			font-weight: bold;
+			letter-spacing: -0.05em;
+			font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace;
+			-moz-border-radius: 4px;
+			-webkit-border-radius: 4px;
+			border-radius: 4px;
+			}
+
+		DIV.timer_stopped {
+			vertical-align: middle;
+			padding-top: 7px;
+			line-height: 50px;
+			width: 100%;
+			height: 53px;
+			text-align: center;
+			background-color: #2C9DE8;
+			font-size: 50px;
+			color: #FFFFFF;
+			/*-webkit-text-shadow: 0px 0px 5px #000;*/
+			/*-moz-text-shadow: 0px 0px 5px #000;*/
+			/*text-shadow: 0px 0px 5px #000;*/
+			font-weight: bold;
+			letter-spacing: -0.05em;
+			font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace;
+			-moz-border-radius: 4px;
+			-webkit-border-radius: 4px;
+			border-radius: 4px;
+			}
+
+	</style>
+
+	<script language='JavaScript' type='text/javascript' src='<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-3.6.1.min.js'></script>
+	<script src='https://code.jquery.com/jquery-migrate-3.1.0.js'></script>
+	<script type="text/javascript">
+		$(document).ready(function(){
+			//ajax for refresh
+			var refresh = 1500;
+			var source_url = 'contact_timer_inc.php?domain_uuid=<?php echo escape($domain_uuid); ?>&contact_uuid=<?php echo escape($contact_uuid); ?>&contact_time_uuid=<?php echo escape($contact_time_uuid); ?>';
+
+			var ajax_get = function () {
+				$.ajax({
+					url: source_url, success: function(response){
+						$("#ajax_reponse").html(response);
+					}
+				});
+				setTimeout(ajax_get, refresh);
+			};
+			<?php if ($timer_state == 'running') { ?>
+				ajax_get();
+			<?php } ?>
+		});
+
+	//set window title to time when timer is running
+		function set_title(title_text) {
+			window.document.title = title_text;
+		}
+
+	</script>
+</head>
+<body>
+	<img src='resources/images/icon_timer.png' style='width: 24px; height: 24px; border: none; margin-left: 15px;' alt="<?php echo $text['label-time_timer']; ?>" align='right'>
+	<b><?php echo $text['label-time_timer']; ?></b>
+	<br><br>
+	<?php echo $text['description_timer']; ?>
+	<br><br>
+	<strong><a href="javascript:void(0);" onclick="window.opener.location.href='contact_edit.php?id=<?php echo escape($contact_uuid); ?>';"><?php echo escape($contact); ?></a></strong>
+	<br><br>
+	<div id='ajax_reponse' class='timer_<?php echo escape($timer_state);?>'>00:00:00</div>
+	<br>
+	<form name='frm' id='frm' method='post'>
+	<input type='hidden' name='domain_uuid' value="<?php echo escape($domain_uuid); ?>">
+	<input type='hidden' name='contact_time_uuid' value="<?php echo escape($contact_time_uuid); ?>">
+	<input type='hidden' name='contact_uuid' value="<?php echo escape($contact_uuid); ?>">
+	<input type='hidden' name='time_action' value="<?php echo escape($timer_action); ?>">
+	<table cellpadding='0' cellspacing='0' border='0' style='width: 100%;'>
+		<tr>
+			<td class='vncell' style='text-align: center; border: none; padding: 0 !important; padding-top: 10px !important;'>
+				<?php echo $text['label-description']; ?><br>
+				<textarea name='time_description' id='timer_description' class='formfld' style='width: calc(100% - 30px); height: 50px; margin: 5px 10px 10px;'><?php echo escape($time_description); ?></textarea>
+			</td>
+		</tr>
+	</table>
+	<br>
+	<center>
+	<?php if ($timer_state == 'running') { ?>
+		<input type='submit' class='btn' value="<?php echo $text['button-stop']; ?>">
+	<?php } else if ($timer_state == 'stopped') { ?>
+		<input type='submit' class='btn' value="<?php echo $text['button-start']; ?>">
+	<?php } ?>
+	</center>
+	</form>
+	<?php if ($timer_state == 'stopped') { ?><script>$('#timer_description').trigger('focus');</script><?php } ?>
+</body>
+</html>

+ 60 - 0
core/contacts/contact_timer_inc.php

@@ -0,0 +1,60 @@
+<?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 files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+	if (!permission_exists('contact_time_add')) { echo "access denied"; exit; }
+
+//get contact and time uuids
+	$domain_uuid = $_REQUEST['domain_uuid'];
+	$contact_uuid = $_REQUEST['contact_uuid'] ?? '';
+	$contact_time_uuid = $_REQUEST['contact_time_uuid'];
+
+//get time quantity
+	$sql = "select ";
+	$sql .= "time_start ";
+	$sql .= "from v_contact_times ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_time_uuid = :contact_time_uuid ";
+	$sql .= "and user_uuid = :user_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "and time_start is not null ";
+	$sql .= "and time_stop is null ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid;
+	$parameters['user_uuid'] = $_SESSION['user']['user_uuid'];
+	$parameters['contact_time_uuid'] = $contact_time_uuid;
+	$database = new database;
+	$row = $database->select($sql, $parameters, 'row');
+	if (!empty($row)) {
+		$time_start = strtotime($row["time_start"]);
+		$time_now = strtotime(date("Y-m-d H:i:s"));
+		$time_diff = gmdate("H:i:s", ($time_now - $time_start));
+		echo $time_diff;
+		echo "<script id='title_script'>set_title('".$time_diff."');</script>";
+	}
+	unset ($sql, $parameters, $row);
+?>

+ 131 - 0
core/contacts/contact_times.php

@@ -0,0 +1,131 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_time_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set from session variables
+	$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
+
+//set the uuid
+	if (!empty($_GET['id']) && is_uuid($_GET['id'])) {
+		$contact_uuid = $_GET['id'];
+	}
+
+//get the contact list
+	$sql = "select ct.*, u.username, u.domain_uuid as user_domain_uuid ";
+	$sql .= "from v_contact_times as ct, v_users as u ";
+	$sql .= "where ct.user_uuid = u.user_uuid ";
+	$sql .= "and ct.domain_uuid = :domain_uuid ";
+	$sql .= "and ct.contact_uuid = :contact_uuid ";
+	$sql .= "order by ct.time_start desc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_times = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_times)) {
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".$text['header_contact_times']."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			if (permission_exists('contact_time_delete')) {
+				echo "	<th class='checkbox'>\n";
+				echo "		<input type='checkbox' id='checkbox_all_times' name='checkbox_all' onclick=\"edit_all_toggle('times');\" ".($contact_times ?: "style='visibility: hidden;'").">\n";
+				echo "	</th>\n";
+			}
+			echo "<th class='pct-20'>".$text['label-time_user']."</th>\n";
+			echo "<th class='pct-20'>".$text['label-time_start']."</th>\n";
+			echo "<th class='pct-20'>".$text['label-time_duration']."</th>\n";
+			echo "<th class='pct-40 hide-md-dn'>".$text['label-time_description']."</th>\n";
+			if (permission_exists('contact_time_edit') && $list_row_edit_button == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_times)) {
+				$x = 0;
+				foreach ($contact_times as $row) {
+					if (!empty($row["time_start"]) && !empty($row['time_stop'])) {
+						$time_start = strtotime($row["time_start"]);
+						$time_stop = strtotime($row['time_stop']);
+						$time = gmdate("H:i:s", ($time_stop - $time_start));
+					}
+					else {
+						unset($time);
+					}
+					$tmp = explode(' ', $row['time_start']);
+					$time_start = $tmp[0];
+					if (permission_exists('contact_time_edit')) {
+						$list_row_url = "contact_time_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_time_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."'>\n";
+					if (permission_exists('contact_time_delete')) {
+						echo "	<td class='checkbox'>\n";
+						echo "		<input type='checkbox' name='contact_times[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_times' value='true' onclick=\"edit_delete_action('times');\">\n";
+						echo "		<input type='hidden' name='contact_times[$x][uuid]' value='".escape($row['contact_time_uuid'])."' />\n";
+						echo "	</td>\n";
+					}
+					echo "	<td><span ".($row['user_domain_uuid'] != $domain_uuid ? "title='".$_SESSION['domains'][escape($row['user_domain_uuid'])]['domain_name']."' style='cursor: help;'" : null).">".escape($row["username"])."</span>&nbsp;</td>\n";
+					echo "	<td>".$time_start."&nbsp;</td>\n";
+					echo "	<td>".$time."&nbsp;</td>\n";
+					echo "	<td class='description overflow hide-md-dn'>".escape($row['time_description'])."&nbsp;</td>\n";
+					if (permission_exists('contact_time_edit') && $list_row_edit_button == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+				unset($contact_times);
+			}
+
+			echo "</table>\n";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 80 - 0
core/contacts/contact_times_view.php

@@ -0,0 +1,80 @@
+<?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-2020
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_time_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the contact list
+	$sql = "select ct.*, u.username, u.domain_uuid as user_domain_uuid ";
+	$sql .= "from v_contact_times as ct, v_users as u ";
+	$sql .= "where ct.user_uuid = u.user_uuid ";
+	$sql .= "and ct.domain_uuid = :domain_uuid ";
+	$sql .= "and ct.contact_uuid = :contact_uuid ";
+	$sql .= "order by ct.time_start desc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid;
+	$database = new database;
+	$contact_times = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (is_array($contact_times) && @sizeof($contact_times) != 0) {
+
+		//show the content
+			echo "<div class='grid' style='grid-template-columns: 70px auto auto;'>\n";
+			$x = 0;
+			foreach ($contact_times as $row) {
+				if ($row["time_start"] != '' && $row['time_stop'] != '') {
+					$time_start = strtotime($row["time_start"]);
+					$time_stop = strtotime($row['time_stop']);
+					$time = gmdate("H:i:s", ($time_stop - $time_start));
+				}
+				else {
+					unset($time);
+				}
+				$tmp = explode(' ', $row['time_start']);
+				$time_start = $tmp[0];
+				echo "<div class='box contact-details-label'><span ".($row['user_domain_uuid'] != $domain_uuid ? "title='".$_SESSION['domains'][escape($row['user_domain_uuid'])]['domain_name']."' style='cursor: help;'" : null).">".escape($row["username"])."</span></div>\n";
+				echo "<div class='box'>".$time_start."</div>\n";
+				echo "<div class='box'>".$time."</div>\n";
+				$x++;
+			}
+			echo "</div>\n";
+			unset($contact_times);
+
+	}
+
+?>

+ 332 - 0
core/contacts/contact_url_edit.php

@@ -0,0 +1,332 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+	Luis Daniel Lucio Quiroz <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_url_edit') || permission_exists('contact_url_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//set the defaults
+	$url_label = '';
+	$url_label_custom = '';
+	$url_address = '';
+	$url_primary = '';
+	$url_description = '';
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$contact_url_uuid = $_REQUEST["id"];
+	}
+	else {
+		$action = "add";
+	}
+
+//get the contact uuid
+	if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
+		$contact_uuid = $_GET["contact_uuid"];
+	}
+
+//get http post variables and set them to php variables
+	if (!empty($_POST)) {
+		$url_label = $_POST["url_label"];
+		$url_label_custom = $_POST["url_label_custom"];
+		$url_address = $_POST["url_address"];
+		$url_primary = $_POST["url_primary"];
+		$url_description = $_POST["url_description"];
+
+		//use custom label if set
+		$url_label = !empty($url_label_custom) ? $url_label_custom : $url_label;
+	}
+
+//process the form data
+	if (!empty($_POST) && empty($_POST["persistformvar"])) {
+
+		//set the uuid
+			if ($action == "update") {
+				$contact_url_uuid = $_POST["contact_url_uuid"];
+			}
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: contacts.php');
+				exit;
+			}
+
+		//check for all required data
+			$msg = '';
+			if (!empty($msg) && empty($_POST["persistformvar"])) {
+				require_once "resources/header.php";
+				require_once "resources/persist_form_var.php";
+				echo "<div align='center'>\n";
+				echo "<table><tr><td>\n";
+				echo $msg."<br />";
+				echo "</td></tr></table>\n";
+				persistformvar($_POST);
+				echo "</div>\n";
+				require_once "resources/footer.php";
+				return;
+			}
+
+		//add or update the database
+			if (empty($_POST["persistformvar"])) {
+
+				//update last modified
+				$array['contacts'][0]['contact_uuid'] = $contact_uuid;
+				$array['contacts'][0]['domain_uuid'] = $domain_uuid;
+				$array['contacts'][0]['last_mod_date'] = 'now()';
+				$array['contacts'][0]['last_mod_user'] = $_SESSION['username'];
+
+				$p = new permissions;
+				$p->add('contact_edit', 'temp');
+
+				$database = new database;
+				$database->app_name = 'contacts';
+				$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+				$database->save($array);
+				unset($array);
+
+				$p->delete('contact_edit', 'temp');
+
+				//if primary, unmark other primary urls
+				if ($url_primary) {
+					$sql = "update v_contact_urls set url_primary = 0 ";
+					$sql .= "where domain_uuid = :domain_uuid ";
+					$sql .= "and contact_uuid = :contact_uuid ";
+					$parameters['domain_uuid'] = $domain_uuid;
+					$parameters['contact_uuid'] = $contact_uuid;
+					$database = new database;
+					$database->execute($sql, $parameters ?? null);
+					unset($sql, $parameters);
+				}
+
+				if ($action == "add" && permission_exists('contact_url_add')) {
+					$contact_url_uuid = uuid();
+					$array['contact_urls'][0]['contact_url_uuid'] = $contact_url_uuid;
+
+					message::add($text['message-add']);
+				}
+
+				if ($action == "update" && permission_exists('contact_url_edit')) {
+					$array['contact_urls'][0]['contact_url_uuid'] = $contact_url_uuid;
+
+					message::add($text['message-update']);
+				}
+
+				if (!empty($array)) {
+					$array['contact_urls'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
+					$array['contact_urls'][0]['contact_uuid'] = $contact_uuid;
+					$array['contact_urls'][0]['url_label'] = $url_label;
+					$array['contact_urls'][0]['url_address'] = $url_address;
+					$array['contact_urls'][0]['url_primary'] = $url_primary ? 1 : 0;
+					$array['contact_urls'][0]['url_description'] = $url_description;
+
+					$database = new database;
+					$database->app_name = 'contacts';
+					$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+					$database->save($array);
+					unset($array);
+				}
+
+				header("Location: contact_edit.php?id=".$contact_uuid);
+				exit;
+
+			}
+	}
+
+//pre-populate the form
+	if (!empty($_GET) && empty($_POST["persistformvar"])) {
+		$contact_url_uuid = $_GET["id"] ?? '';
+		$sql = "select * from v_contact_urls ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_url_uuid = :contact_url_uuid ";
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['contact_url_uuid'] = $contact_url_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (!empty($row)) {
+			$url_label = $row["url_label"];
+			$url_address = $row["url_address"];
+			$url_primary = $row["url_primary"];
+			$url_description = $row["url_description"];
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	if ($action == "update") {
+		$document['title'] = $text['title-contact_url-edit'];
+	}
+	else if ($action == "add") {
+		$document['title'] = $text['title-contact_url-add'];
+	}
+	require_once "resources/header.php";
+
+//javascript to toggle input/select boxes
+	echo "<script type='text/javascript'>";
+	echo "	function toggle_custom(field) {";
+	echo "		$('#'+field).toggle();";
+	echo "		document.getElementById(field).selectedIndex = 0;";
+	echo "		document.getElementById(field+'_custom').value = '';";
+	echo "		$('#'+field+'_custom').toggle();";
+	echo "		if ($('#'+field+'_custom').is(':visible')) { $('#'+field+'_custom').trigger('focus'); } else { $('#'+field).trigger('focus'); }";
+	echo "	}";
+	echo "</script>";
+
+//show the content
+	echo "<form method='post' name='frm' id='frm'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'>";
+	if ($action == "update") {
+		echo "<b>".$text['header-contact_url-edit']."</b>";
+	}
+	else if ($action == "add") {
+		echo "<b>".$text['header-contact_url-add']."</b>";
+	}
+	echo "	</div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid ?? '')]);
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	if ($action == "update") {
+		echo $text['description-contact_url-edit'];
+	}
+	else if ($action == "add") {
+		echo $text['description-contact_url-add'];
+	}
+	echo "<br /><br />\n";
+
+	echo "<div class='card'>\n";
+	echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
+
+	echo "<tr>\n";
+	echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-url_label']."\n";
+	echo "</td>\n";
+	echo "<td width='70%' class='vtable' align='left'>\n";
+	if (!empty($_SESSION["contact"]["url_label"])) {
+		sort($_SESSION["contact"]["url_label"]);
+		foreach($_SESSION["contact"]["url_label"] as $row) {
+			$url_label_options[] = "<option value='".$row."' ".(($row == $url_label) ? "selected='selected'" : null).">".$row."</option>";
+		}
+		$url_label_found = (in_array($url_label, $_SESSION["contact"]["url_label"])) ? true : false;
+	}
+	else {
+		$selected[$url_label] = "selected";
+		$default_labels[] = $text['option-work'];
+		$default_labels[] = $text['option-personal'];
+		$default_labels[] = $text['option-other'];
+		foreach ($default_labels as $default_label) {
+			$url_label_options[] = "<option value='".$default_label."' ".!empty($selected[$default_label]).">".$default_label."</option>";
+		}
+		$url_label_found = (in_array($url_label, $default_labels)) ? true : false;
+	}
+	echo "	<select class='formfld' ".((!empty($url_label) && !$url_label_found) ? "style='display: none;'" : null)." name='url_label' id='url_label' onchange=\"getElementById('url_label_custom').value='';\">\n";
+	echo "		<option value=''></option>\n";
+	echo 		(!empty($url_label_options)) ? implode("\n", $url_label_options) : null;
+	echo "	</select>\n";
+	echo "	<input type='text' class='formfld' ".((empty($url_label) || $url_label_found) ? "style='display: none;'" : null)." name='url_label_custom' id='url_label_custom' value=\"".((!$url_label_found) ? htmlentities($url_label ?? '') : null)."\">\n";
+	echo "	<input type='button' id='btn_toggle_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('url_label');\">\n";
+	echo "<br />\n";
+	echo !empty($text['description-url_label'])."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-url_address']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='url' name='url_address' maxlength='255' value=\"".escape($url_address)."\" placeholder='http://...'>\n";
+	echo "<br />\n";
+	echo !empty($text['description-url_address'])."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-primary']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<select class='formfld' name='url_primary' id='url_primary'>\n";
+	echo "		<option value='0'>".$text['option-false']."</option>\n";
+	echo "		<option value='1' ".(($url_primary) ? "selected" : null).">".$text['option-true']."</option>\n";
+	echo "	</select>\n";
+	echo "<br />\n";
+	echo $text['description-url_primary']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-url_description']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='url_description' maxlength='255' value=\"".escape($url_description)."\">\n";
+	echo "<br />\n";
+	echo !empty($text['description-url_description'])."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>";
+	echo "</div>\n";
+	echo "<br><br>";
+
+	echo "<input type='hidden' name='contact_uuid' value='".escape($contact_uuid ?? '')."'>\n";
+	if ($action == "update") {
+		echo "<input type='hidden' name='contact_url_uuid' value='".escape($contact_url_uuid)."'>\n";
+	}
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 114 - 0
core/contacts/contact_urls.php

@@ -0,0 +1,114 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_url_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//set the uuid
+	if (!empty($_GET['id']) && is_uuid($_GET['id'])) {
+		$contact_uuid = $_GET['id'];
+	}
+
+//get the contact list
+	$sql = "select * from v_contact_urls ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by url_primary desc, url_label asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_urls = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_urls)) {
+
+		//show the content
+			echo "<div class='action_bar sub shrink'>\n";
+			echo "	<div class='heading'><b>".$text['label-urls']."</b></div>\n";
+			echo "	<div style='clear: both;'></div>\n";
+			echo "</div>\n";
+
+			echo "<div class='card'>\n";
+			echo "<table class='list'>\n";
+			echo "<tr class='list-header'>\n";
+			if (permission_exists('contact_url_delete')) {
+				echo "	<th class='checkbox'>\n";
+				echo "		<input type='checkbox' id='checkbox_all_urls' name='checkbox_all' onclick=\"edit_all_toggle('urls');\" ".($contact_urls ?: "style='visibility: hidden;'").">\n";
+				echo "	</th>\n";
+			}
+			echo "<th class='pct-15'>".$text['label-url_label']."</th>\n";
+			echo "<th>".$text['label-url_address']."</th>\n";
+			echo "<th class='hide-md-dn'>".$text['label-url_description']."</th>\n";
+			if (permission_exists('contact_url_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
+				echo "	<td class='action-button'>&nbsp;</td>\n";
+			}
+			echo "</tr>\n";
+
+			if (!empty($contact_urls)) {
+				$x = 0;
+				foreach ($contact_urls as $row) {
+					if (permission_exists('contact_url_edit')) {
+						$list_row_url = "contact_url_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_url_uuid']);
+					}
+					echo "<tr class='list-row' href='".$list_row_url."'>\n";
+					if (permission_exists('contact_url_delete')) {
+						echo "	<td class='checkbox'>\n";
+						echo "		<input type='checkbox' name='contact_urls[$x][checked]' id='checkbox_".$x."' class='chk_delete checkbox_urls' value='true' onclick=\"edit_delete_action('urls');\">\n";
+						echo "		<input type='hidden' name='contact_urls[$x][uuid]' value='".escape($row['contact_url_uuid'])."' />\n";
+						echo "	</td>\n";
+					}
+					echo "	<td>".escape($row['url_label'])." ".($row['url_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+					echo "	<td class='no-link overflow no-wrap'><a href='".escape($row['url_address'])."' target='_blank'>".str_replace("http://", "", str_replace("https://", "", escape($row['url_address'])))."</a></td>\n";
+					echo "	<td class='description overflow hide-md-dn'>".escape($row['url_description'])."&nbsp;</td>\n";
+					if (permission_exists('contact_url_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
+						echo "	<td class='action-button'>\n";
+						echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
+						echo "	</td>\n";
+					}
+					echo "</tr>\n";
+					$x++;
+				}
+			}
+			unset($contact_urls);
+
+			echo "</table>\n";
+			echo "</div>\n";
+			echo "<br />\n";
+
+	}
+
+?>

+ 68 - 0
core/contacts/contact_urls_view.php

@@ -0,0 +1,68 @@
+<?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-2020
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_url_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//get the contact list
+	$sql = "select * from v_contact_urls ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql .= "order by url_primary desc, url_label asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid ?? '';
+	$database = new database;
+	$contact_urls = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//show if exists
+	if (!empty($contact_urls)) {
+
+		//show the content
+			echo "<div class='grid' style='grid-template-columns: 70px auto;'>\n";
+			$x = 0;
+			foreach ($contact_urls as $row) {
+				echo "<div class='box contact-details-label'>".escape($row['url_label'])."</div>\n";
+// 				($row['url_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
+				echo "<div class='box'><a href='".escape($row['url_address'])."' target='_blank'>".escape(str_replace(['http://','https://'], '', $row['url_address']))."</a></div>\n";
+				$x++;
+			}
+			echo "</div>\n";
+			unset($contact_urls);
+
+	}
+
+?>

+ 550 - 0
core/contacts/contact_view.php

@@ -0,0 +1,550 @@
+<?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-2023
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('contact_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//connect to the database
+	$database = new database;
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//action add or update
+	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
+		$contact_uuid = $_REQUEST["id"];
+	}
+	else {
+		header("Location: contacts.php");
+	}
+
+//main contact details
+	$sql = "select * from v_contacts ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_uuid = :contact_uuid ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['contact_uuid'] = $contact_uuid;
+	$row = $database->select($sql, $parameters, 'row');
+	if (!empty($row)) {
+		$contact_type = $row["contact_type"];
+		$contact_organization = $row["contact_organization"];
+		$contact_name_prefix = $row["contact_name_prefix"];
+		$contact_name_given = $row["contact_name_given"];
+		$contact_name_middle = $row["contact_name_middle"];
+		$contact_name_family = $row["contact_name_family"];
+		$contact_name_suffix = $row["contact_name_suffix"];
+		$contact_nickname = $row["contact_nickname"];
+		$contact_title = $row["contact_title"];
+		$contact_category = $row["contact_category"];
+		$contact_role = $row["contact_role"];
+		$contact_time_zone = $row["contact_time_zone"];
+		$contact_note = $row["contact_note"];
+	}
+	unset($sql, $parameters, $row);
+
+//get the available users for this contact
+	$sql = "select * from v_users ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "order by username asc ";
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$users = $database->select($sql, $parameters ?? null, 'all');
+	unset($sql, $parameters);
+
+//determine if contact assigned to a user
+	if (!empty($users)) {
+		foreach ($users as $user) {
+			if ($user['contact_uuid'] == $contact_uuid) {
+				$contact_user_uuid = $user['user_uuid'];
+				break;
+			}
+		}
+	}
+
+//get the assigned users that can view this contact
+	$sql = "select u.username, u.user_uuid, a.contact_user_uuid from v_contacts as c, v_users as u, v_contact_users as a ";
+	$sql .= "where c.contact_uuid = :contact_uuid ";
+	$sql .= "and c.domain_uuid = :domain_uuid ";
+	$sql .= "and u.user_uuid = a.user_uuid ";
+	$sql .= "and c.contact_uuid = a.contact_uuid ";
+	$sql .= "order by u.username asc ";
+	$parameters['contact_uuid'] = $contact_uuid;
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$contact_users_assigned = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//get the assigned groups that can view this contact
+	$sql = "select g.*, cg.contact_group_uuid ";
+	$sql .= "from v_groups as g, v_contact_groups as cg ";
+	$sql .= "where cg.group_uuid = g.group_uuid ";
+	$sql .= "and cg.domain_uuid = :domain_uuid ";
+	$sql .= "and cg.contact_uuid = :contact_uuid ";
+	$sql .= "and cg.group_uuid <> :group_uuid ";
+	$sql .= "order by g.group_name asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$parameters['contact_uuid'] = $contact_uuid;
+	$parameters['group_uuid'] = $_SESSION["user_uuid"];
+	$contact_groups_assigned = $database->select($sql, $parameters, 'all');
+	if (!empty($contact_groups_assigned)) {
+		foreach ($contact_groups_assigned as $field) {
+			$contact_groups[] = "'".$field['group_uuid']."'";
+		}
+	}
+	unset($sql, $parameters);
+
+//get the available groups for this contact
+	$sql = "select group_uuid, group_name from v_groups ";
+	$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+	if (!empty($contact_groups)) {
+		$sql .= "and group_uuid not in (".implode(',', $contact_groups).") ";
+	}
+	$sql .= "order by group_name asc ";
+	$parameters['domain_uuid'] = $domain_uuid;
+	$contact_groups_available = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters, $contact_groups);
+
+//determine title name
+	if ($contact_name_given || $contact_name_family) {
+		$contact_name = $contact_name_prefix ? escape($contact_name_prefix).' ' : null;
+		$contact_name .= $contact_name_given ? escape($contact_name_given).' ' : null;
+		$contact_name .= $contact_name_middle ? escape($contact_name_middle).' ' : null;
+		$contact_name .= $contact_name_family ? escape($contact_name_family).' ' : null;
+		$contact_name .= $contact_name_suffix ? escape($contact_name_suffix).' ' : null;
+	}
+	else {
+		$contact_name = $contact_organization;
+	}
+
+//show the header
+	$document['title'] = $text['title-contact-edit'].($contact_name ? ': '.$contact_name : null);
+	require_once "resources/header.php";
+
+//determine qr branding
+	if (!empty($_SESSION['theme']['qr_brand_type']['text']) && !empty($_SESSION['theme']['qr_brand_image']['text']) && $_SESSION['theme']['qr_brand_type']['text'] == 'image') {
+		echo "<img id='img-buffer' style='display: none;' src='".$_SESSION["theme"]["qr_brand_image"]["text"]."'>";
+		$qr_option = "image: $('#img-buffer')[0],";
+		$qr_mode = '4';
+		$qr_size = '0.2';
+	}
+	elseif (!empty($_SESSION['theme']['qr_brand_type']['text']) && empty($_SESSION['theme']['qr_brand_image']['text']) && $_SESSION['theme']['qr_brand_type']['text'] == 'image') {
+		$qr_option = '';
+		$qr_mode = '3';
+		$qr_size = '0';
+	}
+	elseif (!empty($_SESSION['theme']['qr_brand_type']['text']) && !empty($_SESSION['theme']['qr_brand_text']['text']) && $_SESSION['theme']['qr_brand_type']['text'] == 'text') {
+		$qr_option = 'label: "'.$_SESSION['theme']['qr_brand_text']['text'].'"';
+		$qr_mode = '2';
+		$qr_size = '0.05';
+	}
+	elseif (!empty($_SESSION['theme']['qr_brand_type']['text']) && $_SESSION['theme']['qr_brand_type']['text'] == 'none') {
+		$qr_option = '';
+		$qr_mode = '3';
+		$qr_size = '0';
+	}
+	else {
+		echo "<img id='img-buffer' style='display: none;' src='".PROJECT_PATH."/themes/".$_SESSION["domain"]["template"]["name"]."/images/qr_code.png'>";
+		$qr_option = "image: $('#img-buffer')[0],";
+		$qr_mode = '4';
+		$qr_size = '0.2';
+	}
+
+//qr code generation
+	$_GET['type'] = "text";
+	$qr_vcard = true;
+	include "contacts_vcard.php";
+	echo "<input type='hidden' id='qr_vcard' value=\"".$qr_vcard."\">";
+	echo "<style>";
+	echo "	#qr_code_container {";
+	echo "		z-index: 999999; ";
+	echo "		position: fixed; ";
+	echo "		left: 0; ";
+	echo "		top: 0; ";
+	echo "		right: 0; ";
+	echo "		bottom: 0; ";
+	echo "		text-align: center; ";
+	echo "		vertical-align: middle;";
+	echo "	}";
+	echo "	#qr_code {";
+	echo "		display: block; ";
+	echo "		width: 100%; ";
+	echo "		max-width: 650px; ";
+	echo "		height: auto; ";
+	echo "		-webkit-box-shadow: 0px 1px 20px #888; ";
+	echo "		-moz-box-shadow: 0px 1px 20px #888; ";
+	echo "		box-shadow: 0px 1px 20px #888;";
+	echo "	}";
+	echo "	#qr_code > img {";
+	echo "		width: 100%; ";
+	echo "		max-width: 650px; ";
+	echo "		height: auto; ";
+	echo "	}";
+	echo "</style>";
+	echo "<script src='".PROJECT_PATH."/resources/jquery/jquery-qrcode.min.js'></script>";
+	echo "<script language='JavaScript' type='text/javascript'>";
+	echo "	$(document).ready(function() {";
+	echo "		$('#qr_code').qrcode({ ";
+	echo "			render: 'image', ";
+	echo "			minVersion: 6, ";
+	echo "			maxVersion: 40, ";
+	echo "			ecLevel: 'H', ";
+	echo "			size: 650, ";
+	echo "			radius: 0.2, ";
+	echo "			quiet: 6, ";
+	echo "			background: '#fff', ";
+	echo "			mode: ".$qr_mode.", ";
+	echo "			mSize: ".$qr_size.", ";
+	echo "			mPosX: 0.5, ";
+	echo "			mPosY: 0.5, ";
+	echo "			text: document.getElementById('qr_vcard').value, ";
+	echo "			".$qr_option;
+	echo "		});";
+	echo "	});";
+	echo "</script>";
+
+//show the content
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'><b>".($contact_name ? $contact_name : $text['header-contact-edit'])."</b></div>\n";
+	echo "	<div class='actions'>\n";
+	echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','collapse'=>'hide-sm-dn','style'=>'margin-right: 15px;','link'=>'contacts.php']);
+	if (permission_exists('contact_time_add')) {
+		//detect timer state (and start time)
+		$sql = "select ";
+		$sql .= "time_start ";
+		$sql .= "from v_contact_times ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and user_uuid = :user_uuid ";
+		$sql .= "and contact_uuid = :contact_uuid ";
+		$sql .= "and time_start is not null ";
+		$sql .= "and time_stop is null ";
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['user_uuid'] = $_SESSION['user']['user_uuid'];
+		$parameters['contact_uuid'] = $contact_uuid;
+		$time_start = $database->select($sql, $parameters ?? null, 'column');
+		$btn_style = $time_start ? 'color: #fff; background-color: #3693df; background-image: none;' : null;
+		unset($sql, $parameters);
+		echo button::create(['type'=>'button','label'=>$text['button-timer'],'icon'=>'clock','style'=>$btn_style,'title'=>$time_start,'collapse'=>'hide-sm-dn','onclick'=>"window.open('contact_timer.php?domain_uuid=".urlencode($domain_uuid)."&contact_uuid=".urlencode($contact_uuid)."','contact_time_".escape($contact_uuid)."','width=300, height=375, top=30, left='+(screen.width - 350)+', menubar=no, scrollbars=no, status=no, toolbar=no, resizable=no');"]);
+	}
+	echo button::create(['type'=>'button','label'=>$text['button-qr_code'],'icon'=>'qrcode','collapse'=>'hide-sm-dn','onclick'=>"$('#qr_code_container').fadeIn(400);"]);
+	echo button::create(['type'=>'button','label'=>$text['button-vcard'],'icon'=>'address-card','collapse'=>'hide-sm-dn','link'=>'contacts_vcard.php?id='.urlencode($contact_uuid).'&type=download']);
+	if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/invoices')) {
+		echo button::create(['type'=>'button','label'=>$text['button-invoices'],'icon'=>'file-invoice-dollar','collapse'=>'hide-sm-dn','link'=>'../invoices/invoices.php?id='.urlencode($contact_uuid)]);
+	}
+	if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/certificates')) {
+		echo button::create(['type'=>'button','label'=>$text['button-certificate'],'icon'=>'certificate','collapse'=>'hide-sm-dn','link'=>'../certificates/index.php?name='.urlencode($contact_name_given." ".$contact_name_family)]);
+	}
+	if (!empty($contact_user_uuid) && permission_exists('user_edit') && is_uuid($contact_user_uuid)) {
+		echo button::create(['type'=>'button','label'=>$text['button-user'],'icon'=>'user','collapse'=>'hide-sm-dn','link'=>'../../core/users/user_edit.php?id='.urlencode($contact_user_uuid)]);
+	}
+	if (
+		permission_exists('contact_phone_add') ||
+		permission_exists('contact_address_add') ||
+		permission_exists('contact_email_add') ||
+		permission_exists('contact_url_add') ||
+		permission_exists('contact_relation_add') ||
+		permission_exists('contact_note_add') ||
+		permission_exists('contact_time_add') ||
+		permission_exists('contact_setting_add') ||
+		permission_exists('contact_attachment_add')
+		) {
+		echo 		"<select class='formfld' style='width: auto; margin-left: 15px;' id='select_add' onchange=\"document.location.href='contact_' + (this.options[this.selectedIndex].value) + '_edit.php?contact_uuid=".urlencode($contact_uuid)."';\">\n";
+		echo "			<option value=''>".$text['button-add']."...</option>\n";
+		if (permission_exists('contact_phone_add')) { echo "<option value='phone'>".$text['label-phone_number']."</option>\n"; }
+		if (permission_exists('contact_address_add')) { echo "<option value='address'>".$text['label-address_address']."</option>\n"; }
+		if (permission_exists('contact_email_add')) { echo "<option value='email'>".$text['label-email']."</option>\n"; }
+		if (permission_exists('contact_url_add')) { echo "<option value='url'>".$text['label-url']."</option>\n"; }
+		if (permission_exists('contact_relation_add')) { echo "<option value='relation'>".$text['label-contact_relation_label']."</option>\n"; }
+		if (permission_exists('contact_note_add')) { echo "<option value='note'>".$text['label-contact_note']."</option>\n"; }
+		if (permission_exists('contact_time_add')) { echo "<option value='time'>".$text['label-time_time']."</option>\n"; }
+		if (permission_exists('contact_setting_add')) { echo "<option value='setting'>".$text['label-setting']."</option>\n"; }
+		if (permission_exists('contact_attachment_add')) { echo "<option value='attachment'>".$text['label-attachment']."</option>\n"; }
+		echo "		</select>";
+	}
+	if (permission_exists('contact_edit')) {
+		echo button::create(['type'=>'button','label'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'id'=>'btn_edit','style'=>'margin-left: 15px;','collapse'=>'hide-sm-dn','link'=>'contact_edit.php?id='.urlencode($contact_uuid)]);
+	}
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	if (
+		!empty($action) &&
+		$action == "update" && (
+		permission_exists('contact_delete') ||
+		permission_exists('contact_user_delete') ||
+		permission_exists('contact_group_delete') ||
+		permission_exists('contact_phone_delete') ||
+		permission_exists('contact_address_delete') ||
+		permission_exists('contact_email_delete') ||
+		permission_exists('contact_url_delete') ||
+		permission_exists('contact_relation_delete') ||
+		permission_exists('contact_note_delete') ||
+		permission_exists('contact_time_delete') ||
+		permission_exists('contact_setting_delete') ||
+		permission_exists('contact_attachment_delete')
+		)) {
+		echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]);
+	}
+
+	if ($contact_title || $contact_organization) {
+		echo ($contact_title ? '<i>'.$contact_title.'</i>' : null).($contact_title && $contact_organization ? ', ' : null).($contact_organization ? '<strong>'.$contact_organization.'</strong>' : null)."\n";
+	}
+	else {
+		echo $contact_note."\n";
+	}
+	echo "<br /><br />\n";
+
+	echo "<div class='grid' style='grid-gap: 15px; grid-template-columns: repeat(auto-fill, minmax(375px, 1fr));'>\n";
+
+//general info
+	echo "	<div class='box contact-details'>\n";
+	echo "		<div class='grid contact-details'>\n";
+	echo "			<div class='box'><b class='fas fa-user fa-fw fa-lg'></b></div>\n";
+	echo "			<div class='box'>\n";
+	echo "				<div class='grid' style='grid-template-columns: 70px auto;'>\n";
+		//nickname
+			if ($contact_nickname) {
+				echo "<div class='box contact-details-label'>".$text['label-contact_nickname']."</div>\n";
+				echo "<div class='box'>\"".escape($contact_nickname)."\"</div>\n";
+			}
+		//name
+			if ($contact_name_given) {
+				echo "<div class='box contact-details-label'>".$text['label-name']."</div>\n";
+				echo "<div class='box'>".escape($contact_name_given).(!empty($contact_name_family) ? ' '.escape($contact_name_family) : null)."</div>\n";
+			}
+		//contact type
+			if ($contact_type) {
+				echo "<div class='box contact-details-label'>".$text['label-contact_type']."</div>\n";
+				echo "<div class='box'>";
+				if (!empty($_SESSION["contact"]["type"])) {
+					sort($_SESSION["contact"]["type"]);
+					foreach ($_SESSION["contact"]["type"] as $type) {
+						if ($contact_type == $type) {
+							echo escape($type);
+						}
+					}
+				}
+				else if ($text['option-contact_type_'.$contact_type]) {
+					echo $text['option-contact_type_'.$contact_type];
+				}
+				else {
+					echo escape($contact_type);
+				}
+				echo "</div>\n";
+			}
+		//category
+			if ($contact_category) {
+				echo "<div class='box contact-details-label'>".$text['label-contact_category']."</div>\n";
+				echo "<div class='box'>";
+				if (!empty($_SESSION["contact"]["category"])) {
+					sort($_SESSION["contact"]["category"]);
+					foreach ($_SESSION["contact"]["category"] as $category) {
+						if ($contact_category == $category) {
+							echo escape($category);
+							break;
+						}
+					}
+				}
+				else {
+					echo escape($contact_category);
+				}
+				echo "</div>\n";
+			}
+		//role
+			if ($contact_role) {
+				echo "<div class='box contact-details-label'>".$text['label-contact_role']."</div>\n";
+				echo "<div class='box'>";
+				if (!empty($_SESSION["contact"]["role"])) {
+					sort($_SESSION["contact"]["role"]);
+					foreach ($_SESSION["contact"]["role"] as $role) {
+						if ($contact_role == $role) {
+							echo escape($role);
+							break;
+						}
+					}
+				}
+				else {
+					echo escape($contact_role);
+				}
+				echo "</div>\n";
+			}
+		//time_zone
+			if ($contact_time_zone) {
+				echo "<div class='box contact-details-label'>".$text['label-contact_time_zone']."</div>\n";
+				echo "<div class='box'>";
+				echo $contact_time_zone."<br>\n";
+				echo "</div>\n";
+			}
+		//users (viewing contact)
+			if (permission_exists('contact_user_view') && !empty($contact_users_assigned)) {
+				echo "<div class='box contact-details-label'>".$text['label-users']."</div>\n";
+				echo "<div class='box'>";
+				foreach ($contact_users_assigned as $field) {
+					echo escape($field['username'])."<br>\n";
+				}
+				echo "</div>\n";
+			}
+		//groups (viewing contact)
+			if (permission_exists('contact_group_view') && !empty($contact_groups_assigned)) {
+				echo "<div class='box contact-details-label'>".$text['label-groups']."</div>\n";
+				echo "<div class='box'>";
+				foreach ($contact_groups_assigned as $field) {
+					echo escape($field['group_name'])."<br>\n";
+				}
+				echo "</div>\n";
+			}
+	echo "				</div>\n";
+	echo "			</div>\n";
+	echo "		</div>\n";
+	echo "	</div>\n";
+
+//numbers
+	if (permission_exists('contact_phone_view')) {
+		echo "	<div class='box contact-details'>\n";
+		echo "		<div class='grid contact-details'>\n";
+		echo "			<div class='box' title=\"".$text['label-phone_numbers']."\"><b class='fas fa-hashtag fa-fw fa-lg'></b></div>\n";
+		echo "			<div class='box'>\n";
+		require 'contact_phones_view.php';
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "	</div>\n";
+	}
+
+//emails
+	if (permission_exists('contact_email_view')) {
+		echo "	<div class='box contact-details'>\n";
+		echo "		<div class='grid contact-details'>\n";
+		echo "			<div class='box' title=\"".$text['label-emails']."\"><b class='fas fa-envelope fa-fw fa-lg'></b></div>\n";
+		echo "			<div class='box'>\n";
+		require 'contact_emails_view.php';
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "	</div>\n";
+	}
+
+//addresses
+	if (permission_exists('contact_address_view')) {
+		echo "	<div class='box contact-details'>\n";
+		echo "		<div class='grid contact-details'>\n";
+		echo "			<div class='box' title=\"".$text['label-addresses']."\"><b class='fas fa-map-marker-alt fa-fw fa-lg'></b></div>\n";
+		echo "			<div class='box'>\n";
+		require 'contact_addresses_view.php';
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "	</div>\n";
+	}
+
+//urls
+	if (permission_exists('contact_url_view')) {
+		echo "	<div class='box contact-details'>\n";
+		echo "		<div class='grid contact-details'>\n";
+		echo "			<div class='box' title=\"".$text['label-urls']."\"><b class='fas fa-link fa-fw fa-lg'></b></div>\n";
+		echo "			<div class='box'>\n";
+		require "contact_urls_view.php";
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "	</div>\n";
+	}
+
+//relations
+	if (permission_exists('contact_relation_view')) {
+		echo "	<div class='box contact-details'>\n";
+		echo "		<div class='grid contact-details'>\n";
+		echo "			<div class='box' title=\"".$text['header-contact_relations']."\"><b class='fas fa-diagram-project fa-fw fa-lg'></b></div>\n";
+		echo "			<div class='box'>\n";
+		require "contact_relations_view.php";
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "	</div>\n";
+	}
+
+//attachments
+	if (permission_exists('contact_attachment_view')) {
+		echo "	<div class='box contact-details'>\n";
+		echo "		<div class='grid contact-details'>\n";
+		echo "			<div class='box' title=\"".$text['label-attachments']."\"><b class='fas fa-paperclip fa-fw fa-lg'></b></div>\n";
+		echo "			<div class='box'>\n";
+		require "contact_attachments_view.php";
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "	</div>\n";
+	}
+
+//times
+	if (permission_exists('contact_time_view')) {
+		echo "	<div class='box contact-details'>\n";
+		echo "		<div class='grid contact-details'>\n";
+		echo "			<div class='box' title=\"".$text['header_contact_times']."\"><b class='fas fa-clock fa-fw fa-lg'></b></div>\n";
+		echo "			<div class='box'>\n";
+		require "contact_times_view.php";
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "	</div>\n";
+	}
+
+//extensions
+	if (permission_exists('contact_extension_view')) {
+		echo "	<div class='box contact-details'>\n";
+		echo "		<div class='grid contact-details'>\n";
+		echo "			<div class='box' title=\"".$text['label-contact_extensions']."\"><b class='fas fa-fax fa-fw fa-lg'></b></div>\n";
+		echo "			<div class='box'>\n";
+		require "contact_extensions_view.php";
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "	</div>\n";
+	}
+
+	echo "</div>\n";
+	echo "<div class='grid' style='margin-top: 15px; grid-template-columns: auto;'>\n";
+
+//notes
+	if (permission_exists('contact_note_view')) {
+		echo "	<div class='box contact-details'>\n";
+		echo "		<div class='grid contact-details'>\n";
+		echo "			<div class='box' title=\"".$text['label-contact_notes']."\"><b class='fas fa-sticky-note fa-fw fa-lg'></b></div>\n";
+		echo "			<div class='box'>\n";
+		require "contact_notes_view.php";
+		echo "			</div>\n";
+		echo "		</div>\n";
+		echo "	</div>\n";
+	}
+
+	echo "</div>\n";
+	echo "<br><br>\n";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 471 - 0
core/contacts/contacts.php

@@ -0,0 +1,471 @@
+<?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-2024
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+	require_once dirname(__DIR__, 2) . "/resources/require.php";
+	require_once "resources/check_auth.php";
+	require_once "resources/paging.php";
+
+//check permissions
+	if (permission_exists('contact_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//set additional variables
+	$show = $_GET["show"] ?? '';
+
+//set from session variables
+	$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
+
+//get posted data
+	if (!empty($_POST['contacts'])) {
+		$action = $_POST['action'];
+		$search = $_POST['search'];
+		$contacts = $_POST['contacts'];
+	}
+
+//process the http post data by action
+	if (!empty($action) && !empty($contacts)) {
+		switch ($action) {
+			case 'delete':
+				if (permission_exists('contact_delete')) {
+					$obj = new contacts;
+					$obj->delete($contacts);
+				}
+				break;
+		}
+
+		header('Location: contacts.php'.(!empty($search) ? '?search='.urlencode($search) : null));
+		exit;
+	}
+
+//retrieve current user's assigned groups (uuids)
+	foreach ($_SESSION['groups'] as $group_data) {
+		$user_group_uuids[] = $group_data['group_uuid'];
+	}
+
+//add user's uuid to group uuid list to include private (non-shared) contacts
+	$user_group_uuids[] = $_SESSION["user_uuid"];
+
+//get contact settings - sync sources
+	$sql = "select contact_uuid, contact_setting_value ";
+	$sql .= "from v_contact_settings ";
+	$sql .= "where domain_uuid = :domain_uuid ";
+	$sql .= "and contact_setting_category = 'sync' ";
+	$sql .= "and contact_setting_subcategory = 'source' ";
+	$sql .= "and contact_setting_name = 'array' ";
+	$sql .= "and contact_setting_value <> '' ";
+	$sql .= "and contact_setting_value is not null ";
+	if (!permission_exists('contact_domain_view')) {
+		$sql .= "and ( "; //only contacts assigned to current user's group(s) and those not assigned to any group
+		$sql .= "	contact_uuid in ( ";
+		$sql .= "		select contact_uuid from v_contact_groups ";
+		$sql .= "		where ";
+		if (!empty($user_group_uuids)) {
+			foreach ($user_group_uuids as $index => $user_group_uuid) {
+				if (is_uuid($user_group_uuid)) {
+					$sql_where_or[] = "group_uuid = :group_uuid_".$index;
+					$parameters['group_uuid_'.$index] = $user_group_uuid;
+				}
+			}
+			if (!empty($sql_where_or)) {
+				$sql .= " ( ".implode(' or ', $sql_where_or)." ) ";
+			}
+			unset($sql_where_or, $index, $user_group_uuid);
+		}
+		$sql .= "		and domain_uuid = :domain_uuid ";
+		$sql .= "	) ";
+		$sql .= "	or ";
+		$sql .= "	contact_uuid not in ( ";
+		$sql .= "		select contact_uuid from v_contact_groups ";
+		$sql .= "		where group_uuid = :group_uuid ";
+		$sql .= "		and domain_uuid = :domain_uuid ";
+		$sql .= "	) ";
+		$sql .= ") ";
+	}
+	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	$parameters['group_uuid'] = $_SESSION['group_uuid'] ?? '';
+	$database = new database;
+	$result = $database->select($sql, $parameters, 'all');
+	if (!empty($result)) {
+		foreach($result as $row) {
+			$contact_sync_sources[$row['contact_uuid']][] = $row['contact_setting_value'];
+		}
+	}
+	unset($sql, $parameters, $result);
+
+//get variables used to control the order
+	$order_by = $_GET["order_by"] ?? '';
+	$order = $_GET["order"] ?? '';
+
+//add the search term
+	$search = strtolower(trim($_GET["search"]) ?? '');
+	if (!empty($search)) {
+		if (is_numeric($search)) {
+			$sql_search = "and contact_uuid in ( ";
+			$sql_search .= "	select contact_uuid from v_contact_phones ";
+			$sql_search .= "	where ( ";
+			$sql_search .= "		concat(phone_country_code, phone_number) like :search ";
+			$sql_search .= "		or phone_number like :search ";
+			$sql_search .= "	) ";
+			$sql_search .= ") ";
+		}
+		else {
+			//open container
+			$sql_search = "and ( ";
+
+			//search contact
+			$sql_search .= "contact_uuid in ( ";
+			$sql_search .= "	select contact_uuid from v_contacts ";
+			$sql_search .= "	where domain_uuid = :domain_uuid ";
+			$sql_search .= "	and ( ";
+			$sql_search .= "		lower(contact_organization) like :search or ";
+			$sql_search .= "		lower(contact_name_given) like :search or ";
+			$sql_search .= "		lower(contact_name_family) like :search or ";
+			$sql_search .= "		lower(contact_nickname) like :search or ";
+			$sql_search .= "		lower(contact_title) like :search or ";
+			$sql_search .= "		lower(contact_category) like :search or ";
+			$sql_search .= "		lower(contact_role) like :search or ";
+			$sql_search .= "		lower(contact_url) like :search or ";
+			$sql_search .= "		lower(contact_time_zone) like :search or ";
+			$sql_search .= "		lower(contact_note) like :search or ";
+			$sql_search .= "		lower(contact_type) like :search ";
+			$sql_search .= "	) ";
+			$sql_search .= ") ";
+
+			//search contact emails
+			if (permission_exists('contact_email_view')) {
+				$sql_search .= "or contact_uuid in ( ";
+				$sql_search .= "	select contact_uuid from v_contact_emails ";
+				$sql_search .= "	where domain_uuid = :domain_uuid ";
+				$sql_search .= "	and ( ";
+				$sql_search .= "		lower(email_address) like :search or ";
+				$sql_search .= "		lower(email_description) like :search ";
+				$sql_search .= "	) ";
+				$sql_search .= ") ";
+			}
+
+			//search contact notes
+			if (permission_exists('contact_note_view')) {
+				$sql_search .= "or contact_uuid in ( ";
+				$sql_search .= "	select contact_uuid from v_contact_notes ";
+				$sql_search .= "	where domain_uuid = :domain_uuid ";
+				$sql_search .= "	and lower(contact_note) like :search ";
+				$sql_search .= ") ";
+			}
+
+			//close container
+			$sql_search .= ") ";
+		}
+		$parameters['search'] = '%'.$search.'%';
+	}
+
+//build query for paging and list
+	$sql = "select count(*) ";
+	$sql .= "from v_contacts as c ";
+	$sql .= "where true ";
+	if ($show != "all" || !permission_exists('contact_all')) {
+		$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	}
+	if (!permission_exists('contact_domain_view')) {
+		$sql .= "and ( "; //only contacts assigned to current user's group(s) and those not assigned to any group
+		$sql .= "	contact_uuid in ( ";
+		$sql .= "		select contact_uuid from v_contact_groups ";
+		$sql .= "		where ";
+		if (!empty($user_group_uuids)) {
+			foreach ($user_group_uuids as $index => $user_group_uuid) {
+				if (is_uuid($user_group_uuid)) {
+					$sql_where_or[] = "group_uuid = :group_uuid_".$index;
+					$parameters['group_uuid_'.$index] = $user_group_uuid;
+				}
+			}
+			if (!empty($sql_where_or)) {
+				$sql .= " ( ".implode(' or ', $sql_where_or)." ) ";
+			}
+			unset($sql_where_or, $index, $user_group_uuid);
+		}
+		$sql .= "		and domain_uuid = :domain_uuid ";
+		$sql .= "	) ";
+		$sql .= "	or contact_uuid in ( ";
+		$sql .= "		select contact_uuid from v_contact_users ";
+		$sql .= "		where user_uuid = :user_uuid ";
+		$sql .= "		and domain_uuid = :domain_uuid ";
+		$sql .= "";
+		$sql .= "	) ";
+		$sql .= ") ";
+		$parameters['user_uuid'] = $_SESSION['user_uuid'];
+	}
+	$sql .= $sql_search ?? '';
+	$database = new database;
+	$num_rows = $database->select($sql, $parameters ?? null, 'column');
+
+//prepare to page the results
+	$rows_per_page = (!empty($_SESSION['domain']['paging']['numeric'])) ? $_SESSION['domain']['paging']['numeric'] : 50;
+	$param = "&search=".urlencode($search);
+	if ($show == "all" && permission_exists('contact_all')) {
+		$param .= "&show=all";
+	}
+	$page = $_GET['page'] ?? '';
+	if (empty($page)) { $page = 0; $_GET['page'] = 0; }
+	list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); //bottom
+	list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true); //top
+	$offset = $rows_per_page * $page;
+
+//get the list
+	$sql = "select *, ";
+	$sql .= "(select a.contact_attachment_uuid from v_contact_attachments as a where a.contact_uuid = c.contact_uuid and a.attachment_primary = 1) as contact_attachment_uuid ";
+	$sql .= "from v_contacts as c ";
+	$sql .= "where true ";
+	if ($show != "all" || !permission_exists('contact_all')) {
+		$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+	}
+	if (!permission_exists('contact_domain_view')) {
+		$sql .= "and ( "; //only contacts assigned to current user's group(s) and those not assigned to any group
+		$sql .= "	contact_uuid in ( ";
+		$sql .= "		select contact_uuid from v_contact_groups ";
+		$sql .= "		where ";
+		if (!empty($user_group_uuids)) {
+			foreach ($user_group_uuids as $index => $user_group_uuid) {
+				if (is_uuid($user_group_uuid)) {
+					$sql_where_or[] = "group_uuid = :group_uuid_".$index;
+					$parameters['group_uuid_'.$index] = $user_group_uuid;
+				}
+			}
+			if (!empty($sql_where_or)) {
+				$sql .= " ( ".implode(' or ', $sql_where_or)." ) ";
+			}
+			unset($sql_where_or, $index, $user_group_uuid);
+		}
+		$sql .= "		and domain_uuid = :domain_uuid ";
+		$sql .= "	) ";
+		$sql .= "	or contact_uuid in ( ";
+		$sql .= "		select contact_uuid from v_contact_users ";
+		$sql .= "		where user_uuid = :user_uuid ";
+		$sql .= "		and domain_uuid = :domain_uuid ";
+		$sql .= "";
+		$sql .= "	) ";
+		$sql .= ") ";
+		$parameters['user_uuid'] = $_SESSION['user_uuid'];
+	}
+	$sql .= $sql_search ?? '';
+	$database = new database;
+	if (!empty($order_by)) {
+		$sql .= order_by($order_by, $order);
+		$sql .= ", contact_organization asc ";
+	}
+	else {
+		$contact_default_sort_column = !empty($_SESSION['contacts']['default_sort_column']['text']) ? $_SESSION['contacts']['default_sort_column']['text'] : "last_mod_date";
+		$contact_default_sort_order = !empty($_SESSION['contacts']['default_sort_order']['text']) ? $_SESSION['contacts']['default_sort_order']['text'] : "desc";
+
+		$sql .= order_by($contact_default_sort_column, $contact_default_sort_order);
+		if ($db_type == "pgsql") {
+			$sql .= " nulls last ";
+		}
+	}
+	$sql .= limit_offset($rows_per_page, $offset);
+	$database = new database;
+	$contacts = $database->select($sql, $parameters ?? null, 'all');
+	unset($sql, $parameters);
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//includes and title
+	$document['title'] = $text['title-contacts'];
+	require_once "resources/header.php";
+
+//contact attachment layer
+	echo "<style>\n";
+	echo "	#contact_attachment_layer {\n";
+	echo "		z-index: 999999;\n";
+	echo "		position: fixed;\n";
+	echo "		left: 0px;\n";
+	echo "		top: 0px;\n";
+	echo "		right: 0px;\n";
+	echo "		bottom: 0px;\n";
+	echo "		text-align: center;\n";
+	echo "		vertical-align: middle;\n";
+	echo "	}\n";
+	echo "</style>\n";
+	echo "<div id='contact_attachment_layer' style='display: none;'></div>\n";
+
+//show the content
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'><b>".$text['header-contacts']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
+	echo "	<div class='actions'>\n";
+	if (permission_exists('contact_add')) {
+		echo button::create(['type'=>'button','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'collapse'=>'hide-sm-dn','style'=>'margin-right: 15px;','link'=>'contact_import.php']);
+	}
+	if (permission_exists('contact_add')) {
+		echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','collapse'=>'hide-sm-dn','link'=>'contact_edit.php']);
+	}
+	if (permission_exists('contact_delete') && $contacts) {
+		echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none;','collapse'=>'hide-sm-dn','onclick'=>"modal_open('modal-delete','btn_delete');"]);
+	}
+	echo 		"<form id='form_search' class='inline' method='get'>\n";
+	if (permission_exists('contact_all')) {
+		if ($show == 'all') {
+			echo "		<input type='hidden' name='show' value='all'>";
+		}
+		else {
+			echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?type=&show=all'.(!empty($search) ? "&search=".urlencode($search) : null)]);
+		}
+	}
+	echo 		"<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=''>";
+	echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','collapse'=>'hide-sm-dn']);
+	//echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','collapse'=>'hide-sm-dn','link'=>'contacts.php','style'=>($search == '' ? 'display: none;' : null)]);
+	if (!empty($paging_controls_mini)) {
+		echo 	"<span style='margin-left: 15px;'>".$paging_controls_mini."</span>";
+	}
+	echo "		</form>\n";
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	if (permission_exists('contact_delete') && $contacts) {
+		echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
+	}
+
+	echo $text['description-contacts']."\n";
+	echo "<br /><br />\n";
+
+	echo "<form id='form_list' method='post'>\n";
+	echo "<input type='hidden' id='action' name='action' value=''>\n";
+	echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
+
+	echo "<div class='card'>\n";
+	echo "<table class='list'>\n";
+	echo "<tr class='list-header'>\n";
+	if (permission_exists('contact_delete')) {
+		echo "	<th class='checkbox'>\n";
+		echo "		<input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(!empty($contacts) ?: "style='visibility: hidden;'").">\n";
+		echo "	</th>\n";
+	}
+	if ($show == "all" && permission_exists('contact_all')) {
+		echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
+	}
+	echo th_order_by('contact_type', $text['label-contact_type'], $order_by, $order);
+	echo th_order_by('contact_organization', $text['label-contact_organization'], $order_by, $order);
+	echo "<th class='shrink hide-xs'>&nbsp;</th>\n";
+	echo th_order_by('contact_name_given', $text['label-contact_name_given'], $order_by, $order);
+	echo th_order_by('contact_name_family', $text['label-contact_name_family'], $order_by, $order);
+	echo th_order_by('contact_nickname', $text['label-contact_nickname'], $order_by, $order, null, "class='hide-xs'");
+	echo th_order_by('contact_title', $text['label-contact_title'], $order_by, $order, null, "class='hide-sm-dn'");
+	echo th_order_by('contact_role', $text['label-contact_role'], $order_by, $order, null, "class='hide-sm-dn'");
+	echo "<th class='shrink hide-sm-dn'>&nbsp;</th>\n";
+	if ($list_row_edit_button == 'true') {
+		echo "	<td class='action-button'>&nbsp;</td>\n";
+	}
+	echo "</tr>\n";
+
+	if (!empty($contacts)) {
+		$x = 0;
+		foreach($contacts as $row) {
+			$list_row_url = "contact_view.php?id=".urlencode($row['contact_uuid'])."&query_string=".urlencode($_SERVER["QUERY_STRING"]);
+			echo "<tr class='list-row' href='".$list_row_url."'>\n";
+			if (permission_exists('contact_delete')) {
+				echo "	<td class='checkbox'>\n";
+				echo "		<input type='checkbox' name='contacts[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
+				echo "		<input type='hidden' name='contacts[$x][uuid]' value='".escape($row['contact_uuid'])."' />\n";
+				echo "	</td>\n";
+			}
+			if ($show == "all" && permission_exists('contact_all')) {
+				if (!empty($_SESSION['domains'][$row['domain_uuid']]['domain_name'])) {
+					$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
+				}
+				else {
+					$domain = $text['label-global'];
+				}
+				echo "	<td>".escape($domain)."</td>\n";
+			}
+			echo "	<td>".ucwords(escape($row['contact_type']))."&nbsp;</td>\n";
+			echo "	<td class='overflow'><a href='".$list_row_url."'>".escape($row['contact_organization'])."</a>&nbsp;</td>\n";
+			echo "	<td class='shrink no-link hide-xs center'>";
+			if (is_uuid($row['contact_attachment_uuid'])) {
+				echo "<i class='fas fa-portrait' style='cursor: pointer;' onclick=\"display_attachment('".escape($row['contact_attachment_uuid'])."');\"></i>";
+			}
+			echo "	</td>\n";
+			echo "	<td class='no-wrap'><a href='".$list_row_url."'>".escape($row['contact_name_given'])."</a>&nbsp;</td>\n";
+			echo "	<td class='no-wrap'><a href='".$list_row_url."'>".escape($row['contact_name_family'])."</a>&nbsp;</td>\n";
+			echo "	<td class='no-wrap hide-xs'>".escape($row['contact_nickname'])."&nbsp;</td>\n";
+			echo "	<td class='overflow hide-sm-dn'>".escape($row['contact_title'])."&nbsp;</td>\n";
+			echo "	<td class='overflow hide-sm-dn'>".escape($row['contact_role'])."&nbsp;</td>\n";
+			echo "	<td class='hide-sm-dn'>";
+			if (!empty($contact_sync_sources[$row['contact_uuid']])) {
+				foreach ($contact_sync_sources[$row['contact_uuid']] as $contact_sync_source) {
+					switch ($contact_sync_source) {
+						case 'google': echo "<img src='resources/images/icon_gcontacts.png' style='width: 21px; height: 21px; border: none; padding-left: 2px;' alt='".$text['label-contact_google']."'>"; break;
+					}
+				}
+			}
+			else {
+				echo "&nbsp;";
+			}
+			echo "	</td>\n";
+			if ($list_row_edit_button == 'true') {
+				echo "	<td class='action-button'>";
+				echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
+				echo "	</td>\n";
+			}
+			echo "</tr>\n";
+			$x++;
+		}
+		unset($contacts);
+	}
+
+	echo "</table>\n";
+	echo "</div>\n";
+	echo "<br />\n";
+	echo "<div align='center'>".$paging_controls."</div>\n";
+
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>\n";
+
+//javascript
+	echo "<script>\n";
+	echo "	function display_attachment(id) {\n";
+	echo "		$('#contact_attachment_layer').load('contact_attachment.php?id=' + id + '&action=display', function(){\n";
+	echo "			$('#contact_attachment_layer').fadeIn(200);\n";
+	echo "		});\n";
+	echo "	}\n";
+	echo "</script>\n";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 258 - 0
core/contacts/contacts_vcard.php

@@ -0,0 +1,258 @@
+<?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-2019
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//includes files
+require_once dirname(__DIR__, 2) . "/resources/require.php";
+require_once "resources/check_auth.php";
+if (permission_exists('contact_view')) {
+	//access granted
+}
+else {
+	echo "access denied";
+	exit;
+}
+
+if (!empty($_GET)) {
+
+	//add multi-lingual support
+		$language = new text;
+		$text = $language->get();
+
+	//create the vcard object
+		require_once "resources/classes/vcard.php";
+		$vcard = new vcard();
+
+	//get the contact id
+		$contact_uuid = $_GET["id"] ?? '';
+
+	//get the contact's information
+		$sql = "select * from v_contacts ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_uuid = :contact_uuid ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_uuid'] = $contact_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (!empty($row)) {
+			$contact_type = $row["contact_type"];
+			$contact_organization = $row["contact_organization"];
+			$contact_name_given = $row["contact_name_given"];
+			$contact_name_family = $row["contact_name_family"];
+			$contact_nickname = $row["contact_nickname"];
+			$contact_title = $row["contact_title"];
+			$contact_role = $row["contact_role"];
+			$contact_time_zone = $row["contact_time_zone"];
+			$contact_note = $row["contact_note"];
+		}
+		unset($sql, $parameters, $row);
+
+		$vcard->data['company'] = $contact_organization ?? '';
+		$vcard->data['first_name'] = $contact_name_given ?? '';
+		$vcard->data['last_name'] = $contact_name_family ?? '';
+
+	//get the contact's primary (and a secondary, if available) email
+		$sql = "select email_address from v_contact_emails ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_uuid = :contact_uuid ";
+		$sql .= "order by email_primary desc ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_uuid'] = $contact_uuid;
+		$database = new database;
+		$result = $database->select($sql, $parameters, 'all');
+		if (!empty($result)) {
+			$e = 1;
+			foreach ($result as $row) {
+				$vcard->data['email'.$e] = $row["email_address"];
+				if ($e++ == 2) { break; } //limit to 2 rows
+			}
+		}
+		unset($sql, $parameters, $result, $row);
+
+	//get the contact's primary url
+		$sql = "select url_address from v_contact_urls ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_uuid = :contact_uuid ";
+		$sql .= "and url_primary = 1 ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_uuid'] = $contact_uuid;
+		$database = new database;
+		$url_address = $database->select($sql, $parameters, 'column');
+		$vcard->data['url'] = $url_address;
+		unset($sql, $parameters, $row);
+
+
+		if ($_GET['type'] == "image" || $_GET['type'] == "html") {
+			//don't add this to the QR code at this time
+		}
+		else {
+			$vcard->data['display_name'] = implode(' ', array_filter([$contact_name_given, $contact_name_family]));
+			$vcard->data['contact_nickname'] = $contact_nickname ?? null;
+			$vcard->data['contact_title'] = $contact_title ?? null;
+			$vcard->data['contact_role'] = $contact_role ?? null;
+			$vcard->data['timezone'] = $contact_time_zone ?? null;
+			$vcard->data['contact_note'] = $contact_note ?? null;
+		}
+
+	//get the contact's telephone numbers
+		$sql = "select * from v_contact_phones ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "and contact_uuid = :contact_uuid ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_uuid'] = $contact_uuid;
+		$database = new database;
+		$result = $database->select($sql, $parameters, 'all');
+		if (!empty($result)) {
+			foreach ($result as $row) {
+				$phone_label = $row["phone_label"];
+				$phone_number = $row["phone_number"];
+				if ($phone_label == $text['option-work']) { $vcard_phone_type = 'work'; }
+				else if ($phone_label == $text['option-home']) { $vcard_phone_type = 'home'; }
+				else if ($phone_label == $text['option-mobile']) { $vcard_phone_type = 'cell'; }
+				else if ($phone_label == $text['option-fax']) { $vcard_phone_type = 'fax'; }
+				else if ($phone_label == $text['option-pager']) { $vcard_phone_type = 'pager'; }
+				else { $vcard_phone_type = 'voice'; }
+				if ($vcard_phone_type != '') {
+					$vcard->data[$vcard_phone_type.'_tel'] = $phone_number;
+				}
+			}
+		}
+		unset($sql, $parameters, $result, $row);
+
+	//get the contact's addresses
+		if ($_GET['type'] == "image" || $_GET['type'] == "html") {
+			//don't add this to the QR code at this time
+		}
+		else {
+			$sql = "select * from v_contact_addresses ";
+			$sql .= "where domain_uuid = :domain_uuid ";
+			$sql .= "and contact_uuid = :contact_uuid ";
+			$parameters['domain_uuid'] = $domain_uuid;
+			$parameters['contact_uuid'] = $contact_uuid;
+			$database = new database;
+			$result = $database->select($sql, $parameters, 'all');
+			if (!empty($result)) {
+				foreach ($result as $row) {
+					$address_type = $row["address_type"];
+					$address_street = $row["address_street"];
+					$address_extended = $row["address_extended"];
+					$address_locality = $row["address_locality"];
+					$address_region = $row["address_region"];
+					$address_postal_code = $row["address_postal_code"];
+					$address_country = $row["address_country"];
+					$address_latitude = $row["address_latitude"];
+					$address_longitude = $row["address_longitude"];
+					$address_type = strtolower(trim($address_type));
+
+					$vcard->data[$address_type.'_address'] = $address_street;
+					$vcard->data[$address_type.'_extended_address'] = $address_extended;
+					$vcard->data[$address_type.'_city'] = $address_locality;
+					$vcard->data[$address_type.'_state'] = $address_region;
+					$vcard->data[$address_type.'_postal_code'] = $address_postal_code;
+					$vcard->data[$address_type.'_country'] = $address_country;
+				}
+			}
+			unset($sql, $parameters, $result, $row);
+		}
+
+	//download the vcard
+		if ($_GET['type'] == "download") {
+			$vcard->download();
+		}
+
+	//show the vcard in a text qr code
+		if ($_GET['type'] == "text") {
+			$vcard->build();
+			$content = $vcard->card;
+			if ($qr_vcard) {
+				$qr_vcard = $content;
+			}
+			else {
+				echo $content;
+			}
+		}
+
+	//show the vcard in an image qr code
+		if ($_GET['type'] == "image" || $_GET['type'] == "html") {
+			$vcard->build();
+			$content = $vcard->card;
+
+			if (isset($_GET['debug'])) {
+				echo "<pre>";
+				print_r($vcard->data);
+				echo "</pre>";
+				exit;
+			}
+
+			//include
+				require_once $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/qr/qrcode.php";
+
+			//error correction level
+				//QR_ERROR_CORRECT_LEVEL_L : $e = 0;
+				//QR_ERROR_CORRECT_LEVEL_M : $e = 1;
+				//QR_ERROR_CORRECT_LEVEL_Q : $e = 2;
+				//QR_ERROR_CORRECT_LEVEL_H : $e = 3;
+
+			//get the qr object
+				$qr = QRCode::getMinimumQRCode($content, QR_ERROR_CORRECT_LEVEL_L);
+		}
+
+	//show the vcard as an png image
+		if ($_GET['type'] == "image") {
+			header("Content-type: image/png");
+			$im = $qr->createImage(5, 10);
+			imagepng($im);
+			imagedestroy($im);
+		}
+
+	//show the vcard in an html qr code
+		if ($_GET['type'] == "html") {
+			$qr->make();
+			$qr->printHTML();
+		}
+}
+
+/*
+//additional un accounted fields
+additional_name
+name_prefix
+name_suffix
+department
+work_po_box
+home_po_box
+home_extended_address
+home_address
+home_city
+home_state
+home_postal_code
+home_country
+pager_tel
+contact_email2
+photo
+birthday
+sort_string
+*/
+
+?>

+ 282 - 0
core/contacts/resources/classes/contacts.php

@@ -0,0 +1,282 @@
+<?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-2023
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+ Mark J Crane <[email protected]>
+*/
+
+//define the contacts class
+if (!class_exists('contacts')) {
+	class contacts {
+
+		const APP_NAME = "contacts";
+		const APP_UUID = "04481e0e-a478-c559-adad-52bd4174574c";
+		/**
+		 * declare private variables
+		 */
+		private $app_name;
+		private $app_uuid;
+		private $permission_prefix;
+		private $list_page;
+		private $tables;
+		private $uuid_prefix;
+
+		/**
+		 * declare public variables
+		 */
+		public $contact_uuid;
+
+		/**
+		 * called when the object is created
+		 */
+		public function __construct() {
+
+			//assign private variables
+				$this->app_name = self::APP_NAME;
+				$this->app_uuid = self::APP_UUID;
+				$this->permission_prefix = 'contact_';
+				$this->list_page = 'contacts.php';
+				$this->tables[] = 'contact_addresses';
+				$this->tables[] = 'contact_attachments';
+				$this->tables[] = 'contact_emails';
+				$this->tables[] = 'contact_groups';
+				$this->tables[] = 'contact_notes';
+				$this->tables[] = 'contact_phones';
+				$this->tables[] = 'contact_relations';
+				$this->tables[] = 'contact_settings';
+				$this->tables[] = 'contact_times';
+				$this->tables[] = 'contact_urls';
+				$this->tables[] = 'contact_users';
+				$this->tables[] = 'contacts';
+				$this->uuid_prefix = 'contact_';
+
+		}
+
+		/**
+		 * delete records
+		 */
+		public function delete($records) {
+			if (permission_exists($this->permission_prefix.'delete')) {
+
+				//add multi-lingual support
+					$language = new text;
+					$text = $language->get();
+
+				//validate the token
+					$token = new token;
+					if (!$token->validate($_SERVER['PHP_SELF'])) {
+						message::add($text['message-invalid_token'],'negative');
+						header('Location: '.$this->list_page);
+						exit;
+					}
+
+				//delete multiple records
+					if (is_array($records) && @sizeof($records) != 0) {
+
+						//build the delete array
+							foreach ($records as $x => $record) {
+								if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
+									if (is_array($this->tables) && @sizeof($this->tables) != 0) {
+										foreach ($this->tables as $table) {
+											$array[$table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
+											$array[$table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+										}
+									}
+								}
+							}
+
+						//delete the checked rows
+							if (is_array($array) && @sizeof($array) != 0) {
+
+								//grant temp permissions
+									$p = new permissions;
+									$database = new database;
+									foreach ($this->tables as $table) {
+										$p->add(database::singular($table).'_delete', 'temp');
+									}
+
+								//execute delete
+									$database = new database;
+									$database->app_name = $this->app_name;
+									$database->app_uuid = $this->app_uuid;
+									$database->delete($array);
+									unset($array);
+
+								//revoke temp permissions
+									$database = new database;
+									foreach ($this->tables as $table) {
+										$p->delete(database::singular($table).'_delete', 'temp');
+									}
+
+								//set message
+									message::add($text['message-delete']);
+							}
+							unset($records);
+					}
+			}
+		}
+
+		public function delete_properties($records) {
+			//add multi-lingual support
+				$language = new text;
+				$text = $language->get();
+
+			//validate the token
+				$token = new token;
+				if (!$token->validate($_SERVER['PHP_SELF'])) {
+					message::add($text['message-invalid_token'],'negative');
+					header('Location: '.$this->list_page);
+					exit;
+				}
+
+			//delete multiple records
+				if (is_array($records) && @sizeof($records) != 0) {
+
+					//check permissions and build the delete array
+						$x = 0;
+						foreach ($records as $property_name => $properties) {
+							$database = new database;
+							if (permission_exists(database::singular($property_name).'_delete')) {
+								if (is_array($properties) && @sizeof($properties) != 0) {
+									foreach ($properties as $property) {
+										if ($property['checked'] == 'true' && is_uuid($property['uuid'])) {
+											$array[$property_name][$x][database::singular($property_name).'_uuid'] = $property['uuid'];
+											$array[$property_name][$x]['contact_uuid'] = $this->contact_uuid;
+											$array[$property_name][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+											$x++;
+										}
+									}
+								}
+							}
+						}
+
+					//delete the checked rows
+						if (is_array($array) && @sizeof($array) != 0) {
+							//execute delete
+								$database = new database;
+								$database->app_name = $this->app_name;
+								$database->app_uuid = $this->app_uuid;
+								$database->delete($array);
+								unset($array);
+						}
+						unset($records);
+				}
+		}
+
+		public function delete_users($records) {
+			//assign private variables
+				$this->permission_prefix = 'contact_user_';
+				$this->table = 'contact_users';
+				$this->uuid_prefix = 'contact_user_';
+
+			if (permission_exists($this->permission_prefix.'delete')) {
+
+				//add multi-lingual support
+					$language = new text;
+					$text = $language->get();
+
+				//validate the token
+					$token = new token;
+					if (!$token->validate($_SERVER['PHP_SELF'])) {
+						message::add($text['message-invalid_token'],'negative');
+						header('Location: '.$this->list_page);
+						exit;
+					}
+
+				//delete multiple records
+					if (is_array($records) && @sizeof($records) != 0) {
+
+						//filter out unchecked ivr menu options, build delete array
+							$x = 0;
+							foreach ($records as $record) {
+								if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
+									$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
+									$array[$this->table][$x]['contact_uuid'] = $this->contact_uuid;
+									$x++;
+								}
+							}
+
+						//delete the checked rows
+							if (is_array($array) && @sizeof($array) != 0) {
+								//execute delete
+									$database = new database;
+									$database->app_name = $this->app_name;
+									$database->app_uuid = $this->app_uuid;
+									$database->delete($array);
+									unset($array);
+							}
+							unset($records);
+					}
+			}
+		}
+
+		public function delete_groups($records) {
+			//assign private variables
+				$this->permission_prefix = 'contact_group_';
+				$this->table = 'contact_groups';
+				$this->uuid_prefix = 'contact_group_';
+
+			if (permission_exists($this->permission_prefix.'delete')) {
+
+				//add multi-lingual support
+					$language = new text;
+					$text = $language->get();
+
+				//validate the token
+					$token = new token;
+					if (!$token->validate($_SERVER['PHP_SELF'])) {
+						message::add($text['message-invalid_token'],'negative');
+						header('Location: '.$this->list_page);
+						exit;
+					}
+
+				//delete multiple records
+					if (is_array($records) && @sizeof($records) != 0) {
+
+						//filter out unchecked ivr menu options, build delete array
+							$x = 0;
+							foreach ($records as $record) {
+								if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
+									$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
+									$array[$this->table][$x]['contact_uuid'] = $this->contact_uuid;
+									$x++;
+								}
+							}
+
+						//delete the checked rows
+							if (is_array($array) && @sizeof($array) != 0) {
+								//execute delete
+									$database = new database;
+									$database->app_name = $this->app_name;
+									$database->app_uuid = $this->app_uuid;
+									$database->delete($array);
+									unset($array);
+							}
+							unset($records);
+					}
+			}
+		} //method
+
+	} //class
+}
+
+?>

+ 42 - 0
core/contacts/resources/dashboard/config.php

@@ -0,0 +1,42 @@
+<?php
+
+//contacts
+$array['dashboard'][$x]['dashboard_uuid'] = '3b0cbb2f-733d-4646-8332-7d108808f2fd';
+$array['dashboard'][$x]['dashboard_name'] = 'Contacts';
+$array['dashboard'][$x]['dashboard_path'] = 'dashboard/icon';
+$array['dashboard'][$x]['dashboard_icon'] = 'fa-regular fa-address-card';
+$array['dashboard'][$x]['dashboard_url'] = '/app/contacts/contacts.php';
+$array['dashboard'][$x]['dashboard_target'] = 'self';
+$array['dashboard'][$x]['dashboard_width'] = '';
+$array['dashboard'][$x]['dashboard_height'] = '';
+$array['dashboard'][$x]['dashboard_content'] = '';
+$array['dashboard'][$x]['dashboard_content_text_align'] = '';
+$array['dashboard'][$x]['dashboard_content_details'] = '';
+$array['dashboard'][$x]['dashboard_chart_type'] = '';
+$array['dashboard'][$x]['dashboard_heading_text_color'] = '';
+$array['dashboard'][$x]['dashboard_heading_text_color_hover'] = '';
+$array['dashboard'][$x]['dashboard_heading_background_color'] = '';
+$array['dashboard'][$x]['dashboard_heading_background_color_hover'] = '';
+$array['dashboard'][$x]['dashboard_number_background_color'] = '';
+$array['dashboard'][$x]['dashboard_number_text_color'] = '#0292FF';
+$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
+$array['dashboard'][$x]['dashboard_background_color'] ='';
+$array['dashboard'][$x]['dashboard_background_color_hover'] = '';
+$array['dashboard'][$x]['dashboard_detail_background_color'] = '';
+$array['dashboard'][$x]['dashboard_column_span'] = '1';
+$array['dashboard'][$x]['dashboard_row_span'] = '1';
+$array['dashboard'][$x]['dashboard_details_state'] = 'disabled';
+$array['dashboard'][$x]['dashboard_order'] = '50';
+$array['dashboard'][$x]['dashboard_enabled'] = 'true';
+$array['dashboard'][$x]['dashboard_description'] = '';
+$y = 0;
+$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_group_uuid'] = 'ec16fd64-5333-4372-bb9c-21603358e283';
+$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_uuid'] = '3b0cbb2f-733d-4646-8332-7d108808f2fd';
+$array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'superadmin';
+$y++;
+$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_group_uuid'] = 'c46035ba-9d23-4e77-84a9-c8ffeea48415';
+$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_uuid'] = '3b0cbb2f-733d-4646-8332-7d108808f2fd';
+$array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'admin';
+$y++;
+
+?>

+ 116 - 0
core/contacts/resources/functions/google_get_contacts.php

@@ -0,0 +1,116 @@
+<?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]>
+*/
+
+if (!function_exists('google_get_contacts')) {
+	function google_get_contacts($token, $max_results = 50) {
+		//global $records;
+		global $groups;
+
+		//$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&oauth_token='.$_SESSION['contact_auth']['token']; // all contacts as xml
+		//$url = 'https://www.google.com/m8/feeds/contacts/default/full/78967d550d3fdd99?alt=json&v=3.0&oauth_token='.$_SESSION['contact_auth']['token']; // single contact
+		$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&alt=json&v=3.0&oauth_token='.$token; // all contacts as json
+		$xml_response = curl_file_get_contents($url);
+		$records = json_decode($xml_response, true);
+
+		//check for authentication errors (logged out of google account, or app access permission revoked, etc)
+		if ($records['error']['code']) {
+			header("Location: contact_auth.php?source=google&target=".substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"],'/')+1));
+			exit;
+		}
+
+		//create new array of contacts
+		foreach($records['feed']['entry'] as $contact['number'] => $contact) {
+			$contact_id = substr($contact['id']['$t'], strrpos($contact['id']['$t'], "/")+1);
+			$contacts[$contact_id]['etag'] = $contact['gd$etag'];
+			$contacts[$contact_id]['updated'] = $contact['updated']['$t'];
+			$contacts[$contact_id]['name_prefix'] = $contact['gd$name']['gd$namePrefix']['$t'];
+			$contacts[$contact_id]['name_given'] = $contact['gd$name']['gd$givenName']['$t'];
+			$contacts[$contact_id]['name_middle'] = $contact['gd$name']['gd$additionalName']['$t'];
+			$contacts[$contact_id]['name_family'] = $contact['gd$name']['gd$familyName']['$t'];
+			$contacts[$contact_id]['name_suffix'] = $contact['gd$name']['gd$nameSuffix']['$t'];
+			$contacts[$contact_id]['nickname'] = $contact['gContact$nickname']['$t'];
+			$contacts[$contact_id]['title'] = $contact['gd$organization'][0]['gd$orgTitle']['$t'];
+			$contacts[$contact_id]['organization'] = $contact['gd$organization'][0]['gd$orgName']['$t'];
+			foreach ($contact['gd$email'] as $contact_email['number'] => $contact_email) {
+				if ($contact_email['label']) {
+					$contact_email_label = $contact_email['label'];
+				}
+				else {
+					$contact_email_label = substr($contact_email['rel'], strpos($contact_email['rel'], "#")+1);
+					$contact_email_label = ucwords(str_replace("_", " ", $contact_email_label));
+				}
+				$contacts[$contact_id]['emails'][$contact_email['number']]['label'] = $contact_email_label;
+				$contacts[$contact_id]['emails'][$contact_email['number']]['address'] = $contact_email['address'];
+				$contacts[$contact_id]['emails'][$contact_email['number']]['primary'] = ($contact_email['primary']) ? 1 : 0;
+			}
+			foreach ($contact['gd$phoneNumber'] as $contact_phone['number'] => $contact_phone) {
+				if ($contact_phone['label']) {
+					$contact_phone_label = $contact_phone['label'];
+				}
+				else {
+					$contact_phone_label = substr($contact_phone['rel'], strpos($contact_phone['rel'], "#")+1);
+					$contact_phone_label = ucwords(str_replace("_", " ", $contact_phone_label));
+				}
+				$contacts[$contact_id]['numbers'][$contact_phone['number']]['label'] = $contact_phone_label;
+				$contacts[$contact_id]['numbers'][$contact_phone['number']]['number'] = preg_replace('{\D}', '', $contact_phone['$t']);
+			}
+			foreach ($contact['gContact$website'] as $contact_website['number'] => $contact_website) {
+				$contact_website_label = ($contact_website['label']) ? $contact_website['label'] : ucwords(str_replace("_", " ", $contact_website['rel']));
+				$contacts[$contact_id]['urls'][$contact_website['number']]['label'] = $contact_website_label;
+				$contacts[$contact_id]['urls'][$contact_website['number']]['url'] = $contact_website['href'];
+			}
+			foreach ($contact['gd$structuredPostalAddress'] as $contact_address['number'] => $contact_address) {
+				if ($contact_address['label']) {
+					$contact_address_label = $contact_address['label'];
+				}
+				else {
+					$contact_address_label = substr($contact_address['rel'], strpos($contact_address['rel'], "#")+1);
+					$contact_address_label = ucwords(str_replace("_", " ", $contact_address_label));
+				}
+				$contacts[$contact_id]['addresses'][$contact_address['number']]['label'] = $contact_address_label;
+				$contacts[$contact_id]['addresses'][$contact_address['number']]['street'] = $contact_address['gd$street']['$t'];
+				$contacts[$contact_id]['addresses'][$contact_address['number']]['extended'] = $contact_address['gd$pobox']['$t'];
+				$contacts[$contact_id]['addresses'][$contact_address['number']]['community'] = $contact_address['gd$neighborhood']['$t'];
+				$contacts[$contact_id]['addresses'][$contact_address['number']]['locality'] = $contact_address['gd$city']['$t'];
+				$contacts[$contact_id]['addresses'][$contact_address['number']]['region'] = $contact_address['gd$region']['$t'];
+				$contacts[$contact_id]['addresses'][$contact_address['number']]['postal_code'] = $contact_address['gd$postcode']['$t'];
+				$contacts[$contact_id]['addresses'][$contact_address['number']]['country'] = $contact_address['gd$country']['$t'];
+			}
+			foreach ($contact['gContact$groupMembershipInfo'] as $contact_group['number'] => $contact_group) {
+				$contact_group_id = substr($contact_group['href'], strrpos($contact_group['href'], "/")+1);
+				$contacts[$contact_id]['groups'][$contact_group_id] = $groups[$contact_group_id]['name'];
+			}
+			$contacts[$contact_id]['notes'] = $contact['content']['$t'];
+		}
+
+		//set account holder info
+		$_SESSION['contact_auth']['name'] = $records['feed']['author'][0]['name']['$t'];
+		$_SESSION['contact_auth']['email'] = $records['feed']['author'][0]['email']['$t'];
+
+		return $contacts;
+	}
+}
+?>

+ 54 - 0
core/contacts/resources/functions/google_get_groups.php

@@ -0,0 +1,54 @@
+<?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]>
+*/
+
+function google_get_groups($token) {
+	// retrieve groups
+	$url = 'https://www.google.com/m8/feeds/groups/default/full?alt=json&v=3.0&oauth_token='.$token;
+	$xml_response = curl_file_get_contents($url);
+	$records = json_decode($xml_response, true);
+
+	//check for authentication errors
+	if ($records['error']['code']) {
+		header("Location: contact_auth.php?source=google&target=".substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"],'/')+1));
+		exit;
+	}
+
+	//create new array of groups
+	foreach($records['feed']['entry'] as $group['number'] => $group) {
+		$group_id = substr($group['id']['$t'], strrpos($group['id']['$t'], "/")+1);
+		$groups[$group_id]['name'] = ($group['gContact$systemGroup']['id']) ? $group['gContact$systemGroup']['id'] : $group['title']['$t'];
+		$groups[$group_id]['count'] = 0;
+		unset($group_id);
+	}
+	unset($group);
+
+	//set account holder info
+	$_SESSION['contact_auth']['name'] = $records['feed']['author'][0]['name']['$t'];
+	$_SESSION['contact_auth']['email'] = $records['feed']['author'][0]['email']['$t'];
+
+	return $groups;
+}
+?>

二進制
core/contacts/resources/images/icon_gcontacts.png


二進制
core/contacts/resources/images/icon_gmaps.png


二進制
core/contacts/resources/images/icon_timer.png