Ejemplo n.º 1
0
function searchFormSubmit($searchFormValue, $numRows, $limit, $id, $type)
{
    global $locate, $db, $config;
    $objResponse = new xajaxResponse();
    $searchField = array();
    $searchContent = array();
    $optionFlag = $searchFormValue['optionFlag'];
    $searchContent = $searchFormValue['searchContent'];
    //搜索内容 数组
    $searchField = $searchFormValue['searchField'];
    //搜索条件 数组
    $searchType = $searchFormValue['searchType'];
    //搜索方式 数组
    $divName = "grid";
    if ($optionFlag == "export") {
        $sql = astercrm::getSql($searchContent, $searchField, $searchType, 'clid');
        //得到要导出的sql语句
        $_SESSION['export_sql'] = $sql;
        $objResponse->addAssign("hidSql", "value", $sql);
        //赋值隐含域
        $objResponse->addScript("document.getElementById('exportForm').submit();");
    } elseif ($optionFlag == "delete") {
        if (empty($_SESSION['curuser']['usertype'])) {
            $objResponse->addAlert($locate->Translate("Session time out,please try again"));
            return $objResponse->getXML();
        }
        if ($_SESSION['curuser']['usertype'] == 'groupadmin') {
            $searchContent[] = $_SESSION['curuser']['groupid'];
            $searchField[] = 'groupid';
            $searchType[] = 'equal';
        } elseif ($_SESSION['curuser']['usertype'] == 'reseller') {
            $searchContent[] = $_SESSION['curuser']['resellerid'];
            $searchField[] = 'resellerid';
            $searchType[] = 'equal';
        }
        if ($config['synchronize']['delete_by_use_history']) {
            astercrm::deleteToHistoryFromSearch($searchContent, $searchField, $searchType, 'clid');
        } else {
            astercrm::deletefromsearch($searchContent, $searchField, $searchType, 'clid');
        }
        $html = createGrid($numRows, $limit, '', '', '', $divName, "", $searchType);
        $objResponse->addClear("msgZone", "innerHTML");
        $objResponse->addAssign($divName, "innerHTML", $html);
    } elseif ($type == "delete") {
        if (empty($_SESSION['curuser']['usertype'])) {
            $objResponse->addAlert($locate->Translate("Session time out,please try again"));
            return $objResponse->getXML();
        }
        if ($config['synchronize']['delete_by_use_history']) {
            $res = Customer::deleteRecordToHistory('id', $id, 'clid');
        } else {
            $res = Customer::deleteRecord($id, 'clid');
        }
        if ($res) {
            $html = createGrid($searchFormValue['numRows'], $searchFormValue['limit'], $searchField, $searchContent, $searchField, $divName, "", $searchType);
            $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("record deleted"));
            $objResponse->addAssign($divName, "innerHTML", $html);
        } else {
            $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("record cannot be deleted"));
        }
    } else {
        $html = createGrid($numRows, $limit, $searchField, $searchContent, $searchField, $divName, "", $searchType);
        $objResponse->addClear("msgZone", "innerHTML");
        $objResponse->addAssign($divName, "innerHTML", $html);
    }
    return $objResponse->getXML();
}
Ejemplo n.º 2
0
 function insertNewAccountForBilling($f)
 {
     global $db;
     $f = astercrm::variableFiler($f);
     $sql = "INSERT INTO clid SET " . "clid='" . $f['extension'] . "', " . "pin='" . $f['password'] . "', " . "display='" . $f['username'] . "', " . "groupid = " . $f['groupid'] . ", " . "resellerid = " . $f['resellerid'] . ", " . "creditlimit = '" . $f['creditlimit'] . "'," . "limittype = '" . $f['limittype'] . "'," . "addtime = now() ";
     astercrm::events($sql);
     $res =& $db->query($sql);
     return $res;
 }
Ejemplo n.º 3
0
function exportDuplicates($f)
{
    $objResponse = new xajaxResponse();
    $joinstr = astercrm::createSqlWithStype($f['searchField'], $f['searchContent'], $f['searchType'], "diallist");
    $ajoinstr = str_replace('diallist.', 'a.', $joinstr);
    if ($_SESSION['curuser']['usertype'] != 'admin') {
        $ajoinstr .= " AND a.groupid = '" . $_SESSION['curuser']['groupid'] . "'";
        $joinstr .= " AND diallist.groupid = '" . $_SESSION['curuser']['groupid'] . "'";
    }
    $query = "SELECT a.*,campaign.campaignname FROM diallist as a LEFT JOIN campaign ON campaign.id=a.campaignid,( SELECT * FROM diallist WHERE 1 " . $joinstr . " GROUP BY dialnumber HAVING COUNT(dialnumber) > 1 ) as b WHERE a.dialnumber = b.dialnumber AND a.id <> b.id " . $ajoinstr . " ";
    $_SESSION['export_sql'] = $query;
    $objResponse->addAssign("hidSql", "value", $query);
    //赋值隐含域
    $objResponse->addAssign("maintable", "value", 'diallist_dup');
    //赋值隐含域
    $objResponse->addAssign("exporttype", "value", 'exportcsv');
    $objResponse->addScript("document.getElementById('exportForm').submit();");
    return $objResponse;
}
Ejemplo n.º 4
0
 function &getNumRowsMorewithstype($filter, $content, $stype, $table)
 {
     global $db;
     $joinstr = astercrm::createSqlWithStype($filter, $content, $stype);
     $sql = "SELECT COUNT(*) FROM contact LEFT JOIN customer ON customer.id = contact.customerid LEFT JOIN note on note.contactid = contact.id WHERE ";
     if ($_SESSION['curuser']['usertype'] == 'admin') {
         $sql .= " ";
     } else {
         $sql .= " contact.groupid = " . $_SESSION['curuser']['groupid'] . " AND ";
     }
     if ($joinstr != '') {
         $joinstr = ltrim($joinstr, 'AND');
         //去掉最左边的AND
         $sql .= " " . $joinstr;
     } else {
         $sql .= " 1";
     }
     Customer::events($sql);
     $res =& $db->getOne($sql);
     return $res;
 }
