Przeglądaj źródła

Release Providers version 1.8

markjcrane 2 lat temu
rodzic
commit
5d67d6a8b7
10 zmienionych plików z 2745 dodań i 1 usunięć
  1. 0 1
      README.md
  2. 311 0
      app_config.php
  3. 22 0
      app_defaults.php
  4. 911 0
      app_languages.php
  5. 19 0
      app_menu.php
  6. 765 0
      provider_edit.php
  7. 133 0
      provider_setup.php
  8. 273 0
      providers.php
  9. 311 0
      resources/classes/providers.php
  10. 0 0
      resources/images/.gitkeep

+ 0 - 1
README.md

@@ -1 +0,0 @@
-# fusionpbx-app-providers

+ 311 - 0
app_config.php

@@ -0,0 +1,311 @@
+<?php
+
+	//application details
+		$apps[$x]['name'] = 'Providers';
+		$apps[$x]['uuid'] = '35187839-237e-4271-b8a1-9b9c45dc8833';
+		$apps[$x]['category'] = 'System';
+		$apps[$x]['subcategory'] = '';
+		$apps[$x]['version'] = '1.8';
+		$apps[$x]['license'] = 'Member';
+		$apps[$x]['url'] = 'http://www.fusionpbx.com';
+		$apps[$x]['description']['en-us'] = '';
+
+	//permission details
+		$y = 0;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_view';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_add';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_edit';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_delete';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_all';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_setting_view';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_setting_add';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_setting_edit';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_setting_delete';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_setting_all';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_address_view';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_address_add';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_address_edit';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_address_delete';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
+		$y++;
+		$apps[$x]['permissions'][$y]['name'] = 'provider_address_all';
+		$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
+		$y++;
+
+	//providers
+		$y = 0;
+		$apps[$x]['db'][$y]['table']['name'] = 'v_providers';
+		$apps[$x]['db'][$y]['table']['parent'] = '';
+		$z = 0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_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'] = 'provider_name';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '1';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider name.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_enabled';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'boolean';
+		$apps[$x]['db'][$y]['fields'][$z]['toggle'] = ['true','false'];
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider enabled.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_description';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '1';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider 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'] = "";
+
+	//provider settings
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = 'v_provider_settings';
+		$apps[$x]['db'][$y]['table']['parent'] = 'v_providers';
+		$z = 0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_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'] = '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'] = 'provider_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_providers';
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'provider_uuid';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'application_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_applications';
+		//$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'application_uuid';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_setting_category';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider setting category.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_setting_subcategory';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider setting subcategory.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_setting_type';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider setting type.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_setting_name';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider setting name.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_setting_value';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider setting value.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_setting_order';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'numeric';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider setting order.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_setting_enabled';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'boolean';
+		$apps[$x]['db'][$y]['fields'][$z]['toggle'] = ['true','false'];
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider setting enabled.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_setting_description';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the provider setting 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'] = "";
+
+	//provider addresses
+		$y = 13;
+		$apps[$x]['db'][$y]['table']['name'] = 'v_provider_addresses';
+		$apps[$x]['db'][$y]['table']['parent'] = 'v_providers';
+		$z = 0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_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';
+		$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'] = 'provider_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_providers';
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'provider_uuid';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_address_cidr';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'cidr';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the address CIDR.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_address_enabled';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'boolean';
+		$apps[$x]['db'][$y]['fields'][$z]['toggle'] = ['true','false'];
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the address enabled.';
+		$z++;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_address_description';
+		$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+		$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
+		$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the address 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'] = "";
+
+	//destinations
+		$y++;
+		$apps[$x]['db'][$y]['table']['name'] = "v_destinations";
+		$apps[$x]['db'][$y]['table']['parent'] = "";
+		$z=0;
+		$apps[$x]['db'][$y]['fields'][$z]['name'] = 'provider_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_providers';
+		$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'provider_uuid';
+
+?>

+ 22 - 0
app_defaults.php

@@ -0,0 +1,22 @@
+<?php
+
+if ($domains_processed == 1) {
+
+	//set provider_setting_type to text if it is null
+	$sql = "select * from v_provider_settings ";
+	$sql .= "where provider_setting_type is null ";
+	$database = new database;
+	$provider_settings = $database->select($sql, null, 'all');
+	if (is_array($provider_settings) && @sizeof($provider_settings) != 0) {
+		foreach($provider_settings as $row) {
+			$sql = "update v_provider_settings ";
+			$sql .= "set provider_setting_type = 'text' ";
+			$sql .= "where provider_setting_uuid = :provider_setting_uuid ";
+			$parameters['provider_setting_uuid'] = $row['provider_setting_uuid'];
+			$database->select($sql, $parameters, 'all');
+		}
+	}
+
+}
+
+?>

+ 911 - 0
app_languages.php

