Ejemplo n.º 1
0
/**
*  update account record
*  @param	f			array		account record
*  @return	objResponse	object		xajax response object
*/
function update($f)
{
    global $locate, $db;
    $objResponse = new xajaxResponse();
    $f['extension'] = strtolower($f['extension']);
    $f['agent'] = strtolower($f['agent']);
    $f['channel'] = strtolower($f['channel']);
    if (trim($f['username']) == '' || trim($f['password']) == '' || trim($f['extension']) == '' || trim($f['usertype']) == '' || trim($f['firstname']) == '' || trim($f['lastname']) == '') {
        $objResponse->addAlert($locate->Translate("obligatory_fields"));
        return $objResponse->getXML();
    }
    if (trim($f['usertype']) != 'admin' && trim($f['groupid']) == '') {
        $objResponse->addAlert($locate->Translate("please add group first"));
        return $objResponse->getXML();
    }
    $username = $f['username'];
    $userid = astercrm::checkValues("astercrm_account", "username", $username);
    if ($userid != '' && $userid != $f['id']) {
        $objResponse->addAlert($locate->Translate("username_repeat"));
        return $objResponse->getXML();
    }
    if ($f['extensions'] == $locate->translate('extensions_input_tip')) {
        $f['extensions'] = '';
    }
    if ($f['extensions'] != "") {
        $f['extensions'] = astercrm::dbcToSbc($f['extensions']);
        $myExtensions = split(",", $f['extensions']);
        if ($f['extensType'] != "username") {
            foreach ($myExtensions as $exten) {
                $sqlStr .= "OR extension = '{$exten}'";
            }
            $sqlStr = ltrim($sqlStr, "OR");
            $query = "SELECT username From astercrm_account WHERE {$sqlStr}";
            astercrm::events($query);
            $res =& $db->query($query);
            $myExtensions = array();
            while ($res->fetchInto($row)) {
                $myExtensions[] = $row['username'];
                $newextensions .= "," . $row['username'];
            }
            $f['extensions'] = ltrim($newextensions, ',');
        }
        // check the assign username if belong to this group
        if ($_SESSION['curuser']['usertype'] != 'admin') {
            $myusernames = $myExtensions;
            $newextensions = "";
            $groupList = astercrm::getGroupMemberListByID($_SESSION['curuser']['groupid']);
            while ($groupList->fetchInto($groupRow)) {
                $memberNames[] = $groupRow['username'];
            }
            foreach ($myusernames as $myusername) {
                if (in_array($myusername, $memberNames)) {
                    $newextensions .= ",{$myusername}";
                }
            }
            $f['extensions'] = ltrim($newextensions, ',');
        }
    }
    if ($f['usertype'] == 'admin') {
        $f['groupid'] = 0;
    }
    // check over
    $respOk = Customer::updateAccountRecord($f);
    if ($respOk) {
        $html = createGrid(0, ROWSXPAGE);
        $objResponse->addAssign("grid", "innerHTML", $html);
        $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("update_rec"));
        $objResponse->addAssign("formDiv", "style.visibility", "hidden");
    } else {
        $objResponse->addAssign("msgZone", "innerHTML", $locate->Translate("rec_cannot_update"));
    }
    return $objResponse->getXML();
}