Ejemplo n.º 5
0
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") {
        $sql = astercrm::getSql($searchContent, $searchField, $searchType, 'worktimes');
        //得到要导出的sql语句
        $_SESSION['export_sql'] = $sql;
        $objResponse->addAssign("hidSql", "value", $sql);
        //赋值隐含域
        $objResponse->addScript("document.getElementById('exportForm').submit();");
    } elseif ($type == "delete") {
        $row = Customer::getRecordByField('worktime_id', $id, 'worktimepackage_worktimes');
        if ($row['id'] != '') {
            $objResponse->addAlert($locate->Translate("this worktime in one or more package, can not delete"));
            return $objResponse->getXML();
        }
        $res = Customer::deleteRecord($id, 'worktimes');
        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();
}
Ejemplo n.º 6
0
    /**
     *  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)
    {
        global $locate, $config;
        $rate =& Customer::getRecordByID($id, 'myrate');
        /*
        $group = astercrm::getAll('accountgroup');
        
        if ($_SESSION['curuser']['usertype'] == 'admin'){
        	$groupoptions .= '<select id="groupid" name="groupid">';
        	while	($group->fetchInto($row)){
        		if ($row['id'] == $rate['groupid']){
        			$groupoptions .= "<OPTION value='".$row['id']."' selected>".$row['groupname']."</OPTION>";
        		}else{
        			$groupoptions .= "<OPTION value='".$row['id']."'>".$row['groupname']."</OPTION>";
        		}
        	}
        	$groupoptions .= '</select>';
        }else{
        	while	($group->fetchInto($row)){
        		if ($row['id'] == $_SESSION['curuser']['groupid']){
        			$groupoptions .= $row['groupname'].'<input type="hidden" value="'.$row['id'].'" name="groupid" id="groupid">';
        			break;
        		}
        	}
        }
        */
        $reselleroptions = '';
        $reseller = astercrm::getAll('resellergroup');
        if ($_SESSION['curuser']['usertype'] == 'admin') {
            $reselleroptions .= '<select id="resellerid" name="resellerid" onchange="setGroup();">';
            $reselleroptions .= '<option value="0"></option>';
            while ($reseller->fetchInto($row)) {
                if ($config['synchronize']['display_synchron_server']) {
                    $row['resellername'] = astercrm::getSynchronDisplay($row['id'], $row['resellername']);
                }
                if ($row['id'] == $rate['resellerid']) {
                    $reselleroptions .= "<OPTION value='" . $row['id'] . "' selected>" . $row['resellername'] . "</OPTION>";
                } else {
                    $reselleroptions .= "<OPTION value='" . $row['id'] . "' >" . $row['resellername'] . "</OPTION>";
                }
            }
            $reselleroptions .= '</select>';
        } else {
            while ($reseller->fetchInto($row)) {
                if ($row['id'] == $rate['resellerid']) {
                    if ($config['synchronize']['display_synchron_server']) {
                        $row['resellername'] = astercrm::getSynchronDisplay($row['id'], $row['resellername']);
                    }
                    $reselleroptions .= $row['resellername'] . '<input type="hidden" value="' . $row['id'] . '" name="resellerid" id="resellerid">';
                    break;
                }
            }
        }
        $group = astercrm::getAll('accountgroup', 'resellerid', $rate['resellerid']);
        if ($_SESSION['curuser']['usertype'] == 'admin' || $_SESSION['curuser']['usertype'] == 'reseller') {
            $groupoptions .= '<select id="groupid" name="groupid">';
            $groupoptions .= "<OPTION value='0'></OPTION>";
            while ($group->fetchInto($row)) {
                if ($config['synchronize']['display_synchron_server']) {
                    $row['groupname'] = astercrm::getSynchronDisplay($row['id'], $row['groupname']);
                }
                if ($row['id'] == $rate['groupid']) {
                    $groupoptions .= "<OPTION value='" . $row['id'] . "' selected>" . $row['groupname'] . "</OPTION>";
                } else {
                    $groupoptions .= "<OPTION value='" . $row['id'] . "' >" . $row['groupname'] . "</OPTION>";
                }
            }
            $groupoptions .= '</select>';
        } else {
            while ($group->fetchInto($row)) {
                if ($row['id'] == $rate['groupid']) {
                    if ($config['synchronize']['display_synchron_server']) {
                        $row['groupname'] = astercrm::getSynchronDisplay($row['id'], $row['groupname']);
                    }
                    $groupoptions .= $row['groupname'] . '<input type="hidden" value="' . $row['id'] . '" name="groupid" id="groupid">';
                    break;
                }
            }
        }
        $html = '
			<!-- No edit the next line -->
			<form method="post" name="f" id="f">
			
			<table border="1" width="100%" class="adminlist">
				<tr>
					<td nowrap align="left">' . $locate->Translate("prefix") . '</td>
					<td align="left"><input type="hidden" id="id" name="id" value="' . $rate['id'] . '"><input type="text" id="dialprefix" name="dialprefix" size="25" maxlength="30" value="' . $rate['dialprefix'] . '" onKeyUp="xajax_showBuyRate(this.value);" onclick="xajax_showBuyRate(this.value);">&nbsp;<span id="spanShowBuyRate" name="spanShowBuyRate"></span></td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("length") . '</td>
					<td align="left"><input type="text" id="numlen" name="numlen" size="10" maxlength="10" value="' . $rate['numlen'] . '"></td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("Destination") . '</td>
					<td align="left"><input type="text" id="destination" name="destination" size="25" maxlength="30" value="' . $rate['destination'] . '"></td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("Connect charge") . '</td>
					<td align="left"><input type="text" id="connectcharge" name="connectcharge" size="20" maxlength="20" value="' . $rate['connectcharge'] . '"></td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("Init block") . '</td>
					<td align="left"><input type="text" id="initblock" name="initblock" size="25" maxlength="100" value="' . $rate['initblock'] . '"></td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("Rate") . '</td>
					<td align="left"><input type="text" id="rateinitial" name="rateinitial" size="25" maxlength="30" value="' . $rate['rateinitial'] . '"></td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("Billing block") . '</td>
					<td align="left"><input type="text" id="billingblock" name="billingblock" size="25" maxlength="30" value="' . $rate['billingblock'] . '"></td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("Reseller") . '</td>
					<td align="left">' . $reselleroptions . '</td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("Group") . '</td>
					<td align="left">
					' . $groupoptions . '
					</td>
				</tr>
				<tr>
					<td colspan="2" align="center">
						<button id="submitButton" onClick=\'xajax_update(xajax.getFormValues("f"));return false;\'>' . $locate->Translate("Continue") . '</button>
					</td>
				</tr>

			 </table>
			';
        $html .= '
				</form>
				*' . $locate->Translate("obligatory_fields") . '
				';
        return $html;
    }
Ejemplo n.º 7
0
 function &getNumRowsMorewithstype($filter, $content, $stype, $table)
 {
     global $db;
     $joinstr = astercrm::createSqlWithStype($filter, $content, $stype, "worktimepackages");
     $sql = "SELECT COUNT(*) FROM worktimepackages LEFT JOIN astercrm_accountgroup ON astercrm_accountgroup.id = worktimepackages.groupid WHERE ";
     if ($_SESSION['curuser']['usertype'] == 'admin') {
         $sql .= " ";
     } else {
         $sql .= " worktimepackages.groupid = " . $_SESSION['curuser']['groupid'] . " AND ";
     }
     if ($joinstr != '') {
         $joinstr = ltrim($joinstr, 'AND');
         //去掉最左边的AND
         $sql .= " " . $joinstr;
     } else {
         $sql .= " 1";
     }
     Customer::events($sql);
     $res =& $db->getOne($sql);
     return $res;
 }
