/** * generate a unique pin number, can be assign length by $len * * @param $len (int) pin length * @return $pin (string) pin number */ function generateUniquePin($len = 10) { srand((double) microtime() * 1000003); $prefix = rand(1000000000, 9999999999); if (is_numeric($len) && $len > 10 && $len < 20) { $len -= 10; $min = 1; for ($i = 1; $i < $len; $i++) { $min = $min * 10; } $max = $min * 10 - 1; $pin = $prefix . rand($min, $max); $curpin = astercrm::getRecordByField('pin', $pin, 'clid'); while ($curpin) { $pin = $prefix . rand($min, $max); $curpin = astercrm::getRecordByField('pin', $pin, 'clid'); } } elseif ($len <= 10) { $pin = $prefix; $curpin = astercrm::getRecordByField('pin', $pin, 'clid'); while ($curpin) { $pin = rand(1000000000, 9999999999); $curpin = astercrm::getRecordByField('pin', $pin, 'clid'); } } else { $pin = $prefix . rand(1000000000, 9999999999); $curpin = astercrm::getRecordByField('pin', $pin, 'clid'); while ($curpin) { $pin = $prefix . rand(1000000000, 9999999999); $curpin = astercrm::getRecordByField('pin', $pin, 'clid'); } } return $pin; }
function workoffcheck($f = '') { global $locate, $config; $objResponse = new xajaxResponse(); if ($config['system']['stop_work_verify']) { if ($f['adminname'] == '') { return $objResponse; } $admininfo = astercrm::getRecordByField('username', $f['adminname'], 'astercrm_account'); if ($admininfo['password'] == $f['Workoffpwd'] && ($admininfo['usertype'] == 'groupadmin' && $admininfo['groupid'] == $_SESSION['curuser']['groupid'] || $admininfo['usertype'] == 'admin')) { } else { return $objResponse; } } $objResponse->addAssign("btnWork", "value", $locate->Translate("Start work")); $objResponse->addEvent("btnWork", "onclick", "workctrl('start');"); $objResponse->addAssign("btnWorkStatus", "value", ""); $objResponse->addAssign("divWork", "innerHTML", ""); $_SESSION['curuser']['WorkStatus'] = ''; $objResponse->addAssign("formWorkoff", "style.visibility", "hidden"); $objResponse->addAssign("formWorkoff", "innerHTML", ''); $objResponse->loadXML(getPrivateDialListNumber($_SESSION['curuser']['extension'])); return $objResponse; }
if ($reseller_row['callshop_pay_fee']) { $credit = $p->ipn_data['mc_gross'] - $p->ipn_data['mc_fee']; } else { $credit = $p->ipn_data['mc_gross']; } $updateCurCredit = $srcCredit - $p->ipn_data['mc_gross']; $sql = "UPDATE accountgroup SET curcredit = curcredit - {$credit} WHERE id = '" . $account['groupid'] . "'"; $mailto = $reseller_row['epayment_notify_mail']; $mailTitle = $locate->Translate('Callshop') . ': ' . $account['username'] . ' ' . $locate->Translate('Paymented') . ' ' . $config['epayment']['currency_code'] . ' ' . $p->ipn_data['mc_gross'] . ' ' . $locate->Translate('for') . ' ' . $reseller_row['epayment_item_name'] . ',' . $locate->Translate('Please check it') . ' - ipn'; } if ($config['epayment']['ipn_log']) { $logstr .= "txn_id- " . $p->ipn_data['txn_id'] . '| updateCurCreditSQL:' . $sql . "\n"; //fwrite($loghandle,$logstr); //fclose($loghandle); } $txn_res = astercrm::getRecordByField('epayment_txn_id', $p->ipn_data['txn_id'], 'credithistory'); //if($config['epayment']['ipn_log']){ // $loghandle = fopen("upload/paypalipn-epayment.log",'rb'); // $oricontent = fread($loghandle,filesize("upload/paypalipn-epayment.log")); // fclose($loghandle); // $loghandle = fopen("upload/paypalipn-epayment.log",'w'); // $logstr = $oricontent; //} // check that txn_id has not been previously processed if ($txn_res['id'] > 0) { if ($config['epayment']['ipn_log']) { $logstr .= "txn_res: txn_id- " . $p->ipn_data['txn_id'] . "| Already processed\n"; fwrite($loghandle, $logstr); fclose($loghandle); } exit;
function checkExtensionStatus($curid, $type = 'list', $curhover) { global $db, $config; /* if type is list, then only check some specific extension or else we get extension list from events */ $panellist = array(); $panelphones = array(); if ($type == 'list') { $i = 0; foreach ($_SESSION['curuser']['extensions'] as $value) { $row = astercrm::getRecordByField('username', $value, 'astercrm_account'); $panellist[$row['username']]['extension'] = $row['extension']; $panellist[$row['username']]['agent'] = $row['agent']; $panellist[$row['username']]['channel'] = $row['channel']; $panelphones[] = $row['extension']; $i++; } //$_SESSION['curuser']['extensions_session'] = $panellist; } else { $alluser = astercrm::getall('astercrm_account'); while ($alluser->fetchinto($row)) { $panellist[$row['username']]['extension'] = $row['extension']; $panellist[$row['username']]['agent'] = $row['agent']; $panellist[$row['username']]['channel'] = $row['channel']; $panelphones[] = $row['extension']; } } if (!isset($_SESSION['extension_status'])) { $status = array(); $callerid = array(); $direction = array(); } else { /* because there could be no all extension status data in events we need to inherit status from sessions */ $status = $_SESSION['extension_status']; $callerid = $_SESSION['callerid']; $direction = $_SESSION['direction']; $srcchan = $_SESSION['srcchan']; $dstchan = $_SESSION['dstchan']; } if (!isset($panelphones) or $panelphones == '') { $panelphones = array(); } if ($config['system']['eventtype'] == 'curcdr') { //read all peer status in table peerstatus and save to array $phone_status $events =& asterEvent::getPeerstatus(0); $phone_status = array(); while ($events->fetchInto($list)) { list($tech, $peer) = split('/', $list['peername']); $phone_status[$peer] = $list['status']; } foreach ($panellist as $username => $phone) { $query = "SELECT * FROM curcdr WHERE (src = '" . $phone['extension'] . "' OR dst = '" . $phone['extension'] . "' OR srcchan = 'agent/" . $phone['agent'] . "' OR dstchan = 'agent/" . $phone['agent'] . "' OR srcchan LIKE '" . $phone['channel'] . "-%' OR dstchan LIKE '" . $phone['channel'] . "-%') AND dstchan != '' AND srcchan != '' AND dst != '' AND src != '' ORDER BY id ASC"; $res = $db->query($query); if ($res->fetchInto($cdrrow)) { if ($status[$username] == 1) { continue; } //for check click to transfer if (!strstr($cdrrow['dstchan'], $cdrrow['dst'])) { $dst_tmp = trim($cdrrow['dst']); $cdrrow['dst'] = ''; } if ($status[$list['peer']] == 1) { continue; } if (strstr($cdrrow['src'], $phone['extension']) or strstr($cdrrow['srcchan'], $phone['channel']) or $cdrrow['srcchan'] == "agent/" . $phone['agent']) { // dial out if ($cdrrow['didnumber'] != '') { $callerid[$username] = trim($cdrrow['didnumber']); } else { if (trim($cdrrow['dst']) != '') { $callerid[$username] = trim($cdrrow['dst']); } else { $callerid[$username] = $dst_tmp; } } $direction[$username] = "dialout"; $status[$username] = 1; $srcchan[$username] = trim($cdrrow['srcchan']); $dstchan[$username] = trim($cdrrow['dstchan']); } elseif (strstr($cdrrow['dst'], $phone['extension']) or strstr($cdrrow['dstchan'], $phone['channel']) or $cdrrow['dstchan'] == "agent/" . $phone['agent']) { //dial in $callerid[$username] = trim($cdrrow['src']); $direction[$username] = "dialin"; $status[$username] = 1; $srcchan[$username] = trim($cdrrow['srcchan']); $dstchan[$username] = trim($cdrrow['dstchan']); } else { $callerid[$username] = ''; $direction[$username] = ''; $status[$username] = 0; } } else { if ($phone_status[$phone['extension']] == 'unknown' || $phone_status[$phone['extension']] == 'unreachable' || $phone_status[$phone['extension']] == '' || $phone_status[$phone['extension']] == 'unregistered') { $status[$username] = 2; } elseif ($phone_status[$phone['extension']] == 'reachable' || $phone_status[$phone['extension']] == 'registered' || strstr($phone_status[$phone['extension']], 'ok')) { $status[$username] = 0; } $callerid[$username] = ''; $direction[$username] = ''; } } } else { $events =& asterEvent::getEvents($curid); while ($events->fetchInto($list)) { $data = trim($list['event']); list($event, $event_val, $ev, $priv, $priv_val, $pv, $chan, $chan_val, $cv, $stat, $stat_val, $sv, $extra) = split(" ", $data, 13); // if (strtolower(substr($chan_val,0,3)) != "sip" && strtolower(substr($chan_val,0,3)) != "iax") continue; // also we check iax peer status if (strtolower(substr($chan_val, 0, 3)) != "sip") { continue; } if (substr($event_val, 0, 10) == "PeerStatus") { if (!in_array($chan_val, $phones)) { $phones[] = $chan_val; } if (substr($stat_val, 0, 11) == "unreachable") { $status[$chan_val] = 2; continue; } if (substr($stat_val, 0, 12) == "unregistered") { $status[$chan_val] = 2; continue; } if (substr($stat_val, 0, 9) == "reachable") { if ($status[$chan_val] == 1) { continue; } $status[$chan_val] = 0; continue; } if (substr($stat_val, 0, 12) == "registered") { if ($status[$chan_val] == 1) { continue; } $status[$chan_val] = 0; continue; } if (!isset($status[$chan_val])) { $status[$chan_val] = 0; } continue; } if (substr($event_val, 0, 10) == "Newchannel") { $peer_val = split("-", $chan_val); if (!in_array($peer_val[0], $panelphones)) { $panelphones[] = $peer_val[0]; } $status[$peer_val[0]] = 1; //get unique id //add by solo 2007-11-1 $extra = split(" ", $extra); foreach ($extra as $temp) { if (preg_match("/^Uniqueid:/", $temp)) { $uniqueid = substr($temp, 9); $callerid[$peer_val[0]] =& asterEvent::getCallerID($uniqueid); $direction[$peer_val[0]] = "dialin"; } } if ($callerid[$peer_val[0]] == 0) { // it's a dial out $srcInfo =& asterEvent::getInfoBySrcID($uniqueid); $callerid[$peer_val[0]] = $srcInfo['Extension']; $direction[$peer_val[0]] = "dialout"; } //************************** continue; } if (substr($event_val, 0, 8) == "Newstate") { $peer_val = split("-", $chan_val); if (!in_array($peer_val[0], $panelphones)) { $panelphones[] = $peer_val[0]; } $status[$peer_val[0]] = 1; continue; } if (substr($event_val, 0, 6) == "Hangup") { $peer_val = split("-", $chan_val); if (!in_array($peer_val[0], $panelphones)) { $panelphones[] = $peer_val[0]; } $status[$peer_val[0]] = 0; $callerid[$peer_val[0]] = ""; continue; } } } if ($type == 'list') { if (!isset($_SESSION['curuser']['extensions']) or $_SESSION['curuser']['extensions'] == '') { $phones = array(); } else { //$phones = $_SESSION['curuser']['extensions']; $phones = $panellist; } //print_r($phones);print_r($status);print_r($callerid);print_r($direction);exit; $action =& asterEvent::listStatus($phones, $status, $callerid, $direction, $srcchan, $dstchan); } else { //$_SESSION['curuser']['extensions_session'] = $phones; $action =& asterEvent::tableStatus($panellist, $status, $callerid, $direction, $srcchan, $dstchan, $curhover); } $_SESSION['extension_status'] = $status; $_SESSION['callerid'] = $callerid; $_SESSION['direction'] = $direction; $_SESSION['srcchan'] = $srcchan; $_SESSION['dstchan'] = $dstchan; $html .= $action; return $html; }
function setGroupBalance() { global $config, $locate, $db; $objResponse = new xajaxResponse(); # 检查session是否存在 if ($_SESSION['curuser']['groupid'] == "") { return $objResponse; } $group = astercrm::getRecordByField("id", $_SESSION['curuser']['groupid'], 'accountgroup'); $startdate = date("Y-m-d") . " 00:00"; $enddate = date("Y-m-d") . " 23:59"; if ($config['system']['useHistoryCdr'] == 1) { $sql = "SELECT SUM(credit) AS todayAmount,SUM(callshopcredit) AS todayCost FROM historycdr WHERE calldate > '" . $startdate . "' AND calldate < '" . $enddate . "' AND groupid = " . $_SESSION['curuser']['groupid']; } else { $sql = "SELECT SUM(credit) AS todayAmount,SUM(callshopcredit) AS todayCost FROM mycdr WHERE calldate > '" . $startdate . "' AND calldate < '" . $enddate . "' AND groupid = " . $_SESSION['curuser']['groupid']; } $row = $db->getRow($sql); $amount = $row['todayAmount']; // income if ($amount == '') { $amount = 0; } $creditlimit = $group['creditlimit']; // limit $callshopcredit = $row['todayCost']; // cost if ($callshopcredit == '') { $callshopcredit = 0; } $curcredit = $group['curcredit']; // current cost $balance = $callshopcredit - $curcredit; //available balance if ($amount == '') { $amount = 0; } if ($cost == '') { $cost = 0; } $divAmountHtml = ''; if ($config['system']['callshop_status_amount']) { $divAmountHtml .= ' ' . $locate->Translate("Amount") . ': ' . $amount . ' '; } if ($_SESSION['curuser']['limittype'] == '') { $creditlimit = $locate->Translate("no limit"); $objResponse->addAssign("spanLimitStatus", "innerHTML", $creditlimit); } else { $balance = $creditlimit - $curcredit; if ($balance <= 50) { if ($balance <= 0) { $objResponse->addAssign("spanLimitStatus", "innerHTML", $locate->Translate("no credit left all booth locked")); } else { $objResponse->addAssign("spanLimitStatus", "innerHTML", $locate->Translate("warning no enough credit")); } } else { $objResponse->addAssign("spanLimitStatus", "innerHTML", $locate->Translate("normal")); } } if ($_SESSION['curuser']['usertype'] == 'groupadmin') { if ($config['system']['callshop_status_cost']) { $divAmountHtml .= ' ' . $locate->Translate("Cost") . ': ' . $cost . ' '; } if ($config['system']['callshop_status_limit']) { $divAmountHtml .= ' ' . $locate->Translate("Limit") . ': ' . $creditlimit . ' '; } if ($config['system']['callshop_status_credit']) { $divAmountHtml .= ' ' . $locate->Translate("Current Credit") . ': ' . $curcredit . ' '; } if ($config['system']['callshop_status_balance']) { $divAmountHtml .= ' ' . $locate->Translate("Available Balance") . ': ' . $balance; } } $objResponse->addAssign("divAmount", "innerHTML", $divAmountHtml); if (is_numeric($config['system']['refreshBalance']) && $config['system']['refreshBalance'] != 0) { $refreshtime = $config['system']['refreshBalance'] * 1000; $objResponse->addScript('setTimeout("xajax_setGroupBalance()",' . $refreshtime . ');'); } #$objResponse->addAlert('balance refreshed'); return $objResponse->getXML(); }
/** * init page * @return object xajax response object */ function init($username = "", $passwd = "", $lang = 'en_US') { global $config, $db; //echo $username.$passwd.$lang;exit; //if($_SESSION['curuser']['username'] != $username){ $row = astercrm::getRecordByField("username", $username, "astercrm_account"); if ($row['id'] != '') { if (md5($row['password']) == $passwd) { $_SESSION = array(); $_SESSION['curuser']['username'] = trim($username); $_SESSION['curuser']['extension'] = $row['extension']; $_SESSION['curuser']['usertype'] = $row['usertype']; $_SESSION['curuser']['accountcode'] = $row['accountcode']; $_SESSION['curuser']['agent'] = $row['agent']; $_SESSION['curuser']['extensions'] = array(); // added by solo 2007-10-90 $_SESSION['curuser']['channel'] = $row['channel']; $_SESSION['curuser']['groupid'] = $row['groupid']; if ($row['extensions'] != '') { $_SESSION['curuser']['extensions'] = split(',', $row['extensions']); } } } //} //echo $lang;exit; list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $lang); //echo $_SESSION['curuser']['language'];exit; $locate = new Localization($_SESSION['curuser']['country'], $_SESSION['curuser']['language'], 'portal'); //echo $locate->Translate("Search");exit; $objResponse = new xajaxResponse(); $objResponse->addAssign("username", "value", $_SESSION['curuser']['username']); $objResponse->addAssign("extension", "value", $_SESSION['curuser']['extension']); $objResponse->addAssign("myevents", "innerHTML", $locate->Translate("extension") . $_SESSION['curuser']['extension'] . "-" . $locate->Translate("waiting")); $objResponse->addAssign("btnShowPortal", "value", $locate->Translate("portal")); $objResponse->addAssign("btnTransfer", "value", $locate->Translate("Transfer")); $objResponse->addAssign("btnSearchContact", "value", $locate->Translate("Search")); $objResponse->addAssign("spanMonitor", "innerHTML", $locate->Translate("monitor")); $objResponse->addAssign("extensionStatus", "value", 'idle'); $objResponse->addAssign("spanMonitorStatus", "innerHTML", $locate->Translate("idle")); $objResponse->addAssign("btnMonitorStatus", "value", "idle"); $objResponse->addAssign("btnMonitor", "value", $locate->Translate("start_record")); $objResponse->addAssign("btnMonitor", "disabled", true); $objResponse->addAssign("btnCallCtrl", "value", $locate->Translate("Dial")); $objResponse->addAssign("btnTransfer", "disabled", true); foreach ($_SESSION['curuser']['extensions'] as $extension) { $extension = trim($extension); $row = astercrm::getRecordByField('username', $extension, 'astercrm_account'); $objResponse->addScript("addOption('sltExten','" . $row['extension'] . "','{$extension}');"); } $speeddial =& astercrm::getAllSpeedDialRecords(); $speednumber['0']['number'] = $_SESSION['curuser']['extension']; $speednumber['0']['description'] = $_SESSION['curuser']['username']; $n = 1; while ($speeddial->fetchInto($row)) { // Change here by the name of fields of its database table $speednumber[$n]['description'] = $row['description']; $speednumber[$n]['number'] = $row['number']; $n++; } $n = count($speednumber); for ($i = 0; $i < $n; ++$i) { $objResponse->addScript("addOption('iptDestNumber','" . $speednumber[$i]['number'] . "','" . $speednumber[$i]['description'] . "');"); } $panelHTML = '<a href=? onclick="xajax_showRecentCdr(\'\',\'recent\');return false;">' . $locate->Translate("recentCDR") . '</a> '; if ($_SESSION['curuser']['usertype'] != "agent") { $panelHTML .= '<a href=# onclick="this.href=\'managerportal.php\'">' . $locate->Translate("manager") . '</a> '; } if ($config['system']['enable_external_crm'] == false) { //use internal crm $objResponse->addIncludeScript("js/astercrm.js"); $objResponse->addIncludeScript("js/ajax.js"); $objResponse->addIncludeScript("js/ajax-dynamic-list.js"); $objResponse->addAssign("divSearchContact", "style.visibility", "visible"); } else { $objResponse->addIncludeScript("js/extercrm.js"); if ($config['system']['open_new_window'] == false) { $mycrm = '<iframe id="mycrm" name="mycrm" src="' . $config['system']['external_crm_default_url'] . '" width="100%" frameBorder=0 scrolling=auto height="100%"></iframe>'; $objResponse->addAssign("divCrm", "innerHTML", $mycrm); } else { $javascript = "openwindow('" . $config['system']['external_crm_default_url'] . "')"; $objResponse->addScript($javascript); } } $monitorstatus = astercrm::getRecordByID($_SESSION['curuser']['groupid'], 'astercrm_accountgroup'); if ($monitorstatus['monitorforce']) { $objResponse->addAssign("chkMonitor", "checked", 'true'); $objResponse->addAssign("chkMonitor", "style.visibility", 'hidden'); $objResponse->addAssign("btnMonitor", "disabled", 'true'); } $objResponse->addAssign("divSearchContact", "style.visibility", "visible"); //if enabled monitor by astercctools Common::read_ini_file($config['system']['astercc_path'] . '/astercc.conf', $asterccConfig); if ($asterccConfig['system']['force_record'] == 1) { $objResponse->addAssign("chkMonitor", "checked", 'false'); $objResponse->addAssign("chkMonitor", "style.visibility", 'hidden'); $objResponse->addAssign("btnMonitor", "disabled", 'true'); } return $objResponse; }
function searchFormSubmit($searchFormValue, $numRows = null, $limit = null, $id = null, $type = null) { global $locate, $db; $objResponse = new xajaxResponse(); $searchField = array(); $searchContent = array(); $optionFlag = $searchFormValue['optionFlag']; $searchContent = $searchFormValue['searchContent']; //搜索内容 数组 $searchField = $searchFormValue['searchField']; //搜索条件 数组 $searchType = $searchFormValue['searchType']; $ordering = $searchFormValue['ordering']; $order = $searchFormValue['order']; $divName = "grid"; if ($optionFlag == "export" || $optionFlag == "exportcsv") { $sql = astercrm::getSql($searchContent, $searchField, $searchType, 'astercrm_account'); //得到要导出的sql语句 $_SESSION['export_sql'] = $sql; $objResponse->addAssign("hidSql", "value", $sql); //赋值隐含域 $objResponse->addAssign("maintable", "value", 'astercrm_account'); //赋值隐含域 $objResponse->addAssign("exporttype", "value", $optionFlag); $objResponse->addScript("document.getElementById('exportForm').submit();"); } elseif ($optionFlag == "delete") { astercrm::deletefromsearch($searchContent, $searchField, $searchType, 'astercrm_account'); $html = createGrid($searchFormValue['numRows'], $searchFormValue['limit'], '', '', $order, $divName, $ordering, ''); $objResponse->addClear("msgZone", "innerHTML"); $objResponse->addAssign($divName, "innerHTML", $html); } elseif ($type == "delete") { $myrow = astercrm::getRecordByField('username', $_SESSION['curuser']['username'], 'astercrm_account'); $myid = $myrow['id']; //echo $myid;exit; if ($myid == $id) { $objResponse->addAlert($locate->Translate("Can not delete your own account")); return $objResponse->getXML(); } $res = Customer::deleteRecord($id, 'astercrm_account'); if ($res) { $html = createGrid($searchFormValue['numRows'], $searchFormValue['limit'], $searchField, $searchContent, $order, $divName, $ordering, $searchType); $objResponse = new xajaxResponse(); $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("delete_rec")); $objResponse->addAssign($divName, "innerHTML", $html); } else { $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("rec_cannot_delete")); } } else { $html = createGrid($numRows, $limit, $searchField, $searchContent, $order, $divName, $ordering, $searchType); $objResponse->addClear("msgZone", "innerHTML"); $objResponse->addAssign($divName, "innerHTML", $html); } return $objResponse->getXML(); }
/** * Imprime la forma para editar un nuevo registro sobre el DIV identificado por "formDiv". * * @param $id (int) Identificador del registro a ser editado. * @return $html (string) Devuelve una cadena de caracteres que contiene la forma con los datos * a extraidos de la base de datos para ser editados */ function formEdit($id, $type) { global $locate; global $db; if ($type == 'note') { $note =& astercrm::getRecordById($id, 'note'); for ($i = 0; $i < 11; $i++) { $options .= "<option value='{$i}' "; if (trim($note['priority']) == $i) { $options .= 'selected>'; } else { $options .= '>'; } $options .= $i . "</option>"; } // print $options; // exit; $html = ' <form method="post" name="f" id="f"> <input type="hidden" id="noteid" name="noteid" value="' . $note['id'] . '"> <table border="0" width="100%"> <tr> <td nowrap align="left">' . $locate->Translate("note") . '(<input type="checkbox" name="sltPrivate" id="sltPrivate" value="0" onclick="if(this.checked){ document.getElementById(\'private\').value=0;}else{ document.getElementById(\'private\').value=1;}" '; if ($note['private'] == 0) { $html .= 'checked'; } $html .= '>' . $locate->Translate("share") . ')<input type="hidden" name="private" id="private" value="' . $note['private'] . '"></td> <td align="left">' . nl2br($note['note']) . '</td> </tr> <tr> <td nowrap align="left">' . $locate->Translate("append") . '</td> <td align="left"><textarea rows="4" cols="50" id="note" name="note" wrap="soft" style="overflow:auto"></textarea></td> </tr> <tr> <td nowrap align="left">' . $locate->Translate("priority") . '</td> <td align="left"> <select id="priority" name="priority">' . $options . '</select> <input type="radio" name="attitude" value="10" '; if ($note['attitude'] == '10') { $html .= 'checked'; } $html .= '/><img src="skin/default/images/10.gif" width="25px" height="25px" border="0" /> <input type="radio" name="attitude" value="5" '; if ($note['attitude'] == '5') { $html .= 'checked'; } $html .= ' /><img src="skin/default/images/5.gif" width="25px" height="25px" border="0" /> <input type="radio" name="attitude" value="-1" '; if ($note['attitude'] == '-1') { $html .= 'checked'; } $html .= ' /><img src="skin/default/images/-1.gif" width="25px" height="25px" border="0" /> <input type="radio" name="attitude" value="0" '; if ($note['attitude'] == '0') { $html .= 'checked'; } $html .= ' /> <img src="skin/default/images/0.gif" width="25px" height="25px" border="0" /> </td> </tr> <tr> <td colspan="2" align="center">[<a href=? onclick="xajax_showCustomer(\'' . $note['customerid'] . '\');return false;">' . $locate->Translate("customer") . '</a>] [<a href=? onclick="xajax_showContact(\'' . $note['contactid'] . '\');return false;">' . $locate->Translate("contact") . '</a>]</td> </tr> <tr> <td colspan="2" align="center"><button id="btnContinue" name="btnContinue" onClick=\'xajax_update(xajax.getFormValues("f"),"note");return false;\'>' . $locate->Translate("continue") . '</button></td> </tr> '; } elseif ($type == 'customer') { $customer =& astercrm::getCustomerByID($id); if ($customer['contactgender'] == 'male') { $customerMaleSelected = 'selected'; } elseif ($customer['contactgender'] == 'female') { $customerFemaleSelected = 'selected'; } else { $customerUnknownSelected = 'selected'; } $html = ' <form method="post" name="frmCustomerEdit" id="frmCustomerEdit"> <table border="0" width="100%"> <tr id="customerTR" name="customerTR"> <td nowrap align="left">' . $locate->Translate("customer_name") . '</td> <td align="left">'; if ($customer['customertitle'] == 'Mr') { $slt['Mr'] = 'selected'; } elseif ($customer['customertitle'] == 'Miss') { $slt['Miss'] = 'selected'; } elseif ($customer['customertitle'] == 'Ms') { $slt['Ms'] = 'selected'; } elseif ($customer['customertitle'] == 'Mrs') { $slt['Mrs'] = 'selected'; } elseif ($customer['customertitle'] == 'other') { $slt['other'] = 'selected'; } $customertile = '<select id="customertitle" name="customertitle"> <option value="Mr" ' . $slt['Mr'] . '>' . $locate->Translate("Mr") . '</option> <option value="Miss" ' . $slt['Miss'] . '>' . $locate->Translate("Miss") . '</option> <option value="Ms" ' . $slt['Ms'] . '>' . $locate->Translate("Ms") . '</option> <option value="Mrs" ' . $slt['Mrs'] . '>' . $locate->Translate("Mrs") . '</option> <option value="other" ' . $slt['other'] . '>' . $locate->Translate("Other") . '</option> </select>'; if ($_SESSION['curuser']['language'] != 'ZH' && $_SESSION['curuser']['country'] != 'cn') { $html .= $customertile . ' <input type="text" id="customer" name="customer" size="35" maxlength="100" value="' . $customer['customer'] . '">'; } else { $html .= '<input type="text" id="customer" name="customer" size="35" maxlength="100" value="' . $customer['customer'] . '"> ' . $customertile; } $html .= '<input type="hidden" id="customerid" name="customerid" value="' . $customer['id'] . '"><BR /> <input type="hidden" id="hidEditCustomerDetails" name="hidEditCustomerDetails" value="ON"> <input type="hidden" id="hidEditBankDetails" name="hidEditBankDetails" value="ON"> [<a href=? onclick=" if (xajax.$(\'hidEditCustomerDetails\').value == \'OFF\'){ showObj(\'trEditCustomerDetails\'); xajax.$(\'hidEditCustomerDetails\').value = \'ON\'; }else{ hideObj(\'trEditCustomerDetails\'); xajax.$(\'hidEditCustomerDetails\').value = \'OFF\'; }; return false;"> ' . $locate->Translate("detail") . ' </a>] [<a href=? onclick=" if (xajax.$(\'hidEditBankDetails\').value == \'OFF\'){ showObj(\'trEditBankDetails\'); xajax.$(\'hidEditBankDetails\').value = \'ON\'; }else{ hideObj(\'trEditBankDetails\'); xajax.$(\'hidEditBankDetails\').value = \'OFF\'; } return false;">' . $locate->Translate("bank") . '</a>] </td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("customer_contact") . '</td> <td align="left"><input type="text" id="customerContact" name="customerContact" size="35" maxlength="35" value="' . $customer['contact'] . '"><BR /> <select id="customerContactGender" name="customerContactGender"> <option value="male" ' . $customerMaleSelected . '>' . $locate->Translate("male") . '</option> <option value="female" ' . $customerFemaleSelected . '>' . $locate->Translate("female") . '</option> <option value="unknown" ' . $customerUnknownSelected . '>' . $locate->Translate("unknown") . '</option> </select> </td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails" > <td nowrap align="left">' . $locate->Translate("first_name") . '</td> <td align="left"><input type="text" id="first_name" name="first_name" size="35" maxlength="50" value="' . $customer['first_name'] . '"></td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails" > <td nowrap align="left">' . $locate->Translate("last_name") . '</td> <td align="left"><input type="text" id="last_name" name="last_name" size="35" maxlength="50" value="' . $customer['last_name'] . '"></td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("address") . '</td> <td align="left"><input type="text" id="address" name="address" size="35" maxlength="200" value="' . $customer['address'] . '"></td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("zipcode") . '/' . $locate->Translate("city") . '</td> <td align="left"><input type="text" id="zipcode" name="zipcode" size="10" maxlength="10" value="' . $customer['zipcode'] . '">/<input type="text" id="city" name="city" size="17" maxlength="50" value="' . $customer['city'] . '"></td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("state") . '</td> <td align="left"><input type="text" id="state" name="state" size="35" maxlength="50" value="' . $customer['state'] . '"></td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("country") . '</td> <td align="left"><input type="text" id="country" name="country" size="35" maxlength="50" value="' . $customer['country'] . '"></td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("customer_phone") . '</td> <td align="left"><input type="text" id="customerPhone" name="customerPhone" size="35" maxlength="50" value="' . $customer['phone'] . '">-<input type="text" id="customerPhone_ext" name="customerPhone_ext" size="8" maxlength="8" value="' . $customer['phone_ext'] . '"></td> </tr> <tr name="trEditCustomerDetails" id="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("mobile") . '</td> <td align="left"><input type="text" id="mainMobile" name="mainMobile" size="35" value="' . $customer['mobile'] . '"></td> </tr> <tr name="trEditCustomerDetails" id="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("email") . '</td> <td align="left"><input type="text" id="mainEmail" name="mainEmail" size="35" value="' . $customer['email'] . '"></td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("website") . '</td> <td align="left"><input type="text" id="website" name="website" size="35" maxlength="100" value="' . $customer['website'] . '"><BR /><input type="button" value="' . $locate->Translate("browser") . '" onclick="openWindow(xajax.$(\'website\').value);return false;"></td> </tr> <tr id="trEditCustomerDetails" name="trEditCustomerDetails"> <td nowrap align="left">' . $locate->Translate("category") . '</td> <td align="left"><input type="text" id="category" name="category" size="35" value="' . $customer['category'] . '"></td> </tr> <tr name="trEditCustomerDetails" id="trEditCustomerDetails" > <td nowrap align="left">' . $locate->Translate("fax") . '</td> <td align="left"><input type="text" id="mainFax" name="mainFax" size="35" value="' . $customer['fax'] . '"><input type="text" id="mainFax_ext" name="mainFax_ext" maxlength="8" size="8" value="' . $customer['fax_ext'] . '"></td> </tr> <!--*********************************************************--> <tr id="trEditBankDetails" name="trEditBankDetails"> <td nowrap align="left">' . $locate->Translate("bank_name") . '</td> <td align="left"><input type="text" id="bankname" name="bankname" size="35" value="' . $customer['bankname'] . '"></td> </tr> <tr id="trEditBankDetails" name="trEditBankDetails"> <td nowrap align="left">' . $locate->Translate("bank_zip") . '</td> <td align="left"><input type="text" id="bankzip" name="bankzip" size="35" value="' . $customer['bankzip'] . '"></td> </tr> <tr id="trEditBankDetails" name="trEditBankDetails"> <td nowrap align="left">' . $locate->Translate("bank_account_name") . '</td> <td align="left"><input type="text" id="bankaccountname" name="bankaccountname" size="35" value="' . $customer['bankaccountname'] . '"></td> </tr> <tr id="trEditBankDetails" name="trEditBankDetails"> <td nowrap align="left">' . $locate->Translate("bank_account") . '</td> <td align="left"><input type="text" id="bankaccount" name="bankaccount" size="35" value="' . $customer['bankaccount'] . '"></td> </tr> <tr> <td colspan="2" align="center"><button id="btnContinue" name="btnContinue" onClick=\'xajax_update(xajax.getFormValues("frmCustomerEdit"),"customer");return false;\'>' . $locate->Translate("continue") . '</button></td> </tr> '; } elseif ($type == 'diallist') { $diallist =& astercrm::getRecordByField('id', $id, 'diallist'); //print_r($diallist);exit; if ($_SESSION['curuser']['usertype'] == 'admin') { $res = Customer::getGroups(); $groupoptions .= '<select name="groupid" id="groupid" onchange="setCampaign();">'; while ($row = $res->fetchRow()) { $groupoptions .= '<option value="' . $row['groupid'] . '"'; if ($row['groupid'] == $diallist['groupid']) { $groupoptions .= 'selected'; } $groupoptions .= '>' . $row['groupname'] . '</option>'; } $groupoptions .= '</select>'; $sql = "SELECT * FROM campaign WHERE groupid ='" . $diallist['groupid'] . "'"; $res =& $db->query($sql); $campaignoptions .= '<select name="campaignid" id="campaignid" >'; while ($campaign = $res->fetchRow()) { $campaignoptions .= '<option value="' . $campaign['id'] . '"'; if ($campaign['id'] == $diallist['campaignid']) { $campaignoptions .= 'selected'; } $campaignoptions .= '>' . $campaign['campaignname'] . '</option>'; } $campaignoptions .= '</select>'; $assignoptions = '<input type="text" id="assign" name="assign" size="35" value="' . $diallist['assign'] . '" >'; } elseif ($_SESSION['curuser']['usertype'] == 'groupadmin') { $groupoptions .= $_SESSION['curuser']['group']['groupname'] . '<input id="groupid" name="groupid" type="hidden" value="' . $_SESSION['curuser']['groupid'] . '">'; $res = Customer::getRecordsByField('groupid', $_SESSION['curuser']['groupid'], 'astercrm_account'); $assignoptions .= '<select name="assign" id="assign">'; while ($row = $res->fetchRow()) { $assignoptions .= '<option value="' . $row['extension'] . '"'; if ($row['extension'] == $diallist['assign']) { $assignoptions .= " selected"; } $assignoptions .= '>' . $row['extension'] . '</option>'; } $assignoptions .= '</select>'; $sql = "SELECT * FROM campaign WHERE groupid ='" . $diallist['groupid'] . "'"; $res =& $db->query($sql); $campaignoptions .= '<select name="campaignid" id="campaignid" >'; while ($campaign = $res->fetchRow()) { $campaignoptions .= '<option value="' . $campaign['id'] . '"'; if ($campaign['id'] == $diallist['campaignid']) { $campaignoptions .= 'selected'; } $campaignoptions .= '>' . $campaign['campaignname'] . '</option>'; } $campaignoptions .= '</select>'; } else { $groupoptions .= $_SESSION['curuser']['group']['groupname'] . '<input id="groupid" name="groupid" type="hidden" value="' . $_SESSION['curuser']['groupid'] . '">'; $assignoptions = '<input type="text" id="assign" name="assign" size="35" value="' . $diallist['assign'] . '" disabled><input type="hidden" id="assign" name="assign" value="' . $diallist['assign'] . '">'; $sql = "SELECT * FROM campaign WHERE groupid ='" . $diallist['groupid'] . "'"; $res =& $db->query($sql); $campaignoptions .= '<select name="campaignid" id="campaignid" >'; while ($campaign = $res->fetchRow()) { $campaignoptions .= '<option value="' . $campaign['id'] . '"'; if ($campaign['id'] == $diallist['campaignid']) { $campaignoptions .= 'selected'; } $campaignoptions .= '>' . $campaign['campaignname'] . '</option>'; } $campaignoptions .= '</select>'; } $html = ' <!-- No edit the next line --> <form method="post" name="formeditDiallist" id="formeditDiallist"> <table border="1" width="100%" class="adminlist"> <tr> <td nowrap align="left">' . $locate->Translate("Customername") . '</td> <td align="left"> <input type="text" name="customername" id="customername" size="20" value="' . $diallist['customername'] . '"> </td> </tr> <tr> <td nowrap align="left">' . $locate->Translate("number") . '</td> <td align="left"> <input type="text" id="dialnumber" name="dialnumber" size="35" value="' . $diallist['dialnumber'] . '" disabled><input type="hidden" id="dialnumber" name="dialnumber" value="' . $diallist['dialnumber'] . '" > <input type="hidden" id="id" name="id" value="' . $diallist['id'] . '"> </td> </tr> <tr> <td nowrap align="left">' . $locate->Translate("Assign To") . '</td> <td align="left"> ' . $assignoptions . ' </td> </tr> <tr> <td nowrap align="left">' . $locate->Translate("Call Order") . '</td> <td align="left"> <input type="text" name="callOrder" id="callOrder" size="20" value="' . $diallist['callOrder'] . '"> </td> </tr> <tr> <td nowrap align="left">' . $locate->Translate("Dialtime") . '</td> <td align="left"> <input type="text" name="dialtime" id="dialtime" size="20" value="' . $diallist['dialtime'] . '"> <INPUT onclick="displayCalendar(document.getElementById(\'dialtime\'),\'yyyy-mm-dd hh:ii\',this,true)" type="button" value="Cal"> </td> </tr>'; $html .= ' <tr> <td align="left" width="25%">' . $locate->Translate("Group Name") . '</td> <td>' . $groupoptions . '</td> </tr>'; $html .= ' <tr> <td align="left" width="25%">' . $locate->Translate("Campaign Name") . '</td> <td>' . $campaignoptions . '</td> </tr>'; $html .= ' <tr> <td align="left" width="25%">' . $locate->Translate("Memo") . '</td> <td><textarea id="memo" name="memo" cols="50" rows="8">' . $diallist['memo'] . '</textarea></td> </tr>'; $html .= ' <tr> <td nowrap colspan=2 align=right><input type="button" id="btnAddDiallist" name="btnAddDiallist" value="' . $locate->Translate("continue") . '" onclick="xajax_saveDiallist(xajax.getFormValues(\'formeditDiallist\'));return false;"></td> </tr> <table> </form> '; } else { $contact =& astercrm::getContactByID($id); if ($contact['gender'] == 'male') { $maleSelected = 'selected'; } elseif ($contact['gender'] == 'female') { $femaleSelected = 'selected'; } else { $unknownSelected = 'selected'; } $html = ' <form method="post" name="formEdit" id="formEdit"> <table border="0" width="100%"> <tr> <td nowrap align="left">' . $locate->Translate("contact") . '</td> <td align="left"><input type="text" id="contact" name="contact" size="35" value="' . $contact['contact'] . '"><input type="hidden" id="contactid" name="contactid" value="' . $contact['id'] . '"> </td> </tr> <tr name="genderTR" id="genderTR"> <td nowrap align="left">' . $locate->Translate("gender") . '</td> <td align="left"> <select id="contactGender" name="contactGender"> <option value="male" ' . $maleSelected . '>' . $locate->Translate("male") . '</option> <option value="female" ' . $femaleSelected . '>' . $locate->Translate("female") . '</option> <option value="unknown" ' . $unknownSelected . '>' . $locate->Translate("unknown") . '</option> </select> </td> </tr> <tr name="positionTR" id="positionTR"> <td nowrap align="left">' . $locate->Translate("position") . '</td> <td align="left"><input type="text" id="position" name="position" size="35" value="' . $contact['position'] . '"></td> </tr> <tr name="phoneTR" id="phoneTR"> <td nowrap align="left">' . $locate->Translate("phone") . '</td> <td align="left"><input type="text" id="phone" name="phone" size="35" value="' . $contact['phone'] . '">-<input type="text" id="ext" name="ext" size="8" maxlength="8" value="' . $contact['ext'] . '"></td> </tr> <tr name="phone1TR" id="phone1TR"> <td nowrap align="left">' . $locate->Translate("phone1") . '</td> <td align="left"><input type="text" id="phone1" name="phone1" size="35" value="' . $contact['phone1'] . '">-<input type="text" id="ext1" name="ext1" size="8" maxlength="8" value="' . $contact['ext1'] . '"></td> </tr> <tr name="phone2TR" id="phone2TR"> <td nowrap align="left">' . $locate->Translate("phone2") . '</td> <td align="left"><input type="text" id="phone2" name="phone2" size="35" value="' . $contact['phone2'] . '">-<input type="text" id="ext2" name="ext2" size="8" maxlength="8" value="' . $contact['ext2'] . '"></td> </tr> <tr name="mobileTR" id="mobileTR"> <td nowrap align="left">' . $locate->Translate("mobile") . '</td> <td align="left"><input type="text" id="mobile" name="mobile" size="35" value="' . $contact['mobile'] . '"></td> </tr> <tr name="faxTR" id="faxTR"> <td nowrap align="left">' . $locate->Translate("fax") . '</td> <td align="left"><input type="text" id="fax" name="fax" size="35" value="' . $contact['fax'] . '">-<input type="text" id="fax_ext" name="fax_ext" size="8" maxlength="8" value="' . $contact['fax_ext'] . '"></td> </tr> <tr name="emailTR" id="emailTR"> <td nowrap align="left">' . $locate->Translate("email") . '</td> <td align="left"><input type="text" id="email" name="email" size="35" value="' . $contact['email'] . '"></td> </tr> <tr> <td colspan="2" align="center"><button id="btnContinue" name="btnContinue" onClick=\'xajax_update(xajax.getFormValues("formEdit"),"contact");return false;\'>' . $locate->Translate("continue") . '</button></td> </tr> '; } $html .= ' </table> </form> ' . $locate->Translate("ob_fields") . ' '; return $html; }
/** * initialize page elements * */ function init($get = '') { global $config, $locate; $objResponse = new xajaxResponse(); if ($get != '') { $get = rtrim($get, ','); $get = split(',', $get); foreach ($get as $item_tmp) { $item = split(':', $item_tmp); $get_item[$item[0]] = $item[1]; } } $rechargeEable = true; if ($_SESSION['curuser']['usertype'] == 'reseller') { $paymentinfoHtml = paymentInfoHtml(); $objResponse->addAssign("paymentInfo", "innerHTML", $paymentinfoHtml); if ($config['epayment']['epayment_status'] != 'enable' || $config['epayment']['paypal_payment_url'] == '' || $config['epayment']['paypal_account'] == '' || $config['epayment']['pdt_identity_token'] == '' || $config['epayment']['asterbilling_url'] == '' || $config['epayment']['amount'] == '' || $config['epayment']['currency_code'] == '') { $rechargeEable = false; } else { $identity_token = $config['epayment']['pdt_identity_token']; $receiver_email = $config['epayment']['paypal_account']; $currency_code = $config['epayment']['currency_code']; } } elseif ($_SESSION['curuser']['usertype'] == 'groupadmin') { $reseller_row = astercrm::getRecordByID($_SESSION['curuser']['resellerid'], 'resellergroup'); if ($reseller_row['epayment_status'] != 'enable') { $rechargeEable = false; } else { $identity_token = $reseller_row['epayment_identity_token']; $receiver_email = $reseller_row['epayment_account']; $currency_code = $config['epayment']['currency_code']; } } $objResponse->addAssign("divNav", "innerHTML", common::generateManageNav($skin, $_SESSION['curuser']['country'], $_SESSION['curuser']['language'])); $objResponse->addAssign("divCopyright", "innerHTML", common::generateCopyright($skin)); $infoHtml = InfomationHtml(); $objResponse->addAssign("info", "innerHTML", $infoHtml); if ($rechargeEable) { $rechargeInfoHtml = '<table border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#F0F0F0" width="600"> <tr> <td width="26%" height="39" class="td font" align="center">' . $locate->Translate('Recharge By Paypal') . ' </td> <td width="74%" class="td font" align="center"> </td> </tr> <tr><td height="10" class="td"></td> <td class="td font" align="center"> </td> </tr> </table> <table border="0" align="center" cellpadding="1" cellspacing="1" bgcolor="#F0F0F0" id="menu" width="600"> <tr bgcolor="#F7F7F7"> <td align="center" valign="top"><b>'; if ($get_item["action"] == 'success') { if ($get_item['tx'] != '') { $txn_res = astercrm::getRecordByField('epayment_txn_id', $get_item['tx'], 'credithistory'); // check that txn_id has not been previously processed if ($txn_res['id'] > 0) { $rechargeInfoHtml .= $locate->Translate('payment_success'); } else { if ($identity_token != '') { $p = new paypal_class(); $p->verify_url = $config['epayment']['paypal_verify_url']; if ($config['epayment']['pdt_log']) { $return = $p->paypal_pdt_return($get_item['tx'], $identity_token, true); } else { $return = $p->paypal_pdt_return($get_item['tx'], $identity_token); } if ($return['flag'] == 'SUCCESS') { $errorFlag = 0; // check that receiver_email is your Primary PayPal email if ($return['pdt']['receiver_email'] != $receiver_email) { $rechargeInfoHtml .= $locate->Translate('payment_receiver_error') . '</br>'; $errorFlag += 1; } // check that payment_amount/payment_currency are correct if ($return['pdt']['mc_currency'] != $currency_code) { $rechargeInfoHtml .= $locate->Translate('payment_currency_error') . '</br>'; $errorFlag += 1; } if ($return['pdt']['payment_status'] == "Completed") { if ($errorFlag > 0) { $rechargeInfoHtml .= $locate->Translate('payment_order_error') . "</br>" . $locate->Translate('payment_may_completed'); } else { // process Order 不再用pdt处理订单,等待ipn处理 //$process_res = processOrder($return['pdt']); sleep(1); $infoHtml = InfomationHtml(); $objResponse->addAssign("info", "innerHTML", $infoHtml); $rechargeInfoHtml .= $locate->Translate('payment_success'); } } else { $rechargeInfoHtml .= $locate->Translate('payment_failed'); } } else { //PDT return failed $rechargeInfoHtml .= $locate->Translate('payment_return_failed'); } } } } else { $rechargeInfoHtml = rechargeHtml(); $objResponse->addAssign("rechargeInfo", "innerHTML", $rechargeInfoHtml); return $objResponse; } } elseif ($get_item["action"] == 'cancel') { $rechargeInfoHtml .= $locate->Translate('payment_canceled'); } else { $rechargeInfoHtml = rechargeHtml(); $objResponse->addAssign("rechargeInfo", "innerHTML", $rechargeInfoHtml); return $objResponse; } $rechargeInfoHtml .= '</b> <a href="profile.php" >' . $locate->Translate('Return') . '</a></td></tr></table>'; $objResponse->addAssign("rechargeInfo", "innerHTML", $rechargeInfoHtml); } return $objResponse; }
function searchFormSubmit($searchFormValue, $numRows = null, $limit = null, $id = null, $type = null) { global $locate, $db; $objResponse = new xajaxResponse(); $searchField = array(); $searchContent = array(); $optionFlag = $searchFormValue['optionFlag']; $searchContent = $searchFormValue['searchContent']; //搜索内容 数组 $searchField = $searchFormValue['searchField']; //搜索条件 数组 $searchType = $searchFormValue['searchType']; $ordering = $searchFormValue['ordering']; $order = $searchFormValue['order']; $divName = "grid"; if ($optionFlag == "export" || $optionFlag == "exportcsv") { $joinstr = Customer::createSqlWithStype($searchField, $searchContent, $searchType, 'tickets'); //得到要导出的sql语句 $joinstr = ltrim($joinstr, 'AND'); $sql = "SELECT tickets.ticketname,astercrm_accountgroup.groupname, campaign.campaignname,ticketcategory.ticketname AS parentname,tickets.cretime,tickets.creby FROM tickets LEFT JOIN astercrm_accountgroup ON astercrm_accountgroup.id = tickets.groupid LEFT JOIN campaign ON campaign.id = tickets.campaignid LEFT JOIN tickets AS ticketcategory ON ticketcategory.id=tickets.fid"; if ($joinstr != '') { $sql .= " WHERE " . $joinstr; } $_SESSION['export_sql'] = $sql . ''; $objResponse->addAssign("hidSql", "value", $sql); //赋值隐含域 $objResponse->addAssign("maintable", "value", 'tickets'); //赋值隐含域 $objResponse->addAssign("exporttype", "value", $optionFlag); $objResponse->addScript("document.getElementById('exportForm').submit();"); } elseif ($optionFlag == "delete") { astercrm::deletefromsearch($searchContent, $searchField, $searchType, 'tickets'); $html = createGrid($searchFormValue['numRows'], $searchFormValue['limit'], '', '', $order, $divName, $ordering, ''); $objResponse->addClear("msgZone", "innerHTML"); $objResponse->addAssign($divName, "innerHTML", $html); } elseif ($type == "delete") { $myrow = astercrm::getRecordByField('ticketname', $_SESSION['curuser']['ticketname'], 'tickets'); $myid = $myrow['id']; //echo $myid;exit; if ($myid == $id) { $objResponse->addAlert($locate->Translate("Can not delete this ticket")); return $objResponse->getXML(); } $res = Customer::deleteRecord($id, 'tickets'); if ($res) { $html = createGrid($searchFormValue['numRows'], $searchFormValue['limit'], $searchField, $searchContent, $order, $divName, $ordering, $searchType); $objResponse = new xajaxResponse(); $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("delete_rec")); $objResponse->addAssign($divName, "innerHTML", $html); } else { $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("rec_cannot_delete")); } } else { $html = createGrid($numRows, $limit, $searchField, $searchContent, $order, $divName, $ordering, $searchType); $objResponse->addClear("msgZone", "innerHTML"); $objResponse->addAssign($divName, "innerHTML", $html); } return $objResponse->getXML(); }
/** * function to verify user data * * @param $aFormValues (array) login form data $aFormValues['username'] $aFormValues['password'] $aFormValues['locate'] * @return $objResponse * @session $_SESSION['curuser']['username'] $_SESSION['curuser']['extension'] $_SESSION['curuser']['extensions'] $_SESSION['curuser']['country'] $_SESSION['curuser']['language'] $_SESSION['curuser']['channel'] $_SESSION['curuser']['accountcode'] */ function processAccountData($aFormValues) { global $db, $locate, $config; $objResponse = new xajaxResponse(); $bError = false; $loginError = false; list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']); $locate = new Localization($_SESSION['curuser']['country'], $_SESSION['curuser']['language'], 'login'); /* check whether the pear had been installed */ $pear_exists_result = class_exists('PEAR'); if (empty($pear_exists_result)) { $objResponse->addAlert($locate->Translate("Please install php pear")); return $objResponse; } if (!$bError) { //$query = "SELECT * FROM account WHERE username='******'username'] . "'"; //$res = $db->query($query); $row = astercrm::getRecordByField("username", $aFormValues['username'], "astercrm_account"); if ($row['id'] != '') { if ($row['password'] == $aFormValues['password']) { $identity = astercrm::calculateAgentOntime('login', trim($aFormValues['username'])); if ($identity) { $update = astercrm::updateAgentOnlineTime('login', date('Y-m-d H:i:s'), $row['id']); } if ($aFormValues['rememberme'] == "forever") { // set cookies for three years setcookie("username", $aFormValues['username'], time() + 94608000); setcookie("password", $aFormValues['password'], time() + 94608000); setcookie("language", $aFormValues['locate'], time() + 94608000); } else { // destroy cookies setcookie("username", "", time() - 3600); setcookie("password", "", time() - 3600); setcookie("language", "", time() - 3600); $username = ''; $password = ''; $language = 'en_US'; $checked = false; } $_SESSION = array(); $_SESSION['curuser']['username'] = trim($aFormValues['username']); $_SESSION['curuser']['extension'] = $row['extension']; $_SESSION['curuser']['usertype'] = $row['usertype']; $_SESSION['curuser']['usertype_id'] = $row['usertype_id']; $_SESSION['curuser']['accountid'] = $row['id']; $_SESSION['curuser']['accountcode'] = $row['accountcode']; $_SESSION['curuser']['agent'] = $row['agent']; $_SESSION['curuser']['callerid'] = trim($row['callerid']); $_SESSION['curuser']['update_online_interval'] = date("Y-m-d H:i:s"); // added by solo 2007-10-90 $_SESSION['curuser']['channel'] = $row['channel']; $_SESSION['curuser']['extensions'] = array(); $_SESSION['curuser']['groupid'] = $row['groupid']; $privilege = array(); if ($row['usertype_id'] > 0) { $privileges = $db->getAll("SELECT * FROM user_privileges WHERE user_type_id='" . $row['usertype_id'] . "'"); foreach ($privileges as $p) { $privilege[$p['page']][$p['action']] = 1; } } $_SESSION['curuser']['privileges'] = $privilege; if ($row['extensions'] != '') { $_SESSION['curuser']['extensions'] = split(',', $row['extensions']); } //check extensions if exists in account table foreach ($_SESSION['curuser']['extensions'] as $key => $value) { $exten_row = astercrm::getRecordByField("username", $value, "astercrm_account"); if ($exten_row['id'] == '') { unset($_SESSION['curuser']['extensions'][$key]); } } // if it's a group admin, then add all group extension to it if ($row['usertype'] == 'groupadmin' || is_array($_SESSION['curuser']['privileges']['systemstatus']) || is_array($_SESSION['curuser']['privileges']['import'])) { $_SESSION['curuser']['memberExtens'] = array(); $_SESSION['curuser']['memberNames'] = array(); $_SESSION['curuser']['memberAgents'] = array(); $groupList = astercrm::getGroupMemberListByID($row['groupid']); while ($groupList->fetchInto($groupRow)) { $_SESSION['curuser']['memberExtens'][] = $groupRow['extension']; $_SESSION['curuser']['memberNames'][] = $groupRow['username']; if ($groupRow['agent'] != '') { $_SESSION['curuser']['memberAgents'][] = $groupRow['agent']; } } } list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']); // get group information $_SESSION['curuser']['group'] = astercrm::getRecordByField("groupid", $row['groupid'], "astercrm_accountgroup"); if ($row['dialinterval'] != 0) { $_SESSION['curuser']['dialinterval'] = $row['dialinterval']; } else { $row_group = astercrm::getRecordByField("groupid", $row['groupid'], "astercrm_accountgroup"); $_SESSION['curuser']['dialinterval'] = $_SESSION['curuser']['group']['agentinterval']; } if ($_SESSION['curuser']['groupid'] > 0) { $sql = "SELECT id,campaignname,queuename,queue_context,use_ext_chan FROM campaign WHERE queuename != '' AND groupid='" . $_SESSION['curuser']['groupid'] . "' AND enable= 1 ORDER BY queuename ASC"; $result =& $db->query($sql); $dataArray = array(); while ($row = $result->fetchRow()) { $dataArray[$row['id']] = $row; } $_SESSION['curuser']['campaign_queue'] = $dataArray; } /* if you dont want check manager status and show device status when user login please uncomment these three line */ //$objResponse->addAlert($locate->Translate("Login success")); // if($_SESSION['curuser']['agent'] != ''){ // $msg = $locate->Translate("choose user mode"); // $objResponse->addScript("selectmode('".$msg."')"); // return $objResponse; // } //$_SESSION['error_report'] = $config['error_report']['error_report_level']; //$objResponse->addScript('window.location.href="portal.php";'); //return $objResponse; //check AMI connection $myAsterisk = new Asterisk(); $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); //$html .= $locate->Translate("server_connection_test"); if ($res) { //$html .= '<font color=green>'.$locate->Translate("pass").'</font><br>'; //$html .= '<b>'.$_SESSION['curuser']['extension'].' '.$locate->Translate("device_status").'</b><br>'; //$html .= asterisk::getPeerIP($_SESSION['curuser']['extension']).'<br>'; //$html .= asterisk::getPeerStatus($_SESSION['curuser']['extension']).'<br>'; $v = $myAsterisk->Command("core show version"); $v = explode(' ', $v['data']); $version = $v['2']; $_SESSION['asterisk']['version'] = $version; $version_arr = split('\\.', $version); if ($version_arr['1'] > 4) { $_SESSION['asterisk']['paramdelimiter'] = ','; } else { $_SESSION['asterisk']['paramdelimiter'] = '|'; } } else { $_SESSION['asterisk']['paramdelimiter'] = '|'; //$html .= '<font color=red>'.$locate->Translate("no_pass").'</font>'; } $_SESSION['error_report'] = $config['error_report']['error_report_level']; //clear socket_url session to $_SESSION['socket_url_flag'] = 'yes'; $objResponse->addScript('window.location.href="portal.php";'); return $objResponse; $html .= '<input type="button" value="' . $locate->Translate("continue") . '" id="btnContinue" name="btnContinue" onclick="window.location.href=\'portal.php\';">'; $objResponse->addAssign("formDiv", "innerHTML", $html); $objResponse->addClear("titleDiv", "innerHTML"); $objResponse->addScript("xajax.\$('btnContinue').focus();"); } else { $loginError = true; } } else { $loginError = true; } if (!$loginError) { return $objResponse; } else { $objResponse->addAlert($locate->Translate("login_failed")); $objResponse->addAssign("loginButton", "value", $locate->Translate("Submit")); $objResponse->addAssign("loginButton", "disabled", false); return $objResponse; } } else { $objResponse->addAssign("loginButton", "value", $locate->Translate("Submit")); $objResponse->addAssign("loginButton", "disabled", false); } return $objResponse; }