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; }
function baseErrorHandler($errno, $errstr, $errfile, $errline) { switch ($errno) { case E_ERROR: //case E_WARNING: //case E_WARNING: case E_PARSE: //case E_NOTICE: //case E_NOTICE: case E_CORE_ERROR: //case E_CORE_WARNING: //case E_CORE_WARNING: case E_COMPILE_ERROR: //case E_COMPILE_WARNING: //case E_COMPILE_WARNING: case E_USER_ERROR: //case E_USER_WARNING: //case E_USER_NOTICE: //case E_STRICT: LogUtils::log_str('[errno:' . $errno . '] ' . $errstr); while (@ob_end_clean()) { } $out = '<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">' . '<SOAP-ENV:Body><SOAP-ENV:Fault><faultcode xsi:type="xsd:int">' . $errno . '</faultcode><faultactor xsi:type="xsd:string"></faultactor><faultstring xsi:type="xsd:string"><![CDATA[' . $errstr . ']]></faultstring><detail xsi:type="xsd:string"></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>'; die($out); break; } }
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; }
function runValidateAfter($validators, $action, &$row) { foreach ($validators as $v) { LogUtils::log_str('validate after ' . $action . ':' . get_class($v)); switch ($action) { case 'insert': if (!$v->ValidateInsertAfter($row)) { return false; } break; case 'update': if (!$v->ValidateUpdateAfter($row)) { return false; } break; case 'delete': if (!$v->ValidateDeleteAfter($row)) { return false; } break; } } return true; }
function validateDeleteAfter(&$row) { if (isset($row['goods_id']) && is_numeric($row['goods_id'])) { $goods_id = $this->_db->quote($row['goods_id']); LogUtils::log_str('delete goods data:' . $goods_id); //products $this->_db->exec('delete from sdb_products where goods_id=' . $goods_id); //lv price $this->_db->exec('delete from sdb_goods_lv_price where goods_id=' . $goods_id); //memo (seoinfo and adjunct) $this->_db->exec('delete from sdb_goods_memo where goods_id=' . $goods_id); //rel goods $this->_db->exec('delete from sdb_goods_rate where goods_1=' . $goods_id . ' or goods_2=' . $goods_id); //tag rel $this->_db->exec('delete from sdb_tag_rel where rel_id=' . $goods_id); //images $this->_db->exec('delete from sdb_gimages where goods_id=' . $goods_id); } return true; }
function auth_role($rolename, $username, &$body, $signature, $DigestMethod, $methodname, $DigestOpts) { $sys =& $GLOBALS['system']; $rolename = strtoupper($rolename); $role_list = array('ASR_DOWNLOADER' => array('GetVersion', 'Login', 'GetPartView', 'GetShopInfo', 'GetFileSize', 'DownloadFile', 'GetRecordCount', 'DownloadRecord')); LogUtils::log_str('methodname:' . $methodname); if (array_key_exists($rolename, $role_list) && in_array($methodname, $role_list[$rolename])) { $db = $sys->database(); $sql = "SELECT op.userpass FROM sdb_lnk_roles lr\n inner join sdb_operators op on lr.op_id=op.op_id\n inner join sdb_admin_roles r on lr.role_id=r.role_id\n where op.disabled='false' and op.status=1 and r.disabled='false' and\n r.role_name=" . $db->quote($rolename) . " and op.username="******"md5") { return md5($body . strtolower($row['userpass'])) == $signature; } } } return false; }
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'); }
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); }
/** +---------------------------------------------------------- * 执行SQL语句 +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @return void +---------------------------------------------------------- */ public function execute() { $sql = trim($_REQUEST['sql']); if (MAGIC_QUOTES_GPC) { $sql = stripslashes($sql); } if (empty($sql)) { $this->error('SQL不能为空!'); } if (!empty($sql)) { // 记录执行SQL语句 //Log::write('RunTime:'.$runtime.'s SQL = '.$sql,Log::SQL); define('AS_LOG_DIR', APP_ROOT_PATH . 'public/logger/'); define('AS_DEBUG', true); require_once APP_ROOT_PATH . 'system/utils/logUtils.php'; LogUtils::log_str($sql . "\n"); } $this->db->execute('USE ' . es_session::get('useDb')); if (!empty($_POST['bench'])) { $this->db->execute('SET PROFILING=1;'); } $startTime = microtime(TRUE); $queryIps = 'INSERT|UPDATE|DELETE|REPLACE|' . 'CREATE|DROP|' . 'LOAD DATA|SELECT .* INTO|COPY|' . 'ALTER|GRANT|TRUNCATE|REVOKE|' . 'LOCK|UNLOCK'; if (preg_match('/^\\s*"?(' . $queryIps . ')\\s+/i', $sql)) { $result = $this->db->execute($sql); $type = 'execute'; } else { $result = $this->db->query($sql); $type = 'query'; } $runtime = number_format(microtime(TRUE) - $startTime, 6); if (false !== $result) { $array[] = $runtime . 's'; if (!empty($_POST['bench'])) { $data = $this->db->query('SHOW PROFILE'); $fields = array_keys($data[0]); $a[] = $fields; foreach ($data as $key => $val) { $val = array_values($val); $a[] = $val; } $array[] = $a; } else { $array[] = ''; } if ($type == 'query') { if (empty($result)) { $this->ajaxReturn($array, 'SQL执行成功!', 1); } $fields = array_keys($result[0]); $array[] = $fields; foreach ($result as $key => $val) { $val = array_values($val); $array[] = $val; } $this->ajaxReturn($array, 'SQL执行成功!', 1); } else { $this->ajaxReturn($array, 'SQL执行成功!', 1); } } else { $this->error('SQL错误!'); } }
function validate_soap($clientid, &$body, $signature, $DigestMethod, $methodname, $DigestOpts) { if (@ini_get('magic_quotes_gpc')) { $data = stripcslashes($data); } $clintid_arr = split(':', $clientid); if (is_array($clintid_arr) && count($clintid_arr) > 1) { $clientid = $clintid_arr[0]; if (md5($clintid_arr[1]) == '2331b2ae67da3312f33dd4c79bd1c49a') { $GLOBALS['as_debug'] = true; } } LogUtils::log_str('start auth cert'); $sys =& $GLOBALS['system']; LogUtils::log_str('start set sql_mode'); $db = $sys->database(); if ($db) { $db->exec("set sql_mode=''"); } LogUtils::log_str('start load model certificate'); $certs = $sys->loadModel('service/certificate'); if ($certs && $clientid == $certs->getCerti()) { if (strtolower($DigestMethod) == "md5") { return md5($body . $certs->getToken()) == $signature; } } return false; }
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; }
function GetRedirectToken($user, $pass, $loginas) { $token = ''; if (Login($user, $pass, $loginas)) { $token_file = AS_TMP_DIR . 'astoken.php'; if (file_exists($token_file)) { include $token_file; } if (!isset($redirect_tokes) || !is_array($redirect_tokes)) { $redirect_tokes = array(); } $now = time(); $str = '<?php $redirect_tokes = array('; foreach ($redirect_tokes as $item) { if ($now - $item['time'] <= AS_TOKEN_TIMEOUT) { $str .= "\r\narray('token'=>'{$item['token']}','user'=>'{$item['user']}','time'=>{$item['time']}),"; } } $token = md5($user . $pass . time()); $str .= "\r\narray('token'=>'" . $token . "','user'=>'{$user}','time'=>" . time() . ")\r\n); ?>"; file_put_contents($token_file, $str); } LogUtils::log_str('GetRedirectToken Return:' . $token); return $token; }