@@ -0,0 +1,911 @@
+<?php
+
+$text['title-providers']['en-us'] = 'Providers';
+$text['title-providers']['ar-eg'] = '';
+$text['title-providers']['de-at'] = '';
+$text['title-providers']['de-ch'] = '';
+$text['title-providers']['de-de'] = '';
+$text['title-providers']['es-cl'] = '';
+$text['title-providers']['es-mx'] = '';
+$text['title-providers']['fr-ca'] = '';
+$text['title-providers']['fr-fr'] = '';
+$text['title-providers']['he-il'] = '';
+$text['title-providers']['it-it'] = '';
+$text['title-providers']['nl-nl'] = '';
+$text['title-providers']['pl-pl'] = '';
+$text['title-providers']['pt-br'] = '';
+$text['title-providers']['pt-pt'] = '';
+$text['title-providers']['ro-ro'] = '';
+$text['title-providers']['ru-ru'] = '';
+$text['title-providers']['sv-se'] = '';
+$text['title-providers']['uk-ua'] = '';
+
+$text['title-provider']['en-us'] = 'Provider';
+$text['title-provider']['ar-eg'] = '';
+$text['title-provider']['de-at'] = '';
+$text['title-provider']['de-ch'] = '';
+$text['title-provider']['de-de'] = '';
+$text['title-provider']['es-cl'] = '';
+$text['title-provider']['es-mx'] = '';
+$text['title-provider']['fr-ca'] = '';
+$text['title-provider']['fr-fr'] = '';
+$text['title-provider']['he-il'] = '';
+$text['title-provider']['it-it'] = '';
+$text['title-provider']['nl-nl'] = '';
+$text['title-provider']['pl-pl'] = '';
+$text['title-provider']['pt-br'] = '';
+$text['title-provider']['pt-pt'] = '';
+$text['title-provider']['ro-ro'] = '';
+$text['title-provider']['ru-ru'] = '';
+$text['title-provider']['sv-se'] = '';
+$text['title-provider']['uk-ua'] = '';
+
+$text['title_description-providers']['en-us'] = 'Provider are details that define a provider with useful settings for integrate with a providers. The CIDR addressess define a range of allowed addresses.';
+$text['title_description-providers']['ar-eg'] = '';
+$text['title_description-providers']['de-at'] = '';
+$text['title_description-providers']['de-ch'] = '';
+$text['title_description-providers']['de-de'] = '';
+$text['title_description-providers']['es-cl'] = '';
+$text['title_description-providers']['es-mx'] = '';
+$text['title_description-providers']['fr-ca'] = '';
+$text['title_description-providers']['fr-fr'] = '';
+$text['title_description-providers']['he-il'] = '';
+$text['title_description-providers']['it-it'] = '';
+$text['title_description-providers']['nl-nl'] = '';
+$text['title_description-providers']['pl-pl'] = '';
+$text['title_description-providers']['pt-br'] = '';
+$text['title_description-providers']['pt-pt'] = '';
+$text['title_description-providers']['ro-ro'] = '';
+$text['title_description-providers']['ru-ru'] = '';
+$text['title_description-providers']['sv-se'] = '';
+$text['title_description-providers']['uk-ua'] = '';
+
+$text['label-provider_address_cidr']['en-us'] = 'CIDR';
+$text['label-provider_address_cidr']['ar-eg'] = '';
+$text['label-provider_address_cidr']['de-at'] = '';
+$text['label-provider_address_cidr']['de-ch'] = '';
+$text['label-provider_address_cidr']['de-de'] = '';
+$text['label-provider_address_cidr']['es-cl'] = '';
+$text['label-provider_address_cidr']['es-mx'] = '';
+$text['label-provider_address_cidr']['fr-ca'] = '';
+$text['label-provider_address_cidr']['fr-fr'] = '';
+$text['label-provider_address_cidr']['he-il'] = '';
+$text['label-provider_address_cidr']['it-it'] = '';
+$text['label-provider_address_cidr']['nl-nl'] = '';
+$text['label-provider_address_cidr']['pl-pl'] = '';
+$text['label-provider_address_cidr']['pt-br'] = '';
+$text['label-provider_address_cidr']['pt-pt'] = '';
+$text['label-provider_address_cidr']['ro-ro'] = '';
+$text['label-provider_address_cidr']['ru-ru'] = '';
+$text['label-provider_address_cidr']['sv-se'] = '';
+$text['label-provider_address_cidr']['uk-ua'] = '';
+
+$text['description-provider_address_cidr']['en-us'] = 'Enter the address CIDR.';
+$text['description-provider_address_cidr']['ar-eg'] = '';
+$text['description-provider_address_cidr']['de-at'] = '';
+$text['description-provider_address_cidr']['de-ch'] = '';
+$text['description-provider_address_cidr']['de-de'] = '';
+$text['description-provider_address_cidr']['es-cl'] = '';
+$text['description-provider_address_cidr']['es-mx'] = '';
+$text['description-provider_address_cidr']['fr-ca'] = '';
+$text['description-provider_address_cidr']['fr-fr'] = '';
+$text['description-provider_address_cidr']['he-il'] = '';
+$text['description-provider_address_cidr']['it-it'] = '';
+$text['description-provider_address_cidr']['nl-nl'] = '';
+$text['description-provider_address_cidr']['pl-pl'] = '';
+$text['description-provider_address_cidr']['pt-br'] = '';
+$text['description-provider_address_cidr']['pt-pt'] = '';
+$text['description-provider_address_cidr']['ro-ro'] = '';
+$text['description-provider_address_cidr']['ru-ru'] = '';
+$text['description-provider_address_cidr']['sv-se'] = '';
+$text['description-provider_address_cidr']['uk-ua'] = '';
+
+$text['label-provider_address_enabled']['en-us'] = 'Enabled';
+$text['label-provider_address_enabled']['ar-eg'] = '';
+$text['label-provider_address_enabled']['de-at'] = '';
+$text['label-provider_address_enabled']['de-ch'] = '';
+$text['label-provider_address_enabled']['de-de'] = '';
+$text['label-provider_address_enabled']['es-cl'] = '';
+$text['label-provider_address_enabled']['es-mx'] = '';
+$text['label-provider_address_enabled']['fr-ca'] = '';
+$text['label-provider_address_enabled']['fr-fr'] = '';
+$text['label-provider_address_enabled']['he-il'] = '';
+$text['label-provider_address_enabled']['it-it'] = '';
+$text['label-provider_address_enabled']['nl-nl'] = '';
+$text['label-provider_address_enabled']['pl-pl'] = '';
+$text['label-provider_address_enabled']['pt-br'] = '';
+$text['label-provider_address_enabled']['pt-pt'] = '';
+$text['label-provider_address_enabled']['ro-ro'] = '';
+$text['label-provider_address_enabled']['ru-ru'] = '';
+$text['label-provider_address_enabled']['sv-se'] = '';
+$text['label-provider_address_enabled']['uk-ua'] = '';
+
+$text['description-provider_address_enabled']['en-us'] = 'Enter the address enabled.';
+$text['description-provider_address_enabled']['ar-eg'] = '';
+$text['description-provider_address_enabled']['de-at'] = '';
+$text['description-provider_address_enabled']['de-ch'] = '';
+$text['description-provider_address_enabled']['de-de'] = '';
+$text['description-provider_address_enabled']['es-cl'] = '';
+$text['description-provider_address_enabled']['es-mx'] = '';
+$text['description-provider_address_enabled']['fr-ca'] = '';
+$text['description-provider_address_enabled']['fr-fr'] = '';
+$text['description-provider_address_enabled']['he-il'] = '';
+$text['description-provider_address_enabled']['it-it'] = '';
+$text['description-provider_address_enabled']['nl-nl'] = '';
+$text['description-provider_address_enabled']['pl-pl'] = '';
+$text['description-provider_address_enabled']['pt-br'] = '';
+$text['description-provider_address_enabled']['pt-pt'] = '';
+$text['description-provider_address_enabled']['ro-ro'] = '';
+$text['description-provider_address_enabled']['ru-ru'] = '';
+$text['description-provider_address_enabled']['sv-se'] = '';
+$text['description-provider_address_enabled']['uk-ua'] = '';
+
+$text['label-provider_address_description']['en-us'] = 'Description';
+$text['label-provider_address_description']['ar-eg'] = '';
+$text['label-provider_address_description']['de-at'] = '';
+$text['label-provider_address_description']['de-ch'] = '';
+$text['label-provider_address_description']['de-de'] = '';
+$text['label-provider_address_description']['es-cl'] = '';
+$text['label-provider_address_description']['es-mx'] = '';
+$text['label-provider_address_description']['fr-ca'] = '';
+$text['label-provider_address_description']['fr-fr'] = '';
+$text['label-provider_address_description']['he-il'] = '';
+$text['label-provider_address_description']['it-it'] = '';
+$text['label-provider_address_description']['nl-nl'] = '';
+$text['label-provider_address_description']['pl-pl'] = '';
+$text['label-provider_address_description']['pt-br'] = '';
+$text['label-provider_address_description']['pt-pt'] = '';
+$text['label-provider_address_description']['ro-ro'] = '';
+$text['label-provider_address_description']['ru-ru'] = '';
+$text['label-provider_address_description']['sv-se'] = '';
+$text['label-provider_address_description']['uk-ua'] = '';
+
+$text['description-provider_address_description']['en-us'] = 'Enter the address description.';
+$text['description-provider_address_description']['ar-eg'] = '';
+$text['description-provider_address_description']['de-at'] = '';
+$text['description-provider_address_description']['de-ch'] = '';
+$text['description-provider_address_description']['de-de'] = '';
+$text['description-provider_address_description']['es-cl'] = '';
+$text['description-provider_address_description']['es-mx'] = '';
+$text['description-provider_address_description']['fr-ca'] = '';
+$text['description-provider_address_description']['fr-fr'] = '';
+$text['description-provider_address_description']['he-il'] = '';
+$text['description-provider_address_description']['it-it'] = '';
+$text['description-provider_address_description']['nl-nl'] = '';
+$text['description-provider_address_description']['pl-pl'] = '';
+$text['description-provider_address_description']['pt-br'] = '';
+$text['description-provider_address_description']['pt-pt'] = '';
+$text['description-provider_address_description']['ro-ro'] = '';
+$text['description-provider_address_description']['ru-ru'] = '';
+$text['description-provider_address_description']['sv-se'] = '';
+$text['description-provider_address_description']['uk-ua'] = '';
+
+$text['label-application']['en-us'] = 'Application';
+$text['label-application']['ar-eg'] = '';
+$text['label-application']['de-at'] = '';
+$text['label-application']['de-ch'] = '';
+$text['label-application']['de-de'] = '';
+$text['label-application']['es-cl'] = '';
+$text['label-application']['es-mx'] = '';
+$text['label-application']['fr-ca'] = '';
+$text['label-application']['fr-fr'] = '';
+$text['label-application']['he-il'] = '';
+$text['label-application']['it-it'] = '';
+$text['label-application']['nl-nl'] = '';
+$text['label-application']['pl-pl'] = '';
+$text['label-application']['pt-br'] = '';
+$text['label-application']['pt-pt'] = '';
+$text['label-application']['ro-ro'] = '';
+$text['label-application']['ru-ru'] = '';
+$text['label-application']['sv-se'] = '';
+$text['label-application']['uk-ua'] = '';
+
+$text['label-provider_setting_category']['en-us'] = 'Category';
+$text['label-provider_setting_category']['ar-eg'] = '';
+$text['label-provider_setting_category']['de-at'] = '';
+$text['label-provider_setting_category']['de-ch'] = '';
+$text['label-provider_setting_category']['de-de'] = '';
+$text['label-provider_setting_category']['es-cl'] = '';
+$text['label-provider_setting_category']['es-mx'] = '';
+$text['label-provider_setting_category']['fr-ca'] = '';
+$text['label-provider_setting_category']['fr-fr'] = '';
+$text['label-provider_setting_category']['he-il'] = '';
+$text['label-provider_setting_category']['it-it'] = '';
+$text['label-provider_setting_category']['nl-nl'] = '';
+$text['label-provider_setting_category']['pl-pl'] = '';
+$text['label-provider_setting_category']['pt-br'] = '';
+$text['label-provider_setting_category']['pt-pt'] = '';
+$text['label-provider_setting_category']['ro-ro'] = '';
+$text['label-provider_setting_category']['ru-ru'] = '';
+$text['label-provider_setting_category']['sv-se'] = '';
+$text['label-provider_setting_category']['uk-ua'] = '';
+
+$text['description-provider_setting_category']['en-us'] = 'Enter the provider setting category.';
+$text['description-provider_setting_category']['ar-eg'] = '';
+$text['description-provider_setting_category']['de-at'] = '';
+$text['description-provider_setting_category']['de-ch'] = '';
+$text['description-provider_setting_category']['de-de'] = '';
+$text['description-provider_setting_category']['es-cl'] = '';
+$text['description-provider_setting_category']['es-mx'] = '';
+$text['description-provider_setting_category']['fr-ca'] = '';
+$text['description-provider_setting_category']['fr-fr'] = '';
+$text['description-provider_setting_category']['he-il'] = '';
+$text['description-provider_setting_category']['it-it'] = '';
+$text['description-provider_setting_category']['nl-nl'] = '';
+$text['description-provider_setting_category']['pl-pl'] = '';
+$text['description-provider_setting_category']['pt-br'] = '';
+$text['description-provider_setting_category']['pt-pt'] = '';
+$text['description-provider_setting_category']['ro-ro'] = '';
+$text['description-provider_setting_category']['ru-ru'] = '';
+$text['description-provider_setting_category']['sv-se'] = '';
+$text['description-provider_setting_category']['uk-ua'] = '';
+
+$text['label-provider_setting_subcategory']['en-us'] = 'Subcategory';
+$text['label-provider_setting_subcategory']['ar-eg'] = '';
+$text['label-provider_setting_subcategory']['de-at'] = '';
+$text['label-provider_setting_subcategory']['de-ch'] = '';
+$text['label-provider_setting_subcategory']['de-de'] = '';
+$text['label-provider_setting_subcategory']['es-cl'] = '';
+$text['label-provider_setting_subcategory']['es-mx'] = '';
+$text['label-provider_setting_subcategory']['fr-ca'] = '';
+$text['label-provider_setting_subcategory']['fr-fr'] = '';
+$text['label-provider_setting_subcategory']['he-il'] = '';
+$text['label-provider_setting_subcategory']['it-it'] = '';
+$text['label-provider_setting_subcategory']['nl-nl'] = '';
+$text['label-provider_setting_subcategory']['pl-pl'] = '';
+$text['label-provider_setting_subcategory']['pt-br'] = '';
+$text['label-provider_setting_subcategory']['pt-pt'] = '';
+$text['label-provider_setting_subcategory']['ro-ro'] = '';
+$text['label-provider_setting_subcategory']['ru-ru'] = '';
+$text['label-provider_setting_subcategory']['sv-se'] = '';
+$text['label-provider_setting_subcategory']['uk-ua'] = '';
+
+$text['description-provider_setting_subcategory']['en-us'] = 'Enter the provider setting subcategory.';
+$text['description-provider_setting_subcategory']['ar-eg'] = '';
+$text['description-provider_setting_subcategory']['de-at'] = '';
+$text['description-provider_setting_subcategory']['de-ch'] = '';
+$text['description-provider_setting_subcategory']['de-de'] = '';
+$text['description-provider_setting_subcategory']['es-cl'] = '';
+$text['description-provider_setting_subcategory']['es-mx'] = '';
+$text['description-provider_setting_subcategory']['fr-ca'] = '';
+$text['description-provider_setting_subcategory']['fr-fr'] = '';
+$text['description-provider_setting_subcategory']['he-il'] = '';
+$text['description-provider_setting_subcategory']['it-it'] = '';
+$text['description-provider_setting_subcategory']['nl-nl'] = '';
+$text['description-provider_setting_subcategory']['pl-pl'] = '';
+$text['description-provider_setting_subcategory']['pt-br'] = '';
+$text['description-provider_setting_subcategory']['pt-pt'] = '';
+$text['description-provider_setting_subcategory']['ro-ro'] = '';
+$text['description-provider_setting_subcategory']['ru-ru'] = '';
+$text['description-provider_setting_subcategory']['sv-se'] = '';
+$text['description-provider_setting_subcategory']['uk-ua'] = '';
+
+$text['label-provider_setting_type']['en-us'] = 'Type';
+$text['label-provider_setting_type']['ar-eg'] = '';
+$text['label-provider_setting_type']['de-at'] = '';
+$text['label-provider_setting_type']['de-ch'] = '';
+$text['label-provider_setting_type']['de-de'] = '';
+$text['label-provider_setting_type']['es-cl'] = '';
+$text['label-provider_setting_type']['es-mx'] = '';
+$text['label-provider_setting_type']['fr-ca'] = '';
+$text['label-provider_setting_type']['fr-fr'] = '';
+$text['label-provider_setting_type']['he-il'] = '';
+$text['label-provider_setting_type']['it-it'] = '';
+$text['label-provider_setting_type']['nl-nl'] = '';
+$text['label-provider_setting_type']['pl-pl'] = '';
+$text['label-provider_setting_type']['pt-br'] = '';
+$text['label-provider_setting_type']['pt-pt'] = '';
+$text['label-provider_setting_type']['ro-ro'] = '';
+$text['label-provider_setting_type']['ru-ru'] = '';
+$text['label-provider_setting_type']['sv-se'] = '';
+$text['label-provider_setting_type']['uk-ua'] = '';
+
+$text['description-provider_setting_type']['en-us'] = 'Enter the provider setting type.';
+$text['description-provider_setting_type']['ar-eg'] = '';
+$text['description-provider_setting_type']['de-at'] = '';
+$text['description-provider_setting_type']['de-ch'] = '';
+$text['description-provider_setting_type']['de-de'] = '';
+$text['description-provider_setting_type']['es-cl'] = '';
+$text['description-provider_setting_type']['es-mx'] = '';
+$text['description-provider_setting_type']['fr-ca'] = '';
+$text['description-provider_setting_type']['fr-fr'] = '';
+$text['description-provider_setting_type']['he-il'] = '';
+$text['description-provider_setting_type']['it-it'] = '';
+$text['description-provider_setting_type']['nl-nl'] = '';
+$text['description-provider_setting_type']['pl-pl'] = '';
+$text['description-provider_setting_type']['pt-br'] = '';
+$text['description-provider_setting_type']['pt-pt'] = '';
+$text['description-provider_setting_type']['ro-ro'] = '';
+$text['description-provider_setting_type']['ru-ru'] = '';
+$text['description-provider_setting_type']['sv-se'] = '';
+$text['description-provider_setting_type']['uk-ua'] = '';
+
+$text['label-provider_setting_name']['en-us'] = 'Name';
+$text['label-provider_setting_name']['ar-eg'] = '';
+$text['label-provider_setting_name']['de-at'] = '';
+$text['label-provider_setting_name']['de-ch'] = '';
+$text['label-provider_setting_name']['de-de'] = '';
+$text['label-provider_setting_name']['es-cl'] = '';
+$text['label-provider_setting_name']['es-mx'] = '';
+$text['label-provider_setting_name']['fr-ca'] = '';
+$text['label-provider_setting_name']['fr-fr'] = '';
+$text['label-provider_setting_name']['he-il'] = '';
+$text['label-provider_setting_name']['it-it'] = '';
+$text['label-provider_setting_name']['nl-nl'] = '';
+$text['label-provider_setting_name']['pl-pl'] = '';
+$text['label-provider_setting_name']['pt-br'] = '';
+$text['label-provider_setting_name']['pt-pt'] = '';
+$text['label-provider_setting_name']['ro-ro'] = '';
+$text['label-provider_setting_name']['ru-ru'] = '';
+$text['label-provider_setting_name']['sv-se'] = '';
+$text['label-provider_setting_name']['uk-ua'] = '';
+
+$text['description-provider_setting_name']['en-us'] = 'Enter the provider setting name.';
+$text['description-provider_setting_name']['ar-eg'] = '';
+$text['description-provider_setting_name']['de-at'] = '';
+$text['description-provider_setting_name']['de-ch'] = '';
+$text['description-provider_setting_name']['de-de'] = '';
+$text['description-provider_setting_name']['es-cl'] = '';
+$text['description-provider_setting_name']['es-mx'] = '';
+$text['description-provider_setting_name']['fr-ca'] = '';
+$text['description-provider_setting_name']['fr-fr'] = '';
+$text['description-provider_setting_name']['he-il'] = '';
+$text['description-provider_setting_name']['it-it'] = '';
+$text['description-provider_setting_name']['nl-nl'] = '';
+$text['description-provider_setting_name']['pl-pl'] = '';
+$text['description-provider_setting_name']['pt-br'] = '';
+$text['description-provider_setting_name']['pt-pt'] = '';
+$text['description-provider_setting_name']['ro-ro'] = '';
+$text['description-provider_setting_name']['ru-ru'] = '';
+$text['description-provider_setting_name']['sv-se'] = '';
+$text['description-provider_setting_name']['uk-ua'] = '';
+
+$text['label-provider_setting_value']['en-us'] = 'Value';
+$text['label-provider_setting_value']['ar-eg'] = '';
+$text['label-provider_setting_value']['de-at'] = '';
+$text['label-provider_setting_value']['de-ch'] = '';
+$text['label-provider_setting_value']['de-de'] = '';
+$text['label-provider_setting_value']['es-cl'] = '';
+$text['label-provider_setting_value']['es-mx'] = '';
+$text['label-provider_setting_value']['fr-ca'] = '';
+$text['label-provider_setting_value']['fr-fr'] = '';
+$text['label-provider_setting_value']['he-il'] = '';
+$text['label-provider_setting_value']['it-it'] = '';
+$text['label-provider_setting_value']['nl-nl'] = '';
+$text['label-provider_setting_value']['pl-pl'] = '';
+$text['label-provider_setting_value']['pt-br'] = '';
+$text['label-provider_setting_value']['pt-pt'] = '';
+$text['label-provider_setting_value']['ro-ro'] = '';
+$text['label-provider_setting_value']['ru-ru'] = '';
+$text['label-provider_setting_value']['sv-se'] = '';
+$text['label-provider_setting_value']['uk-ua'] = '';
+
+$text['description-provider_setting_value']['en-us'] = 'Enter the provider setting value.';
+$text['description-provider_setting_value']['ar-eg'] = '';
+$text['description-provider_setting_value']['de-at'] = '';
+$text['description-provider_setting_value']['de-ch'] = '';
+$text['description-provider_setting_value']['de-de'] = '';
+$text['description-provider_setting_value']['es-cl'] = '';
+$text['description-provider_setting_value']['es-mx'] = '';
+$text['description-provider_setting_value']['fr-ca'] = '';
+$text['description-provider_setting_value']['fr-fr'] = '';
+$text['description-provider_setting_value']['he-il'] = '';
+$text['description-provider_setting_value']['it-it'] = '';
+$text['description-provider_setting_value']['nl-nl'] = '';
+$text['description-provider_setting_value']['pl-pl'] = '';
+$text['description-provider_setting_value']['pt-br'] = '';
+$text['description-provider_setting_value']['pt-pt'] = '';
+$text['description-provider_setting_value']['ro-ro'] = '';
+$text['description-provider_setting_value']['ru-ru'] = '';
+$text['description-provider_setting_value']['sv-se'] = '';
+$text['description-provider_setting_value']['uk-ua'] = '';
+
+$text['label-provider_setting_order']['en-us'] = 'Order';
+$text['label-provider_setting_order']['ar-eg'] = '';
+$text['label-provider_setting_order']['de-at'] = '';
+$text['label-provider_setting_order']['de-ch'] = '';
+$text['label-provider_setting_order']['de-de'] = '';
+$text['label-provider_setting_order']['es-cl'] = '';
+$text['label-provider_setting_order']['es-mx'] = '';
+$text['label-provider_setting_order']['fr-ca'] = '';
+$text['label-provider_setting_order']['fr-fr'] = '';
+$text['label-provider_setting_order']['he-il'] = '';
+$text['label-provider_setting_order']['it-it'] = '';
+$text['label-provider_setting_order']['nl-nl'] = '';
+$text['label-provider_setting_order']['pl-pl'] = '';
+$text['label-provider_setting_order']['pt-br'] = '';
+$text['label-provider_setting_order']['pt-pt'] = '';
+$text['label-provider_setting_order']['ro-ro'] = '';
+$text['label-provider_setting_order']['ru-ru'] = '';
+$text['label-provider_setting_order']['sv-se'] = '';
+$text['label-provider_setting_order']['uk-ua'] = '';
+
+$text['description-provider_setting_order']['en-us'] = 'Enter the provider setting order.';
+$text['description-provider_setting_order']['ar-eg'] = '';
+$text['description-provider_setting_order']['de-at'] = '';
+$text['description-provider_setting_order']['de-ch'] = '';
+$text['description-provider_setting_order']['de-de'] = '';
+$text['description-provider_setting_order']['es-cl'] = '';
+$text['description-provider_setting_order']['es-mx'] = '';
+$text['description-provider_setting_order']['fr-ca'] = '';
+$text['description-provider_setting_order']['fr-fr'] = '';
+$text['description-provider_setting_order']['he-il'] = '';
+$text['description-provider_setting_order']['it-it'] = '';
+$text['description-provider_setting_order']['nl-nl'] = '';
+$text['description-provider_setting_order']['pl-pl'] = '';
+$text['description-provider_setting_order']['pt-br'] = '';
+$text['description-provider_setting_order']['pt-pt'] = '';
+$text['description-provider_setting_order']['ro-ro'] = '';
+$text['description-provider_setting_order']['ru-ru'] = '';
+$text['description-provider_setting_order']['sv-se'] = '';
+$text['description-provider_setting_order']['uk-ua'] = '';
+
+$text['label-provider_setting_enabled']['en-us'] = 'Enabled';
+$text['label-provider_setting_enabled']['ar-eg'] = '';
+$text['label-provider_setting_enabled']['de-at'] = '';
+$text['label-provider_setting_enabled']['de-ch'] = '';
+$text['label-provider_setting_enabled']['de-de'] = '';
+$text['label-provider_setting_enabled']['es-cl'] = '';
+$text['label-provider_setting_enabled']['es-mx'] = '';
+$text['label-provider_setting_enabled']['fr-ca'] = '';
+$text['label-provider_setting_enabled']['fr-fr'] = '';
+$text['label-provider_setting_enabled']['he-il'] = '';
+$text['label-provider_setting_enabled']['it-it'] = '';
+$text['label-provider_setting_enabled']['nl-nl'] = '';
+$text['label-provider_setting_enabled']['pl-pl'] = '';
+$text['label-provider_setting_enabled']['pt-br'] = '';
+$text['label-provider_setting_enabled']['pt-pt'] = '';
+$text['label-provider_setting_enabled']['ro-ro'] = '';
+$text['label-provider_setting_enabled']['ru-ru'] = '';
+$text['label-provider_setting_enabled']['sv-se'] = '';
+$text['label-provider_setting_enabled']['uk-ua'] = '';
+
+$text['description-provider_setting_enabled']['en-us'] = 'Enter the provider setting enabled.';
+$text['description-provider_setting_enabled']['ar-eg'] = '';
+$text['description-provider_setting_enabled']['de-at'] = '';
+$text['description-provider_setting_enabled']['de-ch'] = '';
+$text['description-provider_setting_enabled']['de-de'] = '';
+$text['description-provider_setting_enabled']['es-cl'] = '';
+$text['description-provider_setting_enabled']['es-mx'] = '';
+$text['description-provider_setting_enabled']['fr-ca'] = '';
+$text['description-provider_setting_enabled']['fr-fr'] = '';
+$text['description-provider_setting_enabled']['he-il'] = '';
+$text['description-provider_setting_enabled']['it-it'] = '';
+$text['description-provider_setting_enabled']['nl-nl'] = '';
+$text['description-provider_setting_enabled']['pl-pl'] = '';
+$text['description-provider_setting_enabled']['pt-br'] = '';
+$text['description-provider_setting_enabled']['pt-pt'] = '';
+$text['description-provider_setting_enabled']['ro-ro'] = '';
+$text['description-provider_setting_enabled']['ru-ru'] = '';
+$text['description-provider_setting_enabled']['sv-se'] = '';
+$text['description-provider_setting_enabled']['uk-ua'] = '';
+
+$text['label-provider_setting_description']['en-us'] = 'Description';
+$text['label-provider_setting_description']['ar-eg'] = '';
+$text['label-provider_setting_description']['de-at'] = '';
+$text['label-provider_setting_description']['de-ch'] = '';
+$text['label-provider_setting_description']['de-de'] = '';
+$text['label-provider_setting_description']['es-cl'] = '';
+$text['label-provider_setting_description']['es-mx'] = '';
+$text['label-provider_setting_description']['fr-ca'] = '';
+$text['label-provider_setting_description']['fr-fr'] = '';
+$text['label-provider_setting_description']['he-il'] = '';
+$text['label-provider_setting_description']['it-it'] = '';
+$text['label-provider_setting_description']['nl-nl'] = '';
+$text['label-provider_setting_description']['pl-pl'] = '';
+$text['label-provider_setting_description']['pt-br'] = '';
+$text['label-provider_setting_description']['pt-pt'] = '';
+$text['label-provider_setting_description']['ro-ro'] = '';
+$text['label-provider_setting_description']['ru-ru'] = '';
+$text['label-provider_setting_description']['sv-se'] = '';
+$text['label-provider_setting_description']['uk-ua'] = '';
+
+$text['description-provider_setting_description']['en-us'] = 'Enter the provider setting description.';
+$text['description-provider_setting_description']['ar-eg'] = '';
+$text['description-provider_setting_description']['de-at'] = '';
+$text['description-provider_setting_description']['de-ch'] = '';
+$text['description-provider_setting_description']['de-de'] = '';
+$text['description-provider_setting_description']['es-cl'] = '';
+$text['description-provider_setting_description']['es-mx'] = '';
+$text['description-provider_setting_description']['fr-ca'] = '';
+$text['description-provider_setting_description']['fr-fr'] = '';
+$text['description-provider_setting_description']['he-il'] = '';
+$text['description-provider_setting_description']['it-it'] = '';
+$text['description-provider_setting_description']['nl-nl'] = '';
+$text['description-provider_setting_description']['pl-pl'] = '';
+$text['description-provider_setting_description']['pt-br'] = '';
+$text['description-provider_setting_description']['pt-pt'] = '';
+$text['description-provider_setting_description']['ro-ro'] = '';
+$text['description-provider_setting_description']['ru-ru'] = '';
+$text['description-provider_setting_description']['sv-se'] = '';
+$text['description-provider_setting_description']['uk-ua'] = '';
+
+$text['label-provider_name']['en-us'] = 'Name';
+$text['label-provider_name']['ar-eg'] = '';
+$text['label-provider_name']['de-at'] = '';
+$text['label-provider_name']['de-ch'] = '';
+$text['label-provider_name']['de-de'] = '';
+$text['label-provider_name']['es-cl'] = '';
+$text['label-provider_name']['es-mx'] = '';
+$text['label-provider_name']['fr-ca'] = '';
+$text['label-provider_name']['fr-fr'] = '';
+$text['label-provider_name']['he-il'] = '';
+$text['label-provider_name']['it-it'] = '';
+$text['label-provider_name']['nl-nl'] = '';
+$text['label-provider_name']['pl-pl'] = '';
+$text['label-provider_name']['pt-br'] = '';
+$text['label-provider_name']['pt-pt'] = '';
+$text['label-provider_name']['ro-ro'] = '';
+$text['label-provider_name']['ru-ru'] = '';
+$text['label-provider_name']['sv-se'] = '';
+$text['label-provider_name']['uk-ua'] = '';
+
+$text['description-provider_name']['en-us'] = 'Enter the provider name.';
+$text['description-provider_name']['ar-eg'] = '';
+$text['description-provider_name']['de-at'] = '';
+$text['description-provider_name']['de-ch'] = '';
+$text['description-provider_name']['de-de'] = '';
+$text['description-provider_name']['es-cl'] = '';
+$text['description-provider_name']['es-mx'] = '';
+$text['description-provider_name']['fr-ca'] = '';
+$text['description-provider_name']['fr-fr'] = '';
+$text['description-provider_name']['he-il'] = '';
+$text['description-provider_name']['it-it'] = '';
+$text['description-provider_name']['nl-nl'] = '';
+$text['description-provider_name']['pl-pl'] = '';
+$text['description-provider_name']['pt-br'] = '';
+$text['description-provider_name']['pt-pt'] = '';
+$text['description-provider_name']['ro-ro'] = '';
+$text['description-provider_name']['ru-ru'] = '';
+$text['description-provider_name']['sv-se'] = '';
+$text['description-provider_name']['uk-ua'] = '';
+
+$text['label-provider_settings']['en-us'] = 'Settings';
+$text['label-provider_settings']['ar-eg'] = '';
+$text['label-provider_settings']['de-at'] = '';
+$text['label-provider_settings']['de-ch'] = '';
+$text['label-provider_settings']['de-de'] = '';
+$text['label-provider_settings']['es-cl'] = '';
+$text['label-provider_settings']['es-mx'] = '';
+$text['label-provider_settings']['fr-ca'] = '';
+$text['label-provider_settings']['fr-fr'] = '';
+$text['label-provider_settings']['he-il'] = '';
+$text['label-provider_settings']['it-it'] = '';
+$text['label-provider_settings']['nl-nl'] = '';
+$text['label-provider_settings']['pl-pl'] = '';
+$text['label-provider_settings']['pt-br'] = '';
+$text['label-provider_settings']['pt-pt'] = '';
+$text['label-provider_settings']['ro-ro'] = '';
+$text['label-provider_settings']['ru-ru'] = '';
+$text['label-provider_settings']['sv-se'] = '';
+$text['label-provider_settings']['uk-ua'] = '';
+
+$text['description-provider_settings']['en-us'] = 'Enter the provider settings.';
+$text['description-provider_settings']['ar-eg'] = '';
+$text['description-provider_settings']['de-at'] = '';
+$text['description-provider_settings']['de-ch'] = '';
+$text['description-provider_settings']['de-de'] = '';
+$text['description-provider_settings']['es-cl'] = '';
+$text['description-provider_settings']['es-mx'] = '';
+$text['description-provider_settings']['fr-ca'] = '';
+$text['description-provider_settings']['fr-fr'] = '';
+$text['description-provider_settings']['he-il'] = '';
+$text['description-provider_settings']['it-it'] = '';
+$text['description-provider_settings']['nl-nl'] = '';
+$text['description-provider_settings']['pl-pl'] = '';
+$text['description-provider_settings']['pt-br'] = '';
+$text['description-provider_settings']['pt-pt'] = '';
+$text['description-provider_settings']['ro-ro'] = '';
+$text['description-provider_settings']['ru-ru'] = '';
+$text['description-provider_settings']['sv-se'] = '';
+$text['description-provider_settings']['uk-ua'] = '';
+
+$text['label-provider_addresses']['en-us'] = 'Addresses';
+$text['label-provider_addresses']['ar-eg'] = '';
+$text['label-provider_addresses']['de-at'] = '';
+$text['label-provider_addresses']['de-ch'] = '';
+$text['label-provider_addresses']['de-de'] = '';
+$text['label-provider_addresses']['es-cl'] = '';
+$text['label-provider_addresses']['es-mx'] = '';
+$text['label-provider_addresses']['fr-ca'] = '';
+$text['label-provider_addresses']['fr-fr'] = '';
+$text['label-provider_addresses']['he-il'] = '';
+$text['label-provider_addresses']['it-it'] = '';
+$text['label-provider_addresses']['nl-nl'] = '';
+$text['label-provider_addresses']['pl-pl'] = '';
+$text['label-provider_addresses']['pt-br'] = '';
+$text['label-provider_addresses']['pt-pt'] = '';
+$text['label-provider_addresses']['ro-ro'] = '';
+$text['label-provider_addresses']['ru-ru'] = '';
+$text['label-provider_addresses']['sv-se'] = '';
+$text['label-provider_addresses']['uk-ua'] = '';
+
+$text['description-provider_addresses']['en-us'] = 'Assign the provider addresses.';
+$text['description-provider_addresses']['ar-eg'] = '';
+$text['description-provider_addresses']['de-at'] = '';
+$text['description-provider_addresses']['de-ch'] = '';
+$text['description-provider_addresses']['de-de'] = '';
+$text['description-provider_addresses']['es-cl'] = '';
+$text['description-provider_addresses']['es-mx'] = '';
+$text['description-provider_addresses']['fr-ca'] = '';
+$text['description-provider_addresses']['fr-fr'] = '';
+$text['description-provider_addresses']['he-il'] = '';
+$text['description-provider_addresses']['it-it'] = '';
+$text['description-provider_addresses']['nl-nl'] = '';
+$text['description-provider_addresses']['pl-pl'] = '';
+$text['description-provider_addresses']['pt-br'] = '';
+$text['description-provider_addresses']['pt-pt'] = '';
+$text['description-provider_addresses']['ro-ro'] = '';
+$text['description-provider_addresses']['ru-ru'] = '';
+$text['description-provider_addresses']['sv-se'] = '';
+$text['description-provider_addresses']['uk-ua'] = '';
+
+$text['label-provider_enabled']['en-us'] = 'Enabled';
+$text['label-provider_enabled']['ar-eg'] = '';
+$text['label-provider_enabled']['de-at'] = '';
+$text['label-provider_enabled']['de-ch'] = '';
+$text['label-provider_enabled']['de-de'] = '';
+$text['label-provider_enabled']['es-cl'] = '';
+$text['label-provider_enabled']['es-mx'] = '';
+$text['label-provider_enabled']['fr-ca'] = '';
+$text['label-provider_enabled']['fr-fr'] = '';
+$text['label-provider_enabled']['he-il'] = '';
+$text['label-provider_enabled']['it-it'] = '';
+$text['label-provider_enabled']['nl-nl'] = '';
+$text['label-provider_enabled']['pl-pl'] = '';
+$text['label-provider_enabled']['pt-br'] = '';
+$text['label-provider_enabled']['pt-pt'] = '';
+$text['label-provider_enabled']['ro-ro'] = '';
+$text['label-provider_enabled']['ru-ru'] = '';
+$text['label-provider_enabled']['sv-se'] = '';
+$text['label-provider_enabled']['uk-ua'] = '';
+
+$text['description-provider_enabled']['en-us'] = 'Enter the provider enabled.';
+$text['description-provider_enabled']['ar-eg'] = '';
+$text['description-provider_enabled']['de-at'] = '';
+$text['description-provider_enabled']['de-ch'] = '';
+$text['description-provider_enabled']['de-de'] = '';
+$text['description-provider_enabled']['es-cl'] = '';
+$text['description-provider_enabled']['es-mx'] = '';
+$text['description-provider_enabled']['fr-ca'] = '';
+$text['description-provider_enabled']['fr-fr'] = '';
+$text['description-provider_enabled']['he-il'] = '';
+$text['description-provider_enabled']['it-it'] = '';
+$text['description-provider_enabled']['nl-nl'] = '';
+$text['description-provider_enabled']['pl-pl'] = '';
+$text['description-provider_enabled']['pt-br'] = '';
+$text['description-provider_enabled']['pt-pt'] = '';
+$text['description-provider_enabled']['ro-ro'] = '';
+$text['description-provider_enabled']['ru-ru'] = '';
+$text['description-provider_enabled']['sv-se'] = '';
+$text['description-provider_enabled']['uk-ua'] = '';
+
+$text['label-provider_description']['en-us'] = 'Description';
+$text['label-provider_description']['ar-eg'] = '';
+$text['label-provider_description']['de-at'] = '';
+$text['label-provider_description']['de-ch'] = '';
+$text['label-provider_description']['de-de'] = '';
+$text['label-provider_description']['es-cl'] = '';
+$text['label-provider_description']['es-mx'] = '';
+$text['label-provider_description']['fr-ca'] = '';
+$text['label-provider_description']['fr-fr'] = '';
+$text['label-provider_description']['he-il'] = '';
+$text['label-provider_description']['it-it'] = '';
+$text['label-provider_description']['nl-nl'] = '';
+$text['label-provider_description']['pl-pl'] = '';
+$text['label-provider_description']['pt-br'] = '';
+$text['label-provider_description']['pt-pt'] = '';
+$text['label-provider_description']['ro-ro'] = '';
+$text['label-provider_description']['ru-ru'] = '';
+$text['label-provider_description']['sv-se'] = '';
+$text['label-provider_description']['uk-ua'] = '';
+
+$text['description-provider_description']['en-us'] = 'Enter the provider description.';
+$text['description-provider_description']['ar-eg'] = '';
+$text['description-provider_description']['de-at'] = '';
+$text['description-provider_description']['de-ch'] = '';
+$text['description-provider_description']['de-de'] = '';
+$text['description-provider_description']['es-cl'] = '';
+$text['description-provider_description']['es-mx'] = '';
+$text['description-provider_description']['fr-ca'] = '';
+$text['description-provider_description']['fr-fr'] = '';
+$text['description-provider_description']['he-il'] = '';
+$text['description-provider_description']['it-it'] = '';
+$text['description-provider_description']['nl-nl'] = '';
+$text['description-provider_description']['pl-pl'] = '';
+$text['description-provider_description']['pt-br'] = '';
+$text['description-provider_description']['pt-pt'] = '';
+$text['description-provider_description']['ro-ro'] = '';
+$text['description-provider_description']['ru-ru'] = '';
+$text['description-provider_description']['sv-se'] = '';
+$text['description-provider_description']['uk-ua'] = '';
+
+$text['button-website']['en-us'] = "Website";
+$text['button-website']['en-gb'] = "Website";
+$text['button-website']['ar-eg'] = "";
+$text['button-website']['de-at'] = "";
+$text['button-website']['de-ch'] = "";
+$text['button-website']['de-de'] = "";
+$text['button-website']['es-cl'] = "";
+$text['button-website']['es-mx'] = "";
+$text['button-website']['fr-ca'] = "site Web";
+$text['button-website']['fr-fr'] = "site Web";
+$text['button-website']['he-il'] = "";
+$text['button-website']['it-it'] = "";
+$text['button-website']['nl-nl'] = "Website";
+$text['button-website']['pl-pl'] = "";
+$text['button-website']['pt-br'] = "Website";
+$text['button-website']['pt-pt'] = "";
+$text['button-website']['ro-ro'] = "";
+$text['button-website']['ru-ru'] = "";
+$text['button-website']['sv-se'] = "";
+$text['button-website']['uk-ua'] = "";
+
+$text['button-pricing']['en-us'] = "Pricing";
+$text['button-pricing']['en-gb'] = "Pricing";
+$text['button-pricing']['ar-eg'] = "";
+$text['button-pricing']['de-at'] = "";
+$text['button-pricing']['de-ch'] = "";
+$text['button-pricing']['de-de'] = "";
+$text['button-pricing']['es-cl'] = "";
+$text['button-pricing']['es-mx'] = "";
+$text['button-pricing']['fr-ca'] = "Tarification";
+$text['button-pricing']['fr-fr'] = "Tarification";
+$text['button-pricing']['he-il'] = "";
+$text['button-pricing']['it-it'] = "";
+$text['button-pricing']['nl-nl'] = "Prijzen";
+$text['button-pricing']['pl-pl'] = "";
+$text['button-pricing']['pt-br'] = "Preços";
+$text['button-pricing']['pt-pt'] = "";
+$text['button-pricing']['ro-ro'] = "";
+$text['button-pricing']['ru-ru'] = "";
+$text['button-pricing']['sv-se'] = "";
+$text['button-pricing']['uk-ua'] = "";
+
+$text['button-signup']['en-us'] = "Signup";
+$text['button-signup']['en-gb'] = "Signup";
+$text['button-signup']['ar-eg'] = "";
+$text['button-signup']['de-at'] = "";
+$text['button-signup']['de-ch'] = "";
+$text['button-signup']['de-de'] = "";
+$text['button-signup']['es-cl'] = "";
+$text['button-signup']['es-mx'] = "";
+$text['button-signup']['fr-ca'] = "S'inscrire";
+$text['button-signup']['fr-fr'] = "S'inscrire";
+$text['button-signup']['he-il'] = "";
+$text['button-signup']['it-it'] = "";
+$text['button-signup']['nl-nl'] = "Inschrijven";
+$text['button-signup']['pl-pl'] = "";
+$text['button-signup']['pt-br'] = "Inscrever";
+$text['button-signup']['pt-pt'] = "";
+$text['button-signup']['ro-ro'] = "";
+$text['button-signup']['ru-ru'] = "";
+$text['button-signup']['sv-se'] = "";
+$text['button-signup']['uk-ua'] = "";
+
+$text['button-setup']['en-us'] = "Setup";
+$text['button-setup']['en-gb'] = "Setup";
+$text['button-setup']['ar-eg'] = "";
+$text['button-setup']['de-at'] = "";
+$text['button-setup']['de-ch'] = "";
+$text['button-setup']['de-de'] = "";
+$text['button-setup']['es-cl'] = "";
+$text['button-setup']['es-mx'] = "";
+$text['button-setup']['fr-ca'] = "Installer";
+$text['button-setup']['fr-fr'] = "Installer";
+$text['button-setup']['he-il'] = "";
+$text['button-setup']['it-it'] = "";
+$text['button-setup']['nl-nl'] = "Instellen";
+$text['button-setup']['pl-pl'] = "";
+$text['button-setup']['pt-br'] = "";
+$text['button-setup']['pt-pt'] = "";
+$text['button-setup']['ro-ro'] = "";
+$text['button-setup']['ru-ru'] = "";
+$text['button-setup']['sv-se'] = "";
+$text['button-setup']['uk-ua'] = "";
+
+$text['button-remove']['en-us'] = "Remove";
+$text['button-remove']['en-gb'] = "Remove";
+$text['button-remove']['ar-eg'] = "";
+$text['button-remove']['de-at'] = "";
+$text['button-remove']['de-ch'] = "";
+$text['button-remove']['de-de'] = "";
+$text['button-remove']['es-cl'] = "";
+$text['button-remove']['es-mx'] = "";
+$text['button-remove']['fr-ca'] = "Retirer";
+$text['button-remove']['fr-fr'] = "Retirer";
+$text['button-remove']['he-il'] = "";
+$text['button-remove']['it-it'] = "";
+$text['button-remove']['nl-nl'] = "Verwijderen";
+$text['button-remove']['pl-pl'] = "";
+$text['button-remove']['pt-br'] = "Configurar";
+$text['button-remove']['pt-pt'] = "";
+$text['button-remove']['ro-ro'] = "";
+$text['button-remove']['ru-ru'] = "";
+$text['button-remove']['sv-se'] = "";
+$text['button-remove']['uk-ua'] = "";
+
+$text['label-region']['en-us'] = "Region";
+$text['label-region']['en-gb'] = "Region";
+$text['label-region']['ar-eg'] = "";
+$text['label-region']['de-at'] = "";
+$text['label-region']['de-ch'] = "";
+$text['label-region']['de-de'] = "";
+$text['label-region']['es-cl'] = "";
+$text['label-region']['es-mx'] = "";
+$text['label-region']['fr-ca'] = "Région";
+$text['label-region']['fr-fr'] = "Région";
+$text['label-region']['he-il'] = "";
+$text['label-region']['it-it'] = "";
+$text['label-region']['nl-nl'] = "Regio";
+$text['label-region']['pl-pl'] = "";
+$text['label-region']['pt-br'] = "";
+$text['label-region']['pt-pt'] = "";
+$text['label-region']['ro-ro'] = "";
+$text['label-region']['ru-ru'] = "";
+$text['label-region']['sv-se'] = "";
+$text['label-region']['uk-ua'] = "";
+
+$text['label-about']['en-us'] = "About";
+$text['label-about']['en-gb'] = "About";
+$text['label-about']['ar-eg'] = "";
+$text['label-about']['de-at'] = "";
+$text['label-about']['de-ch'] = "";
+$text['label-about']['de-de'] = "";
+$text['label-about']['es-cl'] = "";
+$text['label-about']['es-mx'] = "";
+$text['label-about']['fr-ca'] = "Concernant";
+$text['label-about']['fr-fr'] = "Concernant";
+$text['label-about']['he-il'] = "";
+$text['label-about']['it-it'] = "";
+$text['label-about']['nl-nl'] = "Over";
+$text['label-about']['pl-pl'] = "";
+$text['label-about']['pt-br'] = "Sobre";
+$text['label-about']['pt-pt'] = "";
+$text['label-about']['ro-ro'] = "";
+$text['label-about']['ru-ru'] = "";
+$text['label-about']['sv-se'] = "";
+$text['label-about']['uk-ua'] = "";
+
+$text['label-features']['en-us'] = "Features";
+$text['label-features']['en-gb'] = "Features";
+$text['label-features']['ar-eg'] = "";
+$text['label-features']['de-at'] = "";
+$text['label-features']['de-ch'] = "";
+$text['label-features']['de-de'] = "";
+$text['label-features']['es-cl'] = "";
+$text['label-features']['es-mx'] = "";
+$text['label-features']['fr-ca'] = "Caractéristiques";
+$text['label-features']['fr-fr'] = "Caractéristiques";
+$text['label-features']['he-il'] = "";
+$text['label-features']['it-it'] = "";
+$text['label-features']['nl-nl'] = "Mogelijkheden";
+$text['label-features']['pl-pl'] = "";
+$text['label-features']['pt-br'] = "Características";
+$text['label-features']['pt-pt'] = "";
+$text['label-features']['ro-ro'] = "";
+$text['label-features']['ru-ru'] = "";
+$text['label-features']['sv-se'] = "";
+$text['label-features']['uk-ua'] = "";
+
+$text['label-installed']['en-us'] = 'Installed';
+$text['label-installed']['ar-eg'] = '';
+$text['label-installed']['de-at'] = '';
+$text['label-installed']['de-ch'] = '';
+$text['label-installed']['de-de'] = '';
+$text['label-installed']['es-cl'] = '';
+$text['label-installed']['es-mx'] = '';
+$text['label-installed']['fr-ca'] = '';
+$text['label-installed']['fr-fr'] = '';
+$text['label-installed']['he-il'] = '';
+$text['label-installed']['it-it'] = '';
+$text['label-installed']['nl-nl'] = '';
+$text['label-installed']['pl-pl'] = '';
+$text['label-installed']['pt-br'] = '';
+$text['label-installed']['pt-pt'] = '';
+$text['label-installed']['ro-ro'] = '';
+$text['label-installed']['ru-ru'] = '';
+$text['label-installed']['sv-se'] = '';
+$text['label-installed']['uk-ua'] = '';
+
+?>

