$val) { $sql="drop role if exists \"".$idg."\""; echo "
dodaje role: ".$sql; $gdb->query($sql); $sql="create role \"".$idg."\""; echo "
dodaje role: ".$sql; $gdb->query($sql); } } echo "
aktualziacja relacji obiektow do paszportyzacji optycznej"; function gis_opto_relations($table_to_set,$field_index,$field_to_set,$table_from,$field_from,$ST_Relate='******F**',$filter_sql='') { global $gdb; $sql=' drop table if exists gis_opto_relations; select t1.'.$field_index.' as "field_index", t2."'.$field_from.'" as "field_from" , case ST_Relate(t1."the_geom",t2."the_geom",\''.$ST_Relate.'\') when true then 1 else 0 end as if_true , t2.* into temporary table gis_opto_relations FROM "'.$table_to_set.'" as t1 CROSS JOIN "'.$table_from.'" as t2; CREATE INDEX myfield ON gis_opto_relations (field_from); update "'.$table_to_set.'" t1 set "'.$field_to_set.'"=t2.field_from from gis_opto_relations t2 where t1."'.$field_index.'"=t2.field_index and t2.if_true=1 '.$filter_sql.' ; drop table gis_opto_relations; -- select t1.'.$field_index.' as "field_index", t2."'.$field_from.'" as "field_from" ,ST_Relate(t1."the_geom",t2."the_geom",\''.$ST_Relate.'\') as if_true into table gis_opto_relations_ FROM "'.$table_to_set.'" as t1 CROSS JOIN "'.$table_from.'" as t2; '; DEBUG_S(-3,"Zapytanie sql aktualizujace",$sql,__FILE__,__FUNCTION__,__LINE__); $gdb->query($sql); } function gis_opto_calculations($table_to_set,$field_index,$field_to_set,$table_from,$field_from_geom,$ST_Relate='******F**',$filter_sql='') { global $gdb; $sql=' drop table if exists "'.$table_from.'_AGR" ; select t1.'.$field_index.' , t2.'.$field_index.' as gid_t2 , ST_Intersects(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'") , case ST_Relate(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'",\''.$ST_Relate.'\') when true then ST_Length_Spheroid(t2."'.$field_from_geom.'",\'SPHEROID["WGS 84",6378137,298.257223563]\') else \'0\' end as length into temporary table "'.$table_from.'_AGR" FROM "'.$table_to_set.'" as t1 CROSS JOIN "'.$table_from.'" as t2 ; update "'.$table_to_set.'" t1 set "'.$field_to_set.'"=( select round(sum(t2.length)) from "'.$table_from.'_AGR" as t2 where t2.'.$field_index.'=t1.'.$field_index.' ) ;'; echo "
sql to : ".$sql; $gdb->query($sql); } function gis_opto_calculations_count($table_to_set,$field_index,$field_to_set,$table_from,$field_from_geom,$ST_Relate='******F**',$filter_sql='') { global $gdb; $sql=' drop table if exists "'.$table_from.'_AGR" ; select t1.'.$field_index.' , ST_Intersects(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'") , case ST_Relate(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'",\''.$ST_Relate.'\') when true then 1 else 0 end as length into temporary table "'.$table_from.'_AGR" FROM "'.$table_to_set.'" as t1 CROSS JOIN "'.$table_from.'" as t2 ; update "'.$table_to_set.'" t1 set "'.$field_to_set.'"=( select sum(t2.length) from "'.$table_from.'_AGR" as t2 where t2.'.$field_index.'=t1.'.$field_index.' ) ;'; echo "
sql to : ".$sql; $gdb->query($sql); } gis_opto_calculations('Inwestycje_Planowane','gid','Agr_metrow_mikrorurek_5szt','Rozdzielcza_Pakiet5MikrorurekMagistrala_WSG84','the_geom','T********'); gis_opto_calculations('Inwestycje_Planowane','gid','Agr_metrow_mikrorurek','Rozdzielcza_Mikrokanalizacja_do_klienta','the_geom','T********'); gis_opto_calculations('Inwestycje_Planowane','gid','Agr_ilosc_wykopu','Rozdzielcza_Wykop_przedmiar_na_mikrorurki','the_geom','******F**'); gis_opto_calculations('Inwestycje_Planowane','gid','Agr_ilosc_przeciskow','Rozdzielcza_Przeciski_110mm','the_geom','******F**'); gis_opto_calculations('Inwestycje_Planowane','gid','Agr_ilosc_zabrukow','Rozdzielcza_Zabruki','the_geom','******F**'); gis_opto_calculations_count('Inwestycje_Planowane','gid','Agr_ilosc_domow','MK_Mieszkania','the_geom','******F**'); $sql_cena='update "Inwestycje_Planowane" set "Agr_metrow_mikrorurek_5szt"=0 where "Agr_metrow_mikrorurek_5szt" is null;'; $gdb->query($sql_cena); $sql_cena='update "Inwestycje_Planowane" set "Agr_ilosc_zabrukow"=0 where "Agr_ilosc_zabrukow" is null;'; $gdb->query($sql_cena); $sql_cena='update "Inwestycje_Planowane" set koszt_wspolny="Agr_ilosc_wykopu"*10 +"Agr_metrow_mikrorurek"*3 +"Agr_metrow_mikrorurek_5szt"*7 +"Agr_ilosc_przeciskow"*80 +"Agr_ilosc_zabrukow"*40 ;'; //"Agr_metrow_w_tpsa*3 +Agr_metrow_kabel* //+ studnia + $gdb->query($sql_cena); $sql_cena='update "Inwestycje_Planowane" set "koszt_na_dom"=round("koszt_wspolny"/"Agr_ilosc_domow") where "Agr_ilosc_domow">0 ' ; $gdb->query($sql_cena); gis_opto_relations('opt_tacki','id_0','id_przelac','opt_przelacznice_mufy','id_0','T********'); gis_opto_relations('opt_spawy','id_0','id_tacka','opt_tacki','id_0','T********'); $gdb->query('update opt_wlokna set id_tuba=null '); gis_opto_relations('opt_wlokna','id','id_tuba','opt_tuby','id_0','T********'); gis_opto_relations('opt_tuby','id_0','id_kabel','opt_kable','id_0','T********'); $gdb->query('update opt_wlokna set id_tacka_a=null, id_tacka_b=null; '); gis_opto_relations('opt_wlokna','id','id_tacka_a','opt_tacki','id_0','T********','and t1.id_tacka_a is null '); gis_opto_relations('opt_wlokna','id','id_tacka_b','opt_tacki','id_0','T********','and t1.id_tacka_a!=t2.field_from and t1.id_tacka_b is null'); $gdb->query('update opt_przelacznice_mufy set id_opt_lokalizacja=null; '); gis_opto_relations('opt_przelacznice_mufy','id_0','id_opt_lokalizacja','opt_lokalizacje','id_0','T********'); $gdb->query('update opt_wlokna set id_spaw_a=null, id_spaw_b=null; '); gis_opto_relations('opt_wlokna','id','id_spaw_a','opt_spawy','id_0','FF10F0FF2','and t1.id_spaw_a is null'); gis_opto_relations('opt_wlokna','id','id_spaw_b','opt_spawy','id_0','FF10F0FF2','and t1.id_spaw_a!=t2.field_from and t1.id_spaw_b is null'); die("zapytanie: ".$sql); // add_pg_roles(); //dodanie wszystkich uzytkownikow z haslem // public static function &get_users_list( $params = array(), $limit = 10, $limit_start = 0, $order_by = '', $order_dir = '' ) { //$tbl_perms=UserAcl::getTableAcl(); include_once('se-lib/UserAcl.php'); $Users=UsersHelper::get_users_list(); DEBUG_S(-3,'UsersHelper::get_users_list()',$Users,__FILE__,__FUNCTION__,__LINE__); $userAcl = UsersHelper::getUserAcl($Users[9]->ID); // $userAcl->fetchGroups(); $userAcl->fetchAllPerms(); //$getTablesAcl=$userAcl->getTablesAcl(); getAcl(); DEBUG_S(-3,'UserAcl::getTablesAcl',$getTablesAcl,__FILE__,__FUNCTION__,__LINE__); if ($userAcl->hasTableAcl($zasobObj->ID)) { $tblAcl = $usrAcl->getTableAcl($tableZasobID); $tblAcl->init(); } DEBUG_S(-3,'UsersHelper::getUserAcl',$userAcl,__FILE__,__FUNCTION__,__LINE__); //odlaczenie wszystkich rol od uzytkownikow die('zabilem skrypt'); //$sql="select ID from CRM_LISTA_ZASOBOW where `TYPE`='STANOWISKO' and " foreach($tbls_to_sync as $tbl) { $res=$gdb->describe_table($tbl); $ile=$gdb->count($res); $struct=$db->STRUCTURE_GENERATE(array($tbl),null,null); DEBUG_S(-3,'Structure local',$struct,__FILE__,__FUNCTION__,__LINE__); if(!$ile) { $gdb->STRUCTURE_GENERATE_PARSE($struct); $gdb->query('alter table "'.$tbl.'" add "gid" serial primary key ;'); //todo before "ID" $gdb->query("CREATE OR REPLACE FUNCTION update_A_RECORD_UPDATE_DATE_column() RETURNS TRIGGER AS $$ BEGIN NEW.\"A_RECORD_UPDATE_DATE\" = now(); RETURN NEW; END; $$ language 'plpgsql';"); $gdb->query("CREATE TRIGGER update_A_RECORD_UPDATE_DATE BEFORE UPDATE ON \"".$tbl."\" FOR EACH ROW EXECUTE PROCEDURE update_A_RECORD_UPDATE_DATE_column();"); //$gdb->query('alter table "'.$tbl.'" add "the_geom" serial primary key ;'); //todo before "ID" } else { $gdb->STRUCTURE_GENERATE_PARSE($struct); echo "
Znalazlem cos, wiec !ile nie zadzialalo!(".$ile.")"; } //1) try to put newer data $sql="select t1.* from ".$tbl." as t1 left join _SYNC_to_gis_36_to_13102 as t2 on t1.ID=t2.LID and t2.LTABLE='".$tbl."' where t2.LID is NULL; "; //unix_timestamp(t1.A_RECORD_UPDATE_DATE)>unix_timestamp(t2.LTS) or echo "
".$sql; $lres=$db->query($sql); while($h=$db->fetch($lres)) { $data=array(); foreach($h as $ind=>$val) { //if($ind=='the_geom') //$data[$ind]="'01030000000100000005000000A681BD96FAAB32402B9771AC13334B40A430199F0DAC3240E91B087D12334B4092AA81BA0DAC3240A8DFAECE15334B40004534E3FAAB32401568C3D418334B40A681BD96FAAB32402B9771AC13334B40'"; //else if(empty($val)) $data[$ind]="null"; else $data[$ind]="'".$gdb->_($val)."'"; // } DEBUG_S(-3,'zminne H to ',$data); //$array=array('lastname', 'email', 'phone'); //$comma_separated = implode(",", $array); //uczylem dzieciaki $keys=array_keys($data); $comma_separated = '"'.implode('","', $keys).'"'; DEBUG_S(-3,'comma_separated',$comma_separated); $values_comma_separated=implode(",",$data); $sql="insert into \"".$tbl."\" ( ".$comma_separated." ) values ( ".$values_comma_separated." ) "; DEBUG_S(-3,'nasze zapytanie SQL',$sql); $gdb->query($sql) or die('blad 104'); $sql="insert into _SYNC_to_gis_36_to_13102 ( LTABLE, LID, RID, RIDCOLUMN , RTS, LTS ) values ( '".$tbl."',".$data['ID'].",'".$gdb->insert_id()."','gid',now(),now()) "; DEBUG_S(-3,'sql to synctable',array($sql,$gdb->insert_id()),__FILE__,__FUNCTION__,__LINE__); $db->query($sql) or die('blad 107'); //die('123'); // // DEBUG_S(-3,'rec data',$data); // $sql="insert into \"".$tbl."\" ( \"".implode('","', array_keys($data))."\") values (".implode(',', $data).") "; // // die($sql); } /* $sql_rem="create table if not exists ".$tbl." (GIS_TIMESTAMP timestamp) ;"; $gdb->query($sql_rem); $sql_rem="select max(GIS_TIMESTAMP) as max from ".$tbl.""; $res=$gdb->query($sql_rem); $last_rem=$gdb->fetch_assoc($res); if(empty($last_rem['max'])) $last_rem['max']=0; DEBUG_S(-3,'Last ts z rem',$last_rem['max']); $sql_loc="select * from ".$tbl." where unix_timestamp(A_RECORD_UPDATE_DATE)>".$last_rem['max']." "; echo $sql_loc; $res=$db->query($sql_loc); $i=0; while($h=$db->fetch($res)) { print_r($h); } */ // $structure_local=DB_Dump::get_db_structure_by_table_prefix($db,$tbl); // $structure_remote=DB_Dump::get_db_structure_by_table_prefix($gdb,$tbl); // DEBUG_S(-3,'structure_local',$structure_local,__FILE__,__FUNCTION__,__LINE__); // DEBUG_S(-3,'structure_remote',$structure_remote,__FILE__,__FUNCTION__,__LINE__); } $trigger_psql_do_timestamp="CREATE OR REPLACE FUNCTION update_modified_column() RETURNS TRIGGER AS $$ BEGIN NEW.modified = now(); RETURN NEW; END;"; }