521 lines
20 KiB
PHP
521 lines
20 KiB
PHP
<?php
|
||
/*
|
||
* To change this license header, choose License Headers in Project Properties.
|
||
* To change this template file, choose Tools | Templates
|
||
* and open the template in the editor.
|
||
*/
|
||
|
||
$test_ami = 0;
|
||
$test_any = 0;
|
||
|
||
$driver = $this->FreePBX->Core->getAllDriversInfo();
|
||
$core = $this->srvinterface->getSCCPVersion();
|
||
$ast_realtime = $this->srvinterface->sccp_realtime_status();
|
||
|
||
$ast_realm = (empty($ast_realtime['sccp']) ? '' : 'sccp');
|
||
|
||
foreach ($ast_realtime as $key => $value) {
|
||
if (empty($ast_realm)) {
|
||
if ($value['status'] == 'OK') {
|
||
$ast_realm = $key;
|
||
}
|
||
}
|
||
}
|
||
|
||
$conf_realtime = $this->extconfigs->validate_RealTime($ast_realm);
|
||
$db_Schema = $this->dbinterface->validate();
|
||
$mysql_info = $this->dbinterface->get_db_sysvalues();
|
||
$compatible = $this->srvinterface->get_compatible_sccp();
|
||
$info = array();
|
||
|
||
$info['srvinterface'] = $this->srvinterface->info();
|
||
$info['extconfigs'] = $this->extconfigs->info();
|
||
$info['dbinterface'] = $this->dbinterface->info();
|
||
$info['aminterface'] = $this->aminterface->info();
|
||
$info['XML'] = $this->xmlinterface->info();
|
||
$info['sccp_class'] = $driver['sccp'];
|
||
$info['Core_sccp'] = array('Version' => $core['Version'], 'about' => 'Sccp ver.' . $core['Version'] . ' r' . $core['vCode'] . ' Revision :' . $core['RevisionNum'] . ' Hash :' . $core['RevisionHash']);
|
||
$info['Asterisk'] = array('Version' => FreePBX::Config()->get('ASTVERSION'), 'about' => 'Asterisk.');
|
||
|
||
|
||
if (!empty($this->sccpvalues['SccpDBmodel'])) {
|
||
$info['DB Model'] = array('Version' => $this->sccpvalues['SccpDBmodel']['data'], 'about' => 'SCCP DB Configure');
|
||
}
|
||
if (!empty($this->sccpvalues['tftp_rewrite'])) {
|
||
if ($this->sccpvalues['tftp_rewrite']['data'] == 'pro') {
|
||
$info['Provision_SCCP'] = array('Version' => 'base', 'about' => 'Provision Sccp enabled');
|
||
} else {
|
||
$info['TFTP_Rewrite'] = array('Version' => 'base', 'about' => 'Rewrite Supported');
|
||
}
|
||
}
|
||
$info['Сompatible'] = array('Version' => $compatible, 'about' => 'Ok');
|
||
if (!empty($this->sccpvalues['SccpDBmodel'])) {
|
||
if ($compatible > $this->sccpvalues['SccpDBmodel']['data']) {
|
||
$info['Сompatible']['about'] = '<div class="alert signature alert-danger"> Reinstall SCCP manager required</div>';
|
||
}
|
||
}
|
||
if ($db_Schema == 0) {
|
||
$info['DB_Schema'] = array('Version' => 'Error', 'about' => '<div class="alert signature alert-danger"> ERROR DB Version </div>');
|
||
} else {
|
||
$info['DB_Schema'] = array('Version' => $db_Schema, 'about' => (($compatible == $db_Schema ) ? 'Ok' : 'Incompatible Version'));
|
||
}
|
||
|
||
if (empty($ast_realtime)) {
|
||
$info['RealTime'] = array('Version' => 'Error', 'about' => '<div class="alert signature alert-danger"> No found Real Time connections</div>');
|
||
} else {
|
||
$rt_info = '';
|
||
$rt_sccp = 'Failed';
|
||
foreach ($ast_realtime as $key => $value) {
|
||
if ($key == $ast_realm) {
|
||
if ($value['status'] == 'OK') {
|
||
$rt_sccp = 'TEST OK';
|
||
$rt_info .= 'SCCP Connections found';
|
||
} else {
|
||
$rt_sccp = 'SCCP ERROR';
|
||
$rt_info .= '<div class="alert signature alert-danger"> Error : ' . $value['message'] . '</div>';
|
||
}
|
||
} elseif ($value['status'] == 'ERROR') {
|
||
$rt_info .= '<div> Found error in realtime sectoin [' . $key . '] : ' . $value['message'] . '</div>';
|
||
}
|
||
}
|
||
$info['RealTime'] = array('Version' => $rt_sccp, 'about' => $rt_info);
|
||
}
|
||
|
||
if (empty($conf_realtime)) {
|
||
$info['ConfigsRealTime'] = array('Version' => 'Error', 'about' => '<div class="alert signature alert-danger"> No found Real Time Configs</div>');
|
||
} else {
|
||
$rt_info = '';
|
||
foreach ($conf_realtime as $key => $value) {
|
||
if (($value != 'OK') && ($key != 'extconfigfile')) {
|
||
$rt_info .= '<div> Found error in section ' . $key . ' :' . $value . '</div>';
|
||
}
|
||
}
|
||
if (!empty($rt_info)) {
|
||
$info['ConfigsRealTime'] = array('Version' => 'Error', 'about' => $rt_info);
|
||
}
|
||
}
|
||
// $mysql_info
|
||
if ($mysql_info['Value'] <= '2000') {
|
||
$this->info_warning['MySql'] = array('Increase Mysql Group Concat Max. Length', 'Step 1: Go to mysql path <br> nano /etc/my.cnf',
|
||
'Step 2: And add the following line below [mysqld] as shown below <br> [mysqld] <br>group_concat_max_len = 4096 or more',
|
||
'Step 3: Save and restart <br> systemctl restart mariadb.service<br> Or <br> service mysqld restart');
|
||
}
|
||
|
||
|
||
// Check Time Zone comatable
|
||
$conf_tz = $this->sccpvalues['ntp_timezone']['data'];
|
||
$cisco_tz = $this->extconfigs->getextConfig('sccp_timezone', $conf_tz);
|
||
if ($cisco_tz['offset'] == 0) {
|
||
if (!empty($conf_tz)) {
|
||
$tmp_dt = new DateTime(null, new DateTimeZone($conf_tz));
|
||
$tmp_ofset = $tmp_dt->getOffset();
|
||
if (($cisco_tz['offset'] != ($tmp_ofset / 60) )) {
|
||
$this->info_warning['NTP'] = array('The selected NTP time zone is not supported by cisco devices.', 'We will use the Greenwich Time zone');
|
||
}
|
||
}
|
||
}
|
||
|
||
global $amp_conf;
|
||
|
||
|
||
if ($test_any == 1) {
|
||
# Output option list, HTML.
|
||
|
||
$timezone_identifiers = DateTimeZone::listIdentifiers();
|
||
$timezone_abbreviations = DateTimeZone::listAbbreviations();
|
||
$a = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC);
|
||
|
||
|
||
$Ts_set = $a[200];
|
||
|
||
|
||
// ************************************************************************************
|
||
print_r("<br> Help Info:<br><pre>");
|
||
print_r("<br>");
|
||
//print_r(array_column($timezone_abbreviations, 'timezone_id'));
|
||
print_r($Ts_set);
|
||
$tz_tmp = array();
|
||
|
||
foreach ($timezone_abbreviations as $subArray) {
|
||
$dddd = array_search($Ts_set, array_column($subArray, 'timezone_id'));
|
||
if (!empty($dddd)) {
|
||
$tz_tmp[] = $subArray[$dddd];
|
||
}
|
||
}
|
||
|
||
if (empty($tz_tmp)) {
|
||
print_r('erroe');
|
||
}
|
||
if (count($tz_tmp)==1) {
|
||
$time_set = $tz_tmp[0];
|
||
} else {
|
||
$tmp_dt = new DateTime(null, new DateTimeZone($Ts_set));
|
||
$tmp_ofset = $tmp_dt->getOffset();
|
||
foreach ($tz_tmp as $subArray) {
|
||
if ($subArray['offset'] == $tmp_ofset) {
|
||
$time_set = $subArray;
|
||
}
|
||
}
|
||
}
|
||
|
||
print_r("<br>");
|
||
//print_r($time_set);
|
||
print_r($this->sccpvalues['ntp_timezone']);
|
||
//print_r($tz_tmp);
|
||
print_r("<br>");
|
||
print_r("<br>");
|
||
|
||
print_r("<br>");
|
||
//print_r($timezone_abbreviations);
|
||
//print_r($timezone_identifiers);
|
||
//print_r($timezone);
|
||
//print_r($transitions);
|
||
|
||
|
||
print_r("<br>");
|
||
print_r("</pre>");
|
||
// print_r("DIRECT START");
|
||
// print_r($this->sccpvalues['ccm_address']);
|
||
//print_r($this->get_php_classes('\\FreePBX\\modules'));
|
||
// print_r(get_declared_classes());
|
||
// $a = $this->aminterface->_config;
|
||
// print_r($a);
|
||
// print_r($this->aminterface->info());
|
||
//print_r(get_declared_classes());
|
||
// print_r($this->aminterface->open());
|
||
// $time_start = microtime_float();
|
||
// $this->aminterface->open();
|
||
// $time_connect = microtime_float();
|
||
// print_r($this->aminterface->send(new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowSoftkeySetsAction()));
|
||
// $a = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowSoftkeySetsAction();
|
||
// $a = new \FreePBX\modules\Sccp_manager\aminterface\ExtensionStateListAction();
|
||
// $a = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowDeviceAction('SEP00070E36555C');
|
||
// $a = new \FreePBX\modules\Sccp_manager\aminterface\SCCPDeviceRestartAction('SEP00070E36555C');
|
||
// $a = new \FreePBX\modules\Sccp_manager\aminterface\ReloadAction('chan_sccp');
|
||
//$a = new \FreePBX\modules\Sccp_manager\aminterface\CommandAction('core show hints');
|
||
/*
|
||
$time_start = microtime_float();
|
||
print_r($this->srvinterface->t_get_ami_data());
|
||
$time_get_dl = microtime_float()-$time_start;
|
||
print_r('<br> Delta :'); print_r($time_get_dl);
|
||
$time_start = microtime_float();
|
||
$tmp_data = $this->aminterface->sccp_get_active_device(); print_r($tmp_data);
|
||
$time_get_dl = microtime_float()-$time_start;
|
||
print_r('<br> Delta :'); print_r($time_get_dl);
|
||
|
||
die();
|
||
|
||
/*
|
||
*/
|
||
// $a = new \FreePBX\modules\Sccp_manager\aminterface\CommandAction('realtime mysql status');
|
||
// $a = new \FreePBX\modules\Sccp_manager\aminterface\SCCPConfigMetaDataAction();
|
||
// $response = $this->aminterface->send($a);
|
||
//
|
||
// $response = $this->aminterface->getRealTimeStatus();
|
||
// $time_get_a = microtime_float();
|
||
// print_r($response);
|
||
// $tmp_data = $this->aminterface->core_sccp_reload();
|
||
// print_r($tmp_data);
|
||
// print_r($response -> getResult());
|
||
// $events = $response->getEvents();
|
||
// $events = $response->Events2Array();
|
||
//
|
||
// print_r($events);
|
||
// print_r('--- RESULT A -----------------');
|
||
// $b = $this->oldinterface->sccp_realtime_status();
|
||
// print_r($b);
|
||
// $b = $this->srvinterface->sccp_realtime_status();
|
||
// print_r($response->getMessage());
|
||
// print_r($a);
|
||
// $events = $response ->getTableNames();
|
||
// $events = $response->getEvents();
|
||
// print_r($events);
|
||
// $b = $response->Table2Array($events[0]);
|
||
// $b = $response->getResult();
|
||
// $b = $response->getResult();
|
||
// print_r($b);
|
||
// $time_get_ra = microtime_float();
|
||
|
||
|
||
/*
|
||
*/
|
||
// $tmp_data = $this->aminterface->sccp_get_active_device();
|
||
// print_r($tmp_data);
|
||
}
|
||
|
||
/* Test Ok
|
||
*
|
||
*
|
||
*
|
||
*
|
||
*/
|
||
if ($test_ami == 1) {
|
||
$time_ami = 0;
|
||
$time_old = 0;
|
||
$test_info = array();
|
||
$tmp_test_name = 'get_version';
|
||
print_r('<br>-------------- OLD: ' . $tmp_test_name . '---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->oldinterface->get_compatible_sccp();
|
||
print_r($tmp_data);
|
||
$tmp_data = $this->oldinterface->getSCCPVersion();
|
||
print_r($tmp_data);
|
||
$tmp_data = $this->oldinterface->getChanSCCPVersion();
|
||
print_r($tmp_data);
|
||
$tmp_data = $this->oldinterface->sccp_realtime_status();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
|
||
$test_info[$tmp_test_name]['old'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
$time_get_start = $time_get_dl;
|
||
|
||
print_r('<br>-------------- AMI: ' . $tmp_test_name . ' ---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->srvinterface->get_compatible_sccp();
|
||
print_r($tmp_data);
|
||
print_r('<br>Not Use<br>');
|
||
$tmp_data = $this->srvinterface->getChanSCCPVersion();
|
||
print_r($tmp_data);
|
||
$tmp_data = $this->srvinterface->sccp_realtime_status();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['ami'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
|
||
|
||
$tmp_test_name = 'getdevice_info';
|
||
print_r('<br>-------------- OLD: ' . $tmp_test_name . '---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->oldinterface->sccp_getdevice_info('SEP00070E36555C');
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['old'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
|
||
print_r('<br>-------------- AMI: ' . $tmp_test_name . ' ---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->srvinterface->sccp_getdevice_info('SEP00070E36555C');
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['ami'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
|
||
$tmp_test_name = 'get_active_device';
|
||
print_r('<br>-------------- OLD: ' . $tmp_test_name . '---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->oldinterface->sccp_get_active_device();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['old'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
|
||
print_r('<br>-------------- AMI: ' . $tmp_test_name . ' ---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->aminterface->sccp_get_active_device();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['ami'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
|
||
$tmp_test_name = 'sccp_list_keysets';
|
||
print_r('<br>-------------- OLD: ' . $tmp_test_name . '---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->oldinterface->sccp_list_keysets();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['old'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
print_r('<br>-------------- AMI: ' . $tmp_test_name . ' ---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->aminterface->sccp_list_keysets();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['ami'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
|
||
$tmp_test_name = 'list_all_hints';
|
||
print_r('<br>-------------- OLD: ' . $tmp_test_name . '---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->oldinterface->sccp_list_all_hints();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['old'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
print_r('<br>-------------- AMI: ' . $tmp_test_name . ' ---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->aminterface->core_list_all_hints();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['ami'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
|
||
$tmp_test_name = 'sccp_list_hints';
|
||
print_r('<br>-------------- OLD: ' . $tmp_test_name . '---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->oldinterface->sccp_list_hints();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['old'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
print_r('<br>-------------- AMI: ' . $tmp_test_name . ' ---------------------------<br>');
|
||
$time_get_start = microtime_float();
|
||
$tmp_data = $this->aminterface->core_list_hints();
|
||
print_r($tmp_data);
|
||
$time_get_dl = microtime_float();
|
||
$test_info[$tmp_test_name]['ami'] = $time_get_dl - $time_get_start;
|
||
print_r('<br> Delta :');
|
||
print_r($time_get_dl - $time_get_start);
|
||
|
||
print_r('<br>--- Stat -----------------<br>');
|
||
|
||
print_r('<div class="fpbx-container container-fluid"><div class="row"><div class="container"> <div class="table-responsive"><table class="table"><thead><tr><th>Function</th><th>Old Time</th><th> Ami Time</th></tr></thead><tbody>');
|
||
$time_ami = 0;
|
||
$time_old = 0;
|
||
foreach ($test_info as $key => $value) {
|
||
print_r('<tr><td>' . $key . '</td><td>' . $value['old'] . '</td><td>' . $value['ami'] . '</td></tr>');
|
||
$time_ami += $value['ami'];
|
||
$time_old += $value['old'];
|
||
}
|
||
print_r('</tbody></table></div></div></div></div>');
|
||
print_r('<br>Ami Response :');
|
||
print_r($time_ami);
|
||
print_r('<br>PBX Response :');
|
||
print_r($time_old);
|
||
print_r('<br>--- Stat -----------------<br>');
|
||
}
|
||
/*
|
||
*/
|
||
|
||
// $events = $response->getEvents();
|
||
// print_r($events);
|
||
//$b = $response->Table2Array($events[0]);
|
||
//$b = $response->getResult();
|
||
// print_r('--- RESULT 2 -----------------<br>');
|
||
//print_r($events);
|
||
// print_r($b);
|
||
// $ser = serialize($response);
|
||
// print_r($ser);
|
||
// $result2 = unserialize($ser);
|
||
// print_r($result2);
|
||
/* $events = $result2->getEvents();
|
||
$this->assertEquals($result2->getMessage(), 'Channels will follow');
|
||
$this->assertEquals($events[0]->getName(), 'CoreShowChannelsComplete');
|
||
$this->assertEquals($events[0]->getListItems(), 0);
|
||
*/
|
||
// print_r('--- RESULT 3 -----------------');
|
||
// print_r($a);
|
||
// print_r('--- С RESULT -----------------');
|
||
// print_r($this->aminterface::SCCPShowDevicesAction());
|
||
//
|
||
// print_r($this->aminterface->close());
|
||
//
|
||
//
|
||
//print_r($this->dbinterface->HWextension_db_SccpTableData('SccpExtension'));
|
||
// print_r($this->srvinterface->getеtestChanSCC());
|
||
// $test_data = $this->srvinterface-> astman_GetRaw('ExtensionStateList');
|
||
// print_r($test_data);
|
||
// print_r($this->srvinterface-> core_list_all_exten());
|
||
// print_r($this->getHintInformation());
|
||
// print_r($this->aminterface->open());
|
||
// print_r($this->aminterface-> core_list_all_exten('exten'));
|
||
// print_r($this->aminterface->Sok_param['total']);
|
||
// print_r($this->srvinterface->t_get_meta_data());
|
||
// print_r($this->sccp_metainfo);
|
||
print(" ");
|
||
/* */
|
||
// ************************************************************************************
|
||
// $lang_arr = $this->extconfigs->getextConfig('sccp_lang','sk_SK');
|
||
// print_r('<br>');
|
||
// print_r(timezone_identifiers_list());
|
||
// print_r('<br>');
|
||
//print_r($this->dbinterface->info());
|
||
|
||
if (!empty($this->info_warning)) {
|
||
?>
|
||
<div class="fpbx-container container-fluid">
|
||
<div class="row">
|
||
<div class="container">
|
||
<h2 style="border:2px solid Tomato;color:Tomato;" >Sccp Manager Warning</h2>
|
||
<div class="table-responsive">
|
||
<br> There are Warning in the SCCP Module:<br><pre>
|
||
<?php
|
||
foreach ($this->info_warning as $key => $value) {
|
||
echo '<h3>' . $key . '</h3>';
|
||
if (is_array($value)) {
|
||
echo '<li>' . _(implode('</li><li>', $value)) . '</li>';
|
||
} else {
|
||
echo '<li>' . _($value) . '</li>';
|
||
}
|
||
echo '<br>';
|
||
}
|
||
?>
|
||
</pre>
|
||
<br><h4 style="border:2px solid Tomato;color:Green;" > Check these problems before continuing to work.</h4> <br>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<br>
|
||
<?php
|
||
}
|
||
|
||
if (!empty($this->class_error)) {
|
||
?>
|
||
<div class="fpbx-container container-fluid">
|
||
<div class="row">
|
||
<div class="container">
|
||
<h2 style="border:2px solid Tomato;color:Tomato;" >Diagnostic information about SCCP Manager errors</h2>
|
||
<div class="table-responsive">
|
||
<br> There is an error in the :<br><pre>
|
||
<?php print_r($this->class_error); ?>
|
||
</pre>
|
||
<br> Correct these problems before continuing to work. <br>
|
||
<br><h3 style="border:2px solid Tomato;color:Green;" > Open 'SCCP Connectivity' -> Server Config' to change global settings</h3> <br>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<br>
|
||
<?php } ?>
|
||
<div class="fpbx-container container-fluid">
|
||
<div class="row">
|
||
<div class="container">
|
||
<h2>Sccp Manager V.<?php print_r($this->sccp_manager_ver); ?> Info </h2>
|
||
<div class="table-responsive">
|
||
<table class="table">
|
||
<thead>
|
||
<tr>
|
||
<th>Module</th>
|
||
<th>Version</th>
|
||
<th>Info</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<?php
|
||
foreach ($info as $key => $value) {
|
||
echo '<tr><td>' . $key . '</td><td>' . $value['Version'] . '</td><td>' . $value['about'] . '</td></tr>';
|
||
}
|
||
?>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<a class="btn btn-default" href="ajax.php?module=sccp_manager&command=backupsettings"><i class="fa fa-plane"> </i><?php echo _("BackUp Config") ?></a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<?php echo $this->showGroup('sccp_info', 0); ?>
|
||
|