Ejemplo n.º 8
0
 function &getNumRowsMorewithstype($filter, $content, $stype, $table)
 {
     global $db;
     $joinstr = astercrm::createSqlWithStype($filter, $content, $stype);
     if ($joinstr != '') {
         $joinstr = ltrim($joinstr, 'AND');
         //去掉最左边的AND
         $sql = 'SELECT COUNT(*) AS numRows FROM resellergroup WHERE ' . $joinstr;
     } else {
         $sql = "SELECT COUNT(*) AS numRows FROM resellergroup";
     }
     Customer::events($sql);
     $res =& $db->getOne($sql);
     return $res;
 }
Ejemplo n.º 9
0
    /**
     *  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)
    {
        global $locate;
        $account =& Customer::getRecordByID($id, 'account');
        /*
        		$group = astercrm::getAll('accountgroup');
        
        		if ($_SESSION['curuser']['usertype'] == 'admin'){
        			$groupoptions .= '<select id="groupid" name="groupid">';
        			while	($group->fetchInto($row)){
        				if ($row['id'] == $account['groupid']){
        					$groupoptions .= "<OPTION value='".$row['id']."' selected>".$row['groupname']."</OPTION>";
        				}else{
        					$groupoptions .= "<OPTION value='".$row['id']."'>".$row['groupname']."</OPTION>";
        				}
        			}
        			if ($account['groupid'] == 0 ){
        				$groupoptions .= "<OPTION value='0' selected></OPTION>";
        			}else{
        				$groupoptions .= "<OPTION value='0'></OPTION>";
        			}
        			$groupoptions .= '</select>';
        		}else{
        			while	($group->fetchInto($row)){
        				if ($row['id'] == $account['groupid']){
        					$groupoptions .= $row['groupname'].'<input type="hidden" value="'.$row['id'].'" name="groupid" id="groupid">';
        					break;
        				}
        			}
        		}
        */
        $reselleroptions = '';
        $reseller = astercrm::getAll('resellergroup');
        if ($_SESSION['curuser']['usertype'] == 'admin') {
            $reselleroptions .= '<select id="resellerid" name="resellerid" onchange="setGroup();">';
            $reselleroptions .= '<option value="0"></option>';
            while ($reseller->fetchInto($row)) {
                if ($row['id'] == $account['resellerid']) {
                    $reselleroptions .= "<OPTION value='" . $row['id'] . "' selected>" . $row['resellername'] . "</OPTION>";
                } else {
                    $reselleroptions .= "<OPTION value='" . $row['id'] . "' >" . $row['resellername'] . "</OPTION>";
                }
            }
            $reselleroptions .= '</select>';
        } else {
            while ($reseller->fetchInto($row)) {
                if ($row['id'] == $account['resellerid']) {
                    $reselleroptions .= $row['resellername'] . '<input type="hidden" value="' . $row['id'] . '" name="resellerid" id="resellerid">';
                    break;
                }
            }
        }
        $group = astercrm::getAll('accountgroup', 'resellerid', $account['resellerid']);
        if ($_SESSION['curuser']['usertype'] == 'admin' || $_SESSION['curuser']['usertype'] == 'reseller') {
            $groupoptions .= '<select id="groupid" name="groupid">';
            $groupoptions .= "<OPTION value='0'></OPTION>";
            while ($group->fetchInto($row)) {
                if ($row['id'] == $account['groupid']) {
                    $groupoptions .= "<OPTION value='" . $row['id'] . "' selected>" . $row['groupname'] . "</OPTION>";
                } else {
                    $groupoptions .= "<OPTION value='" . $row['id'] . "' >" . $row['groupname'] . "</OPTION>";
                }
            }
            $groupoptions .= '</select>';
        } else {
            while ($group->fetchInto($row)) {
                if ($row['id'] == $account['groupid']) {
                    $groupoptions .= $row['groupname'] . '<input type="hidden" value="' . $row['id'] . '" name="groupid" id="groupid">';
                    break;
                }
            }
        }
        $html = '
			<!-- No edit the next line -->
			<form method="post" name="f" id="f">
			
			<table border="1" width="100%" class="adminlist">
				<tr>
					<td nowrap align="left">' . $locate->Translate("username") . '</td>
					<td align="left"><input type="hidden" id="id" name="id" value="' . $account['id'] . '"><input type="text" id="username" name="username" size="25" maxlength="30" value="' . $account['username'] . '"></td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("password") . '</td>
					<td align="left"><input type="text" id="password" name="password" size="25" maxlength="30" value="' . $account['password'] . '"></td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("usertype") . '</td>
					<td align="left">
					<select id="usertype" name="usertype">
						<option value="" ';
        if ($account['usertype'] == '') {
            $html .= ' selected ';
        }
        $html .= '></option>';
        if ($_SESSION['curuser']['usertype'] == 'admin') {
            $html .= '<option value="admin"';
            if ($account['usertype'] == 'admin') {
                $html .= ' selected ';
            }
            $html .= ' >' . $locate->Translate("Admin") . '</option>';
            $html .= '<option value="reseller"';
            if ($account['usertype'] == 'reseller') {
                $html .= ' selected ';
            }
            $html .= ' >' . $locate->Translate("Reseller") . '</option>';
        }
        if ($_SESSION['curuser']['usertype'] == 'admin' || $_SESSION['curuser']['usertype'] == 'reseller') {
            $html .= '<option value="groupadmin"';
            if ($account['usertype'] == 'groupadmin') {
                $html .= ' selected ';
            }
            $html .= ' >' . $locate->Translate("Group Admin") . '</option>';
        }
        $html .= ' <option value="operator"';
        if ($account['usertype'] == 'operator') {
            $html .= ' selected ';
        }
        $html .= '>' . $locate->Translate("Operator") . '</option>';
        $html .= '</select>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("Reseller") . '</td>
					<td align="left">' . $reselleroptions . '</td>
				</tr>
				<tr>
					<td nowrap align="left">' . $locate->Translate("Group") . '</td>
					<td align="left">
					' . $groupoptions . '
					</td>
				</tr>
				<tr>
					<td colspan="2" align="center"><button id="submitButton" onClick=\'xajax_update(xajax.getFormValues("f"));return false;\'>' . $locate->Translate("Continue") . '</button></td>
				</tr>

			 </table>
			';
        $html .= '
				</form>
				' . $locate->Translate("obligatory fields") . '
				';
        return $html;
    }
