/** * Split a string on $seperator as key=value, grouping values between quotes and round brackets. * * @param string $seperator Character list; Split on any character in $seperator. With .. you can specify a range of characters. * @param string $string * @param string $unquote Character list; Trim these characters for each part. TRUE: remove ' and "; * @return array */ function split_set($seperator, $string, $unquote = true) { if (!is_scalar($string) || empty($string)) { return $string; } $matches = null; $seperator = str_replace('\\.\\.', '-', preg_quote($seperator)); if ($unquote === true) { $unquote = '\'"'; } $str = ""; $values = array(); preg_match_all('/(?:([^' . $seperator . '=]+)\\s*\\=)?((?:(`[^`]*`)|("(?:\\\\"|[^"])*")|(\'(?:\\\\\'|[^\'])*\')|\\((?:(?R)|[' . $seperator . '])*\\)|([^`"\'()' . $seperator . ']+))+)/', $string, $matches, PREG_SET_ORDER); foreach ($matches as $match) { $value = trim($match[2]); if ($value == 'false') { $value = false; } elseif ($value == 'true') { $value = true; } if (empty($match[1])) { $values[] = $unquote && is_string($value) ? unquote($value, $unquote) : $value; } else { parse_key(trim($match[1]), $unquote && is_string($value) ? unquote($value, $unquote) : $value, $values); } } return $values; }
function parse_wholekey($k, $list_columns) { $ret=array(); $keys_list=explode(",", $k); foreach($keys_list as $keys_part) { $keys=explode(" ", $keys_part); $l=array(); foreach($keys as $i=>$k) { $l1=parse_key($k, &$list_columns); if($l1) $l[]=$l1; } $ret[]=implode(" AND ", $l); } if(sizeof($ret)>1) return "(".implode(") OR (", $ret).")"; else return $ret[0]; }
$config['_html_thanks'] = ''; $config['_database_host'] = ''; $config['_database_user'] = ''; $config['_database_pass'] = ''; $config['_database_name'] = ''; $config['_save_database'] = ''; $config['_csv_directory'] = '/tmp'; $config['_save_csv'] = ''; $config['_mandatory'] = ''; // array of formfields $store = array(); $missing = 0; // get http params and parse each entry $params = array_merge($HTTP_GET_VARS, $HTTP_POST_VARS); foreach ($params as $key => $val) { parse_key($key, $val); } // === M A I N ========================================================== // check if page is refered from our server check_referer(empty($_SERVER['HTTP_REFERER']) ? $config['_html_return'] : $_SERVER['HTTP_REFERER']); // check if we have action to take if (empty($config['_html_return']) || empty($config['_html_confirm']) && empty($config['_mail_to']) && empty($config['_save_csv']) && empty($config['_save_database'])) { missing_action(); } // check if mandatory fields are entered or cancel was pressed if (!empty($config['_mandatory'])) { if (ereg(',', $config['_mandatory'])) { $amkeys = split(',', $config['_mandatory']); foreach ($amkeys as $mkey) { if (!isset($store[$mkey])) { $store[$mkey] = "__ERROR__ ";
<?php require_once "boot.php"; // undefine('ROOT'); use flight\Flight; // path 下的第一级目录名为Appname,二级目录为module name,最后的文件名为OP type $path = $argv[1]; $key_pref = $argv[2]; if (!is_dir($path)) { die($path . " is not a valid directory!"); } $result = get_sqldoc_keys($path, $key_pref); foreach ($result as $k => $value) { $proj_info = parse_key($value); $op_type = $proj_info['op_type']; unset($proj_info['op_type']); $proj_id = insert_proj($proj_info); $sql_infos = Flight::conf()->get($value . '.*'); foreach ($sql_infos as $key => $sql_info) { $key_name = $value . '.' . $key; $sk_id = insert_key($sql_info, $key_name, $proj_id, $op_type); if (isset($sql_info['params'])) { foreach ($sql_info['params'] as $pname => $p_info) { insert_param($p_info, $sk_id, $pname); } } } } function insert_proj($proj_info) { $is_exsists = Flight::db()->fetchOne('sql.sqldoc.projects.select.proj_by_app_module', $proj_info);