From 48b20110914f06948300b87ee9c86a5e72c642ff Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Tue, 23 Jul 2024 13:39:30 -0600 Subject: [PATCH] Use mkdir when importing new voicemail boxes In addition to making sure the voicemail directory exists for each voicemail box Updated the settings class to use the settings object instead of the SESSION. --- app/voicemails/voicemail_imports.php | 60 ++++++++++++++++++---------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/app/voicemails/voicemail_imports.php b/app/voicemails/voicemail_imports.php index 408bcb7e99..627846c94f 100644 --- a/app/voicemails/voicemail_imports.php +++ b/app/voicemails/voicemail_imports.php @@ -62,9 +62,21 @@ $delimiter = $_POST["data_delimiter"] ?? ''; $enclosure = $_POST["data_enclosure"] ?? ''; +//get the domain details + $domain_uuid = $_SESSION['domain_uuid']; + $domain_name = $_SESSION['domain_name']; + +//add the settings object + $settings = new settings(["domain_uuid" => $domain_uuid]); + $switch_voicemail = $settings->get('switch', 'voicemail', ''); + $temp_dir = $settings->get('server', 'temp', ''); + $theme_button_icon_back = $settings->get('theme', 'button_icon_back', ''); + $theme_button_icon_import = $settings->get('theme', 'button_icon_import', ''); + $theme_button_icon_upload = $settings->get('theme', 'button_icon_upload', ''); + //save the data to the csv file if (isset($_POST['data'])) { - $file = $_SESSION['server']['temp']['dir']."/voicemails-".$_SESSION['domain_name'].".csv"; + $file = $temp_dir."/voicemails-".$domain_name.".csv"; file_put_contents($file, $_POST['data']); $_SESSION['file'] = $file; } @@ -73,11 +85,11 @@ //$_POST['submit'] == "Upload" && if (!empty($_FILES['ulfile']['tmp_name']) && is_uploaded_file($_FILES['ulfile']['tmp_name']) && permission_exists('voicemail_import')) { if ($_POST['type'] == 'csv') { - move_uploaded_file($_FILES['ulfile']['tmp_name'], $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name']); - $save_msg = "Uploaded file to ".$_SESSION['server']['temp']['dir']."/". htmlentities($_FILES['ulfile']['name']); - //system('chmod -R 744 '.$_SESSION['server']['temp']['dir'].'*'); + move_uploaded_file($_FILES['ulfile']['tmp_name'], $temp_dir.'/'.$_FILES['ulfile']['name']); + $save_msg = "Uploaded file to ".$temp_dir."/". htmlentities($_FILES['ulfile']['name']); + //system('chmod -R 744 '.$temp_dir.'*'); unset($_POST['txtCommand']); - $file = $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name']; + $file = $temp_dir.'/'.$_FILES['ulfile']['name']; $_SESSION['file'] = $file; } } @@ -148,8 +160,8 @@ echo "
\n"; echo "
".$text['header-voicemail_import']."
\n"; echo "
\n"; - echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'voicemails.php']); - echo button::create(['type'=>'submit','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'id'=>'btn_save']); + echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$theme_button_icon_back,'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'voicemails.php']); + echo button::create(['type'=>'submit','label'=>$text['button-import'],'icon'=>$theme_button_icon_import,'id'=>'btn_save']); echo "
\n"; echo "
\n"; echo "
\n"; @@ -240,9 +252,6 @@ //user selected fields $fields = $_POST['fields']; - - //set the domain_uuid - $domain_uuid = $_SESSION['domain_uuid']; //get the contents of the csv file and convert them into an array $handle = @fopen($_SESSION['file'], "r"); @@ -259,7 +268,7 @@ foreach ($fields as $key => $value) { //get the line $result = str_getcsv($line, $delimiter, $enclosure); - + //get the table and field name $field_array = explode(".",$value); $table_name = $field_array[0]; @@ -267,7 +276,7 @@ //echo "value: $value
\n"; //echo "table_name: $table_name
\n"; //echo "field_name: $field_name
\n"; - + //get the parent table name $parent = get_parent($schema, $table_name); @@ -281,6 +290,11 @@ $result[$key] = strtolower($result[$key]); } + //get the voicemail_id + if ($field_name == "voicemail_id") { + $voicemail_id = $result[$key]; + } + //build the data array if (!empty($table_name)) { if (empty($parent)) { @@ -294,20 +308,26 @@ } } + //add the voicemail directory if the directory doesn't exist + $voicemail_path = $switch_voicemail.'/default/'.$domain_name.'/'.$voicemail_id; + if (!file_exists($voicemail_path) && !empty($voicemail_id)) { + mkdir($voicemail_path, 0770, false); + } + //process a chunk of the array if ($row_id === 1000) { //save to the data - $database = new database; - $database->app_name = 'voicemails'; - $database->app_uuid = 'b523c2d2-64cd-46f1-9520-ca4b4098e044'; - $database->save($array); + $database = new database; + $database->app_name = 'voicemails'; + $database->app_uuid = 'b523c2d2-64cd-46f1-9520-ca4b4098e044'; + $database->save($array); //clear the array - unset($array); + unset($array); //set the row id back to 0 - $row_id = 0; + $row_id = 0; } } //if ($from_row <= $row_number) @@ -345,8 +365,8 @@ echo "
\n"; echo "
".$text['header-voicemail_import']."
\n"; echo "
\n"; - echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'voicemails.php']); - echo button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>$_SESSION['theme']['button_icon_upload'],'id'=>'btn_save']); + echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$theme_button_icon_back,'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'voicemails.php']); + echo button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>$theme_button_icon_upload,'id'=>'btn_save']); echo "
\n"; echo "
\n"; echo "
\n";