diff --git a/app/voicemail_greetings/app_defaults.php b/app/voicemail_greetings/app_defaults.php index f16d463a6e..96c31a4c41 100644 --- a/app/voicemail_greetings/app_defaults.php +++ b/app/voicemail_greetings/app_defaults.php @@ -30,37 +30,52 @@ if ($domains_processed == 1) { $sql .= "set greeting_filename = greeting_name "; $sql .= "where greeting_filename is null "; $sql .= "or greeting_filename = '' "; - $db->exec(check_sql($sql)); + $database = new database; + $database->execute($sql); unset($sql); //populate greeting id number if empty $sql = "select voicemail_greeting_uuid, greeting_filename "; $sql .= "from v_voicemail_greetings "; $sql .= "where greeting_id is null "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - foreach ($result as &$row) { - $voicemail_greeting_uuid = $row['voicemail_greeting_uuid']; - $greeting_id = preg_replace('{\D}', '', $row['greeting_filename']); - $sqlu = "update v_voicemail_greetings "; - $sqlu .= "set greeting_id = ".$greeting_id." "; - $sqlu .= "where voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' "; - $db->exec(check_sql($sqlu)); - unset($sqlu, $voicemail_greeting_uuid, $greeting_id); + $database = new database; + $result = $database->select($sql, null, 'all'); + if (is_array($result) && @sizeof($result) != 0) { + foreach ($result as $x => &$row) { + $voicemail_greeting_uuid = $row['voicemail_greeting_uuid']; + $greeting_id = preg_replace('{\D}', '', $row['greeting_filename']); + //build update array + $array['voicemail_greetings'][$x]['voicemail_greeting_uuid'] = $voicemail_greeting_uuid; + $array['voicemail_greetings'][$x]['greeting_id'] = $greeting_id; + unset($voicemail_greeting_uuid, $greeting_id); + } + if (is_array($array) && @sizeof($array) != 0) { + //grant temporary permissions + $p = new permissions; + $p->add('voicemail_greeting_edit', 'temp'); + //execute update + $database = new database; + $database->app_name = 'voicemail_greetings'; + $database->app_uuid = 'e4b4fbee-9e4d-8e46-3810-91ba663db0c2'; + $database->save($array); + unset($array); + //revoke temporary permissions + $p->delete('voicemail_greeting_edit', 'temp'); + } } - unset ($sql, $prep_statement); + unset($sql, $result, $x, $row); //if base64, populate from existing greeting files, then remove if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') { //get greetings without base64 in db $sql = "select voicemail_greeting_uuid, domain_uuid, voicemail_id, greeting_filename "; - $sql .= "from v_voicemail_greetings where greeting_base64 is null or greeting_base64 = '' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (count($result) > 0) { - foreach ($result as &$row) { + $sql .= "from v_voicemail_greetings "; + $sql .= "where greeting_base64 is null "; + $sql .= "or greeting_base64 = '' "; + $database = new database; + $result = $database->select($sql, null, 'all'); + if (is_array($result) && @sizeof($result) != 0) { + foreach ($result as $x => &$row) { $voicemail_greeting_uuid = $row['voicemail_greeting_uuid']; $greeting_domain_uuid = $row['domain_uuid']; $voicemail_id = $row['voicemail_id']; @@ -69,31 +84,40 @@ if ($domains_processed == 1) { $greeting_directory = $_SESSION['switch']['storage']['dir'].'/voicemail/default/'.$_SESSION['domains'][$greeting_domain_uuid]['domain_name'].'/'.$voicemail_id; //encode greeting file (if exists) if (file_exists($greeting_directory.'/'.$greeting_filename)) { - $greeting_base64 = base64_encode(file_get_contents($greeting_directory.'/'.$greeting_filename)); - //update greeting record with base64 - $sql = "update v_voicemail_greetings set "; - $sql .= "greeting_base64 = '".$greeting_base64."' "; - $sql .= "where domain_uuid = '".$greeting_domain_uuid."' "; - $sql .= "and voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' "; - $db->exec(check_sql($sql)); - unset($sql); + //build update array + $array['voicemail_greetings'][$x]['voicemail_greeting_uuid'] = $voicemail_greeting_uuid; + $array['voicemail_greetings'][$x]['greeting_base64'] = base64_encode(file_get_contents($greeting_directory.'/'.$greeting_filename)); //remove local greeting file @unlink($greeting_directory.'/'.$greeting_filename); } } + if (is_array($array) && @sizeof($array) != 0) { + //grant temporary permissions + $p = new permissions; + $p->add('voicemail_greeting_edit', 'temp'); + //execute update + $database = new database; + $database->app_name = 'voicemail_greetings'; + $database->app_uuid = 'e4b4fbee-9e4d-8e46-3810-91ba663db0c2'; + $database->save($array); + unset($array); + //revoke temporary permissions + $p->delete('voicemail_greeting_edit', 'temp'); + } } - unset($sql, $prep_statement, $result, $row); + unset($sql, $result, $row); } + //if not base64, decode to local files, remove base64 data from db else if ($_SESSION['voicemail']['storage_type']['text'] != 'base64') { //get greetings with base64 in db $sql = "select voicemail_greeting_uuid, domain_uuid, voicemail_id, greeting_filename, greeting_base64 "; - $sql .= "from v_voicemail_greetings where greeting_base64 is not null "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (count($result) > 0) { - foreach ($result as &$row) { + $sql .= "from v_voicemail_greetings "; + $sql .= "where greeting_base64 is not null "; + $database = new database; + $result = $database->select($sql, null, 'all'); + if (is_array($result) && @sizeof($result) != 0) { + foreach ($result as $x => &$row) { $voicemail_greeting_uuid = $row['voicemail_greeting_uuid']; $greeting_domain_uuid = $row['domain_uuid']; $voicemail_id = $row['voicemail_id']; @@ -102,21 +126,28 @@ if ($domains_processed == 1) { //set greeting directory $greeting_directory = $_SESSION['switch']['storage']['dir'].'/voicemail/default/'.$_SESSION['domains'][$greeting_domain_uuid]['domain_name'].'/'.$voicemail_id; //remove local file, if any - if (file_exists($greeting_directory.'/'.$greeting_filename)) { - @unlink($greeting_directory.'/'.$greeting_filename); - } + @unlink($greeting_directory.'/'.$greeting_filename); + //build update array + $array['voicemail_greetings'][$x]['voicemail_greeting_uuid'] = $voicemail_greeting_uuid; + $array['voicemail_greetings'][$x]['greeting_base64'] = null; //decode base64, save to local file - $greeting_decoded = base64_decode($greeting_base64); - file_put_contents($greeting_directory.'/'.$greeting_filename, $greeting_decoded); - $sql = "update v_voicemail_greetings "; - $sql .= "set greeting_base64 = null "; - $sql .= "where domain_uuid = '".$greeting_domain_uuid."' "; - $sql .= "and voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' "; - $db->exec(check_sql($sql)); - unset($sql); + file_put_contents($greeting_directory.'/'.$greeting_filename, base64_decode($greeting_base64)); + } + if (is_array($array) && @sizeof($array) != 0) { + //grant temporary permissions + $p = new permissions; + $p->add('voicemail_greeting_edit', 'temp'); + //execute update + $database = new database; + $database->app_name = 'voicemail_greetings'; + $database->app_uuid = 'e4b4fbee-9e4d-8e46-3810-91ba663db0c2'; + $database->save($array); + unset($array); + //revoke temporary permissions + $p->delete('voicemail_greeting_edit', 'temp'); } } - unset($sql, $prep_statement, $result, $row); + unset($sql, $result, $row); } } diff --git a/app/voicemail_greetings/voicemail_greeting_delete.php b/app/voicemail_greetings/voicemail_greeting_delete.php index ea78e2f2da..46d3d2f86a 100644 --- a/app/voicemail_greetings/voicemail_greeting_delete.php +++ b/app/voicemail_greetings/voicemail_greeting_delete.php @@ -38,46 +38,48 @@ else { $language = new text; $text = $language->get(); -if (count($_GET) > 0) { - $voicemail_greeting_uuid = check_str($_GET["id"]); - $voicemail_id = check_str($_GET["voicemail_id"]); -} +//get ids + $voicemail_greeting_uuid = $_GET["id"]; + $voicemail_id = $_GET["voicemail_id"]; -if (strlen($voicemail_greeting_uuid) > 0) { +if (is_uuid($voicemail_greeting_uuid) && $voicemail_id != '') { //get the greeting filename - $sql = "select greeting_filename from v_voicemail_greetings "; - $sql .= "where voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' "; - $sql .= "and domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_id = '".$voicemail_id."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - foreach ($result as &$row) { - $greeting_filename = $row["greeting_filename"]; - break; //limit to 1 row - } - unset ($prep_statement); + $sql = "select greeting_filename "; + $sql .= "from v_voicemail_greetings "; + $sql .= "where voicemail_greeting_uuid = :voicemail_greeting_uuid "; + $sql .= "and domain_uuid = :domain_uuid "; + $sql .= "and voicemail_id = :voicemail_id "; + $parameters['voicemail_greeting_uuid'] = $voicemail_greeting_uuid; + $parameters['domain_uuid'] = $domain_uuid; + $parameters['voicemail_id'] = $voicemail_id; + $database = new database; + $greeting_filename = $database->select($sql, $parameters, 'column'); + unset($prep_statement); - //delete recording from the database - $sql = "delete from v_voicemail_greetings "; - $sql .= "where voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' "; - $sql .= "and domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_id = '".$voicemail_id."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - unset($sql); + //build delete array + $array['voicemail_greetings'][0]['voicemail_greeting_uuid'] = $voicemail_greeting_uuid; + $array['voicemail_greetings'][0]['domain_uuid'] = $domain_uuid; + $array['voicemail_greetings'][0]['voicemail_id'] = $voicemail_id; + + //execute delete + $database = new database; + $database->app_name = 'voicemail_greetings'; + $database->app_uuid = 'e4b4fbee-9e4d-8e46-3810-91ba663db0c2'; + $database->delete($array); + unset($array); //set the greeting directory $v_greeting_dir = $_SESSION['switch']['storage']['dir'].'/voicemail/default/'.$_SESSION['domains'][$domain_uuid]['domain_name'].'/'.$voicemail_id; //delete the recording file - if (file_exists($v_greeting_dir."/".$greeting_filename)) { - @unlink($v_greeting_dir."/".$greeting_filename); - } + @unlink($v_greeting_dir."/".$greeting_filename); + + //set message + message::add($text['message-delete']); } -//redirect the user - message::add($text['message-delete']); +//redirect header("Location: voicemail_greetings.php?id=".$voicemail_id); - return; + exit; + ?> \ No newline at end of file diff --git a/app/voicemail_greetings/voicemail_greeting_edit.php b/app/voicemail_greetings/voicemail_greeting_edit.php index ec193677d4..9a7b50250a 100644 --- a/app/voicemail_greetings/voicemail_greeting_edit.php +++ b/app/voicemail_greetings/voicemail_greeting_edit.php @@ -43,15 +43,15 @@ $text = $language->get(); //get greeting id - if (isset($_REQUEST["id"])) { - $voicemail_greeting_uuid = check_str($_REQUEST["id"]); + if (is_uuid($_REQUEST["id"])) { + $voicemail_greeting_uuid = $_REQUEST["id"]; } //get the form value and set to php variables - $voicemail_id = check_str($_REQUEST["voicemail_id"]); + $voicemail_id = $_REQUEST["voicemail_id"]; if (count($_POST) > 0) { - $greeting_name = check_str($_POST["greeting_name"]); - $greeting_description = check_str($_POST["greeting_description"]); + $greeting_name = $_POST["greeting_name"]; + $greeting_description = $_POST["greeting_description"]; //clean the name $greeting_name = str_replace("'", "", $greeting_name); @@ -59,7 +59,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { //get greeting uuid to edit - $voicemail_greeting_uuid = check_str($_POST["voicemail_greeting_uuid"]); + $voicemail_greeting_uuid = $_POST["voicemail_greeting_uuid"]; //check for all required data $msg = ''; @@ -78,40 +78,40 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { } //update the database - if ($_POST["persistformvar"] != "true") { - if (permission_exists('voicemail_greeting_edit')) { - //update the database with the new data - $sql = "update v_voicemail_greetings set "; - $sql .= "greeting_name = '".$greeting_name."', "; - $sql .= "greeting_description = '".$greeting_description."' "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' "; - $db->exec(check_sql($sql)); - unset($sql); - - //redirect the user - message::add($text['message-update']); - header("Location: voicemail_greetings.php?id=".$voicemail_id); - return; - } //if (permission_exists('voicemail_greeting_edit')) { - } //if ($_POST["persistformvar"] != "true") -} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) + if ($_POST["persistformvar"] != "true" && permission_exists('voicemail_greeting_edit')) { + //build update array + $array['voicemail_greetings'][0]['voicemail_greeting_uuid'] = $voicemail_greeting_uuid; + $array['voicemail_greetings'][0]['greeting_name'] = $greeting_name; + $array['voicemail_greetings'][0]['greeting_description'] = $greeting_description; + //execute update + $database = new database; + $database->app_name = 'voicemail_greetings'; + $database->app_uuid = 'e4b4fbee-9e4d-8e46-3810-91ba663db0c2'; + $database->save($array); + unset($array); + //set message + message::add($text['message-update']); + //redirect + header("Location: voicemail_greetings.php?id=".$voicemail_id); + exit; + } +} //pre-populate the form if (count($_GET) > 0 && $_POST["persistformvar"] != "true") { - $voicemail_greeting_uuid = check_str($_GET["id"]); + $voicemail_greeting_uuid = $_GET["id"]; $sql = "select * from v_voicemail_greetings "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - foreach ($result as &$row) { + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and voicemail_greeting_uuid = :voicemail_greeting_uuid "; + $parameters['domain_uuid'] = $domain_uuid; + $parameters['voicemail_greeting_uuid'] = $voicemail_greeting_uuid; + $database = new database; + $row = $database->select($sql, $parameters, 'row'); + if (is_array($row) && @sizeof($row) != 0) { $greeting_name = $row["greeting_name"]; $greeting_description = $row["greeting_description"]; - break; //limit to 1 row } - unset ($prep_statement); + unset($sql, $parameters, $row); } //show the header @@ -171,4 +171,4 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { //include the footer require_once "resources/footer.php"; -?> +?> \ No newline at end of file diff --git a/app/voicemail_greetings/voicemail_greetings.php b/app/voicemail_greetings/voicemail_greetings.php index b4cb20c213..b6d649ebc2 100644 --- a/app/voicemail_greetings/voicemail_greetings.php +++ b/app/voicemail_greetings/voicemail_greetings.php @@ -45,9 +45,9 @@ ini_set(max_execution_time,7200); //get the http get values and set them as php variables - $voicemail_id = check_str($_REQUEST["id"]); - $order_by = check_str($_GET["order_by"]); - $order = check_str($_GET["order"]); + $voicemail_id = $_REQUEST["id"]; + $order_by = $_GET["order_by"]; + $order = $_GET["order"]; //set the back button url $_SESSION['back'][$_SERVER['PHP_SELF']] = ($_GET['back'] != '') ? urldecode($_GET['back']) : $_SESSION['back'][$_SERVER['PHP_SELF']]; @@ -71,15 +71,13 @@ //get currently selected greeting $sql = "select greeting_id from v_voicemails "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_id = '".$voicemail_id."' "; - $prep_statement = $db->prepare(check_sql($sql)); - if ($prep_statement) { - $prep_statement->execute(); - $row = $prep_statement->fetch(PDO::FETCH_ASSOC); - $selected_greeting_id = $row['greeting_id']; - } - unset($prep_statement, $row); + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and voicemail_id = :voicemail_id "; + $parameters['domain_uuid'] = $domain_uuid; + $parameters['voicemail_id'] = $voicemail_id; + $database = new database; + $selected_greeting_id = $database->select($sql, $parameters, 'column'); + unset($sql, $parameters); //define greeting directory $v_greeting_dir = $_SESSION['switch']['storage']['dir'].'/voicemail/default/'.$_SESSION['domains'][$domain_uuid]['domain_name'].'/'.$voicemail_id; @@ -87,28 +85,26 @@ //download the greeting if ($_GET['a'] == "download" && (permission_exists('voicemail_greeting_play') || permission_exists('voicemail_greeting_download'))) { session_cache_limiter('public'); - if ($_GET['type'] = "rec") { - $voicemail_greeting_uuid = check_str($_GET['uuid']); + if ($_GET['type'] == "rec") { + $voicemail_greeting_uuid = $_GET['uuid']; //get voicemail greeting details from db - $sql = "select greeting_filename, greeting_base64, greeting_id from v_voicemail_greetings "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); - if (count($result) > 0) { - foreach($result as &$row) { - $greeting_filename = $row['greeting_filename']; - $greeting_id = $row['greeting_id']; - if ($_SESSION['voicemail']['storage_type']['text'] == 'base64' && $row['greeting_base64'] != '') { - $greeting_decoded = base64_decode($row['greeting_base64']); - file_put_contents($v_greeting_dir.'/'.$greeting_filename, $greeting_decoded); - } - break; + $sql = "select greeting_filename, greeting_base64, greeting_id "; + $sql .= "from v_voicemail_greetings "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and voicemail_greeting_uuid = :voicemail_greeting_uuid "; + $parameters['domain_uuid'] = $domain_uuid; + $parameters['voicemail_greeting_uuid'] = $voicemail_greeting_uuid; + $database = new database; + $row = $database->select($sql, $parameters, 'row'); + if (is_array($row) && @sizeof($row) != 0) { + $greeting_filename = $row['greeting_filename']; + $greeting_id = $row['greeting_id']; + if ($_SESSION['voicemail']['storage_type']['text'] == 'base64' && $row['greeting_base64'] != '') { + $greeting_decoded = base64_decode($row['greeting_base64']); + file_put_contents($v_greeting_dir.'/'.$greeting_filename, $greeting_decoded); } } - unset ($sql, $prep_statement, $result, $greeting_decoded); - + unset($sql, $row, $greeting_decoded); if (file_exists($v_greeting_dir.'/'.$greeting_filename)) { $fd = fopen($v_greeting_dir.'/'.$greeting_filename, "rb"); if ($_GET['t'] == "bin") { @@ -129,7 +125,7 @@ header('Content-Disposition: attachment; filename="'.$greeting_filename.'"'); header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past - header("Content-Length: " . filesize($v_greeting_dir.'/'.$greeting_filename)); + header("Content-Length: ".filesize($v_greeting_dir.'/'.$greeting_filename)); ob_clean(); fpassthru($fd); } @@ -151,50 +147,58 @@ //get the file extension $file_ext = substr($_FILES['file']['name'], -4); - //find the next available - for ($i = 1; $i < 10; $i++) { - - //exit the loop if the file extension is invalid - if ($file_ext != '.wav' && $file_ext != '.mp3') { - break; - } + //check file extension + if ($file_ext == '.wav' || $file_ext != '.mp3') { - //set the file name - $file_name = 'greeting_'.$i.$file_ext; + //find the next available + for ($i = 1; $i < 10; $i++) { - //check the database - if (is_uuid($domain_uuid) && is_numeric($voicemail_id) ) { - $sql = "select voicemail_greeting_uuid from v_voicemail_greetings "; - $sql .= "where domain_uuid = '".check_str($domain_uuid)."' "; - $sql .= "and voicemail_id = '".($voicemail_id)."' "; - $sql .= "and greeting_filename = '".check_str($file_name)."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (count($result) == 0 && !file_exists($v_greeting_dir.'/'.$file_name)) { - //move the uploaded greeting - event_socket_mkdir($v_greeting_dir); - if ($file_ext == '.wav' || $file_ext == '.mp3') { - move_uploaded_file($_FILES['file']['tmp_name'], $v_greeting_dir.'/'.$file_name); - } - //set newly uploaded greeting as active greeting for voicemail box - $sql = "update v_voicemails "; - $sql .= "set greeting_id = '".$i."' "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_id = '".$voicemail_id."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - unset($prep_statement); + //set the file name + $file_name = 'greeting_'.$i.$file_ext; - message::add($text['message-uploaded'].": ".$_FILES['file']['name']); - break; + //check the database + if (is_uuid($domain_uuid) && is_numeric($voicemail_id) ) { + $sql = "select count(*) from v_voicemail_greetings "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and voicemail_id = :voicemail_id "; + $sql .= "and greeting_filename = :greeting_filename "; + $parameters['domain_uuid'] = $domain_uuid; + $parameters['voicemail_id'] = $voicemail_id; + $parameters['greeting_filename'] = $file_name; + $database = new database; + $num_rows = $database->select($sql, $parameters, 'column'); + unset($sql, $parameters); + + if ($num_rows == 0 && !file_exists($v_greeting_dir.'/'.$file_name)) { + //move the uploaded greeting + event_socket_mkdir($v_greeting_dir); + if ($file_ext == '.wav' || $file_ext == '.mp3') { + move_uploaded_file($_FILES['file']['tmp_name'], $v_greeting_dir.'/'.$file_name); + } + //set newly uploaded greeting as active greeting for voicemail box + $sql = "update v_voicemails "; + $sql .= "set greeting_id = :greeting_id "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and voicemail_id = :voicemail_id "; + $parameters['greeting_id'] = $i; + $parameters['domain_uuid'] = $domain_uuid; + $parameters['voicemail_id'] = $voicemail_id; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + //set message + message::add($text['message-uploaded'].": ".$_FILES['file']['name']); + //found available id, exit; + break; + } + else { + continue; + } + unset($num_rows); } - else { - continue; - } - unset ($prep_statement); + } - } + } //set the file name to be inserted as the greeting description $greeting_description = base64_encode($_FILES['file']['name']); @@ -215,103 +219,111 @@ //set the greeting if ($_REQUEST['action'] == "set") { //save the greeting_id to a variable - $greeting_id = check_str($_REQUEST['greeting_id']); + $greeting_id = $_REQUEST['greeting_id']; //set the greeting_id $sql = "update v_voicemails "; - $sql .= "set greeting_id = '".$greeting_id."' "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_id = '".$voicemail_id."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - unset($prep_statement); - - message::add($text['message-greeting_selected']); - header("Location: voicemail_greetings.php?id=".$voicemail_id."&order_by=".$order_by."&order=".$order); - exit; + $sql .= "set greeting_id = :greeting_id "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and voicemail_id = :voicemail_id "; + $parameters['greeting_id'] = $greeting_id; + $parameters['domain_uuid'] = $domain_uuid; + $parameters['voicemail_id'] = $voicemail_id; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + //set message + message::add($text['message-greeting_selected']); + //redirect + header("Location: voicemail_greetings.php?id=".$voicemail_id."&order_by=".$order_by."&order=".$order); + exit; } //get existing greetings - $sql = "select voicemail_greeting_uuid, greeting_filename, greeting_base64 from v_voicemail_greetings "; - $sql .= "where domain_uuid = '".$domain_uuid."' and voicemail_id = '".$voicemail_id."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - foreach ($result as &$row) { - $array_greetings[$row['voicemail_greeting_uuid']] = $row['greeting_filename']; - $array_base64_exists[$row['voicemail_greeting_uuid']] = ($row['greeting_base64'] != '') ? true : false; - //if not base64, convert back to local files and remove base64 from db - if ($_SESSION['voicemail']['storage_type']['text'] != 'base64' && $row['greeting_base64'] != '') { - if (file_exists($v_greeting_dir.'/'.$row['greeting_filename'])) { - @unlink($v_greeting_dir.'/'.$row['greeting_filename']); + $sql = "select voicemail_greeting_uuid, greeting_filename, greeting_base64 "; + $sql .= "from v_voicemail_greetings "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and voicemail_id = :voicemail_id "; + $parameters['domain_uuid'] = $domain_uuid; + $parameters['voicemail_id'] = $voicemail_id; + $database = new database; + $result = $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); + + if (is_array($result) && @sizeof($result) != 0) { + foreach ($result as $x => &$row) { + $array_greetings[$row['voicemail_greeting_uuid']] = $row['greeting_filename']; + $array_base64_exists[$row['voicemail_greeting_uuid']] = ($row['greeting_base64'] != '') ? true : false; + //if not base64, convert back to local files and remove base64 from db + if ($_SESSION['voicemail']['storage_type']['text'] != 'base64' && $row['greeting_base64'] != '') { + if (file_exists($v_greeting_dir.'/'.$row['greeting_filename'])) { + @unlink($v_greeting_dir.'/'.$row['greeting_filename']); + } + $greeting_decoded = base64_decode($row['greeting_base64']); + file_put_contents($v_greeting_dir.'/'.$row['greeting_filename'], $greeting_decoded); + //build array + $array['voicemail_greetings'][$x]['voicemail_greeting_uuid'] = $row['voicemail_greeting_uuid']; + $array['voicemail_greetings'][$x]['greeting_base64'] = null; } - $greeting_decoded = base64_decode($row['greeting_base64']); - file_put_contents($v_greeting_dir.'/'.$row['greeting_filename'], $greeting_decoded); - $sql = "update v_voicemail_greetings "; - $sql .= "set greeting_base64 = null "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_greeting_uuid = '".$row['voicemail_greeting_uuid']."' "; - $db->exec(check_sql($sql)); - unset($sql); + } + if (is_array($array) && @sizeof($array) != 0) { + //grant temporary permissions + $p = new permissions; + $p->add('voicemail_greeting_edit', 'temp'); + //execute update + $database = new database; + $database->app_name = 'voicemail_greetings'; + $database->app_uuid = 'e4b4fbee-9e4d-8e46-3810-91ba663db0c2'; + $database->save($array); + unset($array); + //revoke temporary permissions + $p->delete('voicemail_greeting_edit', 'temp'); } } - unset ($prep_statement); + unset($result, $row); //add greetings to the database if (is_dir($v_greeting_dir.'/')) { if ($dh = opendir($v_greeting_dir.'/')) { + $x = 0; + //prepare for temporary permissions + $p = new permissions; while (($file = readdir($dh)) !== false) { if (filetype($v_greeting_dir."/".$file) == "file" && substr($file, 0, 8) == "greeting" && substr($file, 10, 4) != ".tmp") { $greeting_number = preg_replace('{\D}', '', $file); if (!in_array($file, $array_greetings)) { //file not found, add to database - $greeting_name = $text['label-greeting'].' '.$greeting_number; - $greeting_description = base64_decode($_GET['gd']); - $voicemail_greeting_uuid = uuid(); - $sql = "insert into v_voicemail_greetings "; - $sql .= "( "; - $sql .= "voicemail_greeting_uuid, "; - $sql .= "domain_uuid, "; - $sql .= "voicemail_id, "; - $sql .= "greeting_name, "; - $sql .= "greeting_filename, "; - $sql .= "greeting_description, "; - if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') { - $sql .= "greeting_base64, "; - } - $sql .= "greeting_id "; - $sql .= ") "; - $sql .= "values "; - $sql .= "("; - $sql .= "'".$voicemail_greeting_uuid."', "; - $sql .= "'".$domain_uuid."', "; - $sql .= "'".$voicemail_id."', "; - $sql .= "'".$greeting_name."', "; - $sql .= "'".$file."', "; - $sql .= "'".$greeting_description."', "; - if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') { - $greeting_base64 = base64_encode(file_get_contents($v_greeting_dir.'/'.$file)); - $sql .= "'".$greeting_base64."', "; - } - $sql .= $greeting_number." "; - $sql .= ")"; - $db->exec(check_sql($sql)); - unset($sql); + $greeting_name = $text['label-greeting'].' '.$greeting_number; + $greeting_description = base64_decode($_GET['gd']); + $voicemail_greeting_uuid = uuid(); + //build insert array + $array['voicemail_greetings'][$x]['voicemail_greeting_uuid'] = $voicemail_greeting_uuid; + $array['voicemail_greetings'][$x]['domain_uuid'] = $domain_uuid; + $array['voicemail_greetings'][$x]['voicemail_id'] = $voicemail_id; + $array['voicemail_greetings'][$x]['greeting_name'] = $greeting_name; + $array['voicemail_greetings'][$x]['greeting_filename'] = $file; + $array['voicemail_greetings'][$x]['greeting_description'] = $greeting_description; + if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') { + $array['voicemail_greetings'][$x]['greeting_base64'] = base64_encode(file_get_contents($v_greeting_dir.'/'.$file)); + } + $array['voicemail_greetings'][$x]['greeting_id'] = $greeting_number; + $x++; + //grant temporary permissions + $p->add('voicemail_greeting_add', 'temp'); } else { //file found, check if base64 present - if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') { - $found_greeting_uuid = array_search($file, $array_greetings); - if (!$array_base64_exists[$found_greeting_uuid]) { - $greeting_base64 = base64_encode(file_get_contents($v_greeting_dir.'/'.$file)); - $sql = "update v_voicemail_greetings set "; - $sql .= "greeting_base64 = '".$greeting_base64."' "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_greeting_uuid = '".$found_greeting_uuid."' "; - $db->exec(check_sql($sql)); - unset($sql); + if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') { + $found_greeting_uuid = array_search($file, $array_greetings); + if (!$array_base64_exists[$found_greeting_uuid]) { + //build update array + $array['voicemail_greetings'][$x]['voicemail_greeting_uuid'] = $found_greeting_uuid; + $array['voicemail_greetings'][$x]['greeting_base64'] = base64_encode(file_get_contents($v_greeting_dir.'/'.$file)); + $x++; + //grant temporary permissions + $p->add('voicemail_greeting_edit', 'temp'); + } } - } } //if base64, remove local file (unless currently selected greeting) @@ -321,21 +333,33 @@ } } } - } //while + } + if (is_array($array) && @sizeof($array) != 0) { + //execute inserts/updates + $database = new database; + $database->app_name = 'voicemail_greetings'; + $database->app_uuid = 'e4b4fbee-9e4d-8e46-3810-91ba663db0c2'; + $database->save($array); + unset($array); + //revoke temporary permissions + $p->delete('voicemail_greeting_add', 'temp'); + $p->delete('voicemail_greeting_edit', 'temp'); + } + closedir($dh); - } //if - } //if + } + } //get the greetings list $sql = "select * from v_voicemail_greetings "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and voicemail_id = '".$voicemail_id."' "; - $sql .= "order by ".$order_by." ".$order." "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $greetings = $prep_statement->fetchAll(PDO::FETCH_NAMED); - $greeting_count = count($result); - unset ($prep_statement, $sql); + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and voicemail_id = :voicemail_id "; + $sql .= order_by($order_by, $order); + $parameters['domain_uuid'] = $domain_uuid; + $parameters['voicemail_id'] = $voicemail_id; + $database = new database; + $greetings = $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); //set the row styles $c = 0; @@ -405,7 +429,7 @@ if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') { $colspan = $colspan - 2; } if (!(permission_exists('voicemail_greeting_edit') || permission_exists('voicemail_greeting_delete'))) { $colspan = $colspan - 1; } - if (is_array($greetings)) { + if (is_array($greetings) && @sizeof($greetings) != 0) { foreach($greetings as $row) { //playback progress bar if (permission_exists('voicemail_greeting_play')) { @@ -456,13 +480,13 @@ echo "\n"; $c = ($c) ? 0 : 1; - } //end foreach - unset($sql, $result, $row_count); - } //end if results + } + } + unset($result, $row); echo "\n"; echo "


\n"; //include the footer require_once "resources/footer.php"; -?> +?> \ No newline at end of file