From 775c80d3ec7d550bbfd4f243feb22d0a145b885e Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Sun, 24 Dec 2017 00:08:50 -0700 Subject: [PATCH] Import method is needed in the class. --- .../resources/classes/number_translations.php | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/app/number_translations/resources/classes/number_translations.php b/app/number_translations/resources/classes/number_translations.php index 1a00a32035..1c1e407ac9 100644 --- a/app/number_translations/resources/classes/number_translations.php +++ b/app/number_translations/resources/classes/number_translations.php @@ -1,4 +1,28 @@ + Portions created by the Initial Developer are Copyright (C) 2017 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Matthew Vale +*/ /** * call_recordings class @@ -33,6 +57,89 @@ if (!class_exists('number_translations')) { } } + /** + * Check to see if the number translation already exists + */ + public function number_translation_exists($name) { + $sql = "select number_translation_uuid from v_number_translations "; + $sql .= "where number_translation_name = '$name' "; + $prep_statement = $this->db->prepare(check_sql($sql)); + if ($prep_statement) { + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); + if (count($result)) { + return true; + } + else { + return false; + } + } + unset($sql, $prep_statement, $result); + } + + /** + * Import the number translation rules from the resources directory + */ + public function import() { + //get the xml from the number templates + if (strlen($this->xml) > 0) { + //convert the xml string to an xml object + $xml = simplexml_load_string($this->xml); + //convert to json + $json = json_encode($xml); + //convert to an array + $number_translation = json_decode($json, true); + } + elseif (strlen($this->json) > 0) { + //convert to an array + $number_translation = json_decode($this->json, true); + } + else { + throw new Exception("require either json or xml to import"); + } + //check if the number_translation exists + if (!$this->number_translation_exists($number_translation['@attributes']['name'])) { + $permissions = new permissions; + $permissions->add('number_translation_add', 'temp'); + $permissions->add('number_translation_detail_add', 'temp'); + $x=0; + $array['number_translations'][$x]['number_translation_name'] = $number_translation['@attributes']['name']; + $array['number_translations'][$x]['number_translation_enabled'] = "true"; + if (strlen($number_translation['@attributes']['enabled']) > 0) { + $array['number_translations'][$x]['number_translation_enabled'] = $number_translation['@attributes']['enabled']; + } + $array['number_translations'][$x]['number_translation_description'] = $number_translation['@attributes']['description']; + + //loop through the condition array + $order = 5; + if (isset($number_translation['rule'])) { + foreach ($number_translation['rule'] as &$row) { + if(array_key_exists('@attributes', $row)) + $row = $row['@attributes']; + $array['number_translations'][$x]['number_translation_details'][$order]['number_translation_detail_regex'] = $row['regex']; + $array['number_translations'][$x]['number_translation_details'][$order]['number_translation_detail_replace'] = $row['replace']; + $array['number_translations'][$x]['number_translation_details'][$order]['number_translation_detail_order'] = $order; + $order = $order + 5; + } + } + $database = new database; + $database->app_name = 'number_translations'; + $database->app_uuid = '6ad54de6-4909-11e7-a919-92ebcb67fe33'; + $database->save($array); + if ($this->display_type == "text") { + if ($database->message['code'] != '200') { + echo "number_translation:".$number_translation['@attributes']['name'].": failed: ".$database->message['message']."\n"; + } + else { + echo "number_translation:".$number_translation['@attributes']['name'].": added with ".(($order/5)-1)." entries\n"; + } + } + $permissions->delete('number_translation_add', 'temp'); + $permissions->delete('number_translation_detail_add', 'temp'); + } + unset ($this->xml, $this->json); + } + /** * delete number_translations */