+ 19 - 0
app_menu.php

@@ -0,0 +1,19 @@
+<?php
+
+$apps[$x]['menu'][0]['title']['en-us'] = 'Providers';
+$apps[$x]['menu'][0]['title']['es-cl'] = '';
+$apps[$x]['menu'][0]['title']['fr-fr'] = '';
+$apps[$x]['menu'][0]['title']['fr-ca'] = '';
+$apps[$x]['menu'][0]['title']['pl'] = '';
+$apps[$x]['menu'][0]['title']['sv-se'] = '';
+$apps[$x]['menu'][0]['title']['uk'] = '';
+$apps[$x]['menu'][0]['title']['de-at'] = '';
+$apps[$x]['menu'][0]['uuid'] = '76c4e42e-5118-42a7-b7af-0cfc5d41f6e8';
+$apps[$x]['menu'][0]['parent_uuid'] = 'bc96d773-ee57-0cdd-c3ac-2d91aba61b55';
+$apps[$x]['menu'][0]['category'] = 'internal';
+$apps[$x]['menu'][0]['path'] = '/app/providers/providers.php';
+$apps[$x]['menu'][0]['groups'][] = 'superadmin';
+//$apps[$x]['menu'][0]['groups'][] = 'admin';
+//$apps[$x]['menu'][0]['groups'][] = 'user';
+
+?>

