$QUERY = "SELECT src, cc_card.username, cc_card.recalltime, continuewithdid FROM cc_card, cc_call LEFT JOIN cc_did ON cc_did.id_trunk=cc_call.id_trunk WHERE cc_card.id=card_id AND did='$mydnid' AND DATEDIFF(NOW(),stoptime) < cc_card.recalldays AND ('$A2B->CallerID' LIKE CONCAT('%',SUBSTRING(calledstation,2)) OR calledstation LIKE CONCAT('%','$A2B->CallerID')) AND LENGTH(calledstation) > 6 AND LENGTH(TRIM(LEADING '+' FROM '$A2B->CallerID'))-LENGTH(calledstation) < 3 ORDER BY cc_call.id DESC LIMIT 1"; $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY); if (is_array($result)) { $RateEngine->Reinit(); $A2B -> agiconfig['answer_call'] = 0; $A2B -> agiconfig['play_audio'] = 0; $A2B -> agiconfig['use_dnid'] = 1; $A2B -> destination = $A2B -> dnid = $A2B -> extension = preg_replace('/\+/','',$result[0][0]); $accountback = $result[0][1]; $A2B -> recalltime = $result[0][2]; $cia_res = $A2B -> callingcard_ivr_authenticate($agi,$accountback); if ($cia_res==0) { // RE-SET THE CALLERID $A2B->callingcard_auto_setcallerid($agi); // Feature to switch the Callplan from a customer : callplan_deck_minute_threshold $A2B-> deck_switch($agi); if (!$A2B -> enough_credit_to_call()) break; if ($A2B->agiconfig['sip_iax_friends']==1) { if ( (strlen($A2B -> destination)>0) && ( strlen($A2B -> agiconfig['sip_iax_pstn_direct_call_prefix']) > 0) && (strncmp($A2B -> agiconfig['sip_iax_pstn_direct_call_prefix'], $A2B -> destination,strlen($A2B -> agiconfig['sip_iax_pstn_direct_call_prefix'])) == 0) ) { $A2B -> sip_iax_buddy = $A2B->agiconfig['sip_iax_pstn_direct_call_prefix'];
} if ($mode == 'standard') { if ($A2B->agiconfig['answer_call'] == 1) { $A2B->debug(INFO, $agi, __FILE__, __LINE__, '[ANSWER CALL]'); $agi->answer(); $status_channel = 6; } else { $A2B->debug(INFO, $agi, __FILE__, __LINE__, '[NO ANSWER CALL]'); $status_channel = 4; } $A2B->play_menulanguage($agi); // Play intro message if (strlen($A2B->agiconfig['intro_prompt']) > 0) { $agi->stream_file($A2B->agiconfig['intro_prompt'], '#'); } $cia_res = $A2B->callingcard_ivr_authenticate($agi); $A2B->debug(DEBUG, $agi, __FILE__, __LINE__, "[TRY : callingcard_ivr_authenticate]"); // CALL AUTHENTICATE AND WE HAVE ENOUGH CREDIT TO GO AHEAD if ($cia_res == 0) { // RE-SET THE CALLERID $A2B->callingcard_auto_setcallerid($agi); for ($i = 0; $i < $A2B->agiconfig['number_try']; $i++) { $RateEngine->Reinit(); $A2B->Reinit(); // RETRIEVE THE CHANNEL STATUS AND LOG : STATUS - CREIT - MIN_CREDIT_2CALL $stat_channel = $agi->channel_status($A2B->channel); $A2B->debug(INFO, $agi, __FILE__, __LINE__, '[CHANNEL STATUS : ' . $stat_channel["result"] . ' = ' . $stat_channel["data"] . ']' . "\n[CREDIT : " . $A2B->credit . "][CREDIT MIN_CREDIT_2CALL : " . $A2B->agiconfig['min_credit_2call'] . "]"); // CHECK IF THE CHANNEL IS UP if ($A2B->agiconfig['answer_call'] == 1 && $stat_channel["result"] != $status_channel && $A2B->CC_TESTING != 1) { if ($A2B->set_inuse == 1) { $A2B->callingcard_acct_start_inuse($agi, 0);