Example #1
0
    } else {
        $action = 'input';
    }
}
# Get Language
if ($lang != '') {
    $language = $lang;
} else {
    $language = Aastra_get_language();
}
# Callback
if ($action != 'language') {
    $XML_SERVER .= '&lang=' . $lang . '&cl=' . $cl;
}
# Retrieve user information
$device_info = Aastra_get_device_info_Asterisk($device);
# Device must be ad-hoc
if ($device_info['type'] != 'adhoc') {
    # Display error as a TextScreen
    $object = new AastraIPPhoneTextScreen();
    $object->setDestroyOnExit();
    $object->setTitle(Aastra_get_label('Error', $language));
    $object->setText(Aastra_get_label('You are not allowed to change user on this phone.', $language));
    # Softkeys
    if ($nb_softkeys) {
        if ($nb_softkeys == 6) {
            $object->addSoftkey('6', Aastra_get_label('Exit', $language), 'SoftKey:Exit');
        } else {
            $object->addSoftkey('10', Aastra_get_label('Exit', $language), 'SoftKey:Exit');
        }
    }
Example #2
0
# Trace
Aastra_trace_call('logout_asterisk', 'user='******', password='******', action=' . $action);
# Test User Agent
Aastra_test_phone_versions(array('1' => '1.4.2.', '2' => '1.4.2.', '3' => '2.5.3.', '4' => '2.5.3.', '5' => '3.0.1.'), '0');
# Get MAC address and type of phone
$header = Aastra_decode_HTTP_header();
# Save return URI
$XML_SERVER .= '?user='******'2') {
    $device_info = Aastra_get_device_info_Asterisk($user);
    if ($device_info['type'] != 'adhoc') {
        # Display error as a TextScreen
        require_once 'AastraIPPhoneTextScreen.class.php';
        $object = new AastraIPPhoneTextScreen();
        $object->setDestroyOnExit();
        $object->setTitle(Aastra_get_label('Error', $language));
        $object->setText(Aastra_get_label('You are not allowed to logout from this phone.', $language));
        # Softkeys
        if ($nb_softkeys) {
            if ($nb_softkeys == 6) {
                $object->addSoftkey('6', Aastra_get_label('Exit', $language), 'SoftKey:Exit');
            } else {
                $object->addSoftkey('10', Aastra_get_label('Exit', $language), 'SoftKey:Exit');
            }
        }
Example #3
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;
}