Exemplo n.º 1
0
function Aastra_send_message_Asterisk($user, $long_message, $short_message, $uri = '')
{
    global $AA_FREEPBX_MODE;
    # Post the message
    if ($long_message != '' and $short_message != '') {
        # Mode extensions
        if ($AA_FREEPBX_MODE == '1') {
            # Send to a single user
            $data = Aastra_get_user_context($user, 'notify');
            $data['message'] = '1';
            Aastra_save_user_context($user, 'notify', $data);
            $message['long'] = $long_message;
            $message['short'] = $short_message;
            $message['uri'] = $uri;
            Aastra_save_user_context($user, 'message', $message);
            Aastra_send_SIP_notify_Asterisk('aastra-xml', array('0' => $user));
        } else {
            # Retrieve user info
            $array_user = Aastra_get_user_info_Asterisk($user);
            # Retrieve the list of devices for this user
            $array_device = array_flip(explode('&', trim($array_user['device'])));
            unset($array_device['']);
            $array_device = array_flip($array_device);
            # Process each device
            foreach ($array_device as $user) {
                $data = Aastra_get_user_context($user, 'notify');
                $data['message'] = '1';
                Aastra_save_user_context($user, 'notify', $data);
                $message['long'] = $long_message;
                $message['short'] = $short_message;
                $message['uri'] = $uri;
                Aastra_save_user_context($user, 'message', $message);
            }
            # Notify everybody
            Aastra_send_SIP_notify_Asterisk('aastra-xml', $array_device);
        }
    }
}
Exemplo n.º 2
0
function generate_user_config($device, $user, $last_user)
{
    global $AA_XML_SERVER;
    global $AA_XMLDIRECTORY;
    global $AA_PRESENCE_STATE;
    global $AA_SPEEDDIAL_STATE;
    global $language;
    # Get type of phone
    $header = Aastra_decode_HTTP_header();
    $model = $header['model'];
    # Read profile file
    if ($user != '') {
        $profile = Aastra_get_startup_profile_Asterisk($user);
    } else {
        $profile = Aastra_get_startup_profile_Asterisk($device);
    }
    $array_user = Aastra_readCFGfile($profile . '-device-user.prf', '#', ':');
    $array_nouser = Aastra_readCFGfile($profile . '-device-nouser.prf', '#', ':');
    $array_custom = Aastra_readCFGfile('user-custom.prf', '#', ':');
    # Language
    $code = Aastra_ask_language_Asterisk();
    $ask_language = $code[0];
    # Retrieve user information
    $device_info = Aastra_get_device_info_Asterisk($device);
    # There is a user
    if ($user != '') {
        # Retrieve user information
        $user_info = Aastra_get_user_info_Asterisk($user);
        # Get park configuration
        $park = Aastra_get_park_config_Asterisk();
        # Get polling value
        $polling = Aastra_get_polling_interval_Asterisk();
        # Prepare replace strings
        $search = array('/\\$\\$AA_SIPUSERNAME_AA\\$\\$/', '/\\$\\$AA_SIPCALLERID_AA\\$\\$/', '/\\$\\$AA_XML_SERVER_AA\\$\\$/', '/\\$\\$AA_PARKINGLOT_AA\\$\\$/', '/\\$\\$AA_XMLDIRECTORY_AA\\$\\$/', '/\\$\\$AA_INTERCOM_CODE_AA\\$\\$/', '/\\$\\$AA_POLLING_INT_AA\\$\\$/');
        $replace = array($user_info['cidnum'], $user_info['cidname'], $AA_XML_SERVER, $park['parkext'], $AA_XMLDIRECTORY, Aastra_get_intercom_config_Asterisk(), $polling);
        # Use the common piece
        foreach ($array_user['Common'] as $key => $value) {
            if (!array_key_exists($key, $array_nouser['Core'])) {
                $line = preg_replace($search, $replace, $value);
                if (stristr($line, '$$AA_KEYPRESS_AA$$')) {
                    $pieces = explode(' ', $key);
                    $line = preg_replace('/\\$\\$AA_KEYPRESS_AA\\$\\$/', $pieces[0], $line);
                }
                $array_out[$key] = $line;
            }
        }
        # Model exists
        if ($array_user[$model] != NULL) {
            # Check if full template
            if (key_exists('template', $array_user[$model])) {
                $template = $array_user[$model]['template'];
            } else {
                $template = $model;
            }
            # Use the template
            foreach ($array_user[$template] as $key => $value) {
                if ($key != 'template' and !array_key_exists($key, $array_nouser['Core'])) {
                    $line = preg_replace($search, $replace, $value);
                    if (stristr($line, '$$AA_KEYPRESS_AA$$')) {
                        $pieces = explode(' ', $key);
                        $line = preg_replace('/\\$\\$AA_KEYPRESS_AA\\$\\$/', $pieces[0], $line);
                    }
                    $array_out[$key] = $line;
                }
            }
            # Use the add-ons
            if ($template != $model) {
                foreach ($array_user[$model] as $key => $value) {
                    if ($key != 'template') {
                        $line = preg_replace($search, $replace, $value);
                        $array_out[$key] = $line;
                    }
                }
            }
        }
        # User customization exists
        if ($array_custom[$user] != NULL) {
            # Use the user configuration additions
            foreach ($array_custom[$user] as $key => $value) {
                $line = preg_replace($search, $replace, $value);
                if (stristr($line, '$$AA_KEYPRESS_AA$$')) {
                    $pieces = explode(' ', $key);
                    $line = preg_replace('/\\$\\$AA_KEYPRESS_AA\\$\\$/', $pieces[0], $line);
                }
                $array_out[$key] = $line;
            }
        }
        # Language
        if ($ask_language) {
            $array_language = Aastra_get_user_context($device, 'language');
            $array_out['language'] = $array_language['code'];
            $array_out['web language'] = $array_language['code'];
            $array_out['input language'] = $array_language['clear'];
            $language = $array_language['language'];
        }
    } else {
        # Use the common piece
        foreach ($array_user['Common'] as $key => $value) {
            if (!array_key_exists($key, $array_nouser['Core'])) {
                $array_out[$key] = '';
            }
        }
        # Model exists for the user
        if ($array_user[$model] != NULL) {
            # Check if full template
            if (key_exists('template', $array_user[$model])) {
                $template = $array_user[$model]['template'];
            } else {
                $template = $model;
            }
            # Use the template
            foreach ($array_user[$template] as $key => $value) {
                if ($key != 'template' and !array_key_exists($key, $array_nouser['Core'])) {
                    $array_out[$key] = '';
                }
            }
            # Use the add-ons
            if ($template != $model) {
                foreach ($array_user[$model] as $key => $value) {
                    if ($key != 'template') {
                        $array_out[$key] = '';
                    }
                }
            }
        }
        # Device customization exists
        if ($array_custom[$last_user] != NULL) {
            foreach ($array_custom[$last_user] as $key => $value) {
                if (!array_key_exists($key, $array_nouser['Core'])) {
                    $array_out[$key] = '';
                }
            }
        }
        # Prepare replace strings
        $search = array('/\\$\\$AA_SIPUSERNAME_AA\\$\\$/', '/\\$\\$AA_SIPCALLERID_AA\\$\\$/', '/\\$\\$AA_XML_SERVER_AA\\$\\$/', '/\\$\\$AA_PARKINGLOT_AA\\$\\$/', '/\\$\\$AA_XMLDIRECTORY_AA\\$\\$/');
        $replace = array($device, Aastra_get_callerid_Asterisk($device), $AA_XML_SERVER, $park['parkext'], $AA_XMLDIRECTORY);
        # Use the common piece
        foreach ($array_nouser['Common'] as $key => $value) {
            $line = preg_replace($search, $replace, $value);
            if (stristr($line, '$$AA_KEYPRESS_AA$$')) {
                $pieces = explode(' ', $key);
                $line = preg_replace('/\\$\\$AA_KEYPRESS_AA\\$\\$/', $pieces[0], $line);
            }
            $array_out[$key] = $line;
        }
        # Model exists for the device
        if ($array_nouser[$model] != NULL) {
            # Check if full template
            if (key_exists('template', $array_nouser[$model])) {
                $template = $array_nouser[$model]['template'];
            } else {
                $template = $model;
            }
            # Use the template
            foreach ($array_nouser[$template] as $key => $value) {
                if ($key != 'template') {
                    $line = preg_replace($search, $replace, $value);
                    if (stristr($line, '$$AA_KEYPRESS_AA$$')) {
                        $pieces = explode(' ', $key);
                        $line = preg_replace('/\\$\\$AA_KEYPRESS_AA\\$\\$/', $pieces[0], $line);
                    }
                    $array_out[$key] = $line;
                }
            }
            # Use the add-ons
            if ($template != $model) {
                foreach ($array_nouser[$model] as $key => $value) {
                    if ($key != 'template') {
                        $line = preg_replace($search, $replace, $value);
                        $array_out[$key] = $line;
                    }
                }
            }
        }
        # Language
        if ($ask_language) {
            $array_out['language'] = '';
            $array_out['web language'] = '';
            $array_out['input language'] = '';
            $language = $code[1][$code[2]];
        }
    }
    # Process day/night keys
    foreach ($array_out as $key => $value) {
        if (strstr($value, 'daynight.php')) {
            $pieces = explode(' ', $key);
            if (stristr($pieces[0], 'expmod')) {
                $appli = $pieces[0] . ' ' . $pieces[1];
            } else {
                $appli = $pieces[0];
            }
            $url = parse_url($value);
            parse_str($url['query'], $parse);
            if ($parse['index'] != '') {
                $index = $parse['index'];
            } else {
                $index = 'ALL';
            }
            if (!Aastra_is_daynight_appli_allowed_Asterisk($username, $index)) {
                unset($array_out[$appli . ' type']);
                unset($array_out[$appli . ' label']);
                unset($array_out[$appli . ' value']);
                unset($array_out[$appli . ' states']);
            }
        }
    }
    # Process presence
    if (!$AA_PRESENCE_STATE) {
        foreach ($array_out as $key => $value) {
            if (strstr($value, 'away.php')) {
                $pieces = explode(' ', $key);
                if (stristr($pieces[0], 'expmod')) {
                    $appli = $pieces[0] . ' ' . $pieces[1];
                } else {
                    $appli = $pieces[0];
                }
                break;
            }
        }
        if ($appli != '') {
            unset($array_out[$appli . ' type']);
            unset($array_out[$appli . ' label']);
            unset($array_out[$appli . ' value']);
            unset($array_out[$appli . ' states']);
        }
    }
    # Process speed dial
    if (!$AA_SPEEDDIAL_STATE) {
        foreach ($array_out as $key => $value) {
            if (strstr($value, 'speed.php')) {
                $pieces = explode(' ', $key);
                if (stristr($pieces[0], 'expmod')) {
                    $appli = $pieces[0] . ' ' . $pieces[1];
                } else {
                    $appli = $pieces[0];
                }
                break;
            }
        }
        if ($appli != '') {
            unset($array_out[$appli . ' type']);
            unset($array_out[$appli . ' label']);
            unset($array_out[$appli . ' value']);
            unset($array_out[$appli . ' states']);
        }
    }
    # Remove 'logout' if device is fixed
    if ($user != '' and $device_info['type'] == 'fixed') {
        foreach ($array_out as $key => $value) {
            if (strstr($value, 'logout.php')) {
                $pieces = explode(' ', $key);
                if (stristr($pieces[0], 'expmod')) {
                    $appli = $pieces[0] . ' ' . $pieces[1];
                } else {
                    $appli = $pieces[0];
                }
                break;
            }
        }
        if ($appli != '') {
            unset($array_out[$pieces[0] . ' type']);
            unset($array_out[$pieces[0] . ' label']);
            unset($array_out[$pieces[0] . ' value']);
            unset($array_out[$pieces[0] . ' states']);
        }
    }
    # Find the special keys
    if ($user != '') {
        init_special_keys($device, $array_out);
    }
    # Translate labels
    foreach ($array_out as $key => $value) {
        $test = False;
        if (stristr($key, 'key') and stristr($key, 'label')) {
            $test = True;
        }
        if (stristr($key, 'xml application title')) {
            $test = True;
        }
        if ($test) {
            $array_out[$key] = Aastra_get_label($value, $language);
        }
    }
    # Return result
    return $array_out;
}