Portions created by the Initial Developer are Copyright (C) 2016-2019 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane Matthew Vale */ class ringbacks { /** * declare constant variables */ const app_name = 'ringbacks'; const app_uuid = 'b63db353-e1c6-4401-8f10-101a6ee73b74'; /** * Domain UUID set in the constructor. This can be passed in through the $settings_array associative array or set in the session global array * @var string */ public $domain_uuid; /** * declare public variables */ public $ringtones_list; /** * Set in the constructor. Must be a database object and cannot be null. * @var database Database Object */ private $database; /** * Settings object set in the constructor. Must be a settings object and cannot be null. * @var settings Settings Object */ private $settings; /** * User UUID set in the constructor. This can be passed in through the $settings_array associative array or set in the session global array * @var string */ private $user_uuid; /** * Username set in the constructor. This can be passed in through the $settings_array associative array or set in the session global array * @var string */ private $username; /** * Domain name set in the constructor. This can be passed in through the $settings_array associative array or set in the session global array * @var string */ private $domain_name; /** * declare private variables */ private $tones_list; private $music_list; private $recordings_list; private $default_ringback_label; private $streams; /** * called when the object is created */ public function __construct(array $setting_array = []) { //set domain and user UUIDs $this->domain_uuid = $setting_array['domain_uuid'] ?? $_SESSION['domain_uuid'] ?? ''; $this->domain_name = $setting_array['domain_name'] ?? $_SESSION['domain_name'] ?? ''; $this->user_uuid = $setting_array['user_uuid'] ?? $_SESSION['user_uuid'] ?? ''; $this->username = $setting_array['username'] ?? $_SESSION['username'] ?? ''; //set objects $this->database = $setting_array['database'] ?? database::new(); //add multi-lingual support $language = new text; $text = $language->get(); //get the ringtones $sql = "select * from v_vars "; $sql .= "where var_category = 'Ringtones' "; $sql .= "order by var_name asc "; $ringtones = $this->database->select($sql, null, 'all'); if (!empty($ringtones)) { foreach ($ringtones as $ringtone) { $ringtone = $ringtone['var_name']; if (isset($text['label-'.$ringtone])) { $label = $text['label-'.$ringtone]; } else { $label = $ringtone; } $ringtones_list[$ringtone] = $label; } } $this->ringtones_list = $ringtones_list ?? ''; unset($sql, $ringtones, $ringtone, $ringtones_list); //get the default_ringback label /* $sql = "select * from v_vars where var_name = 'ringback' "; $row = $this->database->select($sql, null, 'row'); unset($sql); $default_ringback = (string) $row['var_value']; $default_ringback = preg_replace('/\A\$\${/',"",$default_ringback); $default_ringback = preg_replace('/}\z/',"",$default_ringback); #$label = $text['label-'.$default_ringback]; #if($label == "") { $label = $default_ringback; #} $this->default_ringback_label = $label; unset($results, $default_ringback, $label); */ //get the tones $tones = new tones; $this->tones_list = $tones->tones_list(); //get music on hold and recordings if (is_dir($_SERVER["PROJECT_ROOT"].'/app/music_on_hold')) { $music = new switch_music_on_hold; $this->music_list = $music->get(); } if (is_dir($_SERVER["PROJECT_ROOT"].'/app/recordings')) { $recordings = new switch_recordings; $this->recordings_list = $recordings->list_recordings(); } if (is_dir($_SERVER["PROJECT_ROOT"].'/app/streams')) { $sql = "select * from v_streams "; $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; $sql .= "and stream_enabled = 'true' "; $sql .= "order by stream_name asc "; $parameters['domain_uuid'] = $this->domain_uuid; $streams = $this->database->select($sql, $parameters, 'all'); $this->streams = $streams; unset($sql, $parameters, $streams, $row); } } public function valid($value) { foreach($this->ringtones_list as $ringtone_value => $ringtone_name) { if ($value == "\${".$ringtone_value."}") { return true; } } foreach($this->tones_list as $tone_value => $tone_name) { if ($value == "\${".$tone_value."}") { return true; } } foreach($this->music_list as $row) { $name = ''; if (!empty($row['domain_uuid'])) { $name = $row['domain_name'].'/'; } $name .= $row['music_on_hold_name']; if ($value == "local_stream://".$name) { return true; } } foreach($this->recordings_list as $recording_value => $recording_name) { if ($value == $recording_value) { return true; } } foreach($this->streams as $row) { if ($value == $row['stream_location']) { return true; } } return false; } public function select($name, $selected) { //add multi-lingual support $language = new text; $text = $language->get(); //start the select $select = "\n"; return $select; } }