Ejemplo n.º 10
0
 function getOnlineSql($searchContent, $searchField, $searchType = array(), $table, $fields = '', $leftjoins = array())
 {
     global $db, $config;
     $updateTimeInterval = $config['system']['update_online_interval'] * 60;
     $joinstr = astercrm::createSqlWithStype($searchField, $searchContent, $searchType, $table);
     $fieldstr = '';
     if (is_array($fields)) {
         foreach ($fields as $field => $alias) {
             if (!is_numeric($field)) {
                 $fieldstr .= " " . $field . " AS " . $alias . ",";
             } else {
                 $fieldstr .= " " . $alias . ",";
             }
         }
     }
     $leftStr = '';
     if (!empty($leftjoins)) {
         foreach ($leftjoins as $model => $param) {
             // the keys of array $leftjoins are the table which need to left join
             $leftStr .= 'LEFT JOIN ' . $model . ' ON ' . $param[0] . '=' . $param[1] . ' ';
         }
     }
     if ($joinstr != '') {
         $joinstr = ltrim($joinstr, 'AND');
         if ($fieldstr != '') {
             $fieldstr = rtrim($fieldstr, ',');
             $query = "SELECT " . $fieldstr . " FROM " . $table . " " . $leftStr . " WHERE (UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(last_update_time)) < {$updateTimeInterval} AND " . $joinstr;
         } else {
             $query = "SELECT * FROM " . $table . " '" . $leftStr . " WHERE (UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(last_update_time)) < {$updateTimeInterval} AND " . $joinstr;
         }
     } else {
         if ($fieldstr != '') {
             $fieldstr = rtrim($fieldstr, ',');
             $query = "SELECT " . $fieldstr . " FROM " . $table . " " . $leftStr . "WHERE (UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(last_update_time)) < {$updateTimeInterval} ";
         } else {
             $query = "SELECT * FROM " . $table . " WHERE (UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(last_update_time)) < {$updateTimeInterval} ";
         }
     }
     return $query;
 }
Ejemplo n.º 11
0
 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;
 }
Ejemplo n.º 12
0
function archiveCDR($archiveDate)
{
    global $db, $locate, $config;
    $objResponse = new xajaxResponse();
    $date = date("Y-m-d");
    $end_date = date("Y-m-d", strtotime("{$date} - {$archiveDate} month"));
    if ($config['system']['useHistoryCdr'] == 1) {
        $table = 'historycdr';
    } else {
        $table = 'mycdr';
    }
    $sql = "SELECT calldate FROM {$table} WHERE calldate < '" . $end_date . "' ORDER BY calldate ASC LIMIT 1";
    $start_date = $db->getOne($sql);
    if ($start_date == '') {
        $objResponse->addAlert($locate->Translate('no cdr data early than') . " " . $archiveDate . " " . $locate->Translate('months'));
        $objResponse->addAssign("divMsg", "style.visibility", "hidden");
        $objResponse->addClear("msgZone", "innerHTML");
        return $objResponse->getXML();
    }
    $file_dir = $config['system']['upload_file_path'] . "cdr_archive";
    if (!is_dir($file_dir)) {
        if (!mkdir($file_dir)) {
            $objResponse->addAlert($locate->Translate('cant create archive directory'));
            $objResponse->addAssign("divMsg", "style.visibility", "hidden");
            $objResponse->addClear("msgZone", "innerHTML");
            return $objResponse->getXML();
        }
    }
    $start_date = split('\\ ', $start_date);
    $start_date = $start_date['0'];
    $file_name = $start_date . "_to_" . $end_date;
    if (!($handle = fopen($file_dir . "/" . $file_name . ".csv", 'x'))) {
        $objResponse->addAlert($locate->Translate('cant create archive file'));
        $objResponse->addAssign("divMsg", "style.visibility", "hidden");
        $objResponse->addClear("msgZone", "innerHTML");
        return $objResponse->getXML();
    }
    $sql = "SELECT * FROM {$table} WHERE calldate < '" . $end_date . "' ORDER BY calldate ASC";
    $archiveData = astercrm::exportDataToCSV($sql);
    if (!fwrite($handle, $archiveData)) {
        $objResponse->addAlert($locate->Translate('cant create archive file'));
        $objResponse->addAssign("divMsg", "style.visibility", "hidden");
        $objResponse->addClear("msgZone", "innerHTML");
        return $objResponse->getXML();
    }
    fclose($handle);
    system("tar zcf " . $file_dir . "/" . $file_name . ".tar.gz " . $file_dir . "/" . $file_name . ".csv", $r);
    if ($r === false) {
        $final_file = $file_dir . "/" . $file_name . ".csv";
    } else {
        $final_file = $file_dir . "/" . $file_name . ".tar.gz";
        unlink($file_dir . "/" . $file_name . ".csv");
    }
    $objResponse->addAlert($locate->Translate('archive success') . ", " . $locate->Translate('file save in') . ": " . $final_file);
    $sql = "DELETE FROM {$table} WHERE calldate < '" . $end_date . "'";
    $res = $db->query($sql);
    if ($res == 1) {
        $objResponse->addAlert($locate->Translate('clear cdr date success'));
    } else {
        $objResponse->addAlert($locate->Translate('clear cdr date failed'));
    }
    $html = createGrid(0, ROWSXPAGE);
    $objResponse->addAssign("divMsg", "style.visibility", "hidden");
    $objResponse->addClear("msgZone", "innerHTML");
    $objResponse->addAssign("grid", "innerHTML", $html);
    return $objResponse->getXML();
    //echo $file_name;exit;
}
Ejemplo n.º 13
0
 function updateRemindercallsRecord($f)
 {
     global $db;
     $f = astercrm::variableFiler($f);
     $query = "UPDATE remindercalls SET " . "customerid='" . $f['customerid'] . "', " . "contactid='" . $f['contactid'] . "', " . "phonenumber= '" . $f['phonenumber'] . "', " . "asteriskcallsid= '" . $f['asteriskcallsid'] . "', " . "note= '" . $f['note'] . "', " . "dialtime= '" . $f['dialtime'] . "', " . "groupid = " . $f['groupid'] . ", " . "cretime = now() " . "WHERE id= " . $f['id'] . " ";
     astercrm::events($query);
     $res =& $db->query($query);
     return $res;
 }
Ejemplo n.º 14
0
 function deleteCustomer($id)
 {
     global $customers_db, $config;
     $query = "DELETE FROM " . $config['customers']['customertable'] . " WHERE id = {$id}";
     astercrm::events($query);
     $res =& $customers_db->query($query);
     return $res;
 }
