wsaliprefix . $_REQUEST['table']; //Current table fields , an Array. $wsali_dbLoader['ctnfdsA'] = ${'ws_alipay_table_'.$_REQUEST['table']}; $wsali_dbLoader['products'] = $ws_alipay_table_products; //$wsali_dbLoader['ords'] = $ws_alipay_table_orders; //$wsali_dbLoader['tpls'] = $ws_alipay_table_templates; $wsali_dbLoader['ctnfdsS'] = ''; //To be affected db fields $wsali_dbLoader['afdbfdsA']= array_intersect_key( $_REQUEST, array_flip($wsali_dbLoader['ctnfdsA']) ); $wsali_dbLoader['metafdsA']= array_diff_key( $_REQUEST, $wsali_dbLoader['afdbfdsA'],array_flip($wsali_dbLoader['cmdfdsA']) ); //$ws_alipay_refer_field $wsali_dbLoader['referfd'] = ''; //refer return array $wsali_dbLoader['referfdA'] = ''; //array to merge temp $wsali_dbLoader['mergeA'] = ''; // } if( isset($_REQUEST['where']) ){ $wsali_where = preg_split('/=/', $_REQUEST['where'] ); $wsali_dbLoader['wherek'] = $wsali_where[0]; if( isset($wsali_where[1]) ) $wsali_dbLoader['wherev'] = $wsali_where[1]; } //############################################################################ if( isset($_REQUEST['table']) && $_REQUEST['table'] !== '' ){ foreach( $wsali_dbLoader['ctnfdsA'] as $key=>$value ){ $wsali_dbLoader['ctnfdsS'] .= "$value,"; } $wsali_dbLoader['ctnfdsS'] = substr( $wsali_dbLoader['ctnfdsS'], 0, -1); } //allowed fileds first if( isset($_REQUEST['fields']) && $_REQUEST['fields'] !== '' ){ if( $_REQUEST['fields'] !== '*' ){ $ws_alipay_asc_fields = explode( ',', $_REQUEST['fields'] ); $wsali_dbLoader['ctnfdsA'] = $ws_alipay_asc_fields; } } //then the disallowed if( isset($_REQUEST['asc_fields']) && $_REQUEST['asc_fields'] !== '' ){ $ws_alipay_asc_fields = explode( ',', $_REQUEST['asc_fields'] ); $wsali_dbLoader['ctnfdsA'] = array_values( array_diff( $wsali_dbLoader['ctnfdsA'], $ws_alipay_asc_fields ) ); } //refer parse if( isset($_REQUEST['fields_refer']) && $_REQUEST['fields_refer'] !== '' ){ $wsali_dbLoader['referfd'] = $_REQUEST['fields_refer'] ; } //var section $arr_ret = array(); //global $wpdb; $wpdb->query("SET time_zone = '".ws_alipay_num2time(get_option('gmt_offset'))."';"); ############################################################################ //action list if( isset($_REQUEST['action']) && $_REQUEST['action'] !== '' ){ switch($_POST['action']){ case '78009': ws_alipay_get_data(); break; case '78010': ws_alipay_add_data(); break; case '78011': ws_alipay_add_data(); break; case '78012': //ws_alipay_get_data_plus(); //ws_alipay_get_refer_data(); //ws_alipay_merge(); break; case '78013': ws_alipay_api_update(); break; case '78014': ws_alipay_get_data(); break; case '78015': ws_alipay_update_data(); break; case '78016': ws_alipay_insert_data(); ws_alipay_get_data(); break; case '78017': ws_alipay_delete_data(); ws_alipay_get_data(); break; case '78018': ws_alipay_copy_data(); ws_alipay_get_data(); break; } } //out put $arr_ret = json_encode($arr_ret); echo $arr_ret; ############################################################################ //functions section function ws_alipay_merge(){ global $wsali_dbLoader; global $arr_ret; foreach( $arr_ret['data'] as $key=>$value ){ foreach( $wsali_dbLoader['mergeA'] as $key1=>$value1 ){ if( $value['proid'] == $value1->proid){ //ATTENTION:$value IS AN ARRAY,BUT $value1 IS AN OBJECT!!! //THAT'S B/C HERE SHOULD BE WRITTEN IN $value['proid'] == $value1->proid //OR WE CAN ADD A STATEMENT BEFORE THE IF STATEMENT LIKE $value1=(array)$value1 $arr_ret['data'][$key] = array_merge($value, (array)$value1); } } if(!isset($arr_ret['data'][$key]['name'])) { $arr_ret['data'][$key]['name']= '该商品已不存在'; $arr_ret['data'][$key]['price']= '未知'; } } } function ws_alipay_get_refer_data($table=1, $key=1){ global $wpdb, $wsali_dbLoader; $sql= " SELECT name,proid,price FROM $wpdb->wsaliproducts WHERE proid IN (SELECT proid FROM $wpdb->wsaliorders) ;"; $wsali_dbLoader['mergeA'] = $wpdb->get_results($sql); } function ws_alipay_get_data(){ global $wpdb, $wsali_dbLoader; global $arr_ret; if( isset($_REQUEST['fields_refer']) && $_REQUEST['fields_refer'] !== '' ){ ws_alipay_get_data_plus(); return; } if( isset( $_REQUEST['single']) ){//只读1条记录,即查看详情或编辑 //$id = preg_split( '@\=@', $_REQUEST['where'] ); $sql =" SELECT {$wsali_dbLoader['ctnfdsS']} FROM {$wsali_dbLoader['wptbl']} WHERE $_REQUEST[where] ;"; }else{//读N条记录 $sql = " SELECT " . $wsali_dbLoader['ctnfdsS']." FROM " . $wsali_dbLoader['wptbl'] . " LIMIT " . $_REQUEST['limit']. ";"; } $rows_ret = $wpdb->get_results( $sql ); foreach($rows_ret as $value){//$key=0,1,2,3... $arr_temp = array(); foreach( $wsali_dbLoader['ctnfdsA'] as $value1){//$key1=0,1,2,3... $arr_temp[$value1] = $value->$value1; } $arr_ret['data'][] = $arr_temp; } if( isset( $_REQUEST['single']) ){//只读1条记录,即查看详情或编 ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// //GET the add-on fields $metas = get_metadata( $wpdb->{'wsali'.$wsali_dbLoader['table'].'metatype'}, $wsali_dbLoader['wherev'],'', true); //print_r($metas); //die(); //Filter the JSON fields which is for ajax add-on if( !empty($metas) ){ $metaCOMN = array(); $metaJSON = array(); foreach( $metas as $k=>$v ){ if( preg_match( '@^\S+JSON$@', $k ) ){ $tempA = json_decode($v[0], true); if( !isset($tempA['transport']) || $tempA['transport'] == true ){ $metaJSON[] = $tempA; } }else{ $metaCOMN[$k] = $v[0]; } } $arr_ret['data'][0] = array_merge( $arr_ret['data'][0], $metaCOMN ); //uasort( $metaJSON, 'ws_alipay_metaJSON_sort', 'priority' ); $metaJSON = ws_alipay_sortByOneKey( $metaJSON, 'priority', 10, true); $arr_ret['extra'] = $metaJSON ; } } $row_count = $wpdb->get_results("SELECT COUNT(*) FROM {$wsali_dbLoader['wptbl']};"); $arr_ret['count'] = $row_count; } function ws_alipay_get_data_plus(){ global $wpdb, $wsali_dbLoader; global $arr_ret; $sql = ws_alipay_get_refer_sql( $wsali_dbLoader['referfd'] ); $rows_ret = $wpdb->get_results( $sql ); foreach($rows_ret as $value){//$key=0,1,2,3... $arr_temp = array(); foreach( $wsali_dbLoader['ctnfdsA'] as $value1){//$key1=0,1,2,3... $arr_temp[$value1] = stripslashes($value->$value1) ;//$arr_temp[price] = 3.00... } foreach( $wsali_dbLoader['referfdA'] as $value1){//$key1=0,1,2,3... $arr_temp[$value1] = stripslashes($value->$value1) ;//$arr_temp[price] = 3.00... } $arr_ret['data'][] = $arr_temp; } $row_count = $wpdb->get_results("SELECT COUNT(*) FROM {$wsali_dbLoader['wptbl']};"); $arr_ret['count'] = $row_count; } function ws_alipay_add_data(){ global $wpdb, $wsali_dbLoader; $in=array(); foreach( $wsali_dbLoader['afdbfdsA'] as $key=>$value ){ $in[$key] = $value; } $wpdb->insert( $wsali_dbLoader['wptbl'], $in ); die(); } function ws_alipay_update_data(){ global $wpdb, $wsali_dbLoader; //HERE IS NECESSARY FOR THAT $wpdb->update WILL REGARG THE / AS THE ENTITIES //IF USE THE $ws_alipay_db_fields IN SQL DIRECTELY, WE'LL NOT STRIOSLASHES!! //$a = preg_split('/=/',$_REQUEST['where']); $wh = array( $wsali_dbLoader['wherek']=>$wsali_dbLoader['wherev'] ); $wt = array( '%d' ); $wpdb->update( $wsali_dbLoader['wptbl'], $wsali_dbLoader['afdbfdsA'], $wh, NULL, $wt ); //Update the metas foreach( $wsali_dbLoader['metafdsA'] as $k=>$v ){ update_metadata( $wpdb->{'wsali'.$wsali_dbLoader['table'].'metatype'}, $wsali_dbLoader['wherev'], $k, $v); } die(); } function ws_alipay_api_update(){ global $wsali_dbLoader; foreach( $wsali_dbLoader['affdsA'] as $key=>$value ){ //$ws_alipay_db_fields[$key] = esc_html($value); } $JSON = json_encode( $wsali_dbLoader['affdsA'] ); update_option( 'ws_alipay_settings_api', $JSON ); } //function ws_alipay_insert_data(){ // global $wpdb, $wsali_dbLoader; // // $in = array( $_REQUEST['where']=>'' ); // // // $wt = array( '%d' ); // // $wpdb->insert( $wsali_dbLoader['wptbl'], $in, $wt); //} function ws_alipay_insert_data(){ global $wpdb, $wsali_dbLoader; $in = array( $_REQUEST['where']=>'' ); $wt = array( '%d' ); $sql = "INSERT INTO {name} ({$_REQUEST['where']}) VALUES('aaa');"; $wpdb->query($sql); //echo $wpdb->insert( $wsali_dbLoader['wptbl'], $in, $wt); } function ws_alipay_copy_data(){ global $wpdb, $wsali_dbLoader; $the_copy = $wpdb->get_results( "SELECT * FROM {$wsali_dbLoader['wptbl']} WHERE $_REQUEST[where]" ); $the_copy = (array)$the_copy[0]; $the_copy = array_diff_key( $the_copy, array( 'tplid'=>'' ,'proid'=>'','ordid'=>'')); $the_copy_key = array_keys( $the_copy ); foreach( $the_copy as &$value ){ $value = "'".addslashes($value)."'" ; } $the_copy_key = ws_alipay_array_link($the_copy_key); $the_copy = ws_alipay_array_link( $the_copy ); $wpdb->query( "INSERT INTO {$wsali_dbLoader['wptbl']} ($the_copy_key) VALUES($the_copy)" ); } function ws_alipay_delete_data(){ global $wpdb, $wsali_dbLoader; $sql ="DELETE FROM {$wsali_dbLoader['wptbl']} WHERE $_REQUEST[where]"; $wpdb->query($sql); //delete_metadata( $wpdb->{'wsali'.$wsali_dbLoader['table'].'metatype'}, $wsali_dbLoader['wherev']); $tbl_meta = $wpdb->{'wsali'.$wsali_dbLoader['table'].'meta'}; $objk = 'wsali'.$wsali_dbLoader['table'].'_id'; $sql = "DELETE FROM $tbl_meta WHERE $objk = {$wsali_dbLoader['wherev']}"; $wpdb->query($sql); } //############################################################################ function ws_alipay_array_link( $arr ){ return substr( array_reduce( $arr, 'ws_alipay_array_link_callback'), 1); } function ws_alipay_array_link_callback($v1,$v2){ return $v1 . ',' . $v2; } function ws_alipay_get_refer_sql( $arr_refer ){ return ws_alipay_sql_maker( ws_alipay_refer_parser( $arr_refer ) ); } function ws_alipay_refer_parser( $arr_refer ){ foreach( $arr_refer as $key=>$value){ $arr_temp; $val_temp = preg_split( '/\|/', $value); $arr_temp['table'] = $val_temp[0]; $arr_temp['refer'] = $val_temp[1]; $arr_temp['fields'] = preg_split( '/,/',$val_temp[2]); $arr_refer_ret[$key] = $arr_temp; } return $arr_refer_ret; } function ws_alipay_sql_maker( $arr_mix ){ global $wpdb, $wsali_dbLoader; $select= ''; $from=''; $join=''; $on=''; $prfix = $wpdb->prefix . 'ws_alipay_'; foreach( $arr_mix as $key=>$items){ foreach( $items['fields'] as $field ){ $select .= $prfix.$items['table'].'.'.$field. ','; } } $select = substr( $select,0, -1 ); $from = $prfix.$arr_mix[0]['table']; $join = $prfix.$arr_mix[1]['table']; $on = $from . '.' . $arr_mix[0]['refer'] . '=' . $join . '.' . $arr_mix[1]['refer']; $wsali_dbLoader['referfdA'] = $arr_mix[1]['fields']; $ret = " SELECT $select FROM $from LEFT OUTER JOIN $join ON $on ;"; return $ret; } ?>