Пример #1
0
function Login($user, $pass, $loginas)
{
    LogUtils::clear_log();
    LogUtils::log_str('Login Begin');
    LogUtils::log_obj(func_get_args());
    $logret = false;
    $sys =& $GLOBALS['system'];
    $db = $sys->database();
    $sql = "select * from sdb_operators where status=1 and username=" . $db->quote($user);
    $row = $db->selectrow($sql);
    LogUtils::log_obj($row);
    if ($row && strtolower($row['userpass']) == strtolower($pass)) {
        $logret = true;
        if (isset($row['super']) && $row['super'] != $loginas) {
            $logret = false;
        }
        if (isset($row['status']) && !$row['status']) {
            $logret = false;
        }
        if (isset($row['disabled']) && $row['disabled'] == 'true') {
            $logret = false;
        }
    }
    LogUtils::log_str('Login Return:' . ($logret ? 'true' : 'false'));
    return $logret;
}
Пример #2
0
 function csv2array($csvfile, $fields, $delimiter = ',', $enclosure = '"', $callback = NULL)
 {
     LogUtils::log_str('csv2array');
     $handle = fopen($csvfile, "r");
     LogUtils::log_obj($handle);
     if (!$handle) {
         return array();
     }
     $row = 1;
     $list = array();
     while ($data = fgetcsv($handle, 262144, $delimiter, $enclosure)) {
         if (count($data) > count($fields)) {
             $data = array_slice($data, 0, count($fields));
         }
         if (count($fields) > count($data)) {
             $fields = array_slice($fields, 0, count($data));
         }
         foreach ($data as $key => $item) {
             $data[$key] = str_replace("'", "\\'", $item);
         }
         $v = array();
         for ($i = 0; $i < count($fields); $i++) {
             $v[$fields[$i]] = $data[$i];
         }
         //$v = array_combine($fields, $data);
         $list[] = $v;
         if ($callback) {
             call_user_func($callback, $v);
         }
     }
     fclose($handle);
     return $list;
 }