+ 765 - 0
provider_edit.php

@@ -0,0 +1,765 @@
+ <?php
+ 
+//set the include path
+	$conf = glob("{/usr/local/etc,/etc}/fusionpbx/config.conf", GLOB_BRACE);
+	set_include_path(parse_ini_file($conf[0])['document.root']);
+
+//includes files
+	require_once "resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('provider_add') || permission_exists('provider_edit')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//action add or update
+	if (is_uuid($_REQUEST["id"])) {
+		$action = "update";
+		$provider_uuid = $_REQUEST["id"];
+		$id = $_REQUEST["id"];
+		$export = $_REQUEST["export"];
+	}
+	else {
+		$action = "add";
+	}
+
+//get http post variables and set them to php variables
+	if (is_array($_POST)) {
+		$provider_name = $_POST["provider_name"];
+		$provider_settings = $_POST["provider_settings"];
+		$provider_addresses = $_POST["provider_addresses"];
+		$domain_uuid = $_POST["domain_uuid"];
+		$provider_enabled = $_POST["provider_enabled"];
+		$provider_description = $_POST["provider_description"];
+	}
+
+//process the user data and save it to the database
+	if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
+
+		//validate the token
+			$token = new token;
+			if (!$token->validate($_SERVER['PHP_SELF'])) {
+				message::add($text['message-invalid_token'],'negative');
+				header('Location: providers.php');
+				exit;
+			}
+
+		//process the http post data by submitted action
+			if ($_POST['action'] != '' && strlen($_POST['action']) > 0) {
+
+				//prepare the array(s)
+				$x = 0;
+				if (is_array($_POST['provider_settings'])) {
+					foreach ($_POST['provider_settings'] as $row) {
+						if (is_uuid($row['provider_setting_uuid']) && $row['checked'] === 'true') {
+							$array['providers'][$x]['checked'] = $row['checked'];
+							$array['providers'][$x]['provider_settings'][]['provider_setting_uuid'] = $row['provider_setting_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				$x = 0;
+				if (is_array($_POST['provider_addresses'])) {
+					foreach ($_POST['provider_addresses'] as $row) {
+						if (is_uuid($row['provider_address_uuid']) && $row['checked'] === 'true') {
+							$array['providers'][$x]['checked'] = $row['checked'];
+							$array['providers'][$x]['provider_addresses'][]['provider_address_uuid'] = $row['provider_address_uuid'];
+							$x++;
+						}
+					}
+				}
+
+				//send the array to the database class
+				switch ($_POST['action']) {
+					case 'copy':
+						if (permission_exists('provider_add')) {
+							$obj = new database;
+							$obj->copy($array);
+						}
+						break;
+					case 'delete':
+						if (permission_exists('provider_delete')) {
+							$obj = new database;
+							$obj->delete($array);
+						}
+						break;
+					case 'toggle':
+						if (permission_exists('provider_update')) {
+							$obj = new database;
+							$obj->toggle($array);
+						}
+						break;
+				}
+
+				//redirect the user
+				if (in_array($_POST['action'], array('copy', 'delete', 'toggle'))) {
+					header('Location: provider_edit.php?id='.$id);
+					exit;
+				}
+			}
+
+		//check for all required data
+			$msg = '';
+			//if (strlen($provider_name) == 0) { $msg .= $text['message-required']." ".$text['label-provider_name']."<br>\n"; }
+			//if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."<br>\n"; }
+			//if (strlen($provider_enabled) == 0) { $msg .= $text['message-required']." ".$text['label-provider_enabled']."<br>\n"; }
+			//if (strlen($provider_description) == 0) { $msg .= $text['message-required']." ".$text['label-provider_description']."<br>\n"; }
+			if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
+				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 provider_uuid
+			if (!is_uuid($_POST["provider_uuid"])) {
+				$provider_uuid = uuid();
+			}
+
+		//prepare the array
+			$array['providers'][0]['provider_uuid'] = $provider_uuid;
+			$array['providers'][0]['domain_uuid'] = is_uuid($domain_uuid) ? $domain_uuid : null;
+			$array['providers'][0]['provider_name'] = $provider_name;
+			$array['providers'][0]['provider_enabled'] = $provider_enabled;
+			$array['providers'][0]['provider_description'] = $provider_description;
+			$y = 0;
+			if (is_array($provider_settings)) {
+				foreach ($provider_settings as $row) {
+					if (strlen($row['provider_setting_category']) > 0) {
+						$array['providers'][0]['provider_settings'][$y]['application_uuid'] = $row["application_uuid"];
+						$array['providers'][0]['provider_settings'][$y]['provider_setting_uuid'] = $row["provider_setting_uuid"];
+						$array['providers'][0]['provider_settings'][$y]['provider_setting_category'] = $row["provider_setting_category"];
+						$array['providers'][0]['provider_settings'][$y]['provider_setting_subcategory'] = $row["provider_setting_subcategory"];
+						$array['providers'][0]['provider_settings'][$y]['provider_setting_type'] = $row["provider_setting_type"];
+						$array['providers'][0]['provider_settings'][$y]['provider_setting_name'] = $row["provider_setting_name"];
+						$array['providers'][0]['provider_settings'][$y]['provider_setting_value'] = $row["provider_setting_value"];
+						//$array['providers'][0]['provider_settings'][$y]['provider_setting_order'] = $row["provider_setting_order"];
+						$array['providers'][0]['provider_settings'][$y]['provider_setting_enabled'] = $row["provider_setting_enabled"];
+						$array['providers'][0]['provider_settings'][$y]['provider_setting_description'] = $row["provider_setting_description"];
+						$y++;
+					}
+				}
+			}
+			$y++;
+			if (is_array($provider_addresses)) {
+				foreach ($provider_addresses as $row) {
+					if (strlen($row['provider_address_cidr']) > 0) {
+						$array['providers'][0]['provider_addresses'][$y]['provider_address_uuid'] = $row["provider_address_uuid"];
+						$array['providers'][0]['provider_addresses'][$y]['provider_address_cidr'] = $row["provider_address_cidr"];
+						$array['providers'][0]['provider_addresses'][$y]['provider_address_enabled'] = $row["provider_address_enabled"];
+						$array['providers'][0]['provider_addresses'][$y]['provider_address_description'] = $row["provider_address_description"];
+						$y++;
+					}
+				}
+			}
+
+		//save the data
+			$database = new database;
+			$database->app_name = 'providers';
+			$database->app_uuid = '35187839-237e-4271-b8a1-9b9c45dc8833';
+			$database->save($array);
+
+		//redirect the user
+			if (isset($action)) {
+				if ($action == "add") {
+					$_SESSION["message"] = $text['message-add'];
+				}
+				if ($action == "update") {
+					$_SESSION["message"] = $text['message-update'];
+				}
+				//header('Location: providers.php');
+				header('Location: provider_edit.php?id='.urlencode($provider_uuid));
+				return;
+			}
+	}
+
+//pre-populate the form
+	if (is_array($_GET) && $_POST["persistformvar"] != "true") {
+		$sql = "select ";
+		$sql .= " provider_uuid, ";
+		$sql .= " provider_name, ";
+		//$sql .= " provider_settings, ";
+		//$sql .= " provider_addresses, ";
+		$sql .= " domain_uuid, ";
+		$sql .= " cast(provider_enabled as text), ";
+		$sql .= " provider_description ";
+		$sql .= "from v_providers ";
+		$sql .= "where provider_uuid = :provider_uuid ";
+		//$sql .= "and domain_uuid = :domain_uuid ";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['provider_uuid'] = $provider_uuid;
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (is_array($row) && @sizeof($row) != 0) {
+			$provider_name = $row["provider_name"];
+			//$provider_settings = $row["provider_settings"];
+			//$provider_addresses = $row["provider_addresses"];
+			$domain_uuid = $row["domain_uuid"];
+			$provider_enabled = $row["provider_enabled"];
+			$provider_description = $row["provider_description"];
+		}
+		unset($sql, $parameters, $row);
+	}
+
+//get the child data
+	if (is_uuid($provider_uuid)) {
+		$sql = "select ";
+		$sql .= " provider_address_uuid, ";
+		$sql .= " provider_address_cidr, ";
+		$sql .= " cast(provider_address_enabled as text), ";
+		$sql .= " provider_address_description ";
+		$sql .= "from v_provider_addresses ";
+		$sql .= "where provider_uuid = :provider_uuid ";
+		$sql .= "order by provider_address_cidr asc ";
+		//$sql .= "and domain_uuid = '".$domain_uuid."' ";
+		//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$parameters['provider_uuid'] = $provider_uuid;
+		$database = new database;
+		$provider_addresses = $database->select($sql, $parameters, 'all');
+		unset ($sql, $parameters);
+	}
+
+//add the $provider_address_uuid
+	if (!is_uuid($provider_address_uuid)) {
+		$provider_address_uuid = uuid();
+	}
+
+//add an empty row
+	//$x = is_array($provider_addresses) ? count($provider_addresses) : 0;
+	//$provider_addresses[$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+	//$provider_addresses[$x]['provider_uuid'] = $provider_uuid;
+	//$provider_addresses[$x]['provider_address_uuid'] = uuid();
+	//$provider_addresses[$x]['provider_address_cidr'] = '';
+	//$provider_addresses[$x]['provider_address_enabled'] = '';
+	//$provider_addresses[$x]['provider_address_description'] = '';
+
+//get the child data
+	if (is_uuid($provider_uuid)) {
+		$sql = "select ";
+		$sql .= " provider_setting_uuid, ";
+		$sql .= " application_uuid, ";
+		$sql .= " provider_setting_category, ";
+		$sql .= " provider_setting_subcategory, ";
+		$sql .= " provider_setting_type, ";
+		$sql .= " provider_setting_name, ";
+		$sql .= " provider_setting_value, ";
+		//$sql .= " provider_setting_order, ";
+		$sql .= " cast(provider_setting_enabled as text), ";
+		$sql .= " provider_setting_description ";
+		$sql .= "from v_provider_settings ";
+		$sql .= "where provider_uuid = :provider_uuid ";
+		$sql .= "order by provider_setting_category, provider_setting_subcategory, provider_setting_name asc ";
+		$parameters['provider_uuid'] = $provider_uuid;
+		//echo $sql;
+		//view_array($parameters);
+		$database = new database;
+		$provider_settings = $database->select($sql, $parameters, 'all');
+		unset ($sql, $parameters);
+	}
+
+//add the $provider_setting_uuid
+	if (!is_uuid($provider_setting_uuid)) {
+		$provider_setting_uuid = uuid();
+	}
+
+//export provider settings
+	if (isset($export) && $export == 'true') {
+		//prepare the array
+			$y = 0;
+			$array['providers'][$y]['provider_uuid'] = $provider_uuid;
+			$array['providers'][$y]['provider_name'] = $provider_name;
+			$array['providers'][$y]['provider_enabled'] = $provider_enabled;
+			$array['providers'][$y]['provider_description'] = $provider_description;
+
+			if (is_array($provider_settings)) {
+				$y = 0;
+				foreach ($provider_settings as $row) {
+					if (strlen($row['provider_setting_category']) > 0) {
+						//export values except authentication details
+						switch ($row['provider_setting_name']) {
+						case "http_auth_username":
+							$provider_setting_value = '';
+							break;
+						case "http_auth_password":
+							$provider_setting_value = '';
+							break;
+						default:
+							$provider_setting_value = $row["provider_setting_value"];
+						}
+
+						//add to the array
+						$array['provider_settings'][$y]['provider_uuid'] = $provider_uuid;
+						$array['provider_settings'][$y]['application_uuid'] = $row["application_uuid"];
+						$array['provider_settings'][$y]['provider_setting_uuid'] = $row["provider_setting_uuid"];
+						$array['provider_settings'][$y]['provider_setting_category'] = $row["provider_setting_category"];
+						$array['provider_settings'][$y]['provider_setting_subcategory'] = $row["provider_setting_subcategory"];
+						$array['provider_settings'][$y]['provider_setting_type'] = $row["provider_setting_type"];
+						$array['provider_settings'][$y]['provider_setting_name'] = $row["provider_setting_name"];
+						$array['provider_settings'][$y]['provider_setting_value'] = $provider_setting_value;
+						$array['provider_settings'][$y]['provider_setting_order'] = $row["provider_setting_order"];
+						$array['provider_settings'][$y]['provider_setting_enabled'] = $row["provider_setting_enabled"];
+						$array['provider_settings'][$y]['provider_setting_description'] = $row["provider_setting_description"];
+						$y++;
+					}
+				}
+			}
+			if (is_array($provider_addresses)) {
+				$y = 0;
+				foreach ($provider_addresses as $row) {
+					if (strlen($row['provider_address_cidr']) > 0) {
+						$array['provider_addresses'][$y]['provider_uuid'] = $provider_uuid;
+						$array['provider_addresses'][$y]['provider_address_uuid'] = $row["provider_address_uuid"];
+						$array['provider_addresses'][$y]['provider_address_cidr'] = $row["provider_address_cidr"];
+						$array['provider_addresses'][$y]['provider_address_enabled'] = $row["provider_address_enabled"];
+						$array['provider_addresses'][$y]['provider_address_description'] = $row["provider_address_description"];
+						$y++;
+					}
+				}
+			}
+			//view_array($array);
+
+			echo "<textarea style=\"width: 100%; max-width: 100%; height: 100%; max-height: 100%;\">\n";
+			if (is_array($array['providers'])) {
+				echo "\$x = 0;\n";
+				foreach ($array['providers'] as $row) {
+					foreach ($row as $key => $value) {
+						echo "\$array['providers'][\$x]['{$key}'] = '{$value}';\n";
+					}
+				}
+			}
+			if (is_array($array['provider_settings'] )) {
+				echo "\$y = 0;\n";
+				$count = count($array['provider_settings']);
+				$i = 1;
+				foreach ($array['provider_settings'] as $row) {
+					foreach ($row as $key => $value) {
+						echo "\$array['providers'][\$x]['provider_settings'][\$y]['{$key}'] = '{$value}';\n";
+					}
+					if ($i < $count) {
+						echo "\$y++;\n";
+					}
+					$i++;
+				}
+			}
+			if (is_array($array['provider_addresses'] )) {
+				$y = 0;
+				echo "\$y = 0;\n";
+				$count = count($array['provider_addresses']);
+				$i = 1;
+				foreach ($array['provider_addresses'] as $row) {
+					foreach ($row as $key => $value) {
+						echo "\$array['providers'][\$x]['provider_addresses'][\$y]['{$key}'] = '{$value}';\n";
+					}
+					if ($i < $count) {
+						echo "\$y++;\n";
+					}
+					$i++;
+				}
+			}
+			echo "</textarea>\n";
+			exit;
+	}
+
+//add an empty row
+	//$x = is_array($provider_settings) ? count($provider_settings) : 0;
+
+//add an empty row(s) to the provider settings array
+	if (count($provider_settings) == 0) {
+		if (isset($_SESSION['providers']['setting_add_rows']['numeric'])) {
+			$rows = $_SESSION['providers']['setting_add_rows']['numeric'];
+		}
+		else {
+			$rows = 15;
+		}
+		$id = 0;
+	}
+	if (count($provider_settings) > 0) {
+		if (isset($_SESSION['providers']['setting_edit_rows']['numeric'])) {
+			$rows = $_SESSION['providers']['setting_edit_rows']['numeric'];
+		}
+		else {
+			$rows = 1;
+		}
+		$id = count($provider_settings)+1;
+	}
+	for ($x = 0; $x < $rows; $x++) {
+		$provider_settings[$id]['domain_uuid'] = null;
+		$provider_settings[$id]['provider_uuid'] = $provider_uuid;
+		$provider_settings[$id]['provider_setting_uuid'] = uuid();
+		$provider_settings[$id]['provider_setting_category'] = '';
+		$provider_settings[$id]['provider_setting_subcategory'] = '';
+		$provider_settings[$id]['provider_setting_type'] = '';
+		$provider_settings[$id]['provider_setting_name'] = '';
+		$provider_settings[$id]['provider_setting_value'] = '';
+		//$provider_settings[$id]['provider_setting_order'] = '';
+		$provider_settings[$id]['provider_setting_enabled'] = 'true';
+		$provider_settings[$id]['provider_setting_description'] = '';
+		$id++;
+	}
+
+//add an empty row(s) to the provider addresses array
+	if (count($provider_addresses) == 0) {
+		if (isset($_SESSION['providers']['address_add_rows']['numeric'])) {
+			$rows = $_SESSION['providers']['address_add_rows']['numeric'];
+		}
+		else {
+			$rows = 5;
+		}
+		$id = 0;
+	}
+	if (count($provider_addresses) > 0) {
+		if (isset($_SESSION['providers']['address_edit_rows']['numeric'])) {
+			$rows = $_SESSION['providers']['address_edit_rows']['numeric'];
+		}
+		else {
+			$rows = 1;
+		}
+		$id = count($provider_addresses)+1;
+	}
+	for ($x = 0; $x < $rows; $x++) {
+		$provider_addresses[$id]['domain_uuid'] = is_uuid($domain_uuid) ? $domain_uuid : null;
+		$provider_addresses[$id]['provider_uuid'] = $provider_uuid;
+		$provider_addresses[$id]['provider_address_uuid'] = uuid();
+		$provider_addresses[$id]['provider_address_cidr'] = '';
+		$provider_addresses[$id]['provider_address_enabled'] = 'true';
+		$provider_addresses[$id]['provider_address_description'] = '';
+		$id++;
+	}
+
+//get the $apps array from the installed apps from the core and mod directories
+	$config_list = glob($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/*/*/app_config.php");
+	$x = 0;
+	foreach ($config_list as &$config_path) {
+		include($config_path);
+		$x++;
+	}
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+	$document['title'] = $text['title-provider'];
+	require_once "resources/header.php";
+
+//show the content
+	echo "<form name='frm' id='frm' method='post' action=''>\n";
+	echo "<input class='formfld' type='hidden' name='provider_uuid' value='".escape($provider_uuid)."'>\n";
+
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'><b>".$text['title-provider']."</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'=>'providers.php']);
+	if ($action == 'update') {
+		if (permission_exists('provider_setting_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('provider_setting_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');"]);
+		}
+	}
+	echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','collapse'=>'hide-xs']);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	echo $text['title_description-providers']."\n";
+	echo "<br /><br />\n";
+
+	if ($action == 'update') {
+		if (permission_exists('provider_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('provider_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();"])]);
+		}
+	}
+
+	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-provider_name']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' style='position: relative;' align='left'>\n";
+	echo "	<input class='formfld' type='text' name='provider_name' maxlength='255' value='".escape($provider_name)."'>\n";
+	echo "<br />\n";
+	echo $text['description-provider_name']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-provider_settings']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' style='position: relative;' align='left'>\n";
+	echo "	<table>\n";
+	echo "		<tr>\n";
+	echo "			<th class='vtablereq'>".$text['label-application']."</th>\n";
+	echo "			<th class='vtablereq'>".$text['label-provider_setting_category']."</th>\n";
+	echo "			<th class='vtablereq'>".$text['label-provider_setting_subcategory']."</th>\n";
+	echo "			<th class='vtablereq'>".$text['label-provider_setting_type']."</th>\n";
+	echo "			<th class='vtablereq'>".$text['label-provider_setting_name']."</th>\n";
+	echo "			<th class='vtablereq'>".$text['label-provider_setting_value']."</th>\n";
+	//echo "			<td class='vtable'>".$text['label-provider_setting_order']."</td>\n";
+	echo "			<th class='vtablereq'>".$text['label-provider_setting_enabled']."</th>\n";
+	echo "			<th class='vtable'>".$text['label-provider_setting_description']."</th>\n";
+	//if (is_array($provider_settings) && @sizeof($provider_settings) > 1 && permission_exists('provider_setting_delete')) {
+	//	echo "			<th class='vtable edit_delete_checkbox_all' onmouseover=\"swap_display('delete_label_details', 'delete_toggle_details');\" onmouseout=\"swap_display('delete_label_details', 'delete_toggle_details');\">\n";
+	//	echo "				<span id='delete_label_details'>".$text['label-action']."</span>\n";
+	//	echo "				<span id='delete_toggle_details'><input type='checkbox' id='checkbox_all_details' name='checkbox_all' onclick=\"edit_all_toggle('details'); checkbox_on_change(this);\"></span>\n";
+	//	echo "			</th>\n";
+	//}
+	echo "		</tr>\n";
+	$x = 0;
+	foreach($provider_settings as $row) {
+		echo "		<tr>\n";
+		//echo "			<input type='hidden' name='provider_settings[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+		echo "			<input type='hidden' name='provider_settings[$x][provider_uuid]' value=\"".escape($row["provider_uuid"])."\">\n";
+		echo "			<input type='hidden' name='provider_settings[$x][provider_setting_uuid]' value=\"".escape($row["provider_setting_uuid"])."\">\n";
+		echo "			<td class='formfld'>\n";
+		echo "				<select class='formfld' name='provider_settings[$x][application_uuid]'>\n";
+		echo "					<option value=''></option>\n";
+		foreach($apps as $app) {
+			if ($app['uuid'] == $row['application_uuid']) {
+				echo "					<option value='".$app['uuid']."' selected='selected'>".$app['name']."</option>\n";
+			}
+			else {
+				echo "					<option value='".$app['uuid']."'>".$app['name']."</option>\n";
+			}
+		}
+		echo "				</select>\n";
+		echo "			</td>\n";
+		echo "			<td class='formfld'>\n";
+		echo "				<input class='formfld' type='text' name='provider_settings[$x][provider_setting_category]' maxlength='255' value=\"".escape($row["provider_setting_category"])."\">\n";
+		echo "			</td>\n";
+		echo "			<td class='formfld'>\n";
+		echo "				<input class='formfld' type='text' name='provider_settings[$x][provider_setting_subcategory]' maxlength='255' value=\"".escape($row["provider_setting_subcategory"])."\">\n";
+		echo "			</td>\n";
+		echo "			<td class='formfld'>\n";
+		echo "				<input class='formfld' type='text' name='provider_settings[$x][provider_setting_type]' maxlength='255' value=\"".escape($row["provider_setting_type"])."\">\n";
+		echo "			</td>\n";
+		echo "			<td class='formfld'>\n";
+		echo "				<input class='formfld' type='text' name='provider_settings[$x][provider_setting_name]' maxlength='255' value=\"".escape($row["provider_setting_name"])."\">\n";
+		echo "			</td>\n";
+		echo "			<td class='formfld'>\n";
+		if (substr($row["provider_setting_name"], -8) == 'username' || substr($row["provider_setting_name"], -8) == 'password') {
+			echo "				<input class='formfld' type='password' name='provider_settings[$x][provider_setting_value]' autocomplete='new-password' onmouseover=\"this.type='text';\" onfocus=\"this.type='text';\" onmouseout=\"if (!$(this).is(':focus')) { this.type='password'; }\" onblur=\"this.type='password';\" maxlength='255' value=\"".escape($row["provider_setting_value"])."\">\n";
+		}
+		else {
+			echo "				<input class='formfld' type='text' name='provider_settings[$x][provider_setting_value]' maxlength='255' value=\"".escape($row["provider_setting_value"])."\">\n";
+		}
+		echo "			</td>\n";
+		/*
+		echo "			<td class='formfld'>\n";
+		echo "				<select name='provider_settings[$x][provider_setting_order]' class='formfld'>\n";
+		$i=0;
+		while ($i<=999) {
+			$selected = ($i == $row["provider_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 "			</td>\n";
+		*/
+		echo "			<td class='formfld'>\n";
+		echo "				<select class='formfld' name='provider_settings[$x][provider_setting_enabled]'>\n";
+		echo "					<option value=''></option>\n";
+		if ($row['provider_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['provider_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 "			</td>\n";
+		echo "			<td class='formfld'>\n";
+		echo "				<input class='formfld' type='text' name='provider_settings[$x][provider_setting_description]' maxlength='255' value=\"".escape($row["provider_setting_description"])."\">\n";
+		echo "			</td>\n";
+		if (is_array($provider_settings) && @sizeof($provider_settings) > 1 && permission_exists('provider_setting_delete')) {
+			if (is_uuid($row['provider_setting_uuid'])) {
+				echo "		<td class='vtable' style='text-align: center; padding-bottom: 3px;'>\n";
+				echo "			<input type='checkbox' name='provider_settings[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n";
+				echo "		</td>\n";
+			}
+			else {
+				echo "		<td></td>\n";
+			}
+		}
+		echo "		</tr>\n";
+		$x++;
+	}
+	echo "	</table>\n";
+	echo "<br />\n";
+	echo $text['description-provider_setting_description']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-provider_addresses']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' style='position: relative;' align='left'>\n";
+	echo "	<table>\n";
+	echo "		<tr>\n";
+	echo "			<th class='vtablereq'>".$text['label-provider_address_cidr']."</th>\n";
+	echo "			<th class='vtablereq'>".$text['label-provider_address_enabled']."</th>\n";
+	echo "			<th class='vtable'>".$text['label-provider_address_description']."</th>\n";
+	//if (is_array($provider_addresses) && @sizeof($provider_addresses) > 1 && permission_exists('provider_address_delete')) {
+	//	echo "			<th class='vtable edit_delete_checkbox_all' onmouseover=\"swap_display('delete_label_details', 'delete_toggle_details');\" onmouseout=\"swap_display('delete_label_details', 'delete_toggle_details');\">\n";
+	//	echo "				<span id='delete_label_details'>".$text['label-action']."</span>\n";
+	//	echo "				<span id='delete_toggle_details'><input type='checkbox' id='checkbox_all_details' name='checkbox_all' onclick=\"edit_all_toggle('details'); checkbox_on_change(this);\"></span>\n";
+	//	echo "			</th>\n";
+	//}
+	echo "		</tr>\n";
+	$x = 0;
+	foreach($provider_addresses as $row) {
+		echo "		<tr>\n";
+		echo "			<input type='hidden' name='provider_addresses[$x][domain_uuid]' value=\"".escape($row["domain_uuid"])."\">\n";
+		echo "			<input type='hidden' name='provider_addresses[$x][provider_uuid]' value=\"".escape($row["provider_uuid"])."\">\n";
+		echo "			<input type='hidden' name='provider_addresses[$x][provider_address_uuid]' value=\"".escape($row["provider_address_uuid"])."\">\n";
+		echo "			<td class='formfld'>\n";
+		echo "				<input class='formfld' type='text' name='provider_addresses[$x][provider_address_cidr]' maxlength='255' value=\"".escape($row["provider_address_cidr"])."\">\n";
+		echo "			</td>\n";
+		echo "			<td class='formfld'>\n";
+		echo "				<select class='formfld' name='provider_addresses[$x][provider_address_enabled]'>\n";
+		echo "					<option value=''></option>\n";
+		if ($row['provider_address_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['provider_address_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 "			</td>\n";
+		echo "			<td class='formfld'>\n";
+		echo "				<input class='formfld' type='text' name='provider_addresses[$x][provider_address_description]' maxlength='255' value=\"".escape($row["provider_address_description"])."\">\n";
+		echo "			</td>\n";
+		if (is_array($provider_addresses) && @sizeof($provider_addresses) > 1 && permission_exists('provider_address_delete')) {
+			if (is_uuid($row['provider_address_uuid'])) {
+				echo "		<td class='vtable' style='text-align: center; padding-bottom: 3px;'>\n";
+				echo "			<input type='checkbox' name='provider_addresses[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n";
+				echo "		</td>\n";
+			}
+			else {
+				echo "		<td></td>\n";
+			}
+		}
+		echo "		</tr>\n";
+		$x++;
+	}
+	echo "	</table>\n";
+	echo "<br />\n";
+	echo $text['description-provider_address_description']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-domain_uuid']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' style='position: relative;' align='left'>\n";
+	echo "	<select class='formfld' name='domain_uuid'>\n";
+	if (strlen($domain_uuid) == 0) {
+		echo "		<option value='' selected='selected'>".$text['select-global']."</option>\n";
+	}
+	else {
+		echo "		<option value=''>".$text['label-global']."</option>\n";
+	}
+	foreach ($_SESSION['domains'] as $row) {
+		if ($row['domain_uuid'] == $domain_uuid) {
+			echo "		<option value='".$row['domain_uuid']."' selected='selected'>".escape($row['domain_name'])."</option>\n";
+		}
+		else {
+			echo "		<option value='".$row['domain_uuid']."'>".$row['domain_name']."</option>\n";
+		}
+	}
+	echo "	</select>\n";
+	echo "<br />\n";
+	echo $text['description-domain_uuid']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "<tr>\n";
+	echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
+	echo "	".$text['label-provider_enabled']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' style='position: relative;' align='left'>\n";
+	echo "	<select class='formfld' name='provider_enabled'>\n";
+	echo "		<option value=''></option>\n";
+	if ($provider_enabled == "true") {
+		echo "		<option value='true' selected='selected'>".$text['label-true']."</option>\n";
+	}
+	else {
+		echo "		<option value='true'>".$text['label-true']."</option>\n";
+	}
+	if ($provider_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-provider_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-provider_description']."\n";
+	echo "</td>\n";
+	echo "<td class='vtable' style='position: relative;' align='left'>\n";
+	echo "	<textarea class='formfld' name='provider_description' style='width: 185px; height: 80px;'>".$provider_description."</textarea>\n";
+	echo "<br />\n";
+	echo $text['description-provider_description']."\n";
+	echo "</td>\n";
+	echo "</tr>\n";
+
+	echo "</table>";
+	echo "<br /><br />";
+
+	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+
+	echo "</form>";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 133 - 0
provider_setup.php

@@ -0,0 +1,133 @@
+<?php
+
+//set the include path
+	$conf = glob("{/usr/local/etc,/etc}/fusionpbx/config.conf", GLOB_BRACE);
+	set_include_path(parse_ini_file($conf[0])['document.root']);
+
+//includes files
+	require_once "resources/require.php";
+
+//check permissions
+	require_once "resources/check_auth.php";
+	if (permission_exists('provider_add')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//get the provider
+	if (isset($_GET['id'])) {
+
+		//get the provider id
+			$id = $_GET['id'];
+
+		//add the provider
+			$provider = new providers;
+			$provider->id = $id;
+			$provider->setup();
+
+		//set the add message
+			message::add($text['message-add']);
+
+		//redirect the user
+			header("Location: providers.php");
+			return;
+	}
+
+//provider selection
+	$provider_list = glob($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/*/resources/providers/settings.php");
+	foreach ($provider_list as $setting_path) {
+		include($setting_path);
+	}
+
+//installed providers
+	$sql = "select provider_uuid from v_providers ";
+	$database = new database;
+	$database_providers = $database->select($sql, null, 'all');
+
+//loop through installed providers
+	$x = 0;
+	foreach($array['providers'] as $row) {
+		foreach ($database_providers as $field) {
+			if ($row['provider_uuid'] == $field['provider_uuid']) {
+				$array['providers'][$x]['provider_installed'] = 'true';
+			}
+		}
+		$x++;
+	}
+	unset($sql);
+
+//include header
+	$document['title'] = $text['title-providers'];
+	require_once "resources/header.php";
+
+//show the content
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'><b>".$text['title-providers']."</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','link'=>'providers.php'.(is_numeric($page) ? '?page='.$page : null)]);
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+//providers
+	foreach($array['providers'] as $row) {
+		echo "<div class='row'>\n";
+		echo "	<div class='col-sm-4' style='padding-top: 0px;'>\n";
+		echo "		<br /><br />\n";
+		if (file_exists($_SERVER["PROJECT_ROOT"]."/app/providers/resources/images/".$row['provider_name'].".png")) {
+			echo "		<a href='".$row['provider_website']."' target='_blank'>\n";
+			echo "			<img src='/app/providers/resources/images/".$row['provider_name'].".png' style='width: 200px;' class='center-block img-responsive'><br>\n";
+			echo "		</a>\n";
+		}
+		else {
+			echo "		<h2>".$row['provider_name']."</h2>\n";
+		}
+		echo "	</div>\n";
+		echo "	<div class='col-sm-8' style='padding-top: 0px;'>\n";
+		echo "		<br /><br />\n";
+		echo "		<strong>".$text['label-features']."</strong><br />\n";
+		echo "		".$row['provider_description']."\n";
+		echo "		<br /><br />\n";
+		echo "		<strong>".$text['label-region']."</strong><br />\n";
+		echo "		".$row['provider_region']."\n";
+		echo "		<br /><br />\n";
+		//echo "		<strong>".$text['label-about']."</strong><br />\n";
+		//echo "		".$row['provider_about']."\n";
+		//echo "		<br /><br />\n";
+
+		if (isset($row['provider_website']) && strlen($row['provider_website']) > 0) {
+			echo "		<a href='".$row['provider_website']."' target='_blank'><button type=\"button\" class=\"btn btn-success\">".$text['button-website']."</button></a>\n";
+		}
+		//echo "		<a href='http://skye.tel/fusion-pricing' target='_blank'><button type=\"button\" class=\"btn btn-success\">".$text['button-pricing']."</button></a>\n";
+		if (isset($row['provider_signup']) && strlen($row['provider_signup']) > 0) {
+			echo "		<a href='".$row['provider_signup']."' target='_blank'><button type=\"button\" class=\"btn btn-primary\">".$text['button-signup']."</button></a>\n";
+		}
+		if ($row['provider_installed'] == 'true') {
+			echo "			<a href=\"#\" onclick=\"\"><button type=\"button\" class=\"btn btn-success\">".$text['label-installed']."</button></a>\n";
+			//echo "		<a href=\"provider_delete.php?provider_uuid=".$row['provider_uuid']."\" onclick=\"return confirm(".$text['confirm-delete'].")\"><button type=\"button\" class=\"btn btn-danger\">".$text['button-remove']."</button></a>\n";
+		}
+		else {
+			//$text['confirm-setup'] = 'Are you sure you want to add this?';
+			echo "		<a href=\"provider_setup.php?id=".md5($row['provider_name'])."\" onclick=\"return confirm(".$text['confirm-setup'].")\"><button type=\"button\" class=\"btn btn-success\">".$text['button-setup']."</button></a>\n";
+			//echo "	<button type=\"button\" onclick=\"window.location='provider_setup.php?provider=skyetel'\" class=\"btn btn-primary\">".$text['button-setup']."</button>\n";
+		}
+		echo "	</div>\n";
+		echo "</div>\n";
+		echo "<div style='clear: both;'></div>\n";
+
+		echo "<br/><br/><hr /><br/>\n";
+	}
+
+	echo "<br/><br/><hr /><br/>\n";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 273 - 0
providers.php

@@ -0,0 +1,273 @@
+<?php
+
+//set the include path
+	$conf = glob("{/usr/local/etc,/etc}/fusionpbx/config.conf", GLOB_BRACE);
+	set_include_path(parse_ini_file($conf[0])['document.root']);
+
+//includes files
+	require_once "resources/require.php";
+	require_once "resources/check_auth.php";
+	require_once "resources/paging.php";
+
+//check permissions
+	if (permission_exists('provider_view')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
+
+//add multi-lingual support
+	$language = new text;
+	$text = $language->get();
+
+//get the http post data
+	if (is_array($_POST['providers'])) {
+		$action = $_POST['action'];
+		$search = $_POST['search'];
+		$providers = $_POST['providers'];
+	}
+
+//process the http post data by action
+	if ($action != '' && is_array($providers) && @sizeof($providers) != 0) {
+
+		//validate the token
+		$token = new token;
+		if (!$token->validate($_SERVER['PHP_SELF'])) {
+			message::add($text['message-invalid_token'],'negative');
+			header('Location: providers.php');
+			exit;
+		}
+
+		//prepare the array
+		//foreach($providers as $row) {
+		//	$array['providers'][$x]['checked'] = $row['checked'];
+		//	$array['providers'][$x]['provider_uuid'] = $row['provider_uuid'];
+		//	$array['providers'][$x]['provider_enabled'] = $row['provider_enabled'];
+		//	$x++;
+		//}
+
+		//prepare the array
+		foreach($providers as $row) {
+			$array[$x]['checked'] = $row['checked'];
+			$array[$x]['uuid'] = $row['provider_uuid'];
+			//$array[$x]['provider_enabled'] = $row['provider_enabled'];
+			$x++;
+		}
+
+		//prepare the database object
+		$database = new database;
+		$database->app_name = 'providers';
+		$database->app_uuid = '35187839-237e-4271-b8a1-9b9c45dc8833';
+
+		//send the array to the database class
+		switch ($action) {
+			case 'copy':
+				if (permission_exists('provider_add')) {
+					$obj = new providers;
+					$obj->copy($array);
+				}
+				break;
+			case 'toggle':
+				if (permission_exists('provider_edit')) {
+					$obj = new providers;
+					$obj->toggle($array);
+				}
+				break;
+			case 'delete':
+				if (permission_exists('provider_delete')) {
+					$obj = new providers;
+					$obj->delete($array);
+				}
+				break;
+		}
+
+		//redirect the user
+		header('Location: providers.php'.($search != '' ? '?search='.urlencode($search) : null));
+		exit;
+	}
+
+//get order and order by
+	$order_by = $_GET["order_by"];
+	$order = $_GET["order"];
+
+//add the search
+	if (isset($_GET["search"])) {
+		$search = strtolower($_GET["search"]);
+	}
+
+//get the count
+	$sql = "select count(provider_uuid) ";
+	$sql .= "from v_providers ";
+	$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+	if (isset($search)) {
+		$sql .= "and (";
+		$sql .= "	lower(provider_name) like :search ";
+		$sql .= ") ";
+		$parameters['search'] = '%'.$search.'%';
+	}
+	$parameters['domain_uuid'] = $domain_uuid;
+	$database = new database;
+	$num_rows = $database->select($sql, $parameters, 'column');
+	unset($sql, $parameters);
+
+//prepare to page the results
+	$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
+	$param = $search ? "&search=".$search : null;
+	$page = is_numeric($_GET['page']) ? $_GET['page'] : 0;
+	list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
+	list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
+	$offset = $rows_per_page * $page;
+
+//get the list
+	$sql = "select ";
+	$sql .= "provider_uuid, ";
+	$sql .= "provider_name, ";
+	$sql .= "domain_uuid, ";
+	$sql .= "cast(provider_enabled as text), ";
+	$sql .= "provider_description ";
+	$sql .= "from v_providers ";
+	$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+	if (isset($search)) {
+		$sql .= "and (";
+		$sql .= "	lower(provider_name) like :search ";
+		$sql .= ") ";
+		$parameters['search'] = '%'.$search.'%';
+	}
+	if (isset($_GET["order_by"]) && isset($_GET["order"])) {
+		$sql .= order_by($order_by, $order, 'provider_name', 'asc');
+	}
+	else {
+		$sql .= "order by provider_name asc ";
+	}
+	$sql .= limit_offset($rows_per_page, $offset);
+	$parameters['domain_uuid'] = $domain_uuid;
+	$database = new database;
+	$providers = $database->select($sql, $parameters, 'all');
+	unset($sql, $parameters);
+
+//create token
+	$object = new token;
+	$token = $object->create($_SERVER['PHP_SELF']);
+
+//additional includes
+	$document['title'] = $text['title-providers'];
+	require_once "resources/header.php";
+
+//show the content
+	echo "<div class='action_bar' id='action_bar'>\n";
+	echo "	<div class='heading'><b>".$text['title-providers']." (".$num_rows.")</b></div>\n";
+	echo "	<div class='actions'>\n";
+	if (permission_exists('provider_add')) {
+		echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','name'=>'btn_add','link'=>'provider_setup.php']);
+	}
+	if (permission_exists('provider_add')) {
+		echo button::create(['type'=>'button','label'=>$text['button-advanced'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','name'=>'btn_add','link'=>'provider_edit.php']);
+	}
+	//if (permission_exists('provider_add') && $providers) {
+	//	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('provider_edit') && $providers) {
+	//	echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'id'=>'btn_toggle','name'=>'btn_toggle','style'=>'display:none;','onclick'=>"modal_open('modal-toggle','btn_toggle');"]);
+	//}
+	if (permission_exists('provider_delete') && $providers) {
+		echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display:none;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
+	}
+	echo 		"<form id='form_search' class='inline' method='get'>\n";
+	echo 		"<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown='list_search_reset();'>";
+	echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>($search != '' ? 'display: none;' : null)]);
+	echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'providers.php','style'=>($search == '' ? 'display: none;' : null)]);
+	if ($paging_controls_mini != '') {
+		echo 	"<span style='margin-left: 15px;'>".$paging_controls_mini."</span>\n";
+	}
+	echo "		</form>\n";
+	echo "	</div>\n";
+	echo "	<div style='clear: both;'></div>\n";
+	echo "</div>\n";
+
+	//if (permission_exists('provider_add') && $providers) {
+	//	echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('copy'); list_form_submit('form_list');"])]);
+	//}
+	//if (permission_exists('provider_edit') && $providers) {
+	//	echo modal::create(['id'=>'modal-toggle','type'=>'toggle','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_toggle','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('toggle'); list_form_submit('form_list');"])]);
+	//}
+	if (permission_exists('provider_delete') && $providers) {
+		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['title_description-providers']."\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 "<table class='list'>\n";
+	echo "<tr class='list-header'>\n";
+	if (permission_exists('provider_add') || permission_exists('provider_edit') || permission_exists('provider_delete')) {
+		echo "	<th class='checkbox'>\n";
+		echo "		<input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".($providers ?: "style='visibility: hidden;'").">\n";
+		echo "	</th>\n";
+	}
+	echo th_order_by('provider_name', $text['label-provider_name'], $order_by, $order);
+	echo th_order_by('provider_enabled', $text['label-provider_enabled'], $order_by, $order, null, "class='center'");
+	echo "	<th class='hide-sm-dn'>".$text['label-provider_description']."</th>\n";
+	if (permission_exists('provider_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
+		echo "	<td class='action-button'>&nbsp;</td>\n";
+	}
+	echo "</tr>\n";
+
+	if (is_array($providers) && @sizeof($providers) != 0) {
+		$x = 0;
+		foreach ($providers as $row) {
+			if (permission_exists('provider_edit')) {
+				$list_row_url = "provider_edit.php?id=".urlencode($row['provider_uuid']);
+			}
+			echo "<tr class='list-row' href='".$list_row_url."'>\n";
+			if (permission_exists('provider_add') || permission_exists('provider_edit') || permission_exists('provider_delete')) {
+				echo "	<td class='checkbox'>\n";
+				echo "		<input type='checkbox' name='providers[$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='providers[$x][provider_uuid]' value='".escape($row['provider_uuid'])."' />\n";
+				echo "	</td>\n";
+			}
+			echo "	<td>\n";
+			if (permission_exists('provider_edit')) {
+				echo "	<a href='".$list_row_url."' title=\"".$text['button-edit']."\">".escape($row['provider_name'])."</a>\n";
+			}
+			else {
+				echo "	".escape($row['provider_name']);
+			}
+			echo "	</td>\n";
+			if (permission_exists('provider_edit')) {
+				echo "	<td class='no-link center'>\n";
+				echo "		<input type='hidden' name='number_translations[$x][provider_enabled]' value='".escape($row['provider_enabled'])."' />\n";
+				echo button::create(['type'=>'submit','class'=>'link','label'=>$text['label-'.$row['provider_enabled']],'title'=>$text['button-toggle'],'onclick'=>"list_self_check('checkbox_".$x."'); list_action_set('toggle'); list_form_submit('form_list')"]);
+			}
+			else {
+				echo "	<td class='center'>\n";
+				echo $text['label-'.$row['provider_enabled']];
+			}
+			echo "	</td>\n";
+			echo "	<td class='description overflow hide-sm-dn'>".escape($row['provider_description'])."</td>\n";
+			if (permission_exists('provider_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($providers);
+	}
+
+	echo "</table>\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";
+
+//include the footer
+	require_once "resources/footer.php";
+
+?>

+ 311 - 0
resources/classes/providers.php

@@ -0,0 +1,311 @@
+<?php
+
+/**
+ * providers class
+ *
+ * @method null delete
+ * @method null toggle
+ * @method null copy
+ * @method null setup
+ */
+if (!class_exists('providers')) {
+	class providers {
+
+		/**
+		* declare the variables
+		*/
+		private $app_name;
+		private $app_uuid;
+		private $name;
+		private $table;
+		private $toggle_field;
+		private $toggle_values;
+		private $description_field;
+		private $location;
+		public  $id;
+
+		/**
+		 * called when the object is created
+		 */
+		public function __construct() {
+			//assign the variables
+				$this->app_name = 'providers';
+				$this->app_uuid = '35187839-237e-4271-b8a1-9b9c45dc8833';
+				$this->name = 'provider';
+				$this->table = 'providers';
+				$this->toggle_field = 'provider_enabled';
+				$this->toggle_values = ['true','false'];
+				$this->description_field = 'provider_description';
+				$this->location = 'providers.php';
+		}
+
+		/**
+		 * called when there are no references to a particular object
+		 * unset the variables used in the class
+		 */
+		public function __destruct() {
+			foreach ($this as $key => $value) {
+				unset($this->$key);
+			}
+		}
+
+		/**
+		 * delete rows from the database
+		 */
+		public function delete($records) {
+			if (permission_exists($this->name.'_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->location);
+						exit;
+					}
+
+				//delete multiple records
+					if (is_array($records) && @sizeof($records) != 0) {
+						//build the delete array
+							$x = 0;
+							foreach ($records as $record) {
+								//add to the array
+									if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+										$array['providers'][$x]['provider_uuid'] = $record['uuid'];
+										$array['provider_settings'][$x]['provider_uuid'] = $record['uuid'];
+										$array['provider_addresses'][$x]['provider_uuid'] = $record['uuid'];
+									}
+
+								//increment the id
+									$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);
+
+								//set message
+									message::add($text['message-delete']);
+							}
+							unset($records);
+					}
+			}
+		}
+
+		/**
+		 * toggle a field between two values
+		 */
+		public function toggle($records) {
+			if (permission_exists($this->name.'_edit')) {
+
+				//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->location);
+						exit;
+					}
+
+				//toggle the checked records
+					if (is_array($records) && @sizeof($records) != 0) {
+						//get current toggle state
+							foreach($records as $record) {
+								if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+									$uuids[] = "'".$record['uuid']."'";
+								}
+							}
+							if (is_array($uuids) && @sizeof($uuids) != 0) {
+								$sql = "select ".$this->name."_uuid as uuid, ".$this->toggle_field." as toggle from v_".$this->table." ";
+								$sql .= "where ".$this->name."_uuid in (".implode(', ', $uuids).") ";
+								$database = new database;
+								$rows = $database->select($sql, $parameters, 'all');
+								if (is_array($rows) && @sizeof($rows) != 0) {
+									foreach ($rows as $row) {
+										$states[$row['uuid']] = $row['toggle'];
+									}
+								}
+								unset($sql, $parameters, $rows, $row);
+							}
+
+						//build update array
+							$x = 0;
+							foreach($states as $uuid => $state) {
+								//create the array
+									$array[$this->table][$x][$this->name.'_uuid'] = $uuid;
+									$array[$this->table][$x][$this->toggle_field] = $state == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0];
+
+								//increment the id
+									$x++;
+							}
+
+						//save the changes
+							if (is_array($array) && @sizeof($array) != 0) {
+								//save the array
+									$database = new database;
+									$database->app_name = $this->app_name;
+									$database->app_uuid = $this->app_uuid;
+									$database->save($array);
+									unset($array);
+
+								//set message
+									message::add($text['message-toggle']);
+							}
+							unset($records, $states);
+					}
+			}
+		}
+
+		/**
+		 * copy rows from the database
+		 */
+		public function copy($records) {
+			if (permission_exists($this->name.'_add')) {
+
+				//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->location);
+						exit;
+					}
+
+				//copy the checked records
+					if (is_array($records) && @sizeof($records) != 0) {
+
+						//get checked records
+							foreach($records as $record) {
+								if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+									$uuids[] = "'".$record['uuid']."'";
+								}
+							}
+
+						//create the array from existing data
+							if (is_array($uuids) && @sizeof($uuids) != 0) {
+								$sql = "select * from v_".$this->table." ";
+								$sql .= "where ".$this->name."_uuid in (".implode(', ', $uuids).") ";
+								$database = new database;
+								$rows = $database->select($sql, $parameters, 'all');
+								if (is_array($rows) && @sizeof($rows) != 0) {
+									$x = 0;
+									foreach ($rows as $row) {
+										//copy data
+											$array[$this->table][$x] = $row;
+
+										//add copy to the description
+											$array[$this->table][$x][$this->name.'_uuid'] = uuid();
+											$array[$this->table][$x][$this->description_field] = trim($row[$this->description_field]).' ('.$text['label-copy'].')';
+
+										//increment the id
+											$x++;
+									}
+								}
+								unset($sql, $parameters, $rows, $row);
+							}
+
+						//save the changes and set the message
+							if (is_array($array) && @sizeof($array) != 0) {
+								//save the array
+									$database = new database;
+									$database->app_name = $this->app_name;
+									$database->app_uuid = $this->app_uuid;
+									$database->save($array);
+									unset($array);
+
+								//set message
+									message::add($text['message-copy']);
+							}
+							unset($records);
+					}
+			}
+		}
+
+		/**
+		 * setup the provider
+		 */
+		public function setup() {
+
+			//provider selection
+				$provider_list = glob($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/*/resources/providers/settings.php");
+				foreach ($provider_list as $setting_path) {
+					include($setting_path);
+				}
+				$providers = $array['providers'];
+				unset($array);
+
+			//get the array
+				$x = 0;
+				foreach ($providers as $row) {
+					if (md5($row['provider_name']) == $this->id) {
+						if ($row['provider_name'] == 'Add a Provider') {
+							$provider_name = 'Provider';
+						}
+						else {
+							$provider_name = $row['provider_name'];
+						}
+						$array['providers'][$x]['provider_uuid'] = $row['provider_uuid'];
+						$array['providers'][$x]['provider_name'] = $provider_name;
+						$array['providers'][$x]['provider_enabled'] = $row['provider_enabled'];
+						$array['providers'][$x]['provider_description'] = '';
+						$provider = $row;
+					}
+				}
+
+			//add the provider settings
+				$y = 0;
+				foreach ($provider['provider_settings'] as $row) {
+					$array['providers'][$x]['provider_settings'][$y]['provider_uuid'] = $row['provider_uuid'];
+					$array['providers'][$x]['provider_settings'][$y]['application_uuid'] = $row['application_uuid'];
+					$array['providers'][$x]['provider_settings'][$y]['provider_setting_uuid'] = $row['provider_setting_uuid'];
+					$array['providers'][$x]['provider_settings'][$y]['provider_setting_category'] = $row['provider_setting_category'];
+					$array['providers'][$x]['provider_settings'][$y]['provider_setting_subcategory'] = $row['provider_setting_subcategory'];
+					$array['providers'][$x]['provider_settings'][$y]['provider_setting_type'] = $row['provider_setting_type'];
+					$array['providers'][$x]['provider_settings'][$y]['provider_setting_name'] = $row['provider_setting_name'];
+					$array['providers'][$x]['provider_settings'][$y]['provider_setting_value'] = $row['provider_setting_value'];
+					$array['providers'][$x]['provider_settings'][$y]['provider_setting_order'] = $row['provider_setting_order'];
+					$array['providers'][$x]['provider_settings'][$y]['provider_setting_enabled'] = $row['provider_setting_enabled'];
+					$array['providers'][$x]['provider_settings'][$y]['provider_setting_description'] = $row['provider_setting_description'];
+					$y++;
+				}
+
+			//add the provider addresses
+				$y = 0;
+				foreach ($provider['provider_addresses'] as $row) {
+					$array['providers'][$x]['provider_addresses'][$y]['provider_uuid'] = $row['provider_uuid'];
+					$array['providers'][$x]['provider_addresses'][$y]['provider_address_uuid'] = $row['provider_address_uuid'];
+					$array['providers'][$x]['provider_addresses'][$y]['provider_address_cidr'] = $row['provider_address_cidr'];
+					$array['providers'][$x]['provider_addresses'][$y]['provider_address_enabled'] = $row['provider_address_enabled'];
+					$array['providers'][$x]['provider_addresses'][$y]['provider_address_description'] = $row['provider_address_description'];
+					$y++;
+				}
+
+			//save to the data
+				$database = new database;
+				$database->app_name = 'providers';
+				$database->app_uuid = '35187839-237e-4271-b8a1-9b9c45dc8833';
+				$database->save($array);
+				//$message = $database->message;
+				//view_array($message);
+				unset($array);
+
+		}
+
+	}
+}
+
+?>

+ 0 - 0
resources/images/.gitkeep