Ejemplo n.º 15
0
function searchFormSubmit($searchFormValue, $numRows, $limit, $id, $type)
{
    global $locate, $db, $config;
    $objResponse = new xajaxResponse();
    $searchField = array();
    $searchContent = array();
    $optionFlag = $searchFormValue['optionFlag'];
    $searchContent = $searchFormValue['searchContent'];
    //搜索内容 数组
    $searchField = $searchFormValue['searchField'];
    //搜索条件 数组
    $searchType = $searchFormValue['searchType'];
    //搜索方式 数组
    $divName = "grid";
    if ($optionFlag == "export") {
        $sql = astercrm::getSql($searchContent, $searchField, $searchType, 'accountgroup');
        //得到要导出的sql语句
        $_SESSION['export_sql'] = $sql;
        $objResponse->addAssign("hidSql", "value", $sql);
        //赋值隐含域
        $objResponse->addScript("document.getElementById('exportForm').submit();");
    } elseif ($type == "delete") {
        if ($config['synchronize']['delete_by_use_history']) {
            $res = Customer::deleteRecordToHistory('groupid', $id, 'clid');
            $res = Customer::deleteRecordToHistory('groupid', $id, 'myrate');
            $res = Customer::deleteRecordToHistory('groupid', $id, 'callshoprate');
            $res = Customer::deleteRecordToHistory('groupid', $id, 'account');
            $res = Customer::deleteRecordToHistory('id', $id, 'accountgroup');
        } else {
            $res = Customer::deleteRecords('groupid', $id, 'clid');
            $res = Customer::deleteRecords('groupid', $id, 'myrate');
            $res = Customer::deleteRecords('groupid', $id, 'callshoprate');
            $res = Customer::deleteRecords('groupid', $id, 'account');
            $res = Customer::deleteRecord($id, 'accountgroup');
        }
        if ($res) {
            $html = createGrid($searchFormValue['numRows'], $searchFormValue['limit'], $searchField, $searchContent, $searchField, $divName, "", $searchType);
            $objResponse = new xajaxResponse();
            $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("delete_rec"));
            $objResponse->addClear("msgZone", "innerHTML");
            $objResponse->addAssign($divName, "innerHTML", $html);
        } else {
            $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("rec_cannot_delete"));
        }
    } else {
        $html = createGrid($numRows, $limit, $searchField, $searchContent, $searchField, $divName, "", $searchType);
        $objResponse->addClear("msgZone", "innerHTML");
        $objResponse->addAssign($divName, "innerHTML", $html);
    }
    return $objResponse->getXML();
}
Ejemplo n.º 16
0
 function updateTrunkinfoRecord($f)
 {
     global $db;
     $f = astercrm::variableFiler($f);
     $query = "UPDATE trunkinfo SET " . "trunkname='" . $f['trunkname'] . "', " . "trunkchannel='" . $f['trunkchannel'] . "', " . "didnumber='" . $f['didnumber'] . "', " . "trunk_number='" . $f['trunk_number'] . "', " . "trunknote='" . $f['trunknote'] . "', " . "cretime= now() " . "WHERE id= " . $f['id'] . " ";
     astercrm::events($query);
     $res =& $db->query($query);
     return $res;
 }
Ejemplo n.º 17
0
 function updateServerRecord($f)
 {
     global $db;
     $f = astercrm::variableFiler($f);
     $query = "UPDATE servers SET " . "name='" . $f['name'] . "', " . "ip='" . $f['ip'] . "', " . "port='" . $f['port'] . "', " . "username= '******'username'] . "', " . "secret='" . $f['secret'] . "', " . "note='" . $f['note'] . "' " . "WHERE id='" . $f['id'] . "'";
     astercrm::events($query);
     $res =& $db->query($query);
     return $res;
 }
Ejemplo n.º 18
0
 function deleteDuplicates($f)
 {
     global $db, $locate;
     $joinstr = astercrm::createSqlWithStype($f['searchField'], $f['searchContent'], $f['searchType'], "diallist");
     $ajoinstr = str_replace('diallist.', 'a.', $joinstr);
     if ($_SESSION['curuser']['usertype'] != 'admin') {
         $ajoinstr .= " AND a.groupid = '" . $_SESSION['curuser']['groupid'] . "'";
         $joinstr .= " AND diallist.groupid = '" . $_SESSION['curuser']['groupid'] . "'";
     }
     $query = "DELETE diallist as a FROM diallist as a ,( SELECT * FROM diallist WHERE 1 " . $joinstr . " GROUP BY dialnumber HAVING COUNT(dialnumber) > 1 ) as b WHERE a.dialnumber = b.dialnumber AND a.id <> b.id " . $ajoinstr . " ";
     $res = $db->query($query);
     return $res;
 }
Ejemplo n.º 19
0
function skipDiallist($dialnumber, $diallistid)
{
    global $locate;
    $objResponse = new xajaxResponse();
    $row = astercrm::getRecordByID($diallistid, 'diallist');
    if ($row['dialnumber'] != '') {
        $row['callresult'] = 'skip';
        astercrm::deleteRecord($row['id'], "diallist");
        $row['dialednumber'] = $phoneNum;
        $row['dialedby'] = $_SESSION['curuser']['extension'];
        $row['trytime'] = $row['trytime'] + 1;
        astercrm::insertNewDialedlist($row);
    } else {
        $objResponse->addAlert($locate->translate("Option failed"));
        return $objResponse;
    }
    $objResponse->addScript("xajax_clearPopup()");
    $objResponse->loadXML(getPrivateDialListNumber($_SESSION['curuser']['extension']));
    return $objResponse;
}
Ejemplo n.º 20
0
function searchFormSubmit($searchFormValue, $numRows, $limit, $id, $type)
{
    global $locate, $db;
    $objResponse = new xajaxResponse();
    $searchField = array();
    $searchContent = array();
    $optionFlag = $searchFormValue['optionFlag'];
    $deleteFlag = $searchFormValue['deleteFlag'];
    $exportFlag = $searchFormValue['exportFlag'];
    $searchContent = $searchFormValue['searchContent'];
    //搜索内容 数组
    $searchField = $searchFormValue['searchField'];
    //搜索条件 数组
    $searchType = $searchFormValue['searchType'];
    //搜索方式 数组
    $divName = "grid";
    if ($exportFlag == "1" || $optionFlag == "export") {
        $sql = astercrm::getSql($searchContent, $searchField, $searchType, 'curcdr');
        //得到要导出的sql语句
        $_SESSION['export_sql'] = $sql;
        $objResponse->addAssign("hidSql", "value", $sql);
        //赋值隐含域
        $objResponse->addScript("document.getElementById('exportForm').submit();");
    } elseif ($deleteFlag == "1" || $optionFlag == "delete") {
        Customer::deleteFromSearch($searchContent, $searchField, $searchType, 'curcdr');
        $html = createGrid($searchFormValue['numRows'], $searchFormValue['limit'], '', '', '', $divName, "", 1, $searchType);
        $objResponse->addClear("msgZone", "innerHTML");
        $objResponse->addAssign($divName, "innerHTML", $html);
    } else {
        if ($type == "delete") {
            $res = Customer::deleteRecord($id, 'curcdr');
            if ($res) {
                $html = createGrid($searchFormValue['numRows'], $searchFormValue['limit'], $searchField, $searchContent, $searchField, $divName, "", 1, $searchType);
                $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("record deleted"));
            } else {
                $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("record cannot be deleted"));
            }
        } else {
            $html = createGrid($numRows, $limit, $searchField, $searchContent, $searchField, $divName, "", 1, $searchType);
        }
        $objResponse->addClear("msgZone", "innerHTML");
        $objResponse->addAssign($divName, "innerHTML", $html);
    }
    return $objResponse->getXML();
}
Ejemplo n.º 21
0
 function &getRecordsFilteredMorewithstype($start, $limit, $filter, $content, $stype, $order, $table)
 {
     global $db;
     $joinstr = astercrm::createSqlWithStype($filter, $content, $stype);
     //<---- change by your function
     $sql = "SELECT * FROM sms_sents WHERE 1 ";
     if ($joinstr != '') {
         $joinstr = ltrim($joinstr, 'AND');
         //去掉最左边的AND
         $sql .= " AND " . $joinstr . "  " . " ORDER BY " . $order . " " . $_SESSION['ordering'] . " LIMIT {$start}, {$limit} {$ordering}";
     }
     Customer::events($sql);
     $res =& $db->query($sql);
     return $res;
 }