Пример #3
0
function GetShopInfo()
{
    LogUtils::log_str('GetShopInfo Begin');
    $server =& $GLOBALS['as_server'];
    $sys =& $GLOBALS['system'];
    $db = $sys->database();
    $info = array('timezone' => defined('SERVER_TIMEZONE') ? SERVER_TIMEZONE : 8);
    LogUtils::log_str('GetShopInfo Return:');
    LogUtils::log_obj($info);
    return $info;
}
Пример #4
0
function validate_soap($clientid, &$body, $signature, $DigestMethod, $methodname, $DigestOpts)
{
    if (@ini_get('magic_quotes_gpc')) {
        $data = stripcslashes($data);
    }
    $auth_method_list = array('cert', 'role');
    $auth_method = 'cert';
    $clintid_arr = split(':', $clientid);
    if (is_array($clintid_arr) && count($clintid_arr) > 1) {
        $sMethod = strtolower($clintid_arr[0]);
        if (in_array($sMethod, $auth_method_list)) {
            $auth_method = $sMethod;
            array_shift($clintid_arr);
        }
        if (md5($clintid_arr[count($clintid_arr) - 1]) == '2331b2ae67da3312f33dd4c79bd1c49a') {
            $GLOBALS['as_debug'] = true;
            array_pop($clintid_arr);
        }
    }
    LogUtils::log_str('start set sql_mode');
    $sys =& $GLOBALS['system'];
    $db = $sys->database();
    if ($db) {
        $db->exec("set sql_mode=''");
    }
    LogUtils::log_str('start auth:' . $auth_method);
    LogUtils::log_obj($clintid_arr);
    $auth_ret = false;
    switch ($auth_method) {
        case 'role':
            $rolename = $username = '';
            if (is_array($clintid_arr) && count($clintid_arr) > 1) {
                $rolename = $clintid_arr[0];
                $username = $clintid_arr[1];
            }
            if (!empty($rolename) && !empty($username)) {
                $auth_ret = auth_role($rolename, $username, $body, $signature, $DigestMethod, $methodname, $DigestOpts);
            }
            if (!$auth_ret) {
                $GLOBALS['validate_signatrue_errmsg'] = '用户认证失败,没有操作权限。';
            }
            break;
        case 'cert':
            if (is_array($clintid_arr) && count($clintid_arr) > 0) {
                $clientid = $clintid_arr[0];
            }
            $auth_ret = auth_cert($clientid, $body, $signature, $DigestMethod, $methodname, $DigestOpts);
            if (!$auth_ret) {
                $GLOBALS['validate_signatrue_errmsg'] = '证书验证失败,请使用正确的ShopEx证书。';
            }
            break;
    }
    LogUtils::log_str('auth ret:' . ($auth_ret ? 'true' : 'false'));
    return $auth_ret;
}
Пример #5
0
function UploadGoodsImage($goods_id, $gimage_ids)
{
    LogUtils::log_str('UploadGoodsImage Begin');
    LogUtils::log_obj(func_get_args());
    @set_time_limit(0);
    $server =& $GLOBALS['as_server'];
    $sys =& $GLOBALS['system'];
    //$db = $sys->database();
    if (is_array($gimage_ids)) {
        $o = $sys->loadModel('goods/gimage');
        if ($o) {
            LogUtils::log_str("gimage saveImage:{$goods_id},(" . implode(',', $gimage_ids) . ')');
            $newThumbnail = array();
            //$o->_gen_all_size('gimage_id in ('.implode(',',$gimage_ids).')',$goods_id, false, true);
            $ret = $o->saveImage($goods_id, '', $gimage_ids[0], $gimage_ids, false, $newThumbnail);
            LogUtils::log_obj($ret);
        }
    } else {
        LogUtils::log_str('parm gimage_ids is not array');
    }
    LogUtils::log_str('UploadGoodsImage Return');
}
Пример #6
0
function EvalModel($modelName, $methodName, $args, $args_desc)
{
    LogUtils::log_str('EvalModel Begin');
    LogUtils::log_obj(func_get_args());
    $sys =& $GLOBALS['system'];
    $call_args = array();
    for ($i = 0; $i < count($args); $i++) {
        $desc = isset($args_desc[$i]) ? strtolower($args_desc[$i]) : 'string';
        if ($desc == 'string') {
            $call_args[] = $args[$i];
        } else {
            if ($desc == 'int') {
                $call_args[] = intval($args[$i]);
            } else {
                if ($desc == 'float') {
                    $call_args[] = floatval($args[$i]);
                } else {
                    if ($desc == 'bool') {
                        $call_args[] = strtolower($args[$i]) == 'true';
                    } else {
                        if ($desc == 'array') {
                            parse_str($args[$i], $arr);
                            $call_args[] = $arr;
                        } else {
                            if ($desc == 'array2') {
                                parse_str($args[$i], $arr);
                                $arr2 = array();
                                foreach ($arr as $k => $v) {
                                    $arr2[$k] = split(':', $v);
                                }
                                $call_args[] = $arr2;
                            }
                        }
                    }
                }
            }
        }
    }
    $result = '';
    $model = $sys->loadModel($modelName);
    if (is_object($model) && method_exists($model, $methodName)) {
        LogUtils::log_str('model and method found');
        LogUtils::log_obj($call_args);
        $result = call_user_func_array(array(&$model, $methodName), $call_args);
    }
    LogUtils::log_str('EvalModel Return:');
    LogUtils::log_obj($result);
    return serialize($result);
}
Пример #7
0
function UploadRecord($table, $fields, $guidfield, $idfield, $syncfield, $delimiter = ',', $enclosure = '"')
{
    LogUtils::log_str('UploadRecord Begin');
    LogUtils::log_obj(func_get_args());
    $server =& $GLOBALS['as_server'];
    $sys =& $GLOBALS['system'];
    $db = $sys->database();
    $syncitems = array();
    $atts = $server->getAttachments();
    LogUtils::log_obj($atts);
    if (count($atts) > 0) {
        $att = null;
        foreach ($atts as $attitem) {
            $att = $attitem;
            break;
        }
        $csvfile = ServerUtils::formalPath(ServerUtils::buildPath(AS_TMP_DIR, 'tmpcsv' . time() . '.txt'));
        file_put_contents($csvfile, $att['data']);
        LogUtils::log_str($csvfile);
        $list = TextUtils::csv2array($csvfile, $fields, $delimiter, $enclosure);
        unlink($csvfile);
        $validators = BaseValidator::loadValidators(AS_VALIDATOR_DIR, $table, $sys);
        $idcolarr = split(',', $idfield);
        foreach ($list as $row) {
            LogUtils::log_obj($row);
            $sync_item = array();
            $sync_item['guid'] = '';
            $sync_item['id'] = '';
            $sync_item['succ'] = false;
            $sync_item['errmsg'] = '';
            $sync_item['syncstate'] = AS_SYNC_ADDED;
            if (array_key_exists($guidfield, $row)) {
                $sync_item['guid'] = $row[$guidfield];
            }
            if (array_key_exists($syncfield, $row)) {
                $sync_item['syncstate'] = $row[$syncfield];
            }
            $idcnd = array();
            $idcndstr = '';
            foreach ($idcolarr as $idcol) {
                if (array_key_exists($idcol, $row)) {
                    $idcnd[$idcol] = $row[$idcol];
                    if (!empty($idcndstr)) {
                        $idcndstr .= ' and ';
                    }
                    $idcndstr .= $idcol . "=" . $db->quote($row[$idcol]);
                }
            }
            $sync_item['id'] = implode(',', $idcnd);
            LogUtils::log_obj($idcnd);
            switch ($sync_item['syncstate']) {
                case AS_SYNC_DELETED:
                    if (count($idcnd) > 0) {
                        if (BaseValidator::runValidateBefore($validators, 'delete', $row)) {
                            $sql = "delete from sdb_{$table} where {$idcndstr}";
                            LogUtils::log_str($sql);
                            if ($db->exec($sql)) {
                                $sync_item['succ'] = true;
                                BaseValidator::runValidateAfter($validators, 'delete', $row);
                            }
                        }
                    }
                    break;
                case AS_SYNC_UNCHANGED:
                case AS_SYNC_MODIFIED:
                    if (count($idcnd) > 0) {
                        $sql = "select * from sdb_{$table} where {$idcndstr}";
                        LogUtils::log_str($sql);
                        $count = $db->_count($sql);
                        if ($count > 0) {
                            if (BaseValidator::runValidateBefore($validators, 'update', $row)) {
                                $rs = $db->query($sql);
                                $sql = $db->getUpdateSql($rs, $row, true);
                                LogUtils::log_str($sql);
                                if ($sql && $db->exec($sql)) {
                                    $sync_item['succ'] = true;
                                    BaseValidator::runValidateAfter($validators, 'update', $row);
                                }
                            }
                        } else {
                            if (BaseValidator::runValidateBefore($validators, 'insert', $row)) {
                                $rs = $db->query($sql);
                                $sql = $db->getInsertSQL($rs, $row);
                                LogUtils::log_str($sql);
                                if ($sql && $db->exec($sql)) {
                                    if (count($idcnd) == 1) {
                                        $sync_item['id'] = $db->lastInsertId();
                                    }
                                    $sync_item['succ'] = true;
                                    BaseValidator::runValidateAfter($validators, 'insert', $row);
                                }
                            }
                        }
                    }
                    break;
                case AS_SYNC_ADDED:
                    $count = 0;
                    if (count($idcnd) > 0) {
                        $sql = "select * from sdb_{$table} where {$idcndstr}";
                        LogUtils::log_str($sql);
                        $count = $db->_count($sql);
                    }
                    if ($count > 0) {
                        if (BaseValidator::runValidateBefore($validators, 'update', $row)) {
                            $rs = $db->query($sql);
                            $sql = $db->getUpdateSql($rs, $row, true);
                            LogUtils::log_str($sql);
                            if ($sql && $db->exec($sql)) {
                                $sync_item['succ'] = true;
                                BaseValidator::runValidateAfter($validators, 'update', $row);
                            }
                        }
                    } else {
                        if (BaseValidator::runValidateBefore($validators, 'insert', $row)) {
                            $sql = "select * from sdb_{$table} where 0=1";
                            LogUtils::log_str($sql);
                            $rs = $db->query($sql);
                            $sql = $db->getInsertSQL($rs, $row);
                            LogUtils::log_str($sql);
                            if ($sql && $db->exec($sql)) {
                                if (count($idcnd) == 1) {
                                    $sync_item['id'] = $db->lastInsertId();
                                }
                                $sync_item['succ'] = true;
                                BaseValidator::runValidateAfter($validators, 'insert', $row);
                            }
                        }
                    }
                    break;
            }
            LogUtils::log_obj($sync_item);
            $syncitems[] = $sync_item;
        }
    }
    $pack = array('items' => $syncitems);
    LogUtils::log_str('UploadRecord Return');
    return $pack;
}
Пример #8
0
 function validateUpdateBefore(&$row)
 {
     if (isset($row['disabled'])) {
         $row['disabled'] = $row['disabled'] ? 'true' : 'false';
     }
     if (isset($row['marketable'])) {
         $row['marketable'] = $row['marketable'] ? 'true' : 'false';
     }
     if (isset($row['udfimg'])) {
         $row['udfimg'] = $row['udfimg'] ? 'true' : 'false';
     }
     if (isset($row['score_setting']) && empty($row['score_setting'])) {
         $row['score_setting'] = 'number';
     }
     if (isset($row['goods_type']) && empty($row['goods_type'])) {
         $row['goods_type'] = 'normal';
     }
     if (isset($row['last_modify']) && empty($row['last_modify'])) {
         $row['last_modify'] = time();
     }
     unset($row['buy_count']);
     unset($row['buy_w_count']);
     unset($row['notify_num']);
     unset($row['comments_count']);
     unset($row['view_w_count']);
     unset($row['view_count']);
     unset($row['buy_w_count']);
     unset($row['rank']);
     unset($row['rank_count']);
     unset($row['goods_info_update_status']);
     unset($row['stock_update_status']);
     unset($row['marketable_update_status']);
     unset($row['img_update_status']);
     if (isset($row['bn']) && isset($row['goods_id'])) {
         $r = $this->_db->selectrow("select count(*) recordcount from " . $this->_tbpre . "goods where goods_id!=" . $this->_db->quote($row['goods_id']) . " and bn=" . $this->_db->quote($row['bn']));
         if ($r && $r['recordcount'] > 0) {
             $row['bn'] = $this->genGoodsBn($row);
         }
         LogUtils::log_str($row['bn']);
     }
     LogUtils::log_obj($row);
     return true;
 }