| 65 | | function cidroute_hookProcess_core($viewing_itemid, $request) { |
|---|
| 66 | | |
|---|
| 67 | | if (!isset($request['action'])) |
|---|
| 68 | | return; |
|---|
| 69 | | global $db; |
|---|
| 70 | | switch ($request['action']) { |
|---|
| 71 | | case 'addIncoming': |
|---|
| 72 | | $results = sql(sprintf('INSERT INTO cidroute_config (trunk, enabled) VALUES ("%s", %d)', |
|---|
| 73 | | $db->escapeSimple($request['extdisplay']), $request['cidroute'])); |
|---|
| 74 | | break; |
|---|
| 75 | | case 'delIncoming': |
|---|
| 76 | | $results = sql(sprintf("DELETE FROM cidroute_config WHERE trunk = '%s'", |
|---|
| 77 | | $db->escapeSimple($request['extdisplay']))); |
|---|
| 78 | | break; |
|---|
| 79 | | case 'edtIncoming': // deleting and adding as in core module |
|---|
| 80 | | $results = sql(sprintf("DELETE FROM cidroute_config WHERE trunk = '%s'", |
|---|
| 81 | | $db->escapeSimple($request['extdisplay']))); |
|---|
| 82 | | $results = sql(sprintf('INSERT INTO cidroute_config (trunk, enabled) VALUES ("%s", %d)', |
|---|
| 83 | | $db->escapeSimple($request['extdisplay']), $request['cidroute'])); |
|---|
| | 90 | } |
|---|
| | 91 | } |
|---|
| 88 | | |
|---|
| 89 | | function cidroute_hookGet_config($engine) { |
|---|
| 90 | | global $ext; |
|---|
| 91 | | // switch($engine) { |
|---|
| 92 | | // case "asterisk": |
|---|
| 93 | | // $pairing = cidroute_did_list(); |
|---|
| 94 | | // if(is_array($pairing)) { |
|---|
| 95 | | // foreach($pairing as $item) { |
|---|
| 96 | | // if ($item['cidroute_id'] != 0) { |
|---|
| 97 | | // |
|---|
| 98 | | // // Code from modules/core/functions.inc.php core_get_config inbound routes |
|---|
| 99 | | // $exten = trim($item['extension']); |
|---|
| 100 | | // $cidnum = trim($item['cidnum']); |
|---|
| 101 | | // |
|---|
| 102 | | // if ($cidnum != '' && $exten == '') { |
|---|
| 103 | | // $exten = '_.'; |
|---|
| 104 | | // $pricid = ($item['pricid']) ? true:false; |
|---|
| 105 | | // } else if (($cidnum != '' && $exten != '') || ($cidnum == '' && $exten == '')) { |
|---|
| 106 | | // $pricid = true; |
|---|
| 107 | | // } else { |
|---|
| 108 | | // $pricid = false; |
|---|
| 109 | | // } |
|---|
| 110 | | // $context = ($pricid) ? "ext-did-0001":"ext-did-0002"; |
|---|
| 111 | | // |
|---|
| 112 | | // $exten = (empty($exten)?"s":$exten); |
|---|
| 113 | | // $exten = $exten.(empty($cidnum)?"":"/".$cidnum); //if a CID num is defined, add it |
|---|
| 114 | | // |
|---|
| 115 | | // $ext->splice($context, $exten, 1, new ext_gosub('1', 'cidroute_'.$item['cidroute_id'], 'cidroute')); |
|---|
| 116 | | // |
|---|
| 117 | | // } |
|---|
| 118 | | // } |
|---|
| 119 | | // } |
|---|
| 120 | | // break; |
|---|
| 121 | | // } |
|---|
| | 96 | function cidroute_get_trunks() { |
|---|
| | 97 | $res = sql("select trunk from cidroute_config where enabled='1'", "getAll"); |
|---|
| | 98 | if (is_array($res)) { |
|---|
| | 99 | foreach ($res as $r) { |
|---|
| | 100 | $arr[]=$r[0]; |
|---|
| | 101 | } |
|---|
| | 102 | return $res; |
|---|
| | 103 | } |
|---|
| | 104 | return null; |
|---|
| 123 | | |
|---|
| 124 | | /* |
|---|
| 125 | | // Generates dialplan for cidroute, call from retrieve_conf |
|---|
| 126 | | */ |
|---|
| 127 | | |
|---|
| 128 | | function cidroute_get_config($engine) { |
|---|
| 129 | | global $ext; |
|---|
| 130 | | global $asterisk_conf; |
|---|
| 131 | | // switch($engine) { |
|---|
| 132 | | // case "asterisk": |
|---|
| 133 | | // $sources = cidroute_list(); |
|---|
| 134 | | // if(is_array($sources)) { |
|---|
| 135 | | // foreach($sources as $item) { |
|---|
| 136 | | // |
|---|
| 137 | | // // Search for number in the cache, if found lookupcidnum and return |
|---|
| 138 | | // if ($item['cidroute_id'] != 0) { |
|---|
| 139 | | // if ($item['cache'] == 1 && $item['sourcetype'] != 'internal') { |
|---|
| 140 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_gotoif('$[${DB_EXISTS(cidname/${CALLERID(num)})} = 1]', 'cidroute,cidroute_return,1')); |
|---|
| 141 | | // } |
|---|
| 142 | | // } |
|---|
| 143 | | // |
|---|
| 144 | | // switch($item['sourcetype']) { |
|---|
| 145 | | // |
|---|
| 146 | | // case "internal": |
|---|
| 147 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_lookupcidname('')); |
|---|
| 148 | | // break; |
|---|
| 149 | | // |
|---|
| 150 | | // case "enum": |
|---|
| 151 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_txtcidname('${CALLERID(num)}')); |
|---|
| 152 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_setvar('CALLERID(name)', '${TXTCIDNAME}')); |
|---|
| 153 | | // break; |
|---|
| 154 | | // |
|---|
| 155 | | // case "http": |
|---|
| 156 | | // if (!empty($item['http_username']) && !empty($item['http_password'])) |
|---|
| 157 | | // $auth = sprintf('%s:%s@', $item['http_username'], $item['http_password']); |
|---|
| 158 | | // else |
|---|
| 159 | | // $auth = ''; |
|---|
| 160 | | // |
|---|
| 161 | | // if (!empty($item['http_port'])) |
|---|
| 162 | | // $host = sprintf('%s:%d', $item['http_host'], $item['http_port']); |
|---|
| 163 | | // else |
|---|
| 164 | | // $host = $item['http_host'].':80'; |
|---|
| 165 | | // |
|---|
| 166 | | // if (substr($item['http_path'], 0, 1) == '/') |
|---|
| 167 | | // $path = substr($item['http_path'], 1); |
|---|
| 168 | | // else |
|---|
| 169 | | // $path = $item['http_path']; |
|---|
| 170 | | // |
|---|
| 171 | | // $query = str_replace('[NUMBER]', '${CALLERID(num)}', $item['http_query']); |
|---|
| 172 | | // $url = sprintf('http://%s%s/%s?%s', $auth, $host, $path, $query); |
|---|
| 173 | | // $curl = sprintf('${CURL(%s)}', $url); |
|---|
| 174 | | // |
|---|
| 175 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_setvar('CALLERID(name)', $curl)); |
|---|
| 176 | | // break; |
|---|
| 177 | | // |
|---|
| 178 | | // case "mysql": |
|---|
| 179 | | // //Escaping MySQL query - thanks to http://www.asteriskgui.com/index.php?get=utilities-mysqlscape |
|---|
| 180 | | // |
|---|
| 181 | | // $replacements = array ( |
|---|
| 182 | | // '\\' => '\\\\', |
|---|
| 183 | | // '"' => '\\"', |
|---|
| 184 | | // '\'' => '\\\'', |
|---|
| 185 | | // ' ' => '\\ ', |
|---|
| 186 | | // ',' => '\\,', |
|---|
| 187 | | // '(' => '\\(', |
|---|
| 188 | | // ')' => '\\)', |
|---|
| 189 | | // '.' => '\\.', |
|---|
| 190 | | // '|' => '\\|' |
|---|
| 191 | | // ); |
|---|
| 192 | | // |
|---|
| 193 | | // $query = str_replace(array_keys($replacements), array_values($replacements), $item['mysql_query']); |
|---|
| 194 | | // $query = str_replace('[NUMBER]', '${CALLERID(num)}', $query); |
|---|
| 195 | | // |
|---|
| 196 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_mysql_connect('connid', $item['mysql_host'], $item['mysql_username'], $item['mysql_password'], $item['mysql_dbname'])); |
|---|
| 197 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_mysql_query('resultid', 'connid', $query)); |
|---|
| 198 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_mysql_fetch('fetchid', 'resultid', 'CALLERID(name)')); |
|---|
| 199 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_mysql_clear('resultid')); |
|---|
| 200 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_mysql_disconnect('connid')); |
|---|
| 201 | | // break; |
|---|
| 202 | | // |
|---|
| 203 | | // // TODO: implement SugarCRM lookup, look at code snippet at http://nerdvittles.com/index.php?p=82 |
|---|
| 204 | | // case "sugarcrm": |
|---|
| 205 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_noop('SugarCRM not yet implemented')); |
|---|
| 206 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_return('')); |
|---|
| 207 | | // break; |
|---|
| 208 | | // } |
|---|
| 209 | | // |
|---|
| 210 | | // // Put numbers in the cache |
|---|
| 211 | | // if ($item['cidroute_id'] != 0) { |
|---|
| 212 | | // if ($item['cache'] == 1 && $item['sourcetype'] != 'internal') { |
|---|
| 213 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_db_put('cidname', '${CALLERID(num)}', '${CALLERID(name)}' )); |
|---|
| 214 | | // } |
|---|
| 215 | | // $ext->add('cidroute', 'cidroute_'.$item['cidroute_id'], '', new ext_return('')); |
|---|
| 216 | | // } |
|---|
| 217 | | // } |
|---|
| 218 | | // |
|---|
| 219 | | // $ext->add('cidroute', 'cidroute_return', '', new ext_lookupcidname('')); |
|---|
| 220 | | // $ext->add('cidroute', 'cidroute_return', '', new ext_return('')); |
|---|
| 221 | | // } |
|---|
| 222 | | // break; |
|---|
| 223 | | // } |
|---|
| 224 | | } |
|---|
| 225 | | |
|---|
| | 106 | |
|---|
| | 107 | |
|---|