Ejemplo n.º 22
0
function deleteByButton($f, $searchFormValue)
{
    $objResponse = new xajaxResponse();
    if (is_array($f['ckb'])) {
        foreach ($f['ckb'] as $vaule) {
            $res_customer = astercrm::deleteRecord($vaule, 'sms_sents');
        }
    }
    $searchContent = $searchFormValue['searchContent'];
    //搜索内容 数组
    $searchField = $searchFormValue['searchField'];
    //搜索条件 数组
    $numRows = $searchFormValue['numRows'];
    $limit = $searchFormValue['limit'];
    $html = createGrid($numRows, $limit, $searchField, $searchContent, $order, 'grid');
    $objResponse->addAssign('grid', "innerHTML", $html);
    return $objResponse->getXML();
}
Ejemplo n.º 23
0
            $filename = 'callshoplogo_' . $_REQUEST['group_id'] . '.' . $file_ext;
            $filepath = $config['system']['upload_file_path'] . '/callshoplogo/';
            if (!is_dir($filepath)) {
                if (!mkdir($filepath)) {
                    echo "<script>alert('" . $locate->Translate("Logo upload faild please check your upload directory") . "');</script>";
                    exit;
                }
            }
            if (!move_uploaded_file($_FILES['callshopLogo']['tmp_name'], $filepath . $filename)) {
                echo "<script>alert('" . $locate->Translate("Logo upload faild1") . "');</script>";
            } else {
                echo "<script>alert('" . $locate->Translate("Logo upload success") . "');</script>";
                $group_row = astercrm::getRecord($_REQUEST['group_id'], 'accountgroup');
                if ($group_row['grouplogo'] != $filename) {
                    unlink($filepath . $group_row['grouplogo']);
                    astercrm::updateField('accountgroup', 'grouplogo', $filename, $_REQUEST['group_id'], 'id');
                }
                //echo "<script>window.parent.location.reload();</script>";
            }
        } else {
            echo "<script>alert('" . $locate->Translate("Logo file must be a image file") . "');</script>";
        }
    }
    exit;
}
//for import
if (isset($_POST['CHECK']) && trim($_POST['CHECK']) == '1') {
    $upload_msg = '';
    $is_vaild = 0;
    if ($_FILES['excel']['name'] != '') {
        //上传的文件
Ejemplo n.º 24
0
 function deleteToHistoryFromSearch($searchContent, $searchField, $searchType = "", $table)
 {
     global $db, $config;
     if (empty($_SESSION['curuser']['usertype'])) {
         return;
     }
     $joinstr = astercrm::createSqlWithStype($searchField, $searchContent, $searchType, $table);
     if ($joinstr != '') {
         $joinstr = ltrim($joinstr, 'AND');
         $history_sql = "INSERT INTO " . $table . "_history SELECT * FROM " . $table . " WHERE " . $joinstr;
         $sql = 'DELETE FROM ' . $table . ' WHERE ' . $joinstr;
     } else {
         if ($_SESSION['curuser']['usertype'] == 'admin') {
             $sql = 'TRUNCATE ' . $table;
             $history_sql = "INSERT INTO " . $table . "_history SELECT * FROM " . $table . " ";
         } else {
             $sql = "DELETE FROM " . $table . " WHERE " . $table . ".groupid = '" . $_SESSION['curuser']['groupid'] . "'";
             $history_sql = "INSERT INTO " . $table . "_history SELECT * FROM " . $table . " WHERE " . $table . ".groupid = '" . $_SESSION['curuser']['groupid'] . "' ";
         }
     }
     Customer::events($history_sql);
     $result =& $db->query($history_sql);
     if ($result) {
         Customer::events($sql);
         $res =& $db->query($sql);
         return $res;
     } else {
         return false;
     }
 }
Ejemplo n.º 25
0
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") {
        $sql = astercrm::getSql($searchContent, $searchField, $searchType, 'astercrm_account');
        //得到要导出的sql语句
        $_SESSION['export_sql'] = $sql;
        $objResponse->addAssign("hidSql", "value", $sql);
        //赋值隐含域
        $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") {
        $arreglo =& Customer::getAllRecords($start, $limit, $order, $_SESSION['curuser']['groupid']);
        $content = '';
        foreach ($arreglo as $agents) {
            if ($agents['agent'] == $id) {
                continue;
            } else {
                $addstr = "\nagent => " . trim($agents['agent']) . ',' . trim($agents['password']) . ',' . trim($agents['name']);
            }
            $content .= $addstr;
        }
        $agentsfile = '/etc/asterisk/agents_astercc.conf';
        if ($fhandle = fopen($agentsfile, 'w')) {
            fwrite($fhandle, $content);
            $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();
}
Ejemplo n.º 26
0
function searchFormSubmit($searchFormValue, $numRows = null, $limit = null, $id = null, $type = null, $order = '')
{
    global $locate, $db;
    #print_r($searchFormValue);exit;
    $objResponse = new xajaxResponse();
    $searchField = array();
    $searchContent = array();
    $searchType = array();
    $optionFlag = $searchFormValue['optionFlag'];
    $searchContent = $searchFormValue['searchContent'];
    //搜索内容 数组
    $searchField = $searchFormValue['searchField'];
    //搜索条件 数组
    $searchType = $searchFormValue['searchType'];
    //搜索方式 数组
    $ordering = $searchFormValue['ordering'];
    $order = $searchFormValue['order'];
    $divName = "grid";
    $allOrAnswer = $searchFormValue['allOrAnswer'];
    #选中的radio值
    if ($optionFlag == "export" || $optionFlag == "exportcsv") {
        $fieldArray = array('mycdr.*', 'astercrm_accountgroup.groupname', 'astercrm_account.username');
        $leftjoinArray = array('astercrm_accountgroup' => array('astercrm_accountgroup.id', 'mycdr.astercrm_groupid'), 'astercrm_account' => array('astercrm_account.id', 'mycdr.accountid'));
        if ($searchFormValue['allOrAnswer'] == 'answered') {
            $searchContent[] = '0';
            $searchField[] = 'billsec';
            $searchType[] = 'more';
        }
        $sql = astercrm::getSql($searchContent, $searchField, $searchType, 'mycdr', $fieldArray, $leftjoinArray);
        //得到要导出的sql语句
        $_SESSION['export_sql'] = $sql;
        $objResponse->addAssign("hidSql", "value", $sql);
        //赋值隐含域
        $objResponse->addAssign("exporttype", "value", $optionFlag);
        $objResponse->addScript("document.getElementById('exportForm').submit();");
    } else {
        if ($type == "delete") {
            $res = Customer::deleteRecord($id, 'account');
            if ($res) {
                $html = createGrid('', '', $searchFormValue['numRows'], $searchFormValue['limit'], $searchField, $searchContent, $order, $divName, $ordering, $searchType, $allOrAnswer);
                $objResponse = new xajaxResponse();
                $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("delete_rec"));
            } else {
                $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("rec_cannot_delete"));
            }
        } else {
            $html .= createGrid('', '', $numRows, $limit, $searchField, $searchContent, $order, $divName, $ordering, $searchType, $allOrAnswer);
        }
        $objResponse->addClear("msgZone", "innerHTML");
        $objResponse->addAssign($divName, "innerHTML", $html);
    }
    return $objResponse->getXML();
}
Ejemplo n.º 27
0
/**
*  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, $config;
    list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']);
    //get locate parameter
    $locate = new Localization($_SESSION['curuser']['country'], $_SESSION['curuser']['language'], 'login');
    $objResponse = new xajaxResponse();
    $bError = false;
    $loginError = false;
    if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
        if ($_SERVER["HTTP_CLIENT_IP"]) {
            $proxy = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $proxy = $_SERVER["REMOTE_ADDR"];
        }
    } else {
        if (isset($_SERVER["HTTP_CLIENT_IP"])) {
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $ip = $_SERVER["REMOTE_ADDR"];
        }
    }
    $log = array();
    $log['action'] = 'login';
    $log['ip'] = $ip;
    $log['username'] = $aFormValues['username'];
    $log['usertype'] = 'clid';
    $query = "SELECT * FROM account_log WHERE ip='" . $ip . "' AND action='login' ORDER BY id DESC LIMIT 1";
    $res = $db->query($query);
    if ($res->fetchInto($this_ip_log)) {
        $failedtimes = $this_ip_log['failedtimes'];
    }
    if ($failedtimes >= $config['system']['max_incorrect_login'] && $config['system']['max_incorrect_login'] > 0) {
        $objResponse->addAlert($locate->Translate("login failed,your ip is locked for login"));
        $objResponse->addAssign("loginButton", "value", $locate->Translate("submit"));
        $objResponse->addAssign("loginButton", "disabled", false);
        return $objResponse;
    }
    if (!$bError) {
        $query = "SELECT * from clid where clid ='" . $aFormValues['username'] . "'";
        $res = $db->query($query);
        if ($res->fetchInto($clid)) {
            $log['account_id'] = $clid['id'];
            if ($clid['pin'] == $aFormValues['password']) {
                $log['status'] = 'success';
                $log['failedtimes'] = 0;
                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['curuser']['username'] = trim($aFormValues['username']);
                $_SESSION['curuser']['usertype'] = "clid";
                $_SESSION['curuser']['clidid'] = $clid['id'];
                $_SESSION['curuser']['groupid'] = $clid['groupid'];
                list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']);
                $configstatus = common::read_ini_file($config['system']['astercc_path'] . '/astercc.conf', $asterccConfig);
                if ($configstatus == -2) {
                    $html = "(fail to read " . $config['system']['astercc_path'] . "/astercc.conf)";
                    return $html;
                } else {
                    $billingfield = trim($asterccConfig['system']['billingfield']);
                    if ($billingfield == 'accountcode') {
                        $_SESSION['curuser']['billingfield'] = $billingfield;
                    }
                }
                //$objResponse->addAlert($locate->Translate("login_success"));
                $objResponse->addScript('window.location.href="cdr.php";');
            } else {
                $log['failedtimes'] = $failedtimes + 1;
                $log['status'] = 'failed';
                $log['failedcause'] = 'incorrect password';
                $loginError = true;
            }
        } else {
            $log['failedtimes'] = $failedtimes + 1;
            $log['account_id'] = 0;
            $log['status'] = 'failed';
            $log['failedcause'] = 'notexistent clid';
            $loginError = true;
        }
        astercrm::insertAccountLog($log);
        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;
}
Ejemplo n.º 28
0
/**
*  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, $config;
    list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']);
    //get locate parameter
    $locate = new Localization($_SESSION['curuser']['country'], $_SESSION['curuser']['language'], 'login');
    $objResponse = new xajaxResponse();
    /* 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"));
        $objResponse->addAssign("loginButton", "value", $locate->Translate("submit"));
        $objResponse->addAssign("loginButton", "disabled", false);
        return $objResponse;
    }
    if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
        if ($_SERVER["HTTP_CLIENT_IP"]) {
            $proxy = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $proxy = $_SERVER["REMOTE_ADDR"];
        }
    } else {
        if (isset($_SERVER["HTTP_CLIENT_IP"])) {
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $ip = $_SERVER["REMOTE_ADDR"];
        }
    }
    $query = "SELECT * FROM account_log WHERE ip='" . $ip . "' AND action='login' ORDER BY id DESC LIMIT 1";
    $res = $db->query($query);
    if ($res->fetchInto($this_ip_log)) {
        $failedtimes = $this_ip_log['failedtimes'];
    }
    $log = array();
    $log['action'] = 'login';
    $log['ip'] = $ip;
    $log['username'] = $aFormValues['username'];
    if ($failedtimes >= $config['system']['max_incorrect_login'] && $config['system']['max_incorrect_login'] > 0) {
        $objResponse->addAlert($locate->Translate("login failed,your ip is locked for login"));
        $objResponse->addAssign("loginButton", "value", $locate->Translate("submit"));
        $objResponse->addAssign("loginButton", "disabled", false);
        return $objResponse;
    }
    $bError = false;
    $loginError = false;
    if (!$bError) {
        $query = "SELECT account.*, accountgroup.accountcode,accountgroup.allowcallback as allowcallbackgroup,resellergroup.allowcallback as allowcallbackreseller,accountgroup.limittype FROM account LEFT JOIN accountgroup ON accountgroup.id = account.groupid LEFT JOIN resellergroup ON resellergroup.id = account.resellerid WHERE username='******'username'] . "'";
        $res = $db->query($query);
        if ($res->fetchInto($list)) {
            $log['account_id'] = $list['id'];
            $log['usertype'] = $list['usertype'];
            if ($list['password'] == $aFormValues['password']) {
                $log['status'] = 'success';
                $log['failedtimes'] = 0;
                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);
                    setcookie("pagestyle", $aFormValues['pagestyle'], time() + 94608000);
                } else {
                    // destroy cookies
                    setcookie("username", "", time() - 3600);
                    setcookie("password", "", time() - 3600);
                    setcookie("language", "", time() - 3600);
                    setcookie("pagestyle", $aFormValues['pagestyle'], time() + 94608000);
                    $username = '';
                    $password = '';
                    $language = 'en_US';
                    $checked = false;
                }
                $_SESSION = array();
                $_SESSION['curuser']['username'] = trim($aFormValues['username']);
                $_SESSION['curuser']['usertype'] = $list['usertype'];
                $_SESSION['curuser']['ipaddress'] = $_SERVER["REMOTE_ADDR"];
                $_SESSION['curuser']['userid'] = $list['id'];
                $_SESSION['curuser']['groupid'] = $list['groupid'];
                $_SESSION['curuser']['resellerid'] = $list['resellerid'];
                $_SESSION['curuser']['limittype'] = $list['limittype'];
                $configstatus = common::read_ini_file($config['system']['astercc_path'] . '/astercc.conf', $asterccConfig);
                if ($configstatus == -2) {
                    $html = "(fail to read " . $config['system']['astercc_path'] . "/astercc.conf)";
                    return $html;
                } else {
                    $billingfield = trim($asterccConfig['system']['billingfield']);
                    if ($billingfield == 'accountcode') {
                        $_SESSION['curuser']['billingfield'] = $billingfield;
                    }
                }
                $res = astercrm::getCalleridListByID($list['groupid']);
                while ($res->fetchInto($row)) {
                    $_SESSION['curuser']['extensions'][] = $row['clid'];
                }
                if (!is_array($_SESSION['curuser']['extensions'])) {
                    $_SESSION['curuser']['extensions'] = array();
                }
                if ($list['usertype'] == 'reseller') {
                    $_SESSION['curuser']['allowcallback'] = $list['allowcallbackreseller'];
                } else {
                    $_SESSION['curuser']['allowcallback'] = $list['allowcallbackgroup'];
                }
                $_SESSION['curuser']['accountcode'] = $list['accountcode'];
                //				if ($list['extensions'] != ''){
                //					$_SESSION['curuser']['extensions'] = split(',',$list['extensions']);
                //				}
                //				else{
                //				}
                list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']);
                /*
                	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']['usertype'] == 'groupadmin' || $_SESSION['curuser']['usertype'] == 'operator') {
                    if ($aFormValues['pagestyle'] == 'classic') {
                        $objResponse->addScript('window.location.href="systemstatus.php";');
                    } else {
                        $objResponse->addScript('window.location.href="systemstatus_simple.php";');
                    }
                } else {
                    $objResponse->addScript('window.location.href="account.php";');
                }
                astercrm::insertAccountLog($log);
                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>';
                } else {
                    $html .= '<font color=red>' . $locate->Translate("no_pass") . '</font>';
                }
                if ($aFormValues['pagestyle'] == 'classic') {
                    $html .= '<input type="button" value="' . $locate->Translate("continue") . '" id="btnContinue" name="btnContinue" onclick="window.location.href=\'systemstatus.php\';">';
                } else {
                    $html .= '<input type="button" value="' . $locate->Translate("continue") . '" id="btnContinue" name="btnContinue" onclick="window.location.href=\'systemstatus_simple.php\';">';
                }
                $objResponse->addAssign("formDiv", "innerHTML", $html);
                $objResponse->addClear("titleDiv", "innerHTML");
                $objResponse->addScript("xajax.\$('btnContinue').focus();");
            } else {
                //$log['account_id'] = 0;
                $log['failedtimes'] = $failedtimes + 1;
                $log['status'] = 'failed';
                $log['failedcause'] = 'incorrect password';
                $loginError = true;
            }
        } else {
            $log['failedtimes'] = $failedtimes + 1;
            $log['account_id'] = 0;
            $log['usertype'] = 'manager_login';
            $log['status'] = 'failed';
            $log['failedcause'] = 'notexistent user';
            $loginError = true;
        }
        astercrm::insertAccountLog($log);
        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;
}
Ejemplo n.º 29
0
	<?php 
require_once "checkout.common.php";
require_once "db_connect.php";
require_once 'include/asterevent.class.php';
require_once 'include/astercrm.class.php';
require_once 'include/common.class.php';
include 'openflash/php-ofc-library/open-flash-chart.php';
global $locate;
$color = array('#1F8FA1', '#848484', '#ffccff', '#CACFBE', '#DEF799', '#FF33C9', '#FF653F', '#669900', '#ffcc99', '#ffccff', '#99ccff', '#ffcc00');
//reseller array();
$reseller = astercrm::getAll('resellergroup');
while ($reseller->fetchInto($row)) {
    $id = $row['id'];
    $reseller_arr[$id] = $row['resellername'];
}
$group = astercrm::getAll('accountgroup');
while ($group->fetchInto($row)) {
    $id = $row['id'];
    $group_arr[$id] = $row['groupname'];
}
function parseReport($myreport)
{
    global $locate;
    $ary['recordNum'] = $myreport['recordNum'];
    $ary['seconds'] = $myreport['seconds'];
    $ary['credit'] = $myreport['credit'];
    $ary['callshopcredit'] = $myreport['callshopcredit'];
    $ary['resellercredit'] = $myreport['resellercredit'];
    if ($_SESSION['curuser']['usertype'] == 'admin' || $_SESSION['curuser']['usertype'] == 'reseller') {
        $ary['markup'] = $myreport['callshopcredit'] - $myreport['resellercredit'];
    } else {
Ejemplo n.º 30
-1
function placeCall($campaignid)
{
    global $config;
    $myAsterisk = new Asterisk();
    $row =& astercrm::getDialNumber($campaignid);
    // 待拨号码为空
    if (!$row) {
        return false;
    }
    //print_r($row);
    $id = $row['id'];
    $groupid = $row['groupid'];
    $campaignid = $row['campaignid'];
    $phoneNum = $row['dialnumber'];
    $trytime = $row['trytime'];
    $assign = $row['assign'];
    $pdcontext = $row['incontext'];
    $outcontext = $row['outcontext'];
    if ($row['inexten'] != "") {
        $pdextension = $row['inexten'];
    } else {
        if ($row['assign'] != "") {
            $pdextension = $row['assign'];
        } else {
            $pdextension = $row['dialnumber'];
        }
    }
    $res = astercrm::deleteRecord($id, "diallist");
    $f['dialednumber'] = $phoneNum;
    $f['dialedby'] = $_SESSION['curuser']['username'];
    $f['groupid'] = $groupid;
    $f['trytime'] = $trytime + 1;
    $f['assign'] = $assign;
    $f['campaignid'] = $campaignid;
    $res = astercrm::insertNewDialedlist($f);
    $actionid = md5(uniqid(""));
    $strChannel = "local/" . $phoneNum . "@" . $outcontext . "/n";
    if ($config['system']['allow_dropcall'] == true) {
        $myAsterisk->dropCall($actionid, array('Channel' => "{$strChannel}", 'WaitTime' => 30, 'Exten' => $pdextension, 'Context' => $pdcontext, 'Variable' => "{$strVariable}", 'Priority' => 1, 'MaxRetries' => 0, 'CallerID' => $phoneNum));
    } else {
        $myAsterisk->config['asmanager'] = $config['asterisk'];
        $res = $myAsterisk->connect();
        $myAsterisk->sendCall($strChannel, $pdextension, $pdcontext, 1, NULL, NULL, 30, $phoneNum, NULL, NULL, NULL, $actionid);
    }
    return true;
}