| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387 |
- <?php
- //@2014-01-20 added joining structure without loos data for CHAR->CHAR - only resize to bigger field if needed in new structure (sqix)
- echo "version @2015-05-25 @2015-05-21 added TYPESPECIAL/TYPESPECIALS/VARIABLE/VARIABLES FIX DUBLES
- version: @2014-01-21 added joining structure without loos data for ENUM->ENUM, SET->SET - try to add item in enum(sqix)<br>";
- //
- //[0] => alter table `SES_TV_A` CHANGE `P_DEVICE` `P_DEVICE` enum('BRAK','DEKODER SD','DEKODER HD','MODUL CAM','MULTIROOM') ;
- // [1] => enum('BRAK','DEKODER SD','DEKODER HD','MODUL CAM','MULTIROOM')
- // [2] => enum('BRAK','DEKODER SD','DEKODER HD','MODUL CAM','MULTIROOM')
- // [3] => enum('BRAK','DEKODER SD','DEKODER HD','MODUL CAM')
- //todo ID z import_translate nie moga byc podmieniane po imporcie, bo maja juz ID docelowe (wartosci nie klucze)
- require_once dirname(__FILE__) . "/se-lib/Lib.php";
- require_once dirname(__FILE__) . "/se-lib/ProcesHelper.php";
- require_once dirname(__FILE__) . "/se-lib/Data_Source.php";
- require_once dirname(__FILE__) . "/se-lib/Config.php";
- //$cnf_test=Config::getData();
- //DEBUG_S(-3,'Configs_test',$cnf_test,__FILE__,__FUNCTION__,__LINE__);
- //
- function die1($arg) {
- echo "\n<br> ERROR!!! ".$arg." error ".mysql_error();
- exit(1);
- }
- if(isset($_SERVER["argv"][1])) {
- //wymuszenie argumentu z polecenia (ta zmienna oznaczac ma domene (np. biuro.biall-net.pl )
- //php -r"include('/Library/Server/Web/Data/Sites/Default/SE/superedit-SQIX_STRUCTURE_DB_SYNC.php') ;" biuro.biall-net.pl
- $_SERVER['SERVER_NAME']=$_SERVER["argv"][1];
- $_REQUEST['SYSTEM_PROFILE_STRING_IMPORT_EXPORT']=$_SERVER["argv"][2]; //filtr do importu
- $_REQUEST['submit']=true;
- define('DS', DIRECTORY_SEPARATOR);
- define('APP_PATH_ROOT', dirname(__FILE__));
- define('APP_PATH_WWW', dirname(__FILE__));
- define('APP_PATH_CONFIG', APP_PATH_ROOT . DS . 'config');
- require_once APP_PATH_ROOT . DS . 'se-lib' . DS . 'Lib.php';
- Lib::loadClass('V');
- Lib::loadClass('Config');
- Lib::loadClass('DB');
- Lib::loadClass('User');
- session_start();
- include_once(APP_PATH_CONFIG.'/.config-'.$_SERVER['SERVER_NAME'].'.php');
- include('superedit-DEBUG_S.php');
- // $PROJ_mount_point=Config::getConfFile('import_db', '') ;
- // print_r($PROJ_mount_point);
- } else {
- //Lib::loadClass('Config');
- //$var=Config::getData();
- //print_r($var);
- //die('test');
- //$_SESSION['DEBUG']=6;
- }
- //@2013-10-05 added correct database config handling
- //@2013-07-24 added for CRM_LISTA_ZASOBOW $sql=" alter table `".$TABLE."` AUTO_INCREMENT=1000 ";
- //warto przed updatem zrobic :
- //update CRM_LISTA_ZASOBOW set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC_FIX_ALIAS' ;
- //update CRM_IMAGE set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_PROC' ;
- //update CRM_PROCES set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_PROC_FIX_GOTO' ;
- //update CRM_TESTY set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_PROC' ;
- //update CRM_TESTY_PYTANIA set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_PROC' ;
- //update CRM_WSKAZNIK set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC' ;
- //@2013-02-17 : prawidlowa kolejnosc instalacji to najpierw init wlasny (brakuje zasobow wewnetrznych do konfigow) ,
- //,CREATE_ZASOBY_DATABASE_DESC , opisac jakie dosaly ID do konfiga $CRM_IMPORT_TRANSLATE['CRM_LISTA_ZASOBOW'][36]=$DATABASE_ROOT_ZASOB_ID;
- //, import procesow ZASOBY_ZASOBY ?
- //TODO!!!!! @2013-02-17: CREATE_ZASOBY_DATABASE_DESC powinno robic konfig z $DATABASE_ROOT_ZASOB_ID=$var; jakos
- //TODO!!!! @2013-02-12 : nie wgrywa zdjec! dorobic
- //TODO!!! @2012-12-20: funckja SQIX_STRUCTURE_SYNC po pierwszej synchronizacji jak nie ma tabeli dorzuca tylko tabele z jedna komorka ID! Trzeba poprawic tak aby bylo tworzone wszystko za 1 razem
- //TODO!! @2013-01-27 : przy importowaniu wskaznikow z ZASOBY_TO_ZASOBY nie zachowana jest wlasciwa kolejnosc czynnosci...
- //TODO!! @2013-01-27 : pewnie nie dziala IF TRUE GOTO ! synchronizacja...
- // @2013-01-24 rozwaznaia - graf dokumentacja sqix jak to ma dzialac:
- // wszedl ID zasobu src=3 na dst=1003
- // wszedl ID zasobu src=4(parent 3) na dst=1004 , z (parent =3 TODO)
- // wszedl ID zasobu src=5(parent 4) na dst=1005 , z (parent=4 TODO)
- // wszedl ID procesu src=501(parent 500) na dst =5501 ( z parent 500 TODO)
- // wszedl ID procesu src=502(parent 501) na dst =5502 (z parent 501 TODO)
- // wszedl ID procesu src=503(parent 502) na dst =5503 (z parent 502 TODO)
- // wszedl ID wskaznika src=10 na dst 9910 , z (parent procesu=501 TODO, zasobu=4 TODO)
- // wszedl ID wskaznika src=11 na dst 9911 , z parent prcoces=502 TODO, zasobu=5 TODO)
- //@2012-10-19 by sqix //Kod nie skonczony na linii 420 - trzeba lepiej przegrac informacje o strukturze tabel - najepiej na poszczegolne cechy, bo default value jak ma srednik to jest dupa
- //Typowa kolejnosc uzycia :
- //1) w bazie wzorcowej nalezy wykonac funkcje z parametrem CREATE_ZASOBY_STRUCTURES_CONFIG -> stworzony plik wgrac w .config_base_structure.php
- //2) przegrac plik .config_base_structure.php do docelowego serwera, gdzie mamy zainstalowac struktury bazowe
- //3) uruchomic na docelowym serwerze ta funkcje z paramerem SYNC_ZASOBY_STRUCTURES_FROM_CONFIG - aby zbudowac lokalne tabele bazowe z .config_base_structure.php
- //4) uruchmonic na docelowym serwerze ta funkcje z parametrem FROM_DATABASE_TO_ZASOBY - aby uzupelnic tabele zasobow o aktualne tabele systemowe
- //5) TODO zaimportowac z serwera wzorcowych procesow procesy wzorcowe FROM_ZASOBY_TO_ZASOBY ( korzysta z systemu $SYSTEM_PROFILE_STRING_IMPORT_EXPORT )
- function SQIX_STRUCTURE_DB_SYNC($LOCAL_DB_ZASOB_ID,$REMOTE_DB_ZASOB_ID,$DATABASE_ROOT_ZASOB_ID,$CONFIRM_SQL_UPDATE='',$SYNC_OPTIONS='',$DEBUG_LEVEL=null,$SKIP_OPTIONS=null) {
- global $CNF_ZASOB,$localpath,$SYSTEM_PROFILE_STRING_IMPORT_EXPORT,$DATABASE_ROOT_ZASOB_ID,$CRM_IMPORT_TRANSLATE,$kodowania_local,$kodowania_remote;
- if(empty($DEBUG_LEVEL)) $DEBUG_LEVEL=0;
- $_SESSION['DEBUG']=$DEBUG_LEVEL;
- //todo zczytaz z konfiga @2013-10
- $CNF_ZASOB=array('import_db'=>array('SQL_DATABASE'=>'import_db'),'default_db'=>array('SQL_DATABASE'=>'default_db'),'test_db'=>array('SQL_DATABASE'=>'test_db'),'test3_db'=>array('SQL_DATABASE'=>'test3_db'));
- $sql="select `ID`,`DESC` from `CRM_LISTA_ZASOBOW` where `TYPE`='DATABASE_MYSQL' or `TYPE`='DATABASE_POSTGRESQL' or `TYPE`='BAZA_DANYCH' ;";
- $db=DB::getdb();
- $res=$db->query($sql);
- while($h=$db->fetch($res)) {
- $CNF_ZASOB[$h->ID]['SQL_DATABASE']=$h->DESC;
- }
- if(empty($DATABASE_ROOT_ZASOB_ID)) $DATABASE_ROOT_ZASOB_ID=2;
- //todo powinno dzialac z konfiga
- DEBUG_S(-3,'Parametry CRM_IMPORT_TRANSLATE - do ustalania konkretnych ID przy imporcie zasobow',$CRM_IMPORT_TRANSLATE);
- if(empty($CRM_IMPORT_TRANSLATE)) {
- $CRM_IMPORT_TRANSLATE['CRM_LISTA_ZASOBOW'][36]=2; //baza danych[36] na baze danych zainicjalizowana
- $CRM_IMPORT_TRANSLATE['CRM_LISTA_ZASOBOW'][14]=1; //server[14] na zainicjalizowany [1] tutaj definiujemy z zasob
- }
- DEBUG_S(-3,'Parametry CRM_IMPORT_TRANSLATE - do ustalania konkretnych ID przy imporcie zasobow',$CRM_IMPORT_TRANSLATE);
- //Funkcja odbudowuje podstawowe zasoby struktur dotyczacych systemu PROCESOW - konfig : CREATE_ZASOBY_STRUCTURES_CONFIG oraz SYNC_ZASOBY_STRUCTURES_FROM_CONFIG
- //Nastepnie opcje umozliwiaja synchronizacje struktur pozostalych baz danych na podstawie zapisow w tabeli zasobow (
- //$DATABASE_ROOT_ZASOB_ID - w tym miejscu podajemy numer zasobu, od ktrego system bedize
- // rysowal tabele i komorki w drzewie zasobw ( lub je czytal)
- //$SYNC_OPTIONS='CREATE_ZASOBY_STRUCTURES_CONFIG' from LOCAL -else option - this make base config file for structures
- //$SYNC_OPTIONS='SYNC_ZASOBY_STRUCTURES_FROM_CONFIG' from CONFIG to REMOTE -else option - buduje z konfiga structure i je odswieza dla lokalnej struktury glownych tabel - dziala na zdalnej tabeli
- //$SYNC_OPTIONS='FROM_ZASOBY_TO_DATABASE' from LOCAL to REMOTE -else option
- //$SYNC_OPTIONS='FROM_DATABASE_TO_ZASOBY' from LOCAL to REMOTE -else option
- //$SYNC_OPTIONS='FROM_ZASOBY_TO_ZASOBY' - from LOCAL to REMOTE TODO importuje zasoby oraz procesy z oznaczeniem where TAGS=%$SYSTEM_PROFILE_STRING_IMPORT_EXPORT% ,
- // z zasobu LOCAL do zasobu REMOTE ( zasoby powiazuje rekursywnie - zaimportowane zasoby maja oznaczenie LOCAL oraz jego ID w polach DESC )
- // draft dzialania tego algorytmu jest w sprawie BIALL_NET 1412 / 2012-10-06.MAPA_PROCESU.Mapy_procesow_biallnet_system_oraz_procesy5.graffle / Schemat Structure_zasob_sync(procesy)
- // uruchamia sie funkcja FROM_ZASOBY_TO_ZASOBY($CONNLOCAL,$CONNREMOTE,$SYSTEM_PROFILE_STRING_IMPORT_EXPORT)
- //$SYNC_OPTIONS='CLEAR_IMPORTED_ZASOBY_REMOTE' to REMOTE -else option
- //$CONFIRM_SQL_UPDATE - jezeli tu bedzie jakas wartosc, to system bedzie wykonywac zapytania do bazy danych updatujace strukture, w przeciwnym razie bedzie tylko wypisywac zapytania
- /*
- if(0){
- $LOCAL_DB_ZASOB_ID=$_REQUEST['LOCAL_DB_ZASOB_ID'];
- $CONNLOCAL=mysql_connect($CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['INTERFACE_ADDR'], $CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_USER'], $CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_USER_PASS'])
- or die('nie moge polaczyc z '.$CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['INTERFACE_ADDR']);
- mysql_select_db($CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_DATABASE'],$CONNLOCAL);
- $res=$CONNLOCAL->query("SHOW VARIABLES LIKE 'character\_set\_%';");
- if ($r = mysql_fetch_object($res)) {
- echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($r);echo'</pre>';
- }
- $sql = "SELECT * FROM `CRM_PROCES` WHERE `ID` =344";
- $res=$CONNLOCAL->query($sql);
- if ($r = mysql_fetch_object($res)) {
- echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($r);echo'</pre>';
- }
- die('404');
- }
- */
- if($_SESSION['ADM_ADMIN_LEVEL']!=0) {
- unset($_SESSION['DEBUG']);
- die1('MUST BE USER ADMIN TO RUN THIS MODULE - ADMIN_LEVEL==0 now is:'.$_SESSION['ADM_ADMIN_LEVEL']);
- }
- if(empty($LOCAL_DB_ZASOB_ID)) {
- $LOCAL_DB_ZASOB_ID=$DATABASE_ROOT_ZASOB_ID; //local oznacza SOURCE
- $REMOTE_DB_ZASOB_ID=$DATABASE_ROOT_ZASOB_ID; //REMOTE oznacza DESTINATION
- //TODO zmienic na sciagniecie domyslnego numeru ID biezacej bazy danych @2014-06-26 //if(empty($DATABASE_ROOT_ZASOB_ID)) $DATABASE_ROOT_ZASOB_ID=$CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['ZASOB_ROOT_ID_PLACE']; //domyslny localhost root numer z konfiga?
- }
- $SYSTEM_PROFILE_STRING_IMPORT_EXPORT='%GLOBAL%'; //override config
- //Generuje menu dla ADMIN_LEVEL=0
- if((!isset($LOCAL_DB_ZASOB_ID)||isset($REMOTE_DB_ZASOB_ID)||isset($SYNC_OPTIONS))&&(($_SESSION['ADMIN_LEVEL']==0)||($_SERVER["argv"][1]))) {
- if(!empty($_REQUEST['LOCAL_DB_ZASOB_ID'])) $LOCAL_DB_ZASOB_ID=$_REQUEST['LOCAL_DB_ZASOB_ID'];
- if(!empty($_REQUEST['REMOTE_DB_ZASOB_ID'])) $REMOTE_DB_ZASOB_ID=$_REQUEST['REMOTE_DB_ZASOB_ID'];
- if(!empty($_REQUEST['CONFIRM_SQL_UPDATE'])) $CONFIRM_SQL_UPDATE=$_REQUEST['CONFIRM_SQL_UPDATE'];
- if(!empty($_REQUEST['SYNC_OPTIONS'])) $SYNC_OPTIONS=$_REQUEST['SYNC_OPTIONS'];
- if(!empty($_REQUEST['DATABASE_ROOT_ZASOB_ID'])) $DATABASE_ROOT_ZASOB_ID=$_REQUEST['DATABASE_ROOT_ZASOB_ID'];
- if(!empty($_REQUEST['SYSTEM_PROFILE_STRING_IMPORT_EXPORT'])) $SYSTEM_PROFILE_STRING_IMPORT_EXPORT=$_REQUEST['SYSTEM_PROFILE_STRING_IMPORT_EXPORT'];
- if(!empty($_REQUEST['CREATE_ZASOBY_DATABASE_DESC'])) $CREATE_ZASOBY_DATABASE_DESC=$_REQUEST['CREATE_ZASOBY_DATABASE_DESC'];
- if(!empty($_REQUEST['DEBUG_LEVEL'])) $DEBUG_LEVEL=$_REQUEST['DEBUG_LEVEL'];
- // if(!empty($_REQUEST['MERGE_RESOURCES_OPTION'])) $MERGE_RESOURCES_OPTION=$_REQUEST['MERGE_RESOURCES_OPTION'];
- echo "\nTu bedzie menu dla Admina ";
- echo "\n<form action=?FUNCTION_INIT=SQIX_STRUCTURE_DB_SYNC>";
- echo "<input type=hidden name=FUNCTION_INIT value=SQIX_STRUCTURE_DB_SYNC>";
- echo "\n<table border=1><tr><td colspan=3>Menu systemu synchronizacji dla ADMINA</td></tr>";
- echo "\n<tr><td>Parametr zrodla</td><td><select name=LOCAL_DB_ZASOB_ID id=LOCAL_DB_ZASOB_ID onchange=\" document.getElementById('DATABASE_ROOT_ZASOB_ID').value=document.getElementById('LOCAL_DB_ZASOB_ID').value \" >"; //document.getElementById(\"DATABASE_ROOT_ZASOB_ID\").value=10; //TODO
- print_r($CNF_ZASOB);
- foreach ($CNF_ZASOB as $CNF_ZASOB_IND=>$CNF_ZASOB_VAL) {
- echo "<option value='".$CNF_ZASOB_IND."' ";
- if($LOCAL_DB_ZASOB_ID==$CNF_ZASOB_IND) echo " selected=1 ";
- echo ">".$CNF_ZASOB_IND." :IP(".$CNF_ZASOB_VAL['INTERFACE_ADDR'].") DBNAME:(".$CNF_ZASOB_VAL['SQL_DATABASE'].")</option>";
- }
- echo "</select></td></tr>";
- echo "\n<tr><td>Parametr celu</td><td><select name='REMOTE_DB_ZASOB_ID'>";
- foreach ($CNF_ZASOB as $CNF_ZASOB_IND=>$CNF_ZASOB_VAL) {
- echo "\n<option value='".$CNF_ZASOB_IND."' ";
- if($REMOTE_DB_ZASOB_ID==$CNF_ZASOB_IND) echo " selected=1 ";
- echo ">".$CNF_ZASOB_IND." :IP(".$CNF_ZASOB_VAL['INTERFACE_ADDR'].") DBNAME:(".$CNF_ZASOB_VAL['SQL_DATABASE'].")</option>";
- }
- echo "</select></td></tr>";
- $SYNC_OPTIONS_MENU['CREATE_ZASOBY_STRUCTURES_CONFIG']="from LOCAL -else option - this make base config file for structures";
- $SYNC_OPTIONS_MENU['SYNC_ZASOBY_STRUCTURES_FROM_CONFIG']="from CONFIG to REMOTE -else option - buduje z konfiga structure i je odswieza dla lokalnej struktury glownych tabel - dziala na zdalnej tabeli";
- $SYNC_OPTIONS_MENU['SYNC_ZASOBY_STRUCTURES_FROM_CONFIG_WITHOUT_PROCEDURES_AND_VIEWS']="from CONFIG to REMOTE -else option - buduje z konfiga structure i je odswieza dla lokalnej struktury glownych tabel - dziala na zdalnej tabeli - pomija procedury i widoki";
- $SYNC_OPTIONS_MENU['CREATE_ZASOBY_DATABASE_DESC']=" (na CONNREMOTE) jezeli pierwszy raz uruchamiasz system nalezy dodac strukture do zasobow gdzie bedzie znajdowac sie definicja struktur systemu SE";
- $SYNC_OPTIONS_MENU['FROM_ZASOBY_TO_DATABASE']=" from LOCAL to REMOTE uzupelnia structure z hazy zasobow do BAZY_DANYCH sql";
- $SYNC_OPTIONS_MENU['SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC_FIX_ALIAS']="Use before FROM_DATABASE_TO_ZASOBY to fix all current resources/processes not to being translated like external ones!!!";
- $SYNC_OPTIONS_MENU['FROM_DATABASE_TO_ZASOBY']="from LOCAL to REMOTE - uzupelnia structure zasobow o dane z aktualnej hazy danych razem z CECHAMI";
- $SYNC_OPTIONS_MENU['SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC_FIX_ALIAS']="Uaktualnia pola w dodanych procesach i zasobach przez uzytkownika informacje o tym, ze dane nie pochodza z importu - nalezy wykonac przed importowaniem zasobow/procesow. W przypadku bledu w imporcie nie nalezy tej funkcji uruchamiac do czasu upewnienia sie, ze wszystkie procesy zostaly zaimportowane";
- $SYNC_OPTIONS_MENU['FROM_ZASOBY_TO_ZASOBY']="from LOCAL to REMOTE TODO importuje zasoby oraz procesy z oznaczeniem where TAGS=%$SYSTEM_PROFILE_STRING_IMPORT_EXPORT% ,
- z zasobu LOCAL do zasobu REMOTE ( zasoby powiazuje rekursywnie - zaimportowane zasoby maja oznaczenie LOCAL oraz jego ID w polach DESC )
- draft dzialania tego algorytmu jest w sprawie BIALL_NET 1412 / 2012-10-06.MAPA_PROCESU.Mapy_procesow_biallnet_system_oraz_procesy5.graffle / Schemat Structure_zasob_sync(procesy)
- uruchamia sie funkcja FROM_ZASOBY_TO_ZASOBY(\$CONNLOCAL,\$CONNREMOTE,\$SYSTEM_PROFILE_STRING_IMPORT_EXPORT)";
- $SYNC_OPTIONS_MENU['MAKE_SE_AND_HIST_FIELDS_FOR_TABLE']="dodaje do okreslonych tabel kolumny A_RECORD_CREATE_DATE itp oraz tworzy tabele historyczna";
- $SYNC_OPTIONS_MENU['CLEAR_IMPORTED_ZASOBY_REMOTE']="kasuje zaimportowane fragmenty procesow z funkcji FROM_ZASOBY_TO_ZASOBY";
- $SYNC_OPTIONS_MENU['IMPORT_SORT_DESC_INFO']="importuje parametry sortowania oraz opisy zasobow";
- $SYNC_OPTIONS_MENU['CLEAR_TREE_DUBLES_AND_MOVE_WSK']="czysci drzewo zasobow z dubli i przesuwa wskazniki";
- echo "\n<tr><td>Opcja glowna funkcji </td><td><select name=SYNC_OPTIONS>";
- foreach ($SYNC_OPTIONS_MENU as $CNF_ZASOB_IND=>$CNF_ZASOB_VAL) {
- echo "\n <option value='".$CNF_ZASOB_IND."' ";
- if($SYNC_OPTIONS==$CNF_ZASOB_IND) echo " selected ";
- echo ">".$CNF_ZASOB_IND." ".$CNF_ZASOB_VAL."</option>";
- }
- echo "</select></td></tr>";
- echo "<tr><td>Podaj numer zasobu do wstawiania komorek z bazy danych do jej synchronizacji \$DATABASE_ROOT_ZASOB_ID - do tego numeru system bedzie dopisywac kolejne zasoby TABEL,KOMOREK,CECH. Podaj numer zasobu [ID] o typie BAZA_DANYCH </td>";
- echo "\n<td><input type=text name=DATABASE_ROOT_ZASOB_ID id=DATABASE_ROOT_ZASOB_ID value='".$DATABASE_ROOT_ZASOB_ID."'></input></td></tr>";
- echo "<tr><td>Podaj filtr/klucz do importu procesow z bazy LOCAL do bazy REMOTE \$SYSTEM_PROFILE_STRING_IMPORT_EXPORT - Te dane beda wyszukane po ADM_COMPANY , system dowiaze brakujace zasoby, przemapuje nowe ID i ustali ich powiazania w oparciu o tabele CRM_IMPORT_TRANSLATE </td>";
- echo "\n<td><input type=text name=SYSTEM_PROFILE_STRING_IMPORT_EXPORT value='".$SYSTEM_PROFILE_STRING_IMPORT_EXPORT."'></input></td></tr>";
- echo "\n<tr><td>Poziom debugu - ustaw na 6 aby mocno debugowac, na 1 aby slabo</td><td><input type=text name=DEBUG_LEVEL value='".$DEBUG_LEVEL."'></input></td></tr>";
- echo "<tr><td>Potwierdzenie dokonania zapisu na tabeli REMOTE</td><td><select name=CONFIRM_SQL_UPDATE>
- <option value=\"\"></option><option value=1>WYSLIJ DO BAZY</option><option value=REPLACE>WYSLIJ I NADPISZ STARE IMPORTY DO BAZY</option></td></tr></tr>";
- echo "<tr><td colspan=3><input type=submit name=submit value=OK></td></td>";
- echo "</table>";
- echo "</form><br>\n";
- echo "<a href=?FUNCTION_INIT=SQIX_STRUCTURE_DB_SYNC>odswiez</a>";
- echo "<img src=icon/superedit-SQIX_STRUCTURE_DB_SYNC.png border=0 width=100%><br> \n";
-
-
- if(empty($_REQUEST['submit'])||empty($SYNC_OPTIONS) ) die1();
- }
- // mozemy podac lokalna baze danych do weryfikacji oraz zdalna baze danych do weryfikacji
- $config_base_structure=".config_base_structure.php";
- //$CONFIRM_SQL_UPDATE='update';
- //$SYNC_OPTIONS='FROM_ZASOBY_TO_ZASOBY'; //CLEAR_IMPORTED_ZASOBY_REMOTE //FROM_ZASOBY_TO_ZASOBY
- $CECHY_POSZUKIWANE['FIELDS']['Field']='FIELD_PROP_Field';
- $CECHY_POSZUKIWANE['FIELDS']['Type']='FIELD_PROP_Type';
- $CECHY_POSZUKIWANE['FIELDS']['Null']='FIELD_PROP_Null';
- $CECHY_POSZUKIWANE['FIELDS']['Default']='FIELD_PROP_Default';
- $CECHY_POSZUKIWANE['FIELDS']['Extra']='FIELD_PROP_Extra';
- $CECHY_POSZUKIWANE['INDEX']['Non_unique']='TAB_PR_Non_unique';
- $CECHY_POSZUKIWANE['INDEX']['Key_name']='TAB_PR_Key_name';
- $CECHY_POSZUKIWANE['INDEX']['Column_name']='TAB_PR_Column_name';
-
-
-
- //! set tables used to generate main structure
- $TABLES_STRUCTURE_arr['MAIN'] = array('QUALITY_NOTICES','QUALITY_NOTICES_HIST','_ANALIZA_HISTORII_ALL','DEVICES_GROUP','GRAFIK_PRACY','GRAFIK_PRACY_HIST','GRAFIK_PRACY_view','SALES_PLAN','SALES_PLAN_HIST','ITEM_LINK_TYPES','ITEM_LINK_TYPES_HIST','ITEM_LINKS','ITEM_LINKS_HIST','TEST_PERMS','TEST_PERMS_HIST','DEVICES','_CRM_PROCES_INIT_STATS','_CRM_PROCES_USER_STATS_wiev','BUILDINGS','BUILDINGS_HIST','SES_VOIP_A','SES_VOIP_A_HIST','SES_TV_A','SES_TV_A_HIST','USERS2_DEALS','USERS2_DEALS_HIST','DEALS_TABLE','DEALS_TABLE_HIST','USERS2_MARKETING','USERS2_MARKETING_HIST','IN7_MK_BAZA_DYSTRYBUCJI','IN7_MK_BAZA_DYSTRYBUCJI_HIST','TELBOXES','TELBOXES_HIST','NETWORKS_SERVERS','NETWORKS_SERVERS_HIST','ADMIN_USERS','ADMIN_USERS_HIST','CRM_IMPORT_TRANSLATE','IN7_PRODUKTY_CECHY','IN7_CECHY','CRM_AUTH_PROFILE','CRM_AUTH_PROFILE_HIST','CRM_CZYNNOSCI','CRM_CZYNNOSCI_HIST','CRM_IMAGE','CRM_LISTA_ZASOBOW','CRM_LISTA_ZASOBOW_HIST','CRM_PROCES','CRM_PROCES_HIST','CRM_PROCES_LOG','CRM_PROCES_LOG_HIST','CRM_PRZYPADEK','CRM_TESTY','CRM_TESTY_HIST','CRM_TESTY_ODPOWIEDZI','CRM_TESTY_ODPOWIEDZI_HIST','CRM_TESTY_PYTANIA','CRM_TESTY_PYTANIA_HIST','CRM_TESTY_WYNIKI','CRM_TESTY_WYNIKI_HIST','CRM_WSKAZNIK','CRM_WSKAZNIK_HIST','DEVICES_HIST','IN7_DZIENNIK_KORESP','IN7_DZIENNIK_KORESP_HIST','USERS2_OFFERS','USERS2_OFFERS_HIST','USERS2_OFFERS_GROUPS','USERS2_OFFERS_GROUPS_HIST','USERS2_OFFERS_COSTS','USERS2_OFFERS_COSTS_HIST','USERS2_OFFERS_COSTS','USERS2_OFFERS_COSTS_HIST','SERVICES','SES_USERS2_A','USERS2','KIKE_AUTH_PROFILE','LDAP_GROUPS','CRM_TESTY_PYTANIA_TO_IMPORT','CRM_TESTY_PYTANIA_TO_IMPORT_HIST','PROBLEMS','PROBLEMS_HIST','COMPANIES','COMPANIES_HIST','_CRM_PROCES_STATS_proc_wiev','_CRM_PROCES_STATS','CRM_PROCES_USER_OCENA_OKRES','CRM_PROCES_USER_OCENA_OKRES_HIST','KONTAKTY_view','_CRM_PROCES_USER_STATS_wiev_to_group','projects_budget_year_month','projects_budget_year_month_HIST','in7_dziennik_koresp_budget_main_view','in7_dziennik_koresp_budget_view','budget_project_to_realization_view','budget_project_to_realization_main_view','CRM_LISTA_ZASOBOW_ALIASY_view','WMS_LAYERS','WMS_LAYERS_HIST','WMS_MAPS','WMS_MAPS_HIST','CRM_LISTA_ZASOBOW_OFFERS','CRM_LISTA_ZASOBOW_OFFERS_HIST','Rozdzielcza_struktura_wewnetrzna_wsg84','Rozdzielcza_struktura_wewnetrzna_wsg84_HIST','Rozdzielcza_wewn_kabel_ethernet', 'Rozdzielcza_Pakiet5MikrorurekMagistrala_WSG84','Rozdzielcza_Pakiet5MikrorurekMagistrala_WSG84_HIST','Rozdzielcza_rurociagi_obce_wsg84','Rozdzielcza_rurociagi_obce_wsg84_HIST','Rura_oslonowa_rozdzielcza_magistralna','Rozdzielcza_Przeciski_110mm','Rozdzielcza_Przeciski_110mm_HIST',
- 'Rozdzielcza_Przeciski_110mm_HIST','Rozdzielcza_Wykop_przedmiar_na_mikrorurki','Rozdzielcza_Wykop_przedmiar_na_mikrorurki_HIST','Rozdzielcza_Zabruki','Rozdzielcza_Zabruki_HIST','Rozdzielcza_Kabel_Swiatlowodowy_wsg84','Rozdzielcza_Kabel_Swiatlowodowy_wsg84_HIST','Rozdzielcza_koszty_dodatkowe_wsg84',
- 'Rozdzielcza_koszty_dodatkowe_wsg84_HIST','Rozdzielcza_wezly','Rozdzielcza_wezly_HIST','Rozdzielcza_Mikrokanalizacja_do_klienta','Rozdzielcza_Mikrokanalizacja_do_klienta_HIST','Rozdzielcza_PionyKablowe','Rozdzielcza_PionyKablowe_HIST','opt_kable','opt_kable_HIST','opt_lokalizacje','opt_lokalizacje_HIST','opt_spawy','opt_spawy_HIST','opt_przelacznice_mufy','opt_przelacznice_mufy_HIST','opt_porty','opt_porty_HIST','opt_wlokna','opt_wlokna_HIST','opt_tuby','opt_tuby_HIST','opt_tacki','opt_tacki_HIST','Rozdzielcza_rurociag_wsg84','Rozdzielcza_rurociag_wsg84_HIST','MK_BIALE_PLAMY','MK_BIALE_PLAMY_HIST','CRM_CONFIG','MK_BIALE_PLAMY_lokale','MK_Rewiry_POPC_sum','MK_Rewiry','MK_Rewiry_HIST','Rozdzielcza_Wezly_POPC','Rozdzielcza_Wezly_POPC_HIST','HOLIDAYS_REQUESTS','HOLIDAYS_REQUESTS_HIST','BILLING_OWNER','BILLING_OWNER_HIST','CRM_REF_CONFIG','WORKER_GPS_LOG','WORKER_GPS_LOG_HIST','P5Automation1OrangeRaportSimple','P5Automation1OrangeRaportSimple_HIST','CRM_INSTANCE_CONFIG',
- 'TERYT_SIMC','TERYT_TERC','TERYT_ULIC','PNA');
- $TABLES_STRUCTURE_DATA_arr['MAIN'] = array('CRM_PRZYPADEK','TERYT_SIMC','TERYT_TERC','TERYT_ULIC','PNA');
-
- $TABLES_STRUCTURE_arr['BiAudit'] = array(
- 'BI_audit_ALL',
- 'BI_audit_ALL_ref',
- 'BI_audit_ALL_ref_RELATIONS',
- 'BI_audit_CEIDG',
- 'BI_audit_CEIDG_pelnomocnicy',
- 'BI_audit_CEIDG_powiazania',
- 'BI_audit_ENERGA_FAKTURY',
- 'BI_audit_ENERGA_FAKTURY_HIST',
- 'BI_audit_ENERGA_KONTRAHENCI_group',
- 'BI_audit_ENERGA_KONTRAHENCI_group_HIST',
- 'BI_audit_ENERGA_PRACOWNICY',
- 'BI_audit_ENERGA_PRACOWNICY_adresy',
- 'BI_audit_ENERGA_PRACOWNICY_group',
- 'BI_audit_ENERGA_PRACOWNICY_group_HIST',
- 'BI_audit_ENERGA_PRACOWNICY_HIST',
- 'BI_audit_ENERGA_RUM_KONTRAHENCI',
- 'BI_audit_ENERGA_RUM_KONTRAHENCI_HIST',
- 'BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
- 'BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_HIST',
- 'BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row',
- 'BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row_object',
- 'BI_audit_ENERGA_RUM_UMOWY',
- 'BI_audit_ENERGA_RUM_UMOWY_HIST',
- 'BI_audit_KRS',
- 'BI_audit_KRS_address',
- 'BI_audit_KRS_company',
- 'BI_audit_KRS_MSIG',
- 'BI_audit_KRS_MSIG_HIST',
- 'BI_audit_KRS_MSIG_poz',
- 'BI_audit_KRS_person',
- 'BI_audit_KRS_PKD',
- 'BI_audit_KRS_PKD_HIST',
- 'BI_audit_KW_requested',
- 'BI_audit_KW_requested_HIST',
- 'BI_audit_KW_requested_person',
- 'BI_audit_MSIG',
- 'BI_audit_MSIG_address',
- 'BI_audit_MSIG_company',
- 'BI_audit_MSIG_name',
- 'BI_audit_MSIG_person',
- 'BI_audit_MSIG_PKD',
- 'BI_audit_MSIG_PKD_HIST',
- 'BI_audit_operational_raport_note',
- 'BI_audit_operational_raport_note_HIST',
- 'BI_audit_taxpayer',
- );
- //$TABLES_STRUCTURE_DATA_arr['BiAudit'] = array('BI_audit_ALL','BI_audit_ALL_ref','BI_audit_ALL_ref_RELATIONS','BI_audit_CEIDG','BI_audit_CEIDG_pelnomocnicy','BI_audit_CEIDG_powiazania','BI_audit_KRS','BI_audit_KRS_company','BI_audit_KRS_person','CRM__#REF_TABLE__11','CRM__#REF_TABLE__12','CRM__#REF_TABLE__18','CRM__#REF_TABLE__19');
- $TABLES_STRUCTURE = array();
- $TABLES_STRUCTURE_DATA = array();
- foreach ($TABLES_STRUCTURE_arr as $item) $TABLES_STRUCTURE = array_merge($TABLES_STRUCTURE, $item);
- foreach ($TABLES_STRUCTURE_DATA_arr as $item) $TABLES_STRUCTURE_DATA = array_merge($TABLES_STRUCTURE_DATA, $item);
- DEBUG_S(-3,'Lacze z bazami param: REMOTE_DB_ZASOB_ID',array($REMOTE_DB_ZASOB_ID,$CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['INTERFACE_ADDR'],$CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['SQL_USER'],$CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['SQL_DATABASE']),__FILE__,__FUNCTION__,__LINE__ );
- $CONNREMOTE = DB::getDB($REMOTE_DB_ZASOB_ID);
- $CONNREMOTE->query('set global max_allowed_packet=1000000000');
- /* if(!isset($CNF_ZASOB[$REMOTE_DB_ZASOB_ID])&&($SYNC_OPTIONS!='CREATE_ZASOBY_DATABASE_DESC')) die1('Nie zdefiniowano w konfigu CONNREMOTE bazy '.$REMOTE_DB_ZASOB_ID.' uzyj opcji CREATE_ZASOBY_DATABASE_DESC aby stworzyc te pola i wprowadz zmienna DATABASE_ROOT_ZASOB_ID do konfiga!');
- $CONNREMOTE=mysql_connect($CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['INTERFACE_ADDR'], $CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['SQL_USER'], $CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['SQL_USER_PASS'])
- or die1('nie moge polaczyc z '.$CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['INTERFACE_ADDR']);
- mysql_select_db($CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['SQL_DATABASE'],$CONNREMOTE);
- if (isset($CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['SQL_NAMES'])) $res=mysql_query("SET NAMES '{$CNF_ZASOB[$REMOTE_DB_ZASOB_ID]['SQL_NAMES']}';",$CONNREMOTE);
- $res=mysql_query("SHOW VARIABLES LIKE 'character\_set\_%';",$CONNREMOTE);
- while($h=mysql_fetch_object($res)) {
- $kodowania_remote[$h->Variable_name]=$h->Value;
- }
- DEBUG_S(-2,'Kodowania tej bazy remote',$kodowania_remote,__FILE__,__FUNCTION__,__LINE__);
- //echo "<pre> ".print_r($kodowania_remote)." </pre>";
- */
- DEBUG_S(-3,'Lacze z bazami param: LOCAL_DB_ZASOB_ID',array($LOCAL_DB_ZASOB_ID,$CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['INTERFACE_ADDR'], $CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_USER'], $CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_DATABASE']),__FILE__,__FUNCTION__,__LINE__ );
- $CONNLOCAL = DB::getDB($LOCAL_DB_ZASOB_ID);
- $CONNLOCAL->query('set global max_allowed_packet=1000000000');
- //DEBUG_S(-3,'LOCAL_DB_ZASOB_ID/REMOTE',array($LOCAL_DB_ZASOB_ID,$REMOTE_DB_ZASOB_ID),__FILE__,__FUNCTION__,__LINE__);
- //DEBUG_S(-3,'LOCAL_DB_ZASOB_ID/REMOTE',$CONNLOCAL,__FILE__,__FUNCTION__,__LINE__);
- /*
- if(!isset($CNF_ZASOB[$LOCAL_DB_ZASOB_ID])&&($SYNC_OPTIONS!='CREATE_ZASOBY_DATABASE_DESC')) die1('Nie zdefiniowano w konfigu CONNREMOTE bazy '.$CONNLOCAL);
- $CONNLOCAL=mysql_connect($CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['INTERFACE_ADDR'], $CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_USER'], $CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_USER_PASS'])
- or die1('nie moge polaczyc z '.$CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['INTERFACE_ADDR']);
- mysql_select_db($CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_DATABASE'],$CONNLOCAL);
- if (isset($CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_NAMES'])) $res=mysql_query("SET NAMES '{$CNF_ZASOB[$LOCAL_DB_ZASOB_ID]['SQL_NAMES']}';",$CONNLOCAL);
- $res=mysql_query("SHOW VARIABLES LIKE 'character\_set\_%';",$CONNLOCAL);
- while($h=mysql_fetch_object($res)) {
- $kodowania_local[$h->Variable_name]=$h->Value;
- }
- DEBUG_S(-2,'Kodowania tej bazy local',$kodowania_local,__FILE__,__FUNCTION__,__LINE__);
- //echo "<pre> ".print_r($kodowania_local)." </pre>";
- */
-
-
- echo "<pre>\n";
- echo "<hr>Odpalilem SQIX_STRUCTURE_DB_SYNC";
-
- echo "\n Lacze sie z baza lokalna :".$LOCAL_DB_ZASOB_ID;
- echo "\n Lacze sie z baza zdalna :".$REMOTE_DB_ZASOB_ID;
- echo "\n Funkcja :".$SYNC_OPTIONS;
- if(isset($_SESSION['CONFIG']['sql_character_set'])) {
- // mysql_query("SET character_set_results = '".$_SESSION['CONFIG']['sql_character_set']."', character_set_client = '".$_SESSION['CONFIG']['sql_character_set']."', character_set_connection = '".$_SESSION['CONFIG']['sql_character_set']."', character_set_database = '".$_SESSION['CONFIG']['sql_character_set']."', character_set_server = '".$_SESSION['CONFIG']['sql_character_set']."'", $CONNLOCAL);
- // mysql_query("SET character_set_results = '".$_SESSION['CONFIG']['sql_character_set']."', character_set_client = '".$_SESSION['CONFIG']['sql_character_set']."', character_set_connection = '".$_SESSION['CONFIG']['sql_character_set']."', character_set_database = '".$_SESSION['CONFIG']['sql_character_set']."', character_set_server = '".$_SESSION['CONFIG']['sql_character_set']."'", $CONNREMOTE);
- // mysql_query("SET character_set_results = 'latin2', character_set_client = 'latin2', character_set_connection = 'latin2', character_set_database = 'latin2', character_set_server = 'latin2'", $CONNREMOTE);
- // mysql_set_charset('latin2',$CONNREMOTE);
- // mysql_query("SET NAMES 'utf-8'",$CONNREMOTE);
- }
-
-
- // print_r($CNF_ZASOB[$REMOTE_DB_ZASOB_ID]);
- function insert_converted($VAL) {
- // ! TODO @2013-02-18 funkcja ma za zadanie w odpowiedni sposob przekonwertowac zapisane dane
- global $kodowania_local,$kodowania_remote;
-
- /* $VALX=explode(" ",$VAL);
- foreach($VALX as $VALS) {
- $hex='';
- for ($i=0; $i < strlen($VALS); $i++)
- {
- $hex .=" ".dechex(ord($VALS[$i]));
- }
- echo "\n<br>".$VALS."==".$hex ;
- }
- // if($kodowania_local['character_set_server']<>$kodowania_remote['character_set_server']) {
- // $VAL = iconv('UTF-8', 'ISO-8859-2', $VAL);
- // $VAL = iconv($kodowania_remote['character_set_server'], $kodowania_local['character_set_server'], $VAL);
- //DEBUG_S(-3,'Kodowanie jest inne, wiec bedziemy konwertowac',array($kodowania_local,$kodowania_remote),__FILE__,__FUNCTION__,__LINE__);
- //}
- */
- return $VAL;
-
- }
-
- function SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC_FIX_ALIAS($CONNREMOTE,$CONFIRM_SQL_UPDATE) {
-
- // @2014-06-27 - chyba lepiej nie flushowac - jakby sie poprzedni import zwiesil?
- $sql_flush[]="update CRM_LISTA_ZASOBOW set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC_FIX_ALIAS'" ;
- $sql_flush[]="update CRM_IMAGE set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_PROC' ";
- $sql_flush[]="update CRM_PROCES set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_PROC_FIX_GOTO'" ;
- $sql_flush[]="update CRM_TESTY set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_PROC'" ;
- $sql_flush[]="update CRM_TESTY_PYTANIA set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_PROC'" ;
- $sql_flush[]="update CRM_WSKAZNIK set SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC' ";
- foreach($sql_flush as $sql) {
- if(!empty($CONFIRM_SQL_UPDATE)) { $result_ins=$CONNREMOTE->query($sql) or DIE('Problem ze sql:290: '.$sql.' / '.mysql_error($CONNREMOTE));
- DEBUG_S(-3,'Zeruje: tabele importow : w tabeli '.$TABLE,$sql,__FILE__,__FUNCTION__,__LINE__);
- }
- }
-
- }
-
- // ! FROM_ZASOBY_TO_ZASOBY
- function FROM_ZASOBY_TO_ZASOBY($CONNLOCAL,$CONNREMOTE,$SYSTEM_PROFILE_STRING_IMPORT_EXPORT,$CONFIRM_SQL_UPDATE,$CRM_IMPORT_TRANSLATE) {
- //0. zerujemy autorow translate aby import nic nie zepsul
- //1.szukam ID Procesow spelniajacych kryteria
- //2.szukam wszystkich ID procesow podrzednych - nizej
- //3.szukam wszystkich powiazanych WSKAZNIKOW
- //4.szukam wszystkich powiazanych ZASOBOW
- //4a. szukam wyszstkich zasobow powyzej danego zasobu
- //5. CRM_PYTANIA importuje
- //5a. trzeba importnac wszystkie CRM_IMAGE todo
- //6. wszystkie translacje zapisuje w specjalnej tabeli, ktra tworze
- //6.0 @2013-01-23 , teraz mozna wykorzystywac juz ustalone wczesniej translacje jakos
- //6a. importuje strukture ID PROCESOW -> na NOWY_ID -> zapisuje
- //6b. importuje strukture zasobow -> NOWY_ID_ZASOBU -> zapisuje
- //6c. importuje strukture wskaznikow -> Nowy ID wskaznika, translacja ID_PROCESU, translacja ZASOBU
- //6d. TODO CECHY TEZ TRZEBA IMPORTNAC!
- //7. updatujemy ID z tabeli slownikowej na docelowe
-
- //use before function SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC_FIX_ALIAS($CONNREMOTE);
-
-
- function EXPORT_DATA_WITH_TRANSLATE_TABLE($CONNLOCAL,$CONNREMOTE,$TABLE,$ARRAY_WITH_IDS,$CONFIRM_SQL_UPDATE,$CRM_IMPORT_TRANSLATE) {
- foreach($ARRAY_WITH_IDS as $ID_TO_IMPORT => $NIC) {
- flush();
- $last_inserted_id="";
- $sql="select * from ".$TABLE." where `ID`='".$ID_TO_IMPORT."'" ;
- DEBUG_S(3,"Importuje dane dla tabeli ".$TABLE." ",$sql,__FILE__, __FUNCTION__, __LINE__);
- $result_sel=$CONNLOCAL->query($sql) or DEBUG_S(-3,'Blad SQL',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- while($h=mysql_fetch_object($result_sel)){
- //print_r($h);
- $SRC_TABLE_ID="";
- if($TABLE=='CRM_LISTA_ZASOBOW') {
- if(isset($CRM_IMPORT_TRANSLATE[$TABLE][$h->PARENT_ID])) {
- DEBUG_S(2,'NARZUCAM INNY PARENT ID '.$TABLE.' dla ID="'.$h->ID.'" "'.$h->PARENT_ID.'" na "'.$CRM_IMPORT_TRANSLATE[$TABLE][$h->PARENT_ID].'"','',__FILE__,__FUNCTION__,__LINE__);
- $h->PARENT_ID=$CRM_IMPORT_TRANSLATE[$TABLE][$h->PARENT_ID];
- }
- if(isset($CRM_IMPORT_TRANSLATE[$TABLE][$h->ALIAS_ID])) {
- DEBUG_S(2,'(CRM_LISTA_ZASOBOW->ALIAS_ID) NARZUCAM INNY PARENT ID '.$TABLE.' dla ID="'.$h->ID.'" "'.$h->ALIAS_ID.'" na "'.$CRM_IMPORT_TRANSLATE[$TABLE][$h->ALIAS_ID].'"','',__FILE__,__FUNCTION__,__LINE__);
- $h->ALIAS_ID=$CRM_IMPORT_TRANSLATE[$TABLE][$h->ALIAS_ID];
- }
- if(isset($h->A_CLASSIFIED)) $h->A_CLASSIFIED='';
- if(isset($h->A_ADM_COMPANY)) $h->A_ADM_COMPANY='';
-
- }
-
-
- //dodatkowo sprawdzamy liste przekierowanych wczesniej importow TRANSLATE
- $sql="select `DST_TABLE_ID` from `CRM_IMPORT_TRANSLATE` where `REM_TABLE`='".$TABLE."' and `SRC_TABLE_ID`='".$h->ID."' ;" ;
- $result_tst=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze sql ',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('');
- $DST_FOUND_ID=0; $IF_NOT_REPLACED=true;
- while($tst=$CONNREMOTE->fetch($result_tst)) {
- //$h->PARENT_ID=$tst->DST_TABLE_ID;
- $DST_FOUND_ID=$tst->DST_TABLE_ID;
- $IF_NOT_REPLACED=false; //zaznaczamy, ze nie byl wczesniej zaimportowany
- DEBUG_S(3,'ZNALAZLEM_REKORD_IGNORUJE_IMPORT:" w tabeli '.$TABLE.' , src_id:'.$h->ID.', dst_id: '.$tst->DST_TABLE_ID.'" "'.$h->PARENT_ID.'"',$sql,__FILE__,__FUNCTION__,__LINE__);
- if($CONFIRM_SQL_UPDATE!='REPLACE') break 2;
- }
-
- // ! sprawdzmy czy w naszej tabeli nie ma jakiegos parenta, ktory zostal juz wstawiony jako inny ID - mozna z nim wstawic rekord nowy jako nadrzedny ?
- // if($TABLE=='CRM_WSKAZNIK') {
- // $sql="select DST_TABLE_ID from CRM_IMPORT_TRANSLATE where `REM_TABLE`='CRM_LISTA_ZASOBOW' and `SRC_TABLE_ID`='".$h->ID_ZASOB."' ;" ;
- // $result_tst=mysql_query($sql,$CONNREMOTE) or DEBUG_S(-3,'Problem ze sql ',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('');
- // while($tst=mysql_fetch_object($result_tst)) {
- // }
- // }
- //if(isset($CRM_IMPORT_TRANSLATE[$TABLE][$h->ID])) { //to oznacza, ze jest zasob taki sam jak obcy, to polaczenia
- //
- //}
- $SYNC_SQIX_STATUS='SYSTEM_IMPORT';
- foreach($h as $IND=>$VAL) {//karmie komorki
- if($IND=='ID') {
- $SRC_TABLE_ID=$VAL;
- } else if($IND=='SYNC_SQIX_STATUS') {
- //@2014-02-05 proba wlasciwego oznaczenia nadpisanego P_ID aby nic mu juz tego PARENTA nie zmienilo potem:
- //@2014-04-03 to nie dziala!!! TODO nalezy ignorowac kolumne P_ID w takim wypadku!
-
- //@2017-11-15 bledne zalozenie, ze replace nie wymaga tlumaczenia - przeciez nadpisze sie P_ID!
- //if($CONFIRM_SQL_UPDATE!='REPLACE')
- // if(($DST_FOUND_ID>0)) $SYNC_SQIX_STATUS='_FIX_ZASOB';
-
- } else if(($TABLE=='CRM_LISTA_ZASOBOW')&&($IND=='A_LDAP_GID')) {
-
- //} else if(($CONFIRM_SQL_UPDATE=='REPLACE')&&($DST_FOUND_ID>0)&&($IND=='P_ID')) {
- // $SYNC_SQIX_STATUS='_FIX_ZASOB';
- //pusto nie nadpisujemy P_ID
- //} else if(($CONFIRM_SQL_UPDATE=='REPLACE')&&($DST_FOUND_ID>0)&&($IND=='PARENT_ID')) {
- // $SYNC_SQIX_STATUS='_FIX_ZASOB';
- //pusto nie nadpisujemy P_ID
- } else {
- $FIELDS[$IND]=$VAL;
- if($IF_NOT_REPLACED) $SQL_METHOD='insert';
- else if($CONFIRM_SQL_UPDATE=='REPLACE') {
- $SQL_METHOD='replace' ;
- }
-
- $sql_ins['sql']=$SQL_METHOD." into `".$TABLE."` ( `ID` , `SYNC_SQIX_STATUS` ";
- $sql_ins['fields']="";
- $sql_ins['values']=" '".$DST_FOUND_ID."' , '{$SYNC_SQIX_STATUS}' ";
- }
- }
- foreach($FIELDS as $IND=>$VAL) {
- $sql_ins['fields'].=", `".$IND."`";
- $sql_ins['values'].=", '". $CONNREMOTE->_(insert_converted($VAL))."'";
- }
- //die1($sql_ins['values']);
- $sql_ins['sql'].=$sql_ins['fields']." ) values ( ".$sql_ins['values']." ) ;";
- if(!empty($CONFIRM_SQL_UPDATE)) $result_ins=$CONNREMOTE->query($sql_ins['sql']) or DIE('Problem ze sql:481: '.$sql_ins['sql'].' / '.mysql_error($CONNREMOTE));
- $last_inserted_id=$CONNREMOTE->insert_id();
- if($TABLE<>'CRM_IMAGE') DEBUG_S(4,'DOdano do tabeli '.$TABLE.' PARENT("'.$h->P_ID.$h->PARENT_ID.'") rekord ID("'.$h->ID.'")(Lastid:"'.$last_inserted_id.'")sql:',$sql_ins['sql'],__FILE__,__FUNCTION__,__LINE__);
- if(empty($last_inserted_id)) {
- DEBUG_S(-3,'Blad dodania do bazy 1,5/2 SQL, pusty last_inserted_id',array($CONFIRM_SQL_UPDATE,$sql_ins['sql'],$last_inserted_id),__FILE__, __FUNCTION__, __LINE__) ;
- if(!empty($CONFIRM_SQL_UPDATE)) DIE();
- } else if($IF_NOT_REPLACED) {
- //$CRM_IMPORT_TRANSLATE[$TABLE][$SRC_TABLE_ID]=$last_inserted_id; //zapisujemy jaki dostal id nowy rekord
- $sql_translate="insert into CRM_IMPORT_TRANSLATE (`REM_TABLE`,`SRC_TABLE_ID`,`DST_TABLE_ID` ) values ('".$TABLE."','".$SRC_TABLE_ID."','".$last_inserted_id."')";
- DEBUG_S(3,'Dopisujemy ID do tabeli slownikowej',$sql_translate,__FILE__, __FUNCTION__, __LINE__) ;
- if(!empty($CONFIRM_SQL_UPDATE)) $result_trans=$CONNREMOTE->query($sql_translate) or DEBUG_S(-3,'Blad dodania do bazy translate 2/2 SQL',$sql_translate,__FILE__, __FUNCTION__, __LINE__) or DIE();
- }
-
- }
-
- }
- }
-
- $HOW_MANY_RECURRENCES_EXEC=0;
- function FIND_CHILDS_OR_PARENTS_OF_FIELD($ID,$PARENT_OR_CHILD,$TABLE,$CONN,$HOW_MANY_RECURRENCES_EXEC,$found=array()) {
- DEBUG_S(5,'Szukam powiazanych struktur dla tabeli: '.$TABLE.' oraz ID: "'.$ID.'"',array($ID,$PARENT_OR_CHILD,$TABLE,$CONN,$HOW_MANY_RECURRENCES_EXEC,$found),__FILE__,__FUNCTION__,__LINE__);
- $HOW_MANY_RECURRENCES_EXEC++;
- $RECURENCES_MAX=1000; //TODO to be in config!
- if($HOW_MANY_RECURRENCES_EXEC>$RECURENCES_MAX) { DEBUG_S(-3,'Za duzo wyzwolen petli!',array($RECURENCES_MAX,$HOW_MANY_RECURRENCES_EXEC,$ID,$PARENT_OR_CHILD,$TABLE,$found),__FILE__, __FUNCTION__, __LINE__); die1();}
- if($PARENT_OR_CHILD=='PARENT') {
- $sql="select PARENT_ID from ".$TABLE." where ID='".$ID."' ";
- if($TABLE=='CRM_PROCES') $sql.=" union select `IF_TRUE_GOTO` as `PARENT_ID` from `CRM_PROCES` where `ID`='".$ID."' and IF_TRUE_GOTO>0 and IF_TRUE_GOTO_FLAG='GOTO_AND_RETURN' ";
- //if($TABLE=='CRM_LISTA_ZASOBOW') $sql.=" and EXPORT_PARAM='PUBLIC' ";
- } else if($PARENT_OR_CHILD=='CHILD') {
- $sql_what="";
- if($TABLE=='CRM_LISTA_ZASOBOW') $sql_what.=" , ALIAS_ID "; //to get also aliases STUFF
- $sql="select ID ".$sql_what." from ".$TABLE." where PARENT_ID='".$ID."' ";
- if($TABLE=='CRM_PROCES') $sql.=" and EXPORT_PARAM='PUBLIC' union select `IF_TRUE_GOTO` as `ID` from `CRM_PROCES` where `ID`='".$ID."' and IF_TRUE_GOTO>0 and IF_TRUE_GOTO_FLAG='GOTO_AND_RETURN' ";
- if($TABLE=='CRM_LISTA_ZASOBOW') $sql.=" and EXPORT_PARAM='PUBLIC' ";
- }
- DEBUG_S(6,'Zapytanie do poszukania dziecka/rodzica ID "'.$ID.'"',array($HOW_MANY_RECURRENCES_EXEC,$sql),__FILE__, __FUNCTION__, __LINE__);
- $result=$CONN->query($sql) or DEBUG_S(-3,'Problem ze SQL przy szukaniu powiazan dzieci/rodzicow',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- $cnt=0;
- while($h=mysql_fetch_object($result)) {
- $cnt++;
- if($PARENT_OR_CHILD=='PARENT') $connections=$h->PARENT_ID;
- else if($PARENT_OR_CHILD=='CHILD') $connections=$h->ID;
- //$ret[]=$connections;
- $IMPORT[]=$connections;
- // if($HOW_MANY_RECURRENCES_EXEC<$RECURENCES_MAX)
- $found[]=$connections;
- //if(!in_array($connections, $found))@2014-04-03 TODO jak beda GOTO_AND_RETURN zapetlone, to sie zwiesi i nie wiem jak to wykryc TODO PIOTR jakos zmienna trzeba zapodac inaczej
- $x=FIND_CHILDS_OR_PARENTS_OF_FIELD($connections,$PARENT_OR_CHILD,$TABLE,$CONN,$HOW_MANY_RECURRENCES_EXEC,null);
- if(!empty($x)) {
- foreach($x as $push) {
- array_push($IMPORT,$push);
- }
- }
- if(!empty($h->ALIAS_ID)) { //wyszukanie struktur dla ALIASOW //Moze sie zapetlic!
- DEBUG_S(3,' Natrafilem na ALIAS_ID wyszukuje jego rodzicow('.$h->ALIAS_ID.')',null,__FILE__,__FUNCTION__,__LINE__);
- $IMPORT[]=$h->ALIAS_ID;
- $x=FIND_CHILDS_OR_PARENTS_OF_FIELD($h->ALIAS_ID,'PARENT',$TABLE,$CONN,$HOW_MANY_RECURRENCES_EXEC,null);
- if(!empty($x)) {
- foreach($x as $push) {
- array_push($IMPORT,$push);
- }
- }
- }
- }
-
- // foreach($IMPORT as $VAR){
- // $RETURN[]=$VAR;
- // }
- //foreach($childs_of_proces as $VAR){
- //$RETURN[]=$VAR;
- //}
- //DEBUG_S(3,'Znalazlem tyle skojarzonych rekordow: ',$IMPORT,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($IMPORT))
- return $IMPORT;
- }
- $sql="select `ID` from CRM_PROCES where ( `TAGS` like '".$SYSTEM_PROFILE_STRING_IMPORT_EXPORT."' or `ID` like '".$SYSTEM_PROFILE_STRING_IMPORT_EXPORT."' ";
- if(strstr($SYSTEM_PROFILE_STRING_IMPORT_EXPORT,',')) {
- $search = explode(',',$SYSTEM_PROFILE_STRING_IMPORT_EXPORT);
- foreach($search as $string) {
- $sql.=" or `TAGS` like '".$string."' ";
- $sql.=" or `ID` like '".$string."' ";
- }
- }
-
- $sql.=" ) and `A_STATUS`!='DELETED' and EXPORT_PARAM!='PRIVATE'"; // ! szukam glownej listy procesow do importu wg klucza
- DEBUG_S(-3,'1. szukam procesow spelniajacych kryteria import ',array($SYSTEM_PROFILE_STRING_IMPORT_EXPORT,$sql),__FILE__, __FUNCTION__, __LINE__);
- $result=$CONNLOCAL->query($sql);
- $childs_of_proces_arr=array();
- while($h=mysql_fetch_object($result)) {
- array_push($childs_of_proces_arr,$h->ID);
- $x=FIND_CHILDS_OR_PARENTS_OF_FIELD($h->ID,'CHILD','CRM_PROCES',$CONNLOCAL,null,null);
- foreach($x as $push) { array_push($childs_of_proces_arr,$push); }
- $x=FIND_CHILDS_OR_PARENTS_OF_FIELD($h->ID,'PARENT','CRM_PROCES',$CONNLOCAL,null,null);
- foreach($x as $push) { array_push($childs_of_proces_arr,$push); }
- }
- DEBUG_S(-3,'wyszlo : Znaleziono liste procesow do exportu przed :',$childs_of_proces_arr,__FILE__, __FUNCTION__, __LINE__);
- foreach($childs_of_proces_arr as $cos) {
- $childs_of_proces_arr_zjebany[$cos]=1;
- }
- flush();
- DEBUG_S(-3,'Znaleziono liste procesow do exportu :',$childs_of_proces_arr_zjebany,__FILE__, __FUNCTION__, __LINE__);
- foreach($childs_of_proces_arr_zjebany as $PROCES_DO_KROTREGO_SZUKAM_WSKAZNIKA=>$NIC) {
- // ! szukam CRM_IMAGE po procesach
- $sql="select ID from CRM_IMAGE where REMOTE_ID='".$PROCES_DO_KROTREGO_SZUKAM_WSKAZNIKA."' and REMOTE_TABLE='CRM_PROCES' " ;
- $result_img=$CONNLOCAL->query($sql) or DEBUG_S(-3,'Szukam CRM_IMAGE do procesow/zasobow sql: ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- while($hh=mysql_fetch_object($result_img)){
- $crm_image_to_import[$hh->ID]=1;
- }
- $sql="select CP.ID from CRM_TESTY_PYTANIA as CP
- left join CRM_WSKAZNIK as CW on CW.ID=CP.ID_WSKAZNIK
- left join CRM_LISTA_ZASOBOW as CZ on CZ.ID=CW.ID_ZASOB
- where CP.ID_PROCES='".$PROCES_DO_KROTREGO_SZUKAM_WSKAZNIKA."'
- and ( CZ.EXPORT_PARAM!='PRIVATE' OR CZ.EXPORT_PARAM IS NULL ) " ; // ! todo verify- bylo $h->ID_ZASOB , chyba blad
- $result_pyt=$CONNLOCAL->query($sql) or DEBUG_S(-3,'Szukam testow/pytan do procesu sql: ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- while($hh=mysql_fetch_object($result_pyt)){
- $pytania_to_import[$hh->ID]=1;
- }
-
- $sql="select t1.ID ,t1.ID_ZASOB , t1.ID_PROCES , CZ.ALIAS_ID from CRM_WSKAZNIK as t1
- left join CRM_LISTA_ZASOBOW as CZ on CZ.ID=t1.ID_ZASOB
- where t1.ID_PROCES='".$PROCES_DO_KROTREGO_SZUKAM_WSKAZNIKA."' and CZ.EXPORT_PARAM!='PRIVATE' ";//and t1.A_STATUS in ('NORMAL','WAITING') - delety tez sie musza przegrac i nadpisac
- DEBUG_S(4,'1. szukam wskaznikow ( i zasobow root ) spelniajacych kryteria import '.$PROCES_DO_KROTREGO_SZUKAM_WSKAZNIKA,array($PROCES_DO_KROTREGO_SZUKAM_WSKAZNIKA,$sql),__FILE__, __FUNCTION__, __LINE__);
- $result=$CONNLOCAL->query($sql) or DEBUG_S(-3,'Problem z zapytaniem SQL ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- while($h=mysql_fetch_object($result)) {
- $wskazniki_to_import[$h->ID]=array('ID_PROCES'=>$h->ID_PROCES, 'ID_ZASOB'=>$h->ID_ZASOB);
-
- if(!empty($h->ALIAS_ID)) {
- DEBUG_S(1,'Dodaje zasob do importu z uwagi na ALIAS_ID('.$h->ALIAS_ID.')',null,__FILE__,__FUNCTION__,__LINE__);
- $zasoby_to_import[][]=$h->ALIAS_ID;
- $zasoby_to_import[]=FIND_CHILDS_OR_PARENTS_OF_FIELD($h->ALIAS_ID,'PARENT','CRM_LISTA_ZASOBOW',$CONNLOCAL,null,null);
- } //TODO@2014-08-13 testing
- $zasoby_to_import[]=FIND_CHILDS_OR_PARENTS_OF_FIELD($h->ID_ZASOB,'PARENT','CRM_LISTA_ZASOBOW',$CONNLOCAL,null,null);
- $zasoby_to_import[][]=$h->ID_ZASOB;
- $zasoby_to_import[]=FIND_CHILDS_OR_PARENTS_OF_FIELD($h->ID_ZASOB,'CHILD','CRM_LISTA_ZASOBOW',$CONNLOCAL,null,null);
- $sql="select ID from CRM_TESTY_PYTANIA where ID_WSKAZNIK='".$h->ID."' " ; // ! todo verify- bylo $h->ID_ZASOB , chyba blad
- $result_pyt=$CONNLOCAL->query($sql) or DEBUG_S(-3,'Szukam testow/pytan do procesu sql: ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- while($hh=mysql_fetch_object($result_pyt)){
- $pytania_to_import[$hh->ID]=1;
- }
- $sql="select ID from CRM_IMAGE where REMOTE_ID='".$h->ID_ZASOB."' and REMOTE_TABLE='CRM_LISTA_ZASOBOW' " ;
- $result_pyt=$CONNLOCAL->query($sql) or DEBUG_S(-3,'Szukam CRM_IMAGE do procesow/zasobow sql: ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- while($hh=mysql_fetch_object($result_pyt)){
- $crm_image_to_import[$hh->ID]=1;
- }
- //TODO tutaj cechy trzeba importnac
- }
-
- DEBUG_S(4,'zasoby_to_import/wskazniki',array($zasoby_to_import,$wskazniki_to_import),__FILE__, __FUNCTION__, __LINE__);
- foreach($zasoby_to_import as $VAR) {
- foreach($VAR as $ZASOBY){
- $zasoby_to_import_arr[$ZASOBY]=1;
-
- }
- }
- DEBUG_S(4,'$zasoby_to_import_arr',$zasoby_to_import_arr,__FILE__, __FUNCTION__, __LINE__);
- unset($zasoby_to_import);
-
- }
- DEBUG_S(1,'Ogolnie znaleziono zasoby_to_import_arr',$zasoby_to_import_arr,__FILE__, __FUNCTION__, __LINE__);
- //@2013-07 - wyszukanie specjalnych funkcji do importu
- $sql="select CZ.ID as ID_ZASOB, CZ.ALIAS_ID from CRM_LISTA_ZASOBOW as CZ
- where ( CZ.`DESC`='VARIABLES' or CZ.`DESC`='TYPESPECIALS' or CZ.`TYPE`='TYPESPECIAL' or CZ.`TYPE`='PARAM_OUT' or CZ.`TYPE`='PARAM_IN' or CZ.`TYPE`='SQL_EQUAL' ) and CZ.EXPORT_PARAM!='PRIVATE'";
- DEBUG_S(2,'1. szukam typespecial/funkcji do importu (',$sql,__FILE__, __FUNCTION__, __LINE__);
- $result=$CONNLOCAL->query($sql) or die1('\nProblem z '.$sql);
- while($h=mysql_fetch_object($result)) {
- $zasoby_to_import[]=FIND_CHILDS_OR_PARENTS_OF_FIELD($h->ID_ZASOB,'PARENT','CRM_LISTA_ZASOBOW',$CONNLOCAL,null,null);
- $zasoby_to_import[][]=$h->ID_ZASOB;
- if(!empty($h->ALIAS_ID)) $zasoby_to_import[][]=$h->ALIAS_ID;
- $zasoby_to_import[]=FIND_CHILDS_OR_PARENTS_OF_FIELD($h->ID_ZASOB,'CHILD','CRM_LISTA_ZASOBOW',$CONNLOCAL,null,null);
- }
- DEBUG_S(-3,'typespecial zasoby_to_import_arr',$zasoby_to_import,__FILE__, __FUNCTION__, __LINE__);
- foreach($zasoby_to_import as $VAR) {
- foreach($VAR as $ZASOBY){
- $zasoby_to_import_arr[$ZASOBY]=1;
- }
- }
- unset($zasoby_to_import);
-
-
- DEBUG_S(-3,'Importuje CRM_PROCES Bede importowac dane, bo Znaleziono liste wskaznikow oraz zasobow do exportu wskazniki_to_import,zasoby_to_import_arr,pytania_to_import:',$childs_of_proces_arr_zjebany,__FILE__, __FUNCTION__, __LINE__);
- //importuje PROCESU
- EXPORT_DATA_WITH_TRANSLATE_TABLE($CONNLOCAL,$CONNREMOTE,'CRM_PROCES',$childs_of_proces_arr_zjebany,$CONFIRM_SQL_UPDATE,$CRM_IMPORT_TRANSLATE);
- DEBUG_S(-3,'Importuje CRM_WSKAZNIK w oparciu o klucze ID',$wskazniki_to_import,__FILE__, __FUNCTION__, __LINE__);
- EXPORT_DATA_WITH_TRANSLATE_TABLE($CONNLOCAL,$CONNREMOTE,'CRM_WSKAZNIK',$wskazniki_to_import,$CONFIRM_SQL_UPDATE,$CRM_IMPORT_TRANSLATE);
- DEBUG_S(-3,'Importuje CRM_LISTA_ZASOBOW w oparciu o klucze ID',$zasoby_to_import_arr,__FILE__, __FUNCTION__, __LINE__);
- EXPORT_DATA_WITH_TRANSLATE_TABLE($CONNLOCAL,$CONNREMOTE,'CRM_LISTA_ZASOBOW',$zasoby_to_import_arr,$CONFIRM_SQL_UPDATE,$CRM_IMPORT_TRANSLATE);
- DEBUG_S(-3,'Importuje CRM_TESTY_PYTANIA w oparciu o klucze ID',$pytania_to_import,__FILE__, __FUNCTION__, __LINE__);
- EXPORT_DATA_WITH_TRANSLATE_TABLE($CONNLOCAL,$CONNREMOTE,'CRM_TESTY_PYTANIA',$pytania_to_import,$CONFIRM_SQL_UPDATE,$CRM_IMPORT_TRANSLATE);
- DEBUG_S(-3,'Importuje CRM_IMAGE w oparciu o klucze ID',$crm_image_to_import,__FILE__, __FUNCTION__, __LINE__);
- EXPORT_DATA_WITH_TRANSLATE_TABLE($CONNLOCAL,$CONNREMOTE,'CRM_IMAGE',$crm_image_to_import,$CONFIRM_SQL_UPDATE,$CRM_IMPORT_TRANSLATE);
- // aktualizujemy PARAM_OUT dla zaimportowanych zasobow:
- //@2015-05-15 TODO-test obejscie typespecial PARAM_OUT dla przekazywanych parametrów np. &ZASOB_ID=4095 - trzeba tutaj tez podmienić na właściwy numer zasobu.
- $sql="select `ID`,`DESC` from CRM_LISTA_ZASOBOW where `TYPE`='PARAM_OUT' and SYNC_SQIX_STATUS not like '%FIX_ZASOB%' and SYNC_SQIX_STATUS not like '' ";
- $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze sql ',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('');
- while($h=mysql_fetch_object($result)) {
- if (false !== strpos($h->DESC, 'VIEWTABLE_AJAX')) {
- $id_zas_new_h_DESC = $h->DESC;
- $matches = array();
- if (preg_match_all('/&ZASOB_ID=([0-9]+)/', $id_zas_new_h_DESC, $matches)) {
- if (count($matches) >= 2 && !empty($matches[1])) {
- $sqlIds = implode(",", $matches[1]);
- $sql_to_find_parent="select `DST_TABLE_ID`, `SRC_TABLE_ID`
- from `CRM_IMPORT_TRANSLATE`
- where `REM_TABLE` = 'CRM_LISTA_ZASOBOW'
- and `SRC_TABLE_ID` in({$sqlIds})
- ";
- $res_to_find_parent_param=$CONNREMOTE->query($sql_to_find_parent) or DEBUG_S(-3,'Problem ze sql ',$sql_to_find_parent,__FILE__, __FUNCTION__, __LINE__) or die1('');
- while($h_res_to_find_TS=mysql_fetch_object($res_to_find_parent_param)) {
- $paramOutLinkZasobId = $h_res_to_find_TS->SRC_TABLE_ID;
- $newLinkZasobId = $h_res_to_find_TS->DST_TABLE_ID;
- $id_zas_new_h_DESC = preg_replace('/&ZASOB_ID='.$paramOutLinkZasobId.'/', '&ZASOB_ID='.$newLinkZasobId, $id_zas_new_h_DESC);
- }
- if($id_zas_new_h_DESC != $h->DESC) { $sql_upd="update CRM_LISTA_ZASOBOW set `DESC`='".$CONNREMOTE->_($id_zas_new_h_DESC)."' where ID=".$h->ID." ; ";
- $CONNREMOTE->query($sql_upd) or die('Error with upd TYPESPECIAL PARAM_OUT line: 709:'.$sql_upd);
- DEBUG_S(-3,'Nadpisuje TYPESPECIAL PARAM_OUT, ktory ma uzyty URL z ID_ZASOB',$sql_upd,__FILE__,__FUNCTION__,__LINE__);
- }
- }
- }
- }
- }
- // ! aktualizujemy numery P_ID powiazanych tabel po tabeli translate dla IMPORTow z wyjatkiem celowo nadpisanych P_ID
- $sql='select * from CRM_IMPORT_TRANSLATE ;' ;
- $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze sql ',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('');
- while($h=mysql_fetch_object($result)) {
- set_time_limit(36000);
- if(isset($sql)) unset($sql);
-
- if($h->REM_TABLE=='CRM_LISTA_ZASOBOW') {
- //trzeba sprawdzic, czy dany typ jest komorka w tabeli
-
- //tylko jezeli wszedl z tego importu
- /* TODO @2017-09-25 nie dziala funkcja get_cols jak nie ma tabeli ma fatal error
- if(isset($zasoby_to_import_arr[$h->SRC_TABLE_ID])) {
-
- $sql_chk="select t2.`ID` as ID_TABLE, t2.`TYPE`,t2.`DESC` as `TABLE`, t1.`DESC`,t1.`COLUMN_DEFAULT`,t1.`IS_NULLABLE`,t1.`COLUMN_TYPE`,t1.`IS_AUTO_INCREMENT` from CRM_LISTA_ZASOBOW as t1 left join CRM_LISTA_ZASOBOW as t2 on t1.PARENT_ID=t2.ID where t1.ID='".$h->SRC_TABLE_ID."' and t1.`TYPE`='KOMORKA' and t2.`TYPE`='TABELA'";
- //trzeba sprawdzic, czy taka komorka istnieje w danej tabeli
- $res_chk=$CONNLOCAL->query($sql_chk);
- while($chk=$CONNLOCAL->fetch($res_chk)) {
- //jak nie istnieje, trzeba ja dodac
- //$sql_chk="select";
- DEBUG_S(3,'Sprawdzam czy istnieje komorka fizycznie w bazie',array($chk,$sql_chk),__FILE__,__FUNCTION__,__LINE__);
- $chk_obj= new Data_Source() ;
- $chk_obj->setTable($chk->TABLE);
- $chk_obj->get_cols();
- if(empty($chk_obj->_col_types)) {
- DEBUG_S(3,'ckh_obj IS EMPTY!! Creating database from CRM_LISTA_ZASOBOW field: TABLE_STRUCTURE from field_src_id:'.$h->SRC_TABLE_ID." src_field_name:".$chk->DESC." src_table_id ".$chk->ID_TABLE." src_field_name ".$chk->TABLE,$chk_obj,__FILE__,__FUNCTION__,__LINE__);
- $sql_="select TABLE_STRUCTURE from CRM_LISTA_ZASOBOW where ID=".$chk->ID_TABLE ;
- $res_str=$CONNLOCAL->query($sql_); unset($sql_);
- $struct=$CONNLOCAL->get_by_id('CRM_LISTA_ZASOBOW',$chk->ID_TABLE);
- DEBUG_S(4,'The structure of table is',$struct,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($struct->TABLE_STRUCTURE)) { //parsing unserialize to build structure
- $arr_=unserialize(stripcslashes($struct->TABLE_STRUCTURE));
- if(is_array($arr_)) {
- $arr[$chk->TABLE]=$arr_;
- DEBUG_S(4,'Uruchamian STRUCTURE_GENERATE_PARSE',$arr,__FILE__,__FUNCTION__,__LINE__);
- if($struct->TABLE_STRUCTURE[$chk->TABLE]=='BASE TABLE')
- $CONNREMOTE->STRUCTURE_GENERATE_PARSE($arr);
- else DEBUG_S(3,'(TODO TESTOWO WYLACZONE DLA VIEW BO NIE DZIALAJA WIDOKI!!!!)',$arr,__FILE__,__FUNCTION__,__LINE__);
- unset($arr);unset($arr_);
- }
- }
-
- }
- // DEBUG_S(3,'ckh_obj from '.$h->SRC_TABLE_ID,$chk_obj);
- list($src_col_type,$src_col_default)=explode(';',$chk_obj->_col_types[$chk->DESC]);
- if($chk->COLUMN_TYPE!=$src_col_type) DEBUG_S(4,"ERROR BLAD TYPU!!!".$chk->COLUMN_TYPE."!=".$src_col_type."!",array($chk_obj,$chk),__FILE__,__FUNCTION__,__LINE__);
- unset($chk_obj);
- //print_r($CONNREMOTE);
- //die();
- }
- } */
-
-
-
- // else echo "<br> id ".$h->SRC_TABLE_ID." nie jest w arrayu";
- /* if(in_array($h->SRC_TABLE_ID, array_keys($zasoby_to_import_arr))) {
- $zasobObj = ProcesHelper::getZasobTableInfo($h->DST_TABLE_ID);
- if ($zasobObj) {
- $tabele_to_import[$zasobObj->P__ID][$zasobObj->ID]=$zasobObj->DESC;
- DEBUG_S(-3,'Znaleziona tabela do importy',$zasobObj,__FILE__,__FUNCTION__,__LINE__);
- }
- }
- */
- //nie powinno siᅣ? podmieniac ID dla rekordow ze sztywno ustalanym P_ID
- //@2014-04-03 podmiana kolejnosci w in_array
- if( in_array($h->SRC_TABLE_ID,$CRM_IMPORT_TRANSLATE['CRM_LISTA_ZASOBOW']) ) {
- DEBUG_S(-3,'Pominalem translate dla SRC_TABLE_ID '.$h->SRC_TABLE_ID.' z uwagi na in_array w CRM_IMPORT_TRANSLATE',$CRM_IMPORT_TRANSLATE,__FILE__,__FUNCTION__,__LINE__);
- continue ;
- }
- //@2014-04-03 podmiana kolejnosci w in_array
- if( in_array($h->DST_TABLE_ID,$CRM_IMPORT_TRANSLATE['CRM_LISTA_ZASOBOW']) ) {
- DEBUG_S(-3,'Pominalem translate dla SRC_TABLE_ID '.$h->DST_TABLE_ID.' z uwagi na in_array w CRM_IMPORT_TRANSLATE',$CRM_IMPORT_TRANSLATE,__FILE__,__FUNCTION__,__LINE__);
- continue ;
- }
-
-
-
- $sql[]="update ".$h->REM_TABLE." set PARENT_ID='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`=concat(`SYNC_SQIX_STATUS`,'_FIX_ZASOB') where PARENT_ID='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS not like '%FIX_ZASOB%' and SYNC_SQIX_STATUS not like '' ;";
- $sql[]="update CRM_WSKAZNIK set ID_ZASOB='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`=concat(`SYNC_SQIX_STATUS`,'_FIX_ZASOB') where ID_ZASOB='".$h->SRC_TABLE_ID."' and ( SYNC_SQIX_STATUS not like '%FIX_ZASOB%' ) and SYNC_SQIX_STATUS not like '' ;"; //WSKAZNIK moze miec 2 razy aktualizacje tylko
- $sql[]="update CRM_IMAGE set REMOTE_ID='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`='SYSTEM_IMPORT_FIXED' where REMOTE_ID='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS='SYSTEM_IMPORT' and REMOTE_TABLE='CRM_LISTA_ZASOBOW' and SYNC_SQIX_STATUS not like '' ;";
- $sql[]="update ".$h->REM_TABLE." set ALIAS_ID='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`=concat(`SYNC_SQIX_STATUS`,'_FIX_ALIAS') where ALIAS_ID='".$h->SRC_TABLE_ID."' and ( SYNC_SQIX_STATUS not like '%FIX_ALIAS%' and SYNC_SQIX_STATUS not like '' ) ;"; //WSKAZNIK moze miec 2 razy aktualizacje tylko
- }
- if($h->REM_TABLE=='CRM_PROCES') {
- $sql[]="update ".$h->REM_TABLE." set PARENT_ID='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`=concat(`SYNC_SQIX_STATUS`,'_FIX_PROC') where PARENT_ID='".$h->SRC_TABLE_ID."' and ( SYNC_SQIX_STATUS not like '%FIX_PROC%' );";
- $sql[]="update ".$h->REM_TABLE." set IF_TRUE_GOTO='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`=concat(`SYNC_SQIX_STATUS`,'_FIX_GOTO') where IF_TRUE_GOTO='".$h->SRC_TABLE_ID."' and ( SYNC_SQIX_STATUS not like '%FIX_GOTO%' );";
- $sql[]="update CRM_WSKAZNIK set ID_PROCES='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`=concat(`SYNC_SQIX_STATUS`,'_FIX_PROC') where ID_PROCES='".$h->SRC_TABLE_ID."' and ( SYNC_SQIX_STATUS not like '%FIX_PROC%' ) ;"; //WSKAZNIK moze miec 2 razy aktualizacje tylko
- $sql[]="update CRM_IMAGE set REMOTE_ID='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`='SYSTEM_IMPORT_FIXED' where REMOTE_ID='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS='SYSTEM_IMPORT' and REMOTE_TABLE='CRM_PROCES' ;";
- $sql[]="update CRM_TESTY_PYTANIA set ID_PROCES='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`='SYSTEM_IMPORT_FIXED' where ID_PROCES='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS='SYSTEM_IMPORT' ;";
- }
- // if($h->REM_TABLE=='CRM_TESTY_PYTANIA') {
- // $sql[]="update ".$h->REM_TABLE." set ID_PROCES='".$h->DST_TABLE_ID."' where ID_PROCES='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS='SYSTEM_IMPORT' ; ";
- //
- // }
- if($h->REM_TABLE=='CRM_WSKAZNIK') {
- //$sql[]="update ".$h->REM_TABLE." set ID_PROCES='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`=concat(`SYNC_SQIX_STATUS`,'_FIX_WSKAZNIK') where ID_PROCES='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS='SYSTEM_IMPORT' ;";
- $sql[]="update CRM_TESTY_PYTANIA set ID_WSKAZNIK='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`=concat(`SYNC_SQIX_STATUS`,'_FIX_WSKAZNIK') where ID_WSKAZNIK='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS not like '%FIX_WSKAZNIK%' ;";
- $sql[]="update CRM_IMAGE set REMOTE_ID='".$h->DST_TABLE_ID."',`SYNC_SQIX_STATUS`=concat(`SYNC_SQIX_STATUS`,'_FIX_WSKAZNIK') where REMOTE_ID='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS not like '%FIX_WSKAZNIK%' and REMOTE_TABLE='CRM_WSKAZNIK' ;";
- }
- // if($h->REM_TABLE=='CRM_IMAGE') {
- // $sql[]="update ".$h->REM_TABLE." set REMOTE_ID='".$h->DST_TABLE_ID."' where ID_PROCES='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS='SYSTEM_IMPORT' ;";
- // $sql[]="update CRM_TESTY_PYTANIA set ID_WSKAZNIK='".$h->DST_TABLE_ID."' where ID_WSKAZNIK='".$h->SRC_TABLE_ID."' and SYNC_SQIX_STATUS='SYSTEM_IMPORT' ;";
- // }
-
- // echo "\n ".$sql;
- foreach($sql as $zap) {
- DEBUG_S(5,'Syncrhonizacja numerow ID ZAP '.$zap,'',__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result_sync=$CONNREMOTE->query($zap) or DEBUG_S(-3,'Blad synchronizacji ',$zap,__FILE__, __FUNCTION__, __LINE__) ; //or DIE(); - nie dziala update w zasobach przez trigger
- }
- }
- // ! wszystkie importy zaznaczamy z SYNC_SQIX_STATUS='SYSTEM_IMPORT_FIXED'
- $tables=array('CRM_WSKAZNIK','CRM_PROCES','CRM_LISTA_ZASOBOW','CRM_IMAGE','CRM_TESTY_PYTANIA');
- foreach($tables as $table) {
- $sql="update `".$table."` set `SYNC_SQIX_STATUS`='SYSTEM_IMPORT_FIXED' where `SYNC_SQIX_STATUS`='SYSTEM_IMPORT' ";
- DEBUG_S(-3,'Przemiania zsynchronizowanych rekordow aby drugi raz ich nie aktualizowac'.$sql,'',__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result_sync=$CONNREMOTE->query($sql) or DEBUG_S(-3,' aktualizacji ',$sql,__FILE__, __FUNCTION__, __LINE__) ;// or DIE(); - nie dziala update w zasobach przez trigger
- }
-
- // ! wszystkie importy A_ADM_COMPANY oraz A_CLASSIFIED - nieustalone
- $tables=array('CRM_WSKAZNIK','CRM_PROCES','CRM_LISTA_ZASOBOW','CRM_TESTY_PYTANIA');
- foreach($tables as $table) {
- $sql="update `".$table."` set `A_ADM_COMPANY`='', A_CLASSIFIED='' where 1=1 ";
- DEBUG_S(-3,'8631# Wszystkie importy A_ADM_COMPANY oraz A_CLASSIFIED - nieustalone '.$sql,'',__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result_sync=$CONNREMOTE->query($sql) or DEBUG_S(-3,' aktualizacji ',$sql,__FILE__, __FUNCTION__, __LINE__) ; // or DIE(); - nie dziala update w zasobach przez trigger
- }
-
-
- //synchronizacja struktur
- DEBUG_S(-3,'tabele_to_import',$tabele_to_import,__FILE__, __FUNCTION__, __LINE__);
- //importuje struktury
- // foreach($tabele_to_import as $id_bazy=>$tabele) {
- // //$db[$id_bazy]=DB::getDB($id_bazy);
- // $struct[$id_bazy]=$CONNLOCAL->STRUCTURE_GENERATE($tabele,null,null); //TODO id_bases_try_to_get_struct
- // }
- DEBUG_S(3,'struct - struktura do exporty',$struct,__FILE__, __FUNCTION__, __LINE__);
- // die('smierc');
-
-
-
- // $STRUCT_TABLE['CRM_PROCES']='PARENT_ID';
- // $STRUCT_TABLE['CRM_WSKAZNIK']='ID_PROCES'; //TODO PARENT ID
- // $STRUCT_TABLE['CRM_LISTA_ZASOBOW']='PARENT_ID';
-
- }//eof FUNC FROM_ZASOBY_TO_ZASOBY
-
- //funkcja do usuniecia zasobow ze zdublowanymi nazwami, najlepiej tych, ktore nie maja uzytych procesow
- function STRUCTURE_SYNC_REMOVE_DUP_RESOURCE_NAMES($DUP_RESOURCE_PARENT_ID,$DUP_RESOURCE_DESC,$CONNREMOTE,$CONFIRM_SQL_UPDATE) {
- DEBUG_S(-3,'Bede czyscic tabele struktury dla ',array($DUP_RESOURCE_PARENT_ID,$DUP_RESOURCE_DESC,$CONNREMOTE,__FILE__, __FUNCTION__, __LINE__));
- //szukamy ID zasobow zduplikowanych
- $sql="select CZ.`ID` as CZ_ID ,CZ.`A_STATUS` as CZ_A_STATUS, CZ.`DESC` as CZ_DESC , CZ.`OPIS` as CZ_OPIS ,
- CP.`ID` as CP_ID, CP.`TYPE` as CP_TYPE, CP.`OPIS` as CP_OPIS , CP.`A_STATUS` as CP_A_STATUS ,
- CW.`ID` as CW_ID, CW.`ID_PROCES` as CW_ID_PROCES , CW.`ID_ZASOB` as CW_ID_ZASOB , CW.`OPIS_ZASOB` as CW_OPIS_ZASOB , CW.`A_STATUS` as CW_A_STATUS
- from CRM_LISTA_ZASOBOW as CZ
- left join CRM_WSKAZNIK as CW on CW.`ID_ZASOB`=CZ.`ID` and CW.`A_STATUS`!='DELETED'
- left join CRM_PROCES as CP on CP.`ID`=CW.`ID_PROCES` and CP.`A_STATUS`!='DELETED'
- where CZ.`PARENT_ID`='".$DUP_RESOURCE_PARENT_ID."' and CZ.`DESC`='".$DUP_RESOURCE_DESC."'
-
- ";
- echo "\n ".$sql;
- $result=$CONNREMOTE->query($sql) or die1('problem ze sql '.$sql);
- if(mysql_num_rows($result)==1) die1('Niewlasciwe wyzwolenie funkcji, jest tylko 1 zasob');
- while($h=mysql_fetch_object($result)) {
- //settype($h->CZ_ID, "integer");
- $ZASOB_TO_DEL[$h->CZ_ID]=0;
- if($h->CZ_A_STATUS=='DELETED') $ZASOB_TO_DEL[$h->CZ_ID]+=101; //status deleted to duzy motyw do usuniecia
- if(strlen($h->CZ_OPIS)<10) { $ZASOB_TO_DEL[$h->CZ_ID]+=11; //krotki opis
- echo " CZ_OPIS:: (".$h->CZ_OPIS.")";
- }
- if($h->CP_A_STATUS=='DELETED') $ZASOB_TO_DEL[$h->CZ_ID]+=102; //status deleted to duzy motyw do usuniecia
- if(strlen($h->CP_OPIS)<10) $ZASOB_TO_DEL[$h->CZ_ID]+=12; //krotki opis
- if($h->CW_A_STATUS=='DELETED') $ZASOB_TO_DEL[$h->CZ_ID]+=103; //status deleted to duzy motyw do usuniecia
- if(strlen($h->CW_OPIS_ZASOB)<10) $ZASOB_TO_DEL[$h->CZ_ID]+=13; //krotki opis
- //$ZASOB_TO_DEL[$h->CZ_ID]+=rand(0,30);
- }
- //$ZASOB_TO_DEL=array_flip($ZASOB_TO_DEL);
- print_r($ZASOB_TO_DEL);
- arsort($ZASOB_TO_DEL);
- print_r($ZASOB_TO_DEL);
-
- //kasujemy rekordy z bazy danych -> ustalamy status na DELETED i kasujemy PARENT_ID na NULL
- $max_count=count($ZASOB_TO_DEL)-1;
- $count=1;
- foreach($ZASOB_TO_DEL as $ID_ZASOBU=>$POINTS_TO_REM) {
- $sql="update CRM_LISTA_ZASOBOW set `PARENT_ID`=NULL, `A_STATUS`='DELETED' where `ID`='".$ID_ZASOBU."'";
- echo "\n".$sql;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or die1('problem ze sql '.$sql);
- $count++;
- if($count>$max_count) break;
-
- }
- }
-
-
-
-
- // ! CREATE_ZASOBY_STRUCTURES_CONFIG
- if($SYNC_OPTIONS=='CREATE_ZASOBY_STRUCTURES_CONFIG') {//budowa struktur w bazie
-
- $TABLES_IMPORT=$CONNREMOTE->STRUCTURE_GENERATE($TABLES_STRUCTURE,null,$TABLES_STRUCTURE_DATA);
- // $CONNREMOTE->STRUCTURE_GENERATE_to_xsd($TABLES_IMPORT,$CONNREMOTE,'/tmp/schema'); //Generujemy XSD dla struktur
- // $TABLES_IMPORT=STRUCTURE_GENERATE($TABLES_STRUCTURE,$CONNREMOTE,$TABLES_STRUCTURE_DATA);
-
- // $TABLES_STRUCTURE_DATA
- $RETURN=serialize($TABLES_IMPORT);
- if (is_writable('config/.config_base_structure.php')) {
- $fp = fopen('config/.config_base_structure.php', 'w');
- fwrite($fp, $RETURN);
- fclose($fp);
- DEBUG_S(-3,'Zapisano aktualna strukture danych do config/.config_base_structure.php','',__FILE__,__FUNCTION__,__LINE__);
- //print_r($TABLES_IMPORT);
- //print_r($TABLES_IMPORT);
- } else {
- echo "\n\n\n config/.config_base_structure.php - nie jest do zapisu - zatem Zmienna do przekopiowania do konfiga config/".$config_base_structure." : \n";
- echo $RETURN;
- echo "\n";
- }
-
-
-
-
- // ! SYNC_ZASOBY_STRUCTURES_FROM_CONFIG
- } else if($SYNC_OPTIONS=='SYNC_ZASOBY_STRUCTURES_FROM_CONFIG' or $SYNC_OPTIONS=='SYNC_ZASOBY_STRUCTURES_FROM_CONFIG_WITHOUT_PROCEDURES_AND_VIEWS') {//budowa struktur w bazie
- if(!file_exists(APP_PATH_ROOT."/config/".$config_base_structure)) die1("Brak konfiga w ".APP_PATH_ROOT."/config/".$config_base_structure." , wygeneruj go za pomoca opcji CREATE_ZASOBY_STRUCTURES_CONFIG");
- $handle = fopen(APP_PATH_ROOT."/config/".$config_base_structure, "r");
- $config_base_structure_serialized = fread($handle, filesize(APP_PATH_ROOT."/config/".$config_base_structure));
- fclose($handle);
- //echo $config_base_structure_serialized;
- $config_base_structure_unserialized=unserialize($config_base_structure_serialized);
- //print_r($config_base_structure_unserialized['CRM_AUTH_PROFILE']);
- if($SYNC_OPTIONS=='SYNC_ZASOBY_STRUCTURES_FROM_CONFIG_WITHOUT_PROCEDURES_AND_VIEWS') $SKIP_OPTIONS=array('SKIP-PROCEDURE','SKIP-VIEW');
-
- DEBUG_S(5,'SKIP_OPTIONS,config_base_structure_unserialized',array($SKIP_OPTIONS,$config_base_structure_unserialized),__FILE__, __FUNCTION__, __LINE__) ;
- $CONNREMOTE->STRUCTURE_GENERATE_PARSE($config_base_structure_unserialized,$SKIP_OPTIONS); //@2014-08-14 TEST IT
-
- /*
-
- foreach($config_base_structure_unserialized as $TABLE=>$ARR_TABLE) { //dla kazdej tabeli
- set_time_limit(36000);
- //! if($TABLE<>'_CRM_PROCES_USER_STATS_wiev') continue; //trigger development
- //! try to sync __SCHEMA_FUNCTIONS__ARRAY__
- if($TABLE=='__SCHEMA_FUNCTIONS__ARRAY__') {
- DEBUG_S(-3,'Try to synchronize functions and procedures',$ARR_TABLE,__FILE__,__FUNCTION__,__LINE__);
-
- //BEGIN PROCEDURE
- $sql=" SHOW PROCEDURE STATUS; ;" ; //listujemy nasze procedury
- DEBUG_S(-3,'Looking for PROCEDURE ',$sql,__FILE__,__FUNCTION__,__LINE__);
- $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- while($h=mysql_fetch_object($result)) {
- if($h->Db<>$CONNREMOTE->getDatabaseName()) continue;
-
- set_time_limit(36000);
- $sql_="show create PROCEDURE {$h->Name} ;" ;
- //echo $sql_;
- $result_=$CONNREMOTE->query($sql_) or die1('\nProblem z '.$sql_);
- while($h_=mysql_fetch_object($result_)) {
- $FIELDS_CHECKED['FOUNDS'][$h->Name]=$h_;
-
- if(!isset($ARR_TABLE['PROCEDURE'][$h->Name])) {
- DEBUG_S(-3,'We have some more functions - we will not delete them:'.$h->Name,null,__FILE__,__FUNCTION__,__LINE__);
- //$FIELDS_CHECKED['TO_DELETE'][$h->Name]=$h_;
- }
- }
-
- }
- DEBUG_S(-3,'Try to unserialize PROCEDURE and install to db:',$ARR_TABLE['PROCEDURE'],__FILE__,__FUNCTION__,__LINE__);
-
- foreach($ARR_TABLE['PROCEDURE'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT) {
- if(!isset($FIELDS_CHECKED['FOUNDS'][$TRIGGER_INDEX])) { $FIELDS_CHECKED['TO_CREATE'][$TRIGGER_INDEX]=$TRIGGER_OBJECT;
- DEBUG_S(-3,'We have object to create '.$TRIGGER_INDEX,$TRIGGER_OBJECT,__FILE__,__FUNCTION__,__LINE__);
- }
- }
-
-
- //staramy sie zaktualizowac stare triggery, pod warunkiem, ze sie roznia
- foreach($FIELDS_CHECKED['FOUNDS'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT) {
- DEBUG_S(-3,'OBJ/OBJ for '.$TRIGGER_INDEX,array($TRIGGER_OBJECT->{'Create Procedure'},$ARR_TABLE['PROCEDURE'][$TRIGGER_INDEX]->{'Create Procedure'}),__FILE__, __FUNCTION__, __LINE__);
- if(isset($ARR_TABLE['PROCEDURE'][$TRIGGER_INDEX])) //we first try to find if this trigger exists or delete it
- if($TRIGGER_OBJECT->{'Create Procedure'}<>$ARR_TABLE['PROCEDURE'][$TRIGGER_INDEX]->{'Create Procedure'} ) {
- DEBUG_S(-3,"Data are different ({$TRIGGER_INDEX}). We add object to be created as new.",__FILE__, __FUNCTION__, __LINE__);
- $FIELDS_CHECKED['TO_CREATE'][$TRIGGER_INDEX]=$ARR_TABLE['PROCEDURE'][$TRIGGER_INDEX];
- $FIELDS_CHECKED['TO_DELETE'][$TRIGGER_INDEX]=true;
-
- }
- }
-
-
- if(isset($FIELDS_CHECKED['TO_DELETE'])) {
- DEBUG_S(-3,'We have some data to delete',$FIELDS_CHECKED['TO_DELETE'],__FILE__,__FUNCTION__,__LINE__);
- foreach($FIELDS_CHECKED['TO_DELETE'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT ) {
- $sql="DROP PROCEDURE IF EXISTS `{$TRIGGER_INDEX}`; ";
- DEBUG_S(-3,' sql to delete '.$TRIGGER_INDEX,$sql,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
-
- }
- }
-
-
- //tworzymy brakujace procedury
- foreach ($FIELDS_CHECKED['TO_CREATE'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT) {
- $sql=$TRIGGER_OBJECT->{'Create Procedure'};
- DEBUG_S(-3,'Try to add new '.$TRIGGER_INDEX,$sql,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
-
- }
- unset($FIELDS_CHECKED);
- //EOF PROCEDURE
-
-
- //BEGIN FUNCTION
- $sql=" SHOW FUNCTION STATUS ;" ; //listujemy nasze procedury
- DEBUG_S(-3,'Looking for FUNCTION ',$sql,__FILE__,__FUNCTION__,__LINE__);
- $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- while($h=mysql_fetch_object($result)) {
- set_time_limit(36000);
- $sql_="show create FUNCTION {$h->Name} ;" ;
- //echo $sql_;
- $result_=$CONNREMOTE->query($sql_) or die1('\nProblem z '.$sql_);
- while($h_=mysql_fetch_object($result_)) {
- $FIELDS_CHECKED['FOUNDS'][$h->Name]=$h_;
- if(!isset($ARR_TABLE['FUNCTION'][$h->Name])) {
- DEBUG_S(-3,'We have some more functions - we will not delete them:'.$h->Name,null,__FILE__,__FUNCTION__,__LINE__);
- // $FIELDS_CHECKED['TO_DELETE'][$h->Name]=$h_;
- }
- }
-
- }
- DEBUG_S(-3,'Try to unserialize FUNCTION and install to db:',$ARR_TABLE['FUNCTION'],__FILE__,__FUNCTION__,__LINE__);
-
- foreach($ARR_TABLE['FUNCTION'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT) {
- if(!isset($FIELDS_CHECKED['FOUNDS'][$TRIGGER_INDEX])) { $FIELDS_CHECKED['TO_CREATE'][$TRIGGER_INDEX]=$TRIGGER_OBJECT;
- DEBUG_S(-3,'We have object to create '.$TRIGGER_INDEX,$TRIGGER_OBJECT,__FILE__,__FUNCTION__,__LINE__);
- }
- }
-
-
- //staramy sie zaktualizowac stare triggery, pod warunkiem, ze sie roznia
- foreach($FIELDS_CHECKED['FOUNDS'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT) {
- DEBUG_S(-3,'OBJ/OBJ for '.$TRIGGER_INDEX,array($TRIGGER_OBJECT->{'Create Function'},$ARR_TABLE['FUNCTION'][$TRIGGER_INDEX]->{'Create Function'}),__FILE__, __FUNCTION__, __LINE__);
- if(isset($ARR_TABLE['FUNCTION'][$TRIGGER_INDEX])) //we first try to find if this trigger exists or delete it
- if($TRIGGER_OBJECT->{'Create Function'}<>$ARR_TABLE['FUNCTION'][$TRIGGER_INDEX]->{'Create Function'} ) {
- DEBUG_S(-3,"Data are different ({$TRIGGER_INDEX}). We add object to be created as new.",__FILE__, __FUNCTION__, __LINE__);
- $FIELDS_CHECKED['TO_CREATE'][$TRIGGER_INDEX]=$ARR_TABLE['FUNCTION'][$TRIGGER_INDEX];
- $FIELDS_CHECKED['TO_DELETE'][$TRIGGER_INDEX]=true;
-
- }
- }
-
-
- if(isset($FIELDS_CHECKED['TO_DELETE'])) {
- DEBUG_S(-3,'We have some data to delete',$FIELDS_CHECKED['TO_DELETE'],__FILE__,__FUNCTION__,__LINE__);
- foreach($FIELDS_CHECKED['TO_DELETE'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT ) {
- $sql="DROP FUNCTION IF EXISTS `{$TRIGGER_INDEX}`; ";
- DEBUG_S(-3,' sql to delete '.$TRIGGER_INDEX,$sql,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
-
- }
- }
-
-
- //tworzymy brakujace procedury
- foreach ($FIELDS_CHECKED['TO_CREATE'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT) {
- $sql=$TRIGGER_OBJECT->{'Create Function'};
- DEBUG_S(-3,'Try to add new '.$TRIGGER_INDEX,$sql,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
-
- }
- unset($FIELDS_CHECKED);
- //EOF FUNCTION
-
- //die1('app in devel');
-
-
-
-
- continue; //no go to another table in loop
- } //eof
-
- //! detect if src table is TABLE or VIEW
-
- // foreach($TABLES as $TABLE ){
- $sql="show full tables like '".$TABLE."' ;" ;
-
- DEBUG_S(-3,'SQL:'.$CONNREMOTE->getDatabaseName(),$sql,__FILE__, __FUNCTION__, __LINE__) ;
-
- $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- while($h=mysql_fetch_object($result)) {
- $FIELDS_CHECKED['Table_type']=$h->{'Table_type'};
- }
-
-
- if(mysql_num_rows($result)==0) {
- // nie ma tabeli - trzeba zapisac
- if($ARR_TABLE['Table_type']=='BASE TABLE') {
- //DEBUG_S(-3,"\n BRAK TABELI dodajemy : ".$TABLE."!!!",null,__FILE__,__FUNCTION__,__LINE__);
-
- $sql="create table ".$TABLE." ( ".$ARR_TABLE['FIELDS'][0]->Field." ".$ARR_TABLE['FIELDS'][0]->Type ; // ID int(11) NOT NULL AUTO_INCREMENT,
- if($ARR_TABLE['FIELDS'][0]->Null=='NO') $sql.=" not null "; else $sql.=" null ";
- //if($ARR_TABLE['FIELDS'][0]->Extra=='auto_increment') $sql.=" AUTO_INCREMENT "; else $sql.=" ";
- $sql.=" ) DEFAULT CHARSET=latin2 ";
- DEBUG_S(-3,"Brak tabeli: ".$TABLE." dodajemy sql:",$sql,__FILE__,__FUNCTION__,__LINE__) ;
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1('\nProblem z CREATE '.$sql);
-
- if($TABLE=='CRM_LISTA_ZASOBOW') {
- $sql=" alter table `".$TABLE."` AUTO_INCREMENT=1000 ";
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1('\nProblem z AUTO INCREMENT '.$sql);
-
- }
- } else if($ARR_TABLE['Table_type']=='VIEW') {
- $sql=$ARR_TABLE['VIEW']->{'Create View'};
- DEBUG_S(-3,"Brak widoku: ".$TABLE." dodajemy sql:",$sql,__FILE__,__FUNCTION__,__LINE__) ;
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1('\nProblem ze '.$sql);
- }
-
-
- } else {
- //try to detect if types are the same
- if($ARR_TABLE['Table_type']<>$FIELDS_CHECKED['Table_type']) die1('Todo: ERROR VIEW/TABLE different types ');
- if($ARR_TABLE['Table_type']=='VIEW') {
- if(isset($ARR_TABLE['VIEW'])) {
-
-
- $sql_="show create view `{$TABLE}` ;" ;
- echo $sql_;
- $result_=$CONNREMOTE->query($sql_) or die1('\nProblem z '.$sql_);
- while($h_=mysql_fetch_object($result_)) {
- DEBUG_S(-3,"//! get current view info ".$TABLE." sql/res",array($sql_,$h_),__FILE__, __FUNCTION__, __LINE__);
- $FIELDS_CHECKED['VIEW']=$h_;
- }
- //ereg_replace(, , )
- if(strtolower($FIELDS_CHECKED['VIEW']->{'Create View'})<>strtolower($ARR_TABLE['VIEW']->{'Create View'})) {
- $sql="drop view `{$TABLE}`";
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1('\nProblem ze '.$sql);
- $sql_=$ARR_TABLE['VIEW']->{'Create View'};
- DEBUG_S(-3,"//! Views are different for ".$TABLE." . Dropping old view and adding new (old/new/sql/sql):",array(strtolower($FIELDS_CHECKED['VIEW']->{'Create View'}),$ARR_TABLE['VIEW']->{'Create View'},$sql,$sql_,$h_),__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql_) or die1('\nProblem ze '.$sql_);
-
- }
-
-
-
- }
-
-
- }
-
- }
-
- //always create
- if($ARR_TABLE['Table_type']=='BASE TABLE') {
- set_time_limit(36000);
- $sql=" describe `".$TABLE."` ;" ;
- DEBUG_S(-3,'SQL:describe '.$TABLE,$sql,__FILE__, __FUNCTION__, __LINE__) ;
- $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- $FIELDS_CHECKED=""; unset($FIELDS_CHECKED);
- foreach($ARR_TABLE['FIELDS'] as $TSTIND=>$TST_VAL) { //tu robie tabelke do odhaczania z niej zmiennych
- $FIELDS_CHECKED['FIELD_IN_CONFIG_TO_BE_PASSED'][$TST_VAL->Field]=1;
- $FIELDS_CHECKED['FIELD_IN_CONFIG_THAT_EXISTS'][$TST_VAL->Field]=1;
- }
- DEBUG_S(-3,'FIELDS_CHECKED',$FIELDS_CHECKED,__FILE__, __FUNCTION__, __LINE__) ;
- $var_passed=false;
- while($h=mysql_fetch_object($result)) {
- //tu sprawdzamy czy sa wszystkie kolumny i maja takie same typy
- $FIELDS_CHECKED['FIELD_FROM_DB'][$h->Field]=1;
- if(!isset($FIELDS_CHECKED['FIELD_IN_CONFIG_THAT_EXISTS'][$h->Field])) {
- DEBUG_S(-3,'Za duzo o komorke '.$h->Field,$FIELDS_CHECKED,__FILE__, __FUNCTION__, __LINE__) ;
- $FIELDS_CHECKED['FIELD_IN_CONFIG_THAT_NOT_EXISTS'][$h->Field]=1;
- }
- foreach($ARR_TABLE['FIELDS'] as $TSTIND=>$TST_VAL) { //tu sprawdzam czy kolumna jest i jaka
- // echo "\n Tst ".$TST_VAL->Field." ==? ".$h->Field;
-
- if($TST_VAL->Field==$h->Field) {
- $FIELDS_CHECKED['FIELD_FOUND_IN_REMOTE_DB'][$h->Field]=1;
- if(isset($FIELDS_CHECKED['FIELD_IN_CONFIG_TO_BE_PASSED'][$h->Field])) //jezeli byla komorka ramowa
- unset($FIELDS_CHECKED['FIELD_IN_CONFIG_TO_BE_PASSED'][$h->Field]);
- }
- }
-
- //$TABLES_IMPORT[$TABLE]['FIELDS']=$h;
-
-
-
- }
-
- if(!empty($FIELDS_CHECKED['FIELD_IN_CONFIG_TO_BE_PASSED'])) DEBUG_S(-3,'Brakuje komorek dla '.$TABLE." ",array($FIELDS_CHECKED['FIELD_IN_CONFIG_TO_BE_PASSED']),__FILE__, __FUNCTION__, __LINE__);
- DEBUG_S(-3,'FIELDS_CHECKED',$FIELDS_CHECKED,__FILE__, __FUNCTION__, __LINE__) ;
- //dodajemy brakujace komorki
- if(count($FIELDS_CHECKED['FIELD_IN_CONFIG_TO_BE_PASSED'])>0) {
- foreach($FIELDS_CHECKED['FIELD_IN_CONFIG_TO_BE_PASSED'] as $FIELD_TO_ADD=>$VAL ){
- set_time_limit(36000);
- //echo "\n Trying to add column: ".$FIELD_TO_ADD;
- if(isset($INDEX_OF_CONFIG_TABLE)) unset($INDEX_OF_CONFIG_TABLE);
- foreach($ARR_TABLE['FIELDS'] as $TSTIND=>$TST_VAL) { //trzeba znalezc numer ID indeksu brakujacej komorki
- if($TST_VAL->Field==$FIELD_TO_ADD) $INDEX_OF_CONFIG_TABLE=$TSTIND;
- }
-
- // $sql="create table ".$TABLE." ( ".$ARR_TABLE['FIELDS'][0]->Field." ".$ARR_TABLE['FIELDS'][0]->Type ; // ID int(11) NOT NULL AUTO_INCREMENT,
- //if($ARR_TABLE['FIELDS'][0]->Extra=='auto_increment') $sql.=" AUTO_INCREMENT "; else $sql.=" ";
- $sql="alter table `".$TABLE."` add `".$FIELD_TO_ADD."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." ";
- if(($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default)) {
- if(($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default=='NULL')||($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default=='CURRENT_TIMESTAMP'))
- $sql.=" DEFAULT ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default." ";// (".$INDEX_OF_CONFIG_TABLE.")";
- else $sql.=" DEFAULT '".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default."' ";// (".$INDEX_OF_CONFIG_TABLE.")";
- }
- if($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Null=='NO') $sql.=" not null "; else $sql.=" null ";
- $sql.=" ;";
- echo "\n ".$sql;
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem z sql',$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
-
-
- }
- } //eof dodajemy brakujace komorki
-
-
- //Sprawdzamy czy sa zgodne typy komorek...
- $sql=" describe `".$TABLE."` ;" ;
- DEBUG_S(-3,'describe '.$TABLE,$sql,__FILE__, __FUNCTION__, __LINE__) ;
- $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- while($h=mysql_fetch_object($result)) {
- set_time_limit(36000);
- $FIELDS_CHECKED['FIELD_FOUND_IN_REMOTE_DB_PROFILE'][$h->Field]=$h;
-
- }
- DEBUG_S(-3,'FIELDS_CHECKED',$FIELDS_CHECKED,__FILE__, __FUNCTION__, __LINE__) ;
-
- foreach($FIELDS_CHECKED['FIELD_FOUND_IN_REMOTE_DB_PROFILE'] as $FIELD_TO_CHK=>$VAL) {
- if(isset($INDEX_OF_CONFIG_TABLE)) unset($INDEX_OF_CONFIG_TABLE);
- foreach($ARR_TABLE['FIELDS'] as $TSTIND=>$TST_VAL) { //trzeba znalezc numer ID indeksu brakujacej komorki
- if($TST_VAL->Field==$FIELD_TO_CHK) $INDEX_OF_CONFIG_TABLE=$TSTIND;
- }
- if(isset($FIELDS_CHECKED['FIELD_IN_CONFIG_THAT_NOT_EXISTS'][$FIELD_TO_CHK])) continue; //jezeli komorki nie ma i jest tylko lokalnie - ignorujemy!
- // to jakis glupi warunek ?
- if(!isset($INDEX_OF_CONFIG_TABLE)) die1('Nie znaleziono indeksu w konfiguracji dla '.$TABLE.' i komorki '.$FIELD_TO_CHK);
- // echo "\nsprawdzamy wszystkie wlasciwosci dla db ".$TABLE." ".$FIELD_TO_CHK." col ".$INDEX_OF_CONFIG_TABLE;
- $CHK_TYPES_ARS=array('Type','Null','Default');
- $sql="";
- // echo "\n if ".$VAL->Type." =? ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type ;
- if($VAL->Type!=$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type) {
- //! aktualizujemy typy
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." ; ";
-
- if(strstr($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, 'char(')&& strstr($VAL->Type, 'char(')){
- $src_char_len=ereg_replace('[^0-9]', '',$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type );
- $dst_char_len=ereg_replace('[^0-9]', '',$VAL->Type );
-
- if($src_char_len>$dst_char_len) {
- DEBUG_S(-3,'Aktualizacja rozszerzajaca zakres pola CHAR : CUR_CHAR_LEN ='.$src_char_len." and dest=".$dst_char_len ,$sql,__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('\nProblem z '.$sql);
-
- } else {
- DEBUG_S(-3,'celowe pominiecie - aktualizacja moze skasowac dane w bazie!!! :',$sql,__FILE__, __FUNCTION__, __LINE__);
- // die1();
- }
- } else if(strstr($VAL->Type, 'enum(') && strstr($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, 'enum(' )) { //jezeli zmienia sie ENUM na inne ENUM
-
- preg_match('/^enum\((.*)\)$/', $ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, $src_char_len);
- preg_match('/^enum\((.*)\)$/', $VAL->Type, $dst_char_len);
-
- $src_char_len=explode(',', $src_char_len[1]);$dst_char_len=explode(',', $dst_char_len[1]);
- foreach($src_char_len as $var) {
- if( !in_array($var, $dst_char_len)) $dst_char_len[]=$var;
-
- }
- $dst_char_len="enum(".implode(",", $dst_char_len).")";
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$dst_char_len." ; ";
-
- DEBUG_S(-3,'Uzupelniamy strukture o ewentualnie brakujace elementy (sql,wynik polaczenia,import.strukt.,akt_strukt.)',array($sql,$dst_char_len,$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type,$VAL->Type),__FILE__, __FUNCTION__, __LINE__);
-
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('\nProblem z '.$sql);
-
- } else if(strstr($VAL->Type, 'set(') && strstr($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, 'set(' )) { //jezeli zmienia sie ENUM na inne ENUM
-
- preg_match('/^set\((.*)\)$/', $ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, $src_char_len);
- preg_match('/^set\((.*)\)$/', $VAL->Type, $dst_char_len);
-
- $src_char_len=explode(',', $src_char_len[1]);$dst_char_len=explode(',', $dst_char_len[1]);
- foreach($src_char_len as $var) {
- if( !in_array($var, $dst_char_len)) $dst_char_len[]=$var;
-
- }
- $dst_char_len="set(".implode(",", $dst_char_len).")";
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$dst_char_len." ; ";
-
- DEBUG_S(-3,'Uzupelniamy strukture o ewentualnie brakujace elementy (sql,wynik polaczenia,import.strukt.,akt_strukt.)',array($sql,$dst_char_len,$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type,$VAL->Type),__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('\nProblem z '.$sql);
-
- } else if(strstr($VAL->Type, 'int(') && strstr($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, 'int(' )) {
- preg_match('/^int\((.*)\)$/', $ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, $src_char_len);
- preg_match('/^int\((.*)\)$/', $VAL->Type, $dst_char_len);
- if($src_char_len[1]>$dst_char_len[1]) {
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." ; ";
- DEBUG_S(-3,'Aktualizacja rozszerzajaca zakres pola INT ma byc ='.$src_char_len[1]." byla dest=".$dst_char_len[1] ,$sql,__FILE__, __FUNCTION__, __LINE__);
- // if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('\nProblem z '.$sql);
- } else {
- DEBUG_S(-3,'Pominieta Aktualizacja zawiezajaca zakres pola INT ma byc ='.$src_char_len[1]." byla dest=".$dst_char_len[1] ,$sql,__FILE__, __FUNCTION__, __LINE__);
- }
-
- } else if( ( strstr($VAL->Type, 'char(') || strstr($VAL->Type, 'varchar(') ) && strstr($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, 'text' )
- || ( strstr($VAL->Type, 'bigint(') ) && strstr($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, 'longblob' )
- || ( strstr($VAL->Type, 'mediumtext') ) && strstr($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, 'longblob' )
- || ( strstr($VAL->Type, 'decimal(42') ) && strstr($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, 'decimal(41' )
- || ( strstr($VAL->Type, 'decimal(43') ) && strstr($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type, 'decimal(41' )
-
- ) {
-
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." ; ";
- DEBUG_S(-3,'Aktualizacja rozszerzajaca zakres pola varchar/char() do text()',$sql,__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('\nProblem z '.$sql);
- // DEBUG_S(-3,'Pominieta Aktualizacja zawiezajaca zakres pola INT ma byc ='.$src_char_len[1]." byla dest=".$dst_char_len[1] ,$sql,__FILE__, __FUNCTION__, __LINE__);
-
-
- } else {
- DEBUG_S(-3,'Celowe zabicie z uwagi na niebezpieczenstwo zmiany typu: sql/old/new',array($sql,$VAL->Type,$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type),__FILE__, __FUNCTION__, __LINE__);
- die1();
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('\nProblem z '.$sql);
- }
- }
- if($VAL->Null!=$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Null)
- if($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Null=='YES') {
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." NULL ; ";
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- } else {
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." NOT NULL ; ";
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
-
- }
- if($VAL->Default!=$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default) {
- if($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default=='CURRENT_TIMESTAMP')
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." DEFAULT ".str_replace("'","",$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default)." ; ";
- else if(empty($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default))
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." ; ";
- else $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." DEFAULT '".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Default."' ; ";
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
-
- }
- //autoincrement:
- if(($VAL->Extra!=$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Extra)&&$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Extra=='auto_increment' ) {
- //sprawdzmy czy nie ma w tabeli klucza z PRIMARY z ID
- $sql="show keys from `".$TABLE."`";
- $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- $TEST_IF_HAS_PRIMARY=false;
- while($tst=mysql_fetch_object($result)) { //dla kazdego klucza
- if($tst->Column_name==$FIELD_TO_CHK) //sprawdz czy jest klucz do tej kolumny
- if($tst->Key_name=='PRIMARY') $TEST_IF_HAS_PRIMARY=true; //jezeli jest primary, to flagujemy
- }
-
- if($TEST_IF_HAS_PRIMARY==false) { //bedziemy dodawac primary key
- $sql="ALTER TABLE `".$TABLE."` ADD PRIMARY KEY ( `".$FIELD_TO_CHK."` )";
- $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
- }
- $sql=" alter table `".$TABLE."` CHANGE `".$FIELD_TO_CHK."` `".$FIELD_TO_CHK."` ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Type." ".$ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE]->Extra." ; ";
- echo "\n SQL auto_increment ".$sql ;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL ',$sql,__FILE__, __FUNCTION__, __LINE__) or DIE();
-
- }
- //foreach($ARR_TABLE['FIELDS'][$INDEX_OF_CONFIG_TABLE] as $TST_FIELD_IND=>$TST_FIELD_VAL) {
- // echo "\n TST2 ".$TST_FIELD_IND." ?= ".$FIELDS_CHECKED['FIELD_FOUND_IN_REMOTE_DB_PROFILE'][$TST_FIELD_IND]->$TST_FIELD_IND;
- //}
-
-
- }
- //print_r($FIELDS_CHECKED);
-
- $sql=" show index from `".$TABLE."` ;" ;
- echo "\n ".$sql;
- $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- while($h=mysql_fetch_object($result)) {
- set_time_limit(36000);
- $FIELDS_CHECKED['INDEX_FOUND_IN_TABLES'][$h->Key_name]=$h;
- }
- foreach($ARR_TABLE['INDEX'] as $FOUND_INDEX_NAME=>$FOUND_INDEX_ARR){
- $FIELDS_CHECKED['INDEX_TO_BE_FOUND_IN_TABLES'][$FOUND_INDEX_NAME]=$FOUND_INDEX_ARR;
- }
- DEBUG_S(-3,'Znaleziono indeksy w tabeli '.$TABLE." FOUND/TO_BE_FOUND",array($FIELDS_CHECKED['INDEX_FOUND_IN_TABLES'],$FIELDS_CHECKED['INDEX_TO_BE_FOUND_IN_TABLES']),__FILE__, __FUNCTION__, __LINE__);
- //teraz wygaszam znalezione indeksy
- foreach($ARR_TABLE['INDEX'] as $FOUND_INDEX_NAME=>$FOUND_INDEX_ARR){
- echo "\n If jest ".$FOUND_INDEX_NAME;
- if(isset($FIELDS_CHECKED['INDEX_FOUND_IN_TABLES'][$FOUND_INDEX_NAME]))
- unset($FIELDS_CHECKED['INDEX_TO_BE_FOUND_IN_TABLES'][$FOUND_INDEX_NAME]);
- }
- //print_r($FIELDS_CHECKED['INDEX_TO_BE_FOUND_IN_TABLES']);
- //brakujace klucze dodajemy
- foreach($FIELDS_CHECKED['INDEX_TO_BE_FOUND_IN_TABLES'] as $FOUND_INDEX_NAME=>$FOUND_INDEX_ARR) {
- if($FOUND_INDEX_NAME=='PRIMARY') {
- $FOUND_INDEX_ARR->Column_name=str_replace('`','',$FOUND_INDEX_ARR->Column_name);
- $sql="ALTER TABLE `".$TABLE."` ADD PRIMARY KEY ( `".$FOUND_INDEX_ARR->Column_name."` ) ;";
- echo "\n 927: ".$sql;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or print_r($FIELDS_CHECKED) && die1('\nProblem z '.$sql);
- $sql="ALTER TABLE `".$TABLE."` CHANGE `".$FOUND_INDEX_ARR->Column_name."` `".$FOUND_INDEX_ARR->Column_name."` ".$FIELDS_CHECKED['FIELD_FOUND_IN_REMOTE_DB_PROFILE'][$FOUND_INDEX_ARR->Column_name]->Type." AUTO_INCREMENT ; ";
- echo "\n ".$sql;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or print_r($FIELDS_CHECKED) && die1('\nProblem z '.$sql);
-
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or print_r($FIELDS_CHECKED) && die1('\nProblem z '.$sql);
- } else if($FOUND_INDEX_ARR->Non_unique==1) {
- $sql="ALTER TABLE `".$TABLE."` ADD KEY `".$FOUND_INDEX_ARR->Key_name."` ( ".$FOUND_INDEX_ARR->Column_name." ) ;" ;
- echo "\n ".$sql;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
- } else {
- set_time_limit(36000);
- //@2013-01-17 poprawka do kluczy bledu w stylu ALTER TABLE `IN7_PRODUKTY_CECHY` ADD UNIQUE `UNIK_CECHY_PRODUKTU` ( CECHA_ID, PRODUKT_ID , DESC ) ;
- $CORRECT_INDEX_FOUNDKEY="";
- if(!strstr($FOUND_INDEX_ARR->Column_name,'`')) {
- $explode=explode(' ',$FOUND_INDEX_ARR->Column_name);
- foreach($explode as $exploded) {
- $exploded=str_replace(',','',$exploded); //wywalenie przecinkow
- if((!strstr($exploded,' '))&&(strlen($exploded)>1))
- if($CORRECT_INDEX_FOUNDKEY) $CORRECT_INDEX_FOUNDKEY.=" , `".$exploded."` ";
- else $CORRECT_INDEX_FOUNDKEY.=" `".$exploded."` ";
- }
- } else $CORRECT_INDEX_FOUNDKEY=$FOUND_INDEX_ARR->Column_name;
- // $CORRECT_INDEX_FOUNDKEY=$FOUND_INDEX_ARR->Column_name;
- $sql="ALTER TABLE `".$TABLE."` ADD UNIQUE `".$FOUND_INDEX_ARR->Key_name."` ( ".$CORRECT_INDEX_FOUNDKEY." ) ;" ;
- echo "\n ".$sql;
-
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
- }
- }
- flush();
-
- //print_r($FIELDS_CHECKED);
- unset($FIELDS_CHECKED);
- $sql=" show triggers like '".$TABLE."' ;" ; //listujemy nasze triggery z tej tabeli
- DEBUG_S(-3,'Looking for triggers in '.$TABLE,$sql,__FILE__,__FUNCTION__,__LINE__);
- $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- while($h=mysql_fetch_object($result)) {
- set_time_limit(36000);
- $sql_="show create trigger {$h->Trigger} ;" ;
- //echo $sql_;
- $result_=$CONNREMOTE->query($sql_) or die1('\nProblem z '.$sql_);
- while($h_=mysql_fetch_object($result_)) {
- $FIELDS_CHECKED['TRIGGER_FOUNDS'][$h->Trigger]=$h_;
- if(!isset($ARR_TABLE['TRIGGERS'][$h->Trigger])) $FIELDS_CHECKED['TRIGGER_TO_DELETE'][$h->Trigger]=$h_;
- }
-
- }
- DEBUG_S(-3,'Try to unserialize trigger and install to db:',$ARR_TABLE['TRIGGERS'],__FILE__,__FUNCTION__,__LINE__);
- //! try to synchronize triggers $TABLE=>$ARR_TABLE
- foreach($ARR_TABLE['TRIGGERS'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT) {
- if(!isset($FIELDS_CHECKED['TRIGGER_FOUNDS'][$TRIGGER_INDEX])) $FIELDS_CHECKED['TRIGGER_TO_CREATE'][$TRIGGER_INDEX]=$TRIGGER_OBJECT;
- }
-
- //staramy sie zaktualizowac stare triggery, pod warunkiem, ze sie roznia
- foreach($FIELDS_CHECKED['TRIGGER_FOUNDS'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT) {
- DEBUG_S(-3,'TRIGGER_OBJECT/$TRIGGER_OBJECT for '.$TRIGGER_INDEX,array($TRIGGER_OBJECT,$ARR_TABLE['TRIGGERS'][$TRIGGER_INDEX]),__FILE__, __FUNCTION__, __LINE__);
- if(isset($ARR_TABLE['TRIGGERS'][$TRIGGER_INDEX])) //we first try to find if this trigger exists or delete it
- if($TRIGGER_OBJECT->{'SQL Original Statement'}<>$ARR_TABLE['TRIGGERS'][$TRIGGER_INDEX]->{'SQL Original Statement'} ) {
- DEBUG_S(-3,"Triggers are different ({$TRIGGER_INDEX}). We add object to be created as new.",__FILE__, __FUNCTION__, __LINE__);
- $FIELDS_CHECKED['TRIGGER_TO_CREATE'][$TRIGGER_INDEX]=$ARR_TABLE['TRIGGERS'][$TRIGGER_INDEX];
- $FIELDS_CHECKED['TRIGGER_TO_DELETE'][$TRIGGER_INDEX]=true;
-
- }
- }
-
-
- if(isset($FIELDS_CHECKED['TRIGGER_TO_DELETE'])) {
- DEBUG_S(-3,'We have some triggers to delete',$FIELDS_CHECKED['TRIGGER_TO_DELETE'],__FILE__,__FUNCTION__,__LINE__);
- foreach($FIELDS_CHECKED['TRIGGER_TO_DELETE'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT ) {
- $sql="DROP TRIGGER IF EXISTS `{$TRIGGER_INDEX}`; ";
- DEBUG_S(-3,' sql to delete trigger '.$TRIGGER_INDEX,$sql,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
-
- }
- }
-
-
- //tworzymy brakujace procedury
- foreach ($FIELDS_CHECKED['TRIGGER_TO_CREATE'] as $TRIGGER_INDEX=>$TRIGGER_OBJECT) {
- //$sql="DROP TRIGGER IF EXISTS `{$TRIGGER_INDEX}`; ";
- //DEBUG_S(-3,'Delete old trigger '.$TRIGGER_INDEX,$sql,__FILE__,__FUNCTION__,__LINE__);
- //if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',array($sql,mysql_error() ),__FILE__, __FUNCTION__, __LINE__) or die1();
- //if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query("show create trigger {$TRIGGER_INDEX}") or DEBUG_S(-3,'Problem ze SQL:'.mysql_error(),$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
- $sql=$TRIGGER_OBJECT->{'SQL Original Statement'};
- DEBUG_S(-3,'Try to add new trigger '.$TRIGGER_INDEX,$sql,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL:',$sql,__FILE__, __FUNCTION__, __LINE__) or die1();
-
- }
-
-
-
- }
-
-
- //tu bedziemy dodawac wartosci insert :
- $sql="select count(*) as ilosc from `".$TABLE."` ;" ;
-
- DEBUG_S(-3,'SQL: licze czy cos jest w tabeli ',$sql,__FILE__, __FUNCTION__, __LINE__) ;
-
- $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- $ilosc=0;
- //while($h=mysql_fetch_object($result)) {
- // $ilosc=$h->ilosc;
- //}
- //if($ilosc>0) {
- // DEBUG_S(-2,'Nie trzeba dodawac rekordow - juz jakies sa w tabeli: ilosc : ',$ilosc,__FILE__,__FUNCTION__,__LINE__);
- // continue ;
- //} else {
- if(!empty($ARR_TABLE['VALUES']))
- foreach($ARR_TABLE['VALUES'] as $ROW) {
- $sql="insert ignore into `".$TABLE."` values ( ";
- $vals="";
- foreach($ROW as $FIELD=>$VAL) {
- if(!$vals) $vals.="'".$VAL."'" ; else $vals.=" , '".$VAL."' ";
- }
- $sql.=$vals." ) ;";
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- DEBUG_S(-3,'Dodanie rekordu do tabeli ',$sql,__FILE__,__FUNCTION__,__LINE__);
-
-
- }
- //}
-
- }
- */
-
- //}
-
- } else if($SYNC_OPTIONS=='FROM_DATABASE_TO_ZASOBY') { //! FROM_DATABASE_TO_ZASOBY budowa struktur w bazie
- // w tym miejscu wprowadzamy informacje odczytane ze struktur bazy danych do zasobow - czyli do tabeli z zasobami i cechami
- if(!isset($DATABASE_ROOT_ZASOB_ID)) die1(' Nie podano glownego numeru ID zasobow, do ktorych ma byc doklejona struktura tabel');
-
- $TABLES_READ_FROM_LOCALDB=array();
- if(strstr($SYSTEM_PROFILE_STRING_IMPORT_EXPORT, '%')) {
- $sql="show tables like '".$SYSTEM_PROFILE_STRING_IMPORT_EXPORT."' ;";
- $result=$CONNLOCAL->query($sql) or die1(' Problem ze sql '.$sql);
- } else {
- $result=$CONNLOCAL->show_tables($SYSTEM_PROFILE_STRING_IMPORT_EXPORT);
- }
- while($h=$CONNLOCAL->fetch_array($result)) {
- $TABLES_READ_FROM_LOCALDB[]=$h[0];
- }
-
- DEBUG_S(-3,'zapytanie',$sql,__FILE__,__FUNCTION__,__LINE__);
- DEBUG_S(-3,'TABLES_READ_FROM_LOCALDB',$TABLES_READ_FROM_LOCALDB,__FILE__,__FUNCTION__,__LINE__);
- $STRUCTURE_LOCAL=$CONNLOCAL->STRUCTURE_GENERATE($TABLES_READ_FROM_LOCALDB,null,null,array('with_view'));
- // $STRUCTURE_LOCAL=STRUCTURE_GENERATE($TABLES_READ_FROM_LOCALDB,$CONNLOCAL);
- DEBUG_S(-3,'Aktualizuje CRM_LISTA_ZASOBOW (COLUMN_DEFAULT etc... ) na podstawie STRUCTURE_LOCAL(STRUCTURE_GENERATE)',$STRUCTURE_LOCAL,__FILE__,__FUNCTION__,__LINE__);
- foreach($STRUCTURE_LOCAL as $NAME=>$TBL_STRUC) {
- if($NAME=='__SCHEMA_FUNCTIONS__ARRAY__') continue;
- $zasobID=ProcesHelper::getZasobTableID($NAME);
- if($zasobID) {
- $sql_obj->TABLE_STRUCTURE=$CONNLOCAL->_(serialize($TBL_STRUC));
- $sql_obj->ID=$zasobID;
- DEBUG_S(-3,'zapisanie struktur dla calej tabeli w rekordzie zasobu tabeli',$sql_obj,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNLOCAL->UPDATE_OBJ('CRM_LISTA_ZASOBOW',$sql_obj);
- foreach($TBL_STRUC['FIELDS'] as $FIELD) {
- $sql="update CRM_LISTA_ZASOBOW set
- `COLUMN_DEFAULT`='".$FIELD->Default."'
- ,`IS_NULLABLE`=";
- if($FIELD->Null=='NO') $sql.="0"; else $sql.="1";
- $sql.=",`COLUMN_TYPE`='".$CONNLOCAL->_($FIELD->Type)."'
- where PARENT_ID='".$zasobID."' and `DESC`='".$FIELD->Field."' ";
- // echo "<br> \n SQL (".$NAME.") = ".$sql;
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNLOCAL->query($sql);
- }
- }
- }
-
-
-
-
- //1.szukamy numerow cech w drzewie cech dla Type,Null,Default .
- //2.bierzemy szukamy tabeli w strukturze
- //3.szukamy odpowiednich komorek w strukturze ( jak nie ma dodajemy )
- //4.szukamy czy komorka ma dodane cechy ( jak nie ma dodajemy) ,
- //4a. a jak ma to sprawdzamy czy sie zgadzaja
- //4b. jak sie nie zgadzaja, to updatujemy
- //1.
- $sql="select `ID`,`PARENT_ID`,`TYPE`,`DESC`,`A_STATUS` from `CRM_LISTA_ZASOBOW` where `ID`='".$DATABASE_ROOT_ZASOB_ID."' and A_STATUS!='DELETED' ";
- $result=$CONNREMOTE->query($sql);
- if(mysql_num_rows($result)==0) {
- die1("\n BLAD , nie ma w strukturze zasobow , zaproponowanego numeru zasobu [".$DATABASE_ROOT_ZASOB_ID."] , do dolaczenia struktury bazy danych !");
-
- } else { //jest numer zasobu lecimy po tabelach
- //wyszukujemy jakie numery tabel sa w strukturze w bazie
- $sql="select `ID`,`PARENT_ID`,`TYPE`,`DESC`,`A_STATUS` from `CRM_LISTA_ZASOBOW` where `PARENT_ID`='".$DATABASE_ROOT_ZASOB_ID."' and `TYPE`='TABELA' ";
- DEBUG_S(3,'SQL 389',$sql,__FILE__, __FUNCTION__, __LINE__);
- $result=$CONNREMOTE->query($sql);
- while($h=mysql_fetch_object($result)) {
- $SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$h->DESC]=$h->ID;
- if(isset($SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM_COUNT'][$h->DESC]))
- $SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM_COUNT'][$h->DESC]++; else $SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM_COUNT'][$h->DESC]=1;
- } //sql foreach
- foreach($STRUCTURE_LOCAL as $LOCAL_TABLE_FOUND=>$LOCAL_TAB_ARR) {
- $SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'][$LOCAL_TABLE_FOUND]=1;
- }
- //przeszukajmy tabele
- foreach($SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'] as $LOOK_FOR_TABLE=>$VAL ) {
- if(isset($SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$LOOK_FOR_TABLE])) {
- echo "\n Znalazlem:".$LOOK_FOR_TABLE;
- unset($SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'][$LOOK_FOR_TABLE]);
- if($LOOK_FOR_TABLE<>'__SCHEMA_FUNCTIONS__ARRAY__') //@2014-04-24 zglaszal sie blad , chyba trzeba dac wyjatek
- if($SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM_COUNT'][$LOOK_FOR_TABLE]>1) die1('Jest wiecej niz jedna definicja tabeli o takiej samej nazwie:'.$LOOK_FOR_TABLE);
-
- }
- }
- //teraz mamy tylko tych, co brakuje, trzeba dopisac
- DEBUG_S(-3,'TABELE_DO_ZNALEZIENIA_W_REM',$SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'],__FILE__,__FUNCTION__,__LINE__);
- foreach($SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'] as $LOOK_FOR_TABLE=>$VAL ) {
-
- $sql="INSERT INTO `CRM_LISTA_ZASOBOW` (`PARENT_ID`,`TYPE`,`DESC`,`A_STATUS`,`SYNC_SQIX_STATUS`,`A_RECORD_CREATE_DATE` )
- values ( '".$DATABASE_ROOT_ZASOB_ID."','TABELA','".$LOOK_FOR_TABLE."','WAITING','system-import-sync-db-sqix',now() )";
- DEBUG_S(-3,'SQL 413',$sql,__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- if($CONNREMOTE->insert_id()>0) { //usuwamy z poszukiwania
- unset($SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'][$LOOK_FOR_TABLE]);
- $SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$LOOK_FOR_TABLE]=$CONNREMOTE->insert_id();
- }
-
- }
- //szukamy czy sa w tabeli CECH parametry dla Type,Null,Default TODO to trzeba dac do konfigu?
-
- $sql="select `ID`,`A_STATUS`,`TYPE`,`VALUE` from `IN7_CECHY` where `TYPE`='DATABASE_OPTIONS' ";//szukam glownego zagniezdzenia cech TODO makos to powinno byc ustalone w konfigu
- DEBUG_S(-3,'SQL 425',$sql,__FILE__, __FUNCTION__, __LINE__);
- $result=$CONNREMOTE->query($sql);
- if(mysql_num_rows($result)==0) { //trzeba dodac glowne zagniezdzenie
- $sql="insert into `IN7_CECHY` (`PARENT_ID`,`ID`,`A_STATUS`,`TYPE`,`VALUE`,`DESC_ABLE` ,`TYPE_SPECIAL`) values
- ('0','','WAITING','DATABASE_OPTIONS','DATABASE_OPTIONS','N','STANDARD' )";
- DEBUG_S(-3,'SQL 430',$sql,__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or die1('problem ze sql '.$sql);
- $DRZEWO_CECH['KONFIG_SYSTEMU_SE_ROOT']=$CONNREMOTE->insert_id();
- } else { //znalezlismy cos
- list($DRZEWO_CECH['KONFIG_SYSTEMU_SE_ROOT'])=mysql_fetch_array($result);
- }
-
- //szukamy podparametrow
- foreach($CECHY_POSZUKIWANE as $IINDEX=>$VVALUE) {
- foreach($VVALUE as $TYPE=>$VALUE) {
- $sql="select `ID`,`A_STATUS`,`TYPE`,`VALUE` from `IN7_CECHY` where `VALUE`='".$VALUE."' ; ";
- DEBUG_S(-3,'SQL 441',$sql,__FILE__, __FUNCTION__, __LINE__);
- $result=$CONNREMOTE->query($sql) or die1('problem ze sql 704 '.$sql);
- if(mysql_num_rows($result)==0) { //trzeba dodac podrzedne cechy
- $sql="insert into `IN7_CECHY` (`PARENT_ID`,`ID`,`A_STATUS`,`TYPE`,`VALUE`,`DESC_ABLE` ,`TYPE_SPECIAL` , `TYPE_SPECIAL_PARAM`) values
- ('".$DRZEWO_CECH['KONFIG_SYSTEMU_SE_ROOT']."','','WAITING','".$VALUE."','".$VALUE."','Y','STANDARD','".$TYPE."' )";
- DEBUG_S(-3,'SQL 446',$sql,__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or die1('problem ze sql 709 '.$sql);
- $DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE]=$CONNREMOTE->insert_id();
- } else { //znalezlismy ID tech cech
- list($DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE])=mysql_fetch_array($result);
- }
- if($DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE]<1) {
- DEBUG_S(-3,"System nie mogl odnalezc numeru ID glownych cechy - powinien go dodac",array($DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE],$IINDEX,$TYPE),__FILE__, __FUNCTION__, __LINE__);
- die1('');
- }
- }
- }
- //3. teraz sprawdzamy jakie cechy sa opisane w zasobach/cechach dla naszych tabel/komorek
- foreach($STRUCTURE_LOCAL as $LOCAL_TABLE_FOUND=>$LOCAL_TAB_ARR) { //jedziemy po zrodlowych tabelach
- //wyszukujemy jakie numery komorek sa w strukturze w bazie
- flush();
- $sql="select `ID`,`PARENT_ID`,`TYPE`,`DESC`,`A_STATUS` from `CRM_LISTA_ZASOBOW` where `PARENT_ID`='".$SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$LOCAL_TABLE_FOUND]."' and `TYPE`='KOMORKA' ";
- DEBUG_S(-3,'wyszukujemy jakie numery komorek sa w strukturze w bazie ',array($LOCAL_TABLE_FOUND,$sql),__FILE__, __FUNCTION__, __LINE__);
- $result=$CONNREMOTE->query($sql); //tu wyswietlamy komorki znalezione w bazie zasobow dla tego wezla
- //if(isset($SYNC_279['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT'])) unset($SYNC_279['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT']);
- if(isset($SYNC_463)) unset($SYNC_463);
- while($h=mysql_fetch_object($result)) {
- $SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM'][$h->DESC]=$h->ID;
- if(isset($SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT'][$h->DESC])) $SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT'][$h->DESC]++; else $SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT'][$h->DESC]=1;
- }
-
- foreach($STRUCTURE_LOCAL[$LOCAL_TABLE_FOUND]['FIELDS'] as $ID_FIELD=>$ID_FIELD_VAL) {
- $SYNC_463['KOMORKI_DO_ZNALEZIENIA_W_REM'][$ID_FIELD_VAL->Field]=1;
- }
- //przeszukajmy tabele
- foreach($SYNC_463['KOMORKI_DO_ZNALEZIENIA_W_REM'] as $LOOK_FOR_TABLE=>$VAL ) {
- if(isset($SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM'][$LOOK_FOR_TABLE])) {
- echo "\n Znalazlem:".$LOOK_FOR_TABLE;
- unset($SYNC_463['KOMORKI_DO_ZNALEZIENIA_W_REM'][$LOOK_FOR_TABLE]);
- if($SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT'][$LOOK_FOR_TABLE]>1) {
- //Usuwamy nadmiarowe definicje w zasobach
- echo "\n Znalazlem wiecej niz 1 zasob w tabeli:".$LOOK_FOR_TABLE." ilosc:".$SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT'][$LOOK_FOR_TABLE];
- STRUCTURE_SYNC_REMOVE_DUP_RESOURCE_NAMES($SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$LOCAL_TABLE_FOUND],$LOOK_FOR_TABLE,$CONNREMOTE,$CONFIRM_SQL_UPDATE);
- $STRUCTURE_SYNC_REMOVE_DUP_RESOURCE_NAMES_HAPPEN=true;
- }
- }
- }
- if(isset($STRUCTURE_SYNC_REMOVE_DUP_RESOURCE_NAMES_HAPPEN)) { //jezeli wydarzylo zdublowanie danych, trzeba powtorzyc wyzwolenie funkcji szukania danych wlasciwych ID
- unset($SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM']); //flushujemy tabele
- $sql="select `ID`,`PARENT_ID`,`TYPE`,`DESC`,`A_STATUS` from `CRM_LISTA_ZASOBOW` where `PARENT_ID`='".$SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$LOCAL_TABLE_FOUND]."' and `TYPE`='KOMORKA' ";
- DEBUG_S(-3,'490 : STRUCTURE_SYNC_REMOVE_DUP_RESOURCE_NAMES_HAPPEN flushujemy tabele ',array($LOCAL_TABLE_FOUND,$sql),__FILE__, __FUNCTION__, __LINE__);
- $result=$CONNREMOTE->query($sql); //tu wyswietlamy komorki znalezione w bazie zasobow dla tego wezla
- while($h=mysql_fetch_object($result)) {
- $SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM'][$h->DESC]=$h->ID;
- }
- unset($SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT'][$h->DESC]);
- unset($STRUCTURE_SYNC_REMOVE_DUP_RESOURCE_NAMES_HAPPEN);
- }
-
- //to teraz dla brakujacych robimy inserty
- foreach($SYNC_463['KOMORKI_DO_ZNALEZIENIA_W_REM'] as $LOOK_FOR_TABLE=>$VAL ) {
- $DESC_PL="";
- $OPIS="";
- if($LOOK_FOR_TABLE=='ID') {
- $DESC_PL="Id";
- $OPIS="Numer unikalny rekordu w tabeli, dodawany automatycznie przy dodawaniu nowego rekordu (mozna traktowac jak l.p.)";
- } else if($LOOK_FOR_TABLE=='A_CLASSIFIED') {
- $DESC_PL="Odczyt<br>dla";
- $OPIS="Jaka grupa moze odczytywac dany rekord. W przypadku checi ukrycia czesci danych nalezy stworzyc grupe(zasob), przypisac ta grupe dla wybranych uzytkownikow systemu, nastepnie ustalic ta grupe dla rekordow ktore maja byc widoczne tylko dla tej grupy w tym polu";
- }else if($LOOK_FOR_TABLE=='A_ADM_COMPANY') {
- $DESC_PL="zapis<br>dla";
- $OPIS="jaka grupa moze edytowac/zapisywac/zmieniac dany rekord. W przypadku checi zabezpieczenia przed zapisem czesci danych nalezy stworzyc grupe(zasob), przypisac ta grupe dla wybranych uzytkownikow systemu, nastepnie ustalic ta grupe dla rekordow ktore maja byc widoczne tylko dla tej grupy w tym polu";
- }else if($LOOK_FOR_TABLE=='A_STATUS') {
- $DESC_PL="status";
- $OPIS="Szczegolowy opis statusu, czesto status rekordu ma okreslone znaczenie biznesowe. W tym polu warto dodawac adnotacje na temat danego rekordu i jego statusu";
- }else if($LOOK_FOR_TABLE=='A_STATUS_INFO') {
- $DESC_PL="opis<br>status";
- $OPIS="Szczegolowy opis statusu, czesto status rekordu ma okreslone znaczenie biznesowe. W tym polu warto dodawac adnotacje na temat danego rekordu i jego statusu";
- }else if($LOOK_FOR_TABLE=='A_PROBLEM_DATE') {
- $DESC_PL="data<br>probl.";
- $OPIS="W przypadku checi dodania na rekordzie problemu nalezy wprowadzic tutaj date wystapienia problemu. Ulatwia to sledzenie problemow po datach. ";
- }else if($LOOK_FOR_TABLE=='A_PROBLEM_DESC') {
- $DESC_PL="opis<br>probl.";
- $OPIS="W tym polu należy opisac szczegolowo problem jaki zachodzi na danym rekordzie. Sugeruje sie aby zapisac sugerowany sposob jego rozwiazania.";
- } else if($LOOK_FOR_TABLE=='A_PROBLEM') {
- $DESC_PL="problem?";
- $OPIS="To pole jest specjalnie traktowane przez system i oznacza sie w nim, czy na danym rekordzie istnieje jakis problem. ";
- }else if($LOOK_FOR_TABLE=='L_APPOITMENT_TYPE') {
- $DESC_PL="spotk.<br>typ";
- $OPIS="W tym polu zaznacza sie typ spotkania: Typ uzgodnienia : ARRANGED = Uzgodniono termin, TO_ARRANGE = Do uzgodnienia termin, RELATE = Zależne ";
- }else if($LOOK_FOR_TABLE=='L_APPOITMENT_INFO') {
- $DESC_PL="Notatki<br>spotk.";
- $OPIS="Adnotacje do załatwienia. Adnotacje/uwagi/notatki na temat konieczności wykonania działań oraz notatki z ustaleń, w rozumieniu co należy wykonać w przyszłości w oparciu o te ustalenia dla danego rekordu, przed terminem.";
- }else if($LOOK_FOR_TABLE=='L_APPOITMENT_PERIOD') {
- $DESC_PL="spotk.<br>dł.";
- $OPIS="Długość oczekiwanego spotkania w minutach. Przydatne do wstępnego ocenienia czasochłonności do wykonania zalecenia/uwag z adnotacji.";
- }else if($LOOK_FOR_TABLE=='L_APPOITMENT_USER') {
- $DESC_PL="osoba<br>odp.";
- $OPIS="Osoba odpowiedzialna za załatwienie danego rekordu. UWAGA ta osoba otrzymuje także prawo zapisu do rekordu, niezależnie od grupy rekordu.";
- }else if($LOOK_FOR_TABLE=='L_APPOITMENT_DATE') {
- $DESC_PL="termin<br>przyp.";
- $OPIS="Termin przypomnienia/adnotacji, po którym dany rekord należy załatwiać/uznać za zaległy. Należy po tym terminie wykonywać czynności opisane w adnotacji.";
- }else if($LOOK_FOR_TABLE=='A_RECORD_UPDATE_AUTHOR') {
- $DESC_PL="kto<br>aktual.";
- $OPIS="W tym polu system zapisuje konto użytkownika, który ostatnio aktualizował rekord. Po wprowadzeniu zmian w grafiku pojawi się w tym polu nazwa konta użytkownika, który dokonał aktualizacji.";
- }else if($LOOK_FOR_TABLE=='A_RECORD_UPDATE_DATE') {
- $DESC_PL="data<br>akt";
- $OPIS="Ostatnia data aktualizacji rekordu - pole aktualizowane automatycznie przy każdej aktualizacji rekordu ";
- }else if($LOOK_FOR_TABLE=='A_RECORD_CREATE_AUTHOR') {
- $DESC_PL="autor";
- $OPIS="Kto utworzył dany rekord - pole jest ustawiane automatycznie przy wstawianiu rekordu do tabeli";
- }else if($LOOK_FOR_TABLE=='A_RECORD_CREATE_DATE') {
- $DESC_PL="data<br>utw.";
- $OPIS="Ostatnia data stworzenia rekordu - pole aktualizowane automatycznie jeden raz, podczas tworzenia rekordu ";
- }else if($LOOK_FOR_TABLE=='ID_KORESP_OFFER') {
- $DESC_PL="oferta?<br>utw.";
- $OPIS="Oznaczenie, jaka oferte otrzymal dany obiekt przestrzenny - z jaka oferta wykonawcza jest on powiazany ";
- }else if($LOOK_FOR_TABLE=='WORK_PLAN_START') {
- $DESC_PL="plan<br>start";
- $OPIS="Data planowanego rozpoczęcia prac dla danego elementu";
- }else if($LOOK_FOR_TABLE=='WORK_PLAN_FINISH') {
- $DESC_PL="plan<br>ukoncz.";
- $OPIS="Data planowanego zakonczenia prac dla danego elementu ";
- }else if($LOOK_FOR_TABLE=='T_WORKPOINTS_TIME_HOURS') {
- $DESC_PL="dl.<br>prac[h]";
- $OPIS="Ilość czasu pracy, jaka została poświęcona w [godzinach] na pracę w ramach ułożenia/zainstalowania danego elementu. W przypadku wielu aktualizacji, system powinien dodawać wartości historycznie i w tym polu wyświetlać sumaryczną wartość.";
- }
-
- $sql="INSERT INTO `CRM_LISTA_ZASOBOW` (`PARENT_ID`,`TYPE`,`DESC`,`A_STATUS`,`SYNC_SQIX_STATUS`,`A_RECORD_CREATE_DATE`,`DESC_PL`,`OPIS` )
- values ( '".$SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$LOCAL_TABLE_FOUND]."','KOMORKA','".$LOOK_FOR_TABLE."','WAITING','system-import-sync-db-sqix',now(),'".$DESC_PL."','".$OPIS."' )";
- DEBUG_S(-3,'dodaje do zasobow komorke tabeli '.$LOOK_FOR_TABLE,array($sql,$LOCAL_TABLE_FOUND,$SYNC_279,$SYNC_463),__FILE__, __FUNCTION__, __LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- if($CONNREMOTE->insert_id()>0) { //usuwamy z poszukiwania
- unset($SYNC_463['KOMORKI_DO_ZNALEZIENIA_W_REM'][$LOOK_FOR_TABLE]);
- $SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM'][$LOOK_FOR_TABLE]=$CONNREMOTE->insert_id();
- }
- }
- //teraz synchronizacja cech do bazy - cech dotyczacych tych komorek
- foreach($LOCAL_TAB_ARR['FIELDS'] as $ID_FIELD=>$ID_FIELD_VAL ) {
- //tu powinnismy robin foreach $CECHY_POSZUKIWANE - aby przeleciec wszystkie cechy komorki z tabeli
- $NUMER_ID_TABELI_Z_BAZY=$SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM'][$ID_FIELD_VAL->Field];
- if(!isset($NUMER_ID_TABELI_Z_BAZY)) {
- DEBUG_S(-3,"Brak zmiennej NUMER_ID_TABELI_Z_BAZY uniemozliwia weryfikacje numeru cechy i dalsza prace",$NUMER_ID_TABELI_Z_BAZY,__FILE__, __FUNCTION__, __LINE__);
- die1();
- }
- foreach($CECHY_POSZUKIWANE as $IINDEX=>$VVALUE) {
- foreach($VVALUE as $TYPE=>$VALUE) {
- //sprawdzamy zgodnosc oczekiwanego typu lokalnego z parametrami w konfigu
- // echo "\n Sprawdzam zgodnosc struktur: ".key($ID_FIELD_VAL)." oraz ".$TYPE ;
- if(key($ID_FIELD_VAL)!=$TYPE) continue;
- else DEBUG_S(-3,"--- dalej Sprawdzam zgodnosc struktur:".array(key($ID_FIELD_VAL),$TYPE),__FILE__, __FUNCTION__, __LINE__);
- //SZUKAMY CO JEST W CECHACH
- $sql="select `ID`,`A_STATUS`,`CECHA_ID`,`PRODUKT_ID`,`DESC` from `IN7_PRODUKTY_CECHY` where
- `A_STATUS`!='DELETED' and `CECHA_ID`='".$DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE]."' and
- `PRODUKT_ID`='".$NUMER_ID_TABELI_Z_BAZY."' ";
- DEBUG_S(-3,'Szukamy co jest w cechach',$sql,__FILE__, __FUNCTION__, __LINE__) ;
- //SPRAWDZAMY Z TYM CO POWINNO BYC W BAZIE
- $result=$CONNREMOTE->query($sql) or die1('problem ze sql '.$sql);
- $ZNALEZIONO_W_BAZIE_CECHE=false;
- while($h=mysql_fetch_object($result)) {
- $ZNALEZIONO_W_BAZIE_CECHE=true;
- if(addslashes($ID_FIELD_VAL->$TYPE)==$h->DESC) {
- DEBUG_S(-3,'\n Zgodnosc cechy ',$h->DESC,__FILE__, __FUNCTION__, __LINE__);
- break; //nie robimy dalej tego foreach, bo jest zgodnosc tej cechy?
- } else {
- //JEZELI JEST COS NIE TAK - UPDATUJEMY TE ROZNICE - WYSWIETLAMY ERRORY else
- $sql="delete from IN7_PRODUKTY_CECHY where ID='".$h->ID."' limit 1 ";
- DEBUG_S(-3,"\n Brak zgodnosci w sprawie cechy ".$h->DESC." ".$ID_FIELD_VAL->$TYPE."!=".$h->DESC,$sql,__FILE__, __FUNCTION__, __LINE__) ;
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1('problem ze sql '.$sql);
- }
-
- }
- //else DODAJEMY OPISY CECH DO BAZY DANYCH
- if(!($ZNALEZIONO_W_BAZIE_CECHE)) {
- $sql="insert into `IN7_PRODUKTY_CECHY` (`A_STATUS`,`CECHA_ID`,`PRODUKT_ID`,`DESC` ,`SYNC_SQIX_STATUS`,`A_RECORD_CREATE_DATE` ) values
- ('NORMAL','".$DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE]."','".$NUMER_ID_TABELI_Z_BAZY."',
- '".addslashes($ID_FIELD_VAL->$TYPE)."' ,'system-import-sync-db-sqix',now() ) ";
- DEBUG_S(-3,'Dodajemy opisy cech do bazy danych',$sql,__FILE__, __FUNCTION__, __LINE__) ;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or die1('\nProblem z table '.$LOCAL_TABLE_FOUND.' Komorka '.$ID_FIELD_VAL->Field.' , parameter : '.$TYPE.' sql: '.$sql);
- }
- }
- }
- }
-
- DEBUG_S(-3,"ZNALEZIONO_KOMORKI_W_BAZIE_REM",$SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM'],__FILE__, __FUNCTION__, __LINE__) ;
- DEBUG_S(-3,"KOMORKI_DO_ZNALEZIENIA_W_REM",$SYNC_463['KOMORKI_DO_ZNALEZIENIA_W_REM'],__FILE__, __FUNCTION__, __LINE__) ;
- unset($SYNC_463['ZNALEZIONO_KOMORKI_W_BAZIE_REM']);
- unset($SYNC_463['KOMORKI_DO_ZNALEZIENIA_W_REM']);
- }
-
- print_r($DRZEWO_CECH);
- print_r($SYNC_279);
- //unset($SYNC_279);
-
-
-
- }
-
-
- } //eof if($SYNC_OPTIONS=='FROM_DATABASE_TO_ZASOBY') {//budowa struktur w bazie
- else if($SYNC_OPTIONS=='CREATE_ZASOBY_DATABASE_DESC') {
- // ! CREATE_ZASOBY_DATABASE_DESC
-
-
- //@2013-01-18: sqix: dobudowanie brakujacych zasobow do systemu dotyczacych samego systemu:
- $sql="select ID from CRM_LISTA_ZASOBOW where `TYPE`='SERWER' and `ID` like '14'"; //to jest wlasciwy na ten moment numer zasobu dla firmy BIALL-NET
- DEBUG_S(-3,'sql do znalezienia czy nie ma zasobow :',$sql,__FILE__,__FUNCTION__,__LINE__);
- $res=$CONNREMOTE->query($sql);
- while($h=mysql_fetch_object($res)) {
- $ID_ZASOBU_SYSTEMU_SE=$h->ID;
- }
- if($ID_ZASOBU_SYSTEMU_SE) DEBUG_S(-3,"Juz jest w systemie ZASOBOW wprowadzony serwer obslugujacy system, znajduje sie pod numerem zasobu :",$ID_ZASOBU_SYSTEMU_SE,__FILE__,__FUNCTION__,__LINE__);
- else {
- DEBUG_S(-3,"Nie ma zasobu dotyczacego systemu SE w zasobach, zatem dodamy go nizej :::",$ID_ZASOBU_SYSTEMU_SE,__FILE__,__FUNCTION__,__LINE__);
- $cnf=Config::getConfFile('default_db');
- $sql_arr=array("insert into CRM_LISTA_ZASOBOW (`PARENT_ID`,`TYPE`,`DESC`,`OPIS`) values ('0','SERWER','".$_SERVER['SERVER_NAME']."','podstawowy serwer obsglugujacy system SE');",
- "insert into CRM_LISTA_ZASOBOW (`PARENT_ID`,`TYPE`,`DESC`,`OPIS`) values ('%LAST_INSERT_ID%','BAZA_DANYCH','".$cnf['database']."','baza danych od podstawowy serwer obsglugujacy system SE');");
- foreach($sql_arr as $sql) {
- $sql=str_replace('%LAST_INSERT_ID%',$last_insert_id,$sql);
- DEBUG_S(-2,'zapytanie SQL dodajace zasoby ',$sql,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql);
- $last_insert_id=$CONNREMOTE->insert_id();
- echo "<br>LAST insert ID to ".$last_insert_id;
- }
- foreach($CRM_IMPORT_TRANSLATE['CRM_LISTA_ZASOBOW'] as $LCL=>$RMT) {
- $sql="insert into CRM_IMPORT_TRANSLATE (REM_TABLE,SRC_TABLE_ID,DST_TABLE_ID) values ('CRM_LISTA_ZASOBOW','".$LCL."','".$RMT."')";
- DEBUG_S(-2,'zapytanie SQL dodajace CRM_IMPORT_TRANSLATE ',$sql,__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql);
- }
-
- $last_insert_id=$CONNREMOTE->insert_id();
- if(!empty($CONFIRM_SQL_UPDATE)) DEBUG_S(-3,'UWAGA DODAJ DO KONFIGA ZMIENNA DATABASE_ROOT_ZASOB_ID z numerem: '.$last_insert_id," \$DATABASE_ROOT_ZASOB_ID=".$last_insert_id.";",__FILE__,__FUNCTION__,__LINE__);
- }
-
- }
- else if($SYNC_OPTIONS=='FROM_ZASOBY_TO_DATABASE') {//budowa struktur w bazie
- // w tym miejscu wprowadzamy informacje odczytane ze struktur bazy danych do zasobow - czyli do tabeli z zasobami i cechami
- if(!isset($DATABASE_ROOT_ZASOB_ID)) die1(' Nie podano glownego numeru ID zasobow, do ktorych ma byc doklejona struktura tabel');
-
-
- $sql="show tables like '%' ;";
- $result=$CONNLOCAL->query($sql) or die1(' Problem ze sql '.$sql);
- $TABLES_READ_FROM_LOCALDB=array();
- while($h=mysql_fetch_array($result)) {
- $TABLES_READ_FROM_LOCALDB[]=$h[0];
- //print_r($h);
-
- }
- $STRUCTURE_LOCAL=$CONNREMOTE->STRUCTURE_GENERATE($TABLES_READ_FROM_LOCALDB);
- //$STRUCTURE_LOCAL=STRUCTURE_GENERATE($TABLES_READ_FROM_LOCALDB,$CONNREMOTE);
- //print_r($STRUCTURE_LOCAL);
- //1.szukamy numerow cech w drzewie cech dla Type,Null,Default .
- //2.bierzemy szukamy tabeli w strukturze
- //3.szukamy odpowiednich komorek w strukturze ( jak nie ma dodajemy )
- //4.szukamy czy komorka ma dodane cechy ( jak nie ma dodajemy) ,
- //4a. a jak ma to sprawdzamy czy sie zgadzaja
- //4b. jak sie nie zgadzaja, to updatujemy
- //1.
- $sql="select `ID`,`PARENT_ID`,`TYPE`,`DESC`,`A_STATUS` from `CRM_LISTA_ZASOBOW` where `ID`='".$DATABASE_ROOT_ZASOB_ID."' and A_STATUS!='DELETED' ";
- $result=$CONNLOCAL->query($sql);
- if(mysql_num_rows($result)==0) {
- die1("\n BLAD , nie ma w strukturze zasobow , zaproponowanego numeru zasobu [".$DATABASE_ROOT_ZASOB_ID."] , do dolaczenia struktury bazy danych !");
-
- } else { //jest numer zasobu lecimy po tabelach
- //wyszukujemy jakie numery tabel sa w strukturze w bazie
- $sql="select `ID`,`PARENT_ID`,`TYPE`,`DESC`,`A_STATUS` from `CRM_LISTA_ZASOBOW` where `PARENT_ID`='".$DATABASE_ROOT_ZASOB_ID."' and `TYPE`='TABELA' ";
- $result=$CONNLOCAL->query($sql);
- while($h=mysql_fetch_object($result)) {
- $SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'][$h->DESC]=$h->ID;
- $SYNC_279['TABELE_DO_SPRAWDZENIA_W_REM'][$h->DESC]=$h->ID;
- } //sql foreach
- foreach($STRUCTURE_LOCAL as $LOCAL_TABLE_FOUND=>$LOCAL_TAB_ARR) {
- $SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$LOCAL_TABLE_FOUND]=1;
- }
- //przeszukajmy tabele
- foreach($SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'] as $LOOK_FOR_TABLE=>$VAL ) {
- if(isset($SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$LOOK_FOR_TABLE])) {
- echo "\n Znalazlem:".$LOOK_FOR_TABLE;
- unset($SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'][$LOOK_FOR_TABLE]);
-
- }
- }
- //teraz mamy tylko tych, co brakuje, trzeba dopisac
- foreach($SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'] as $LOOK_FOR_TABLE=>$VAL ) {
- $sql="CREATE TABLE `".$LOOK_FOR_TABLE."` ( ID int(11)) DEFAULT CHARSET=latin2 " ;
- echo "\n ".$sql;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or die1('\nProblem z '.$sql);
- if($CONNREMOTE->insert_id()>0) { //usuwamy z poszukiwania
- unset($SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM'][$LOOK_FOR_TABLE]);
- $SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM'][$LOOK_FOR_TABLE]=$CONNREMOTE->insert_id();
- }
-
- }
- //szukamy czy sa w tabeli CECH parametry dla Type,Null,Default TODO to trzeba dac do konfigu?
-
- $sql="select `ID`,`A_STATUS`,`TYPE`,`VALUE` from `IN7_CECHY` where `TYPE`='DATABASE_OPTIONS' ";//szukam glownego zagniezdzenia cech TODO makos to powinno byc ustalone w konfigu
- $result=$CONNLOCAL->query($sql);
- if(mysql_num_rows($result)==0)
- die1('Brak oczekiwanej definicji w systemie zasobow bazy danych TYPE=DATABASE_OPTIONS !!! ');
-
- else { //znalezlismy cos
- list($DRZEWO_CECH['KONFIG_SYSTEMU_SE_ROOT'])=mysql_fetch_array($result);
- }
-
- //szukamy podparametrow
- foreach($CECHY_POSZUKIWANE as $IINDEX=>$VVALUE) {
- foreach($VVALUE as $TYPE=>$VALUE) {
- $sql="select `ID`,`A_STATUS`,`TYPE`,`VALUE` from `IN7_CECHY` where `TYPE`='".$VALUE."' ; ";
- echo "\n ".$sql;
- $result=$CONNLOCAL->query($sql) or die1('problem ze sql '.$sql);
- if(mysql_num_rows($result)==0)
- die1('Brak oczekiwanej definicji w systemie zasobow bazy danych TYPE='.$VALUE.' !!! ');
- else { //znalezlismy ID tech cech
- list($DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE])=mysql_fetch_array($result);
- }
- if($DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE]<1) {
- DEBUG_S(-3,"System nie mogl odnalezc numeru ID glownych cechy - powinien go dodac",array($DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE],$IINDEX,$TYPE),__FILE__, __FUNCTION__, __LINE__);
- die1('');
- }
- }
- }
- //3. teraz sprawdzamy jakie cechy sa opisane w zasobach/cechach dla naszych tabel/komorek
-
- foreach($SYNC_279['TABELE_DO_SPRAWDZENIA_W_REM'] as $LOCAL_TABLE_FOUND=>$LOCAL_TAB_ARR) { //jedziemy po zrodlowych tabelach
- //wyszukujemy jakie numery komorek sa w strukturze w bazie
- flush();
- $sql="select `ID`,`PARENT_ID`,`TYPE`,`DESC`,`A_STATUS` from `CRM_LISTA_ZASOBOW` where `PARENT_ID`='".$LOCAL_TAB_ARR."' and `TYPE`='KOMORKA' ";
- echo "\n".$LOCAL_TABLE_FOUND.":".$sql;
- $result=$CONNLOCAL->query($sql); //tu wyswietlamy komorki znalezione w bazie zasobow dla tego wezla
- //if(isset($SYNC_279['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT'])) unset($SYNC_279['ZNALEZIONO_KOMORKI_W_BAZIE_REM_COUNT']);
-
- while($h=mysql_fetch_object($result)) {
- $SYNC_279['KOMORKI_DO_ZNALEZIENIA_W_REM'][$h->DESC]=$h->ID;
- $SYNC_279['KOMORKI_DO_SPRAWDZENIA_W_REM'][$h->DESC]=$h->ID;
- echo ",".$h->DESC."=".$h->ID;
- }
-
- foreach($STRUCTURE_LOCAL[$LOCAL_TABLE_FOUND]['FIELDS'] as $ID_FIELD=>$ID_FIELD_VAL) {
- $SYNC_279['ZNALEZIONO_KOMORKI_W_BAZIE_REM'][$ID_FIELD_VAL->Field]=1;
- }
- //przeszukajmy tabele
- foreach($SYNC_279['KOMORKI_DO_ZNALEZIENIA_W_REM'] as $LOOK_FOR_TABLE=>$VAL ) {
- if(isset($SYNC_279['ZNALEZIONO_KOMORKI_W_BAZIE_REM'][$LOOK_FOR_TABLE])) {
- echo "\n Znalazlem:".$LOOK_FOR_TABLE;
- unset($SYNC_279['KOMORKI_DO_ZNALEZIENIA_W_REM'][$LOOK_FOR_TABLE]);
- }
- }
-
- //to teraz dla brakujacych robimy inserty
- foreach($SYNC_279['KOMORKI_DO_ZNALEZIENIA_W_REM'] as $LOOK_FOR_TABLE=>$VAL ) {
- if(isset($KOMPLET_DANYCH_KOMORKI))unset($KOMPLET_DANYCH_KOMORKI);
- DEBUG_S(-3,'Dla brakujacych komorek bede robic inserty (uzywajac poszukiwanych cech) :',array($LOOK_FOR_TABLE,$VAL),__FILE__, __FUNCTION__, __LINE__);
- //musimy zbudowac parametry komorki do wprowadzenia - zaladowac je trzeba ze struktury
- foreach($CECHY_POSZUKIWANE as $IINDEX=>$VVALUE) {
- foreach($VVALUE as $TYPE=>$VALUE) {
- $sql="select `ID`,`A_STATUS`,`CECHA_ID`,`PRODUKT_ID`,`DESC` from `IN7_PRODUKTY_CECHY` where
- `A_STATUS`!='DELETED' and `CECHA_ID`='".$DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE]."' and
- `PRODUKT_ID`='".$VAL."' ";
- $res2=$CONNLOCAL->query($sql);
- if(mysql_num_rows($CONNLOCAL)==0) DEBUG_S(-3,"Nie znalazlem oczekiwanych cech dla komorki :",array($DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE],$VAL,$sql),__FILE__, __FUNCTION__, __LINE__);
- while($hh=mysql_fetch_object($res2)) {
- $KOMPLET_DANYCH_KOMORKI[$TYPE]=$hh->DESC;
- }
- }
- }
-
-
- DEBUG_S(-3,'Komplet danych Komorki:',$KOMPLET_DANYCH_KOMORKI,__FILE__, __FUNCTION__, __LINE__);
- if(count($KOMPLET_DANYCH_KOMORKI)<5) {
- DEBUG_S(-3,"Nie ma w bazie zasobow odpowiedniej definicji tabeli/komorki - zla struktura! (Jest w Zasobach, bez dokladnych definicji - nalezy pewnie usunac z zasobow zasob [".$VAL."])",$KOMPLET_DANYCH_KOMORKI,__FILE__, __FUNCTION__, __LINE__) ;
- die1(); }
- if(!isset($KOMPLET_DANYCH_KOMORKI['Field'])||!isset($KOMPLET_DANYCH_KOMORKI['Type'])||!isset($KOMPLET_DANYCH_KOMORKI['Null'])||!isset($KOMPLET_DANYCH_KOMORKI['Default'])||!isset($KOMPLET_DANYCH_KOMORKI['Extra'])) die1('Zla struktura - niepelne definicje tabel/komorek w zasobach.');
- $sql="ALTER TABLE `".$LOCAL_TABLE_FOUND."` ADD `".$KOMPLET_DANYCH_KOMORKI['Field']."` ".$KOMPLET_DANYCH_KOMORKI['Type']." " ;
- if($KOMPLET_DANYCH_KOMORKI['Null']=='YES') $sql.=" NULL ";
- if(!empty($KOMPLET_DANYCH_KOMORKI['Default'])) $sql.=" default ".$KOMPLET_DANYCH_KOMORKI['Default']." ";
- echo "\n ".$sql;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL: ',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('\nProblem z '.$sql);
- if(mysql_affected_rows($CONNREMOTE)>0) { //usuwamy z poszukiwania
- unset($SYNC_279['KOMORKI_DO_ZNALEZIENIA_W_REM'][$LOOK_FOR_TABLE]);
- $SYNC_279['ZNALEZIONO_KOMORKI_W_BAZIE_REM'][$LOOK_FOR_TABLE]=$CONNREMOTE->insert_id();
- }
-
- }
- //teraz synchronizacja cech do bazy - cech dotyczacych tych komorek
- //foreach($SYNC_279['KOMORKI_DO_SPRAWDZENIA_W_REM'] as $ID_FIELD=>$ID_FIELD_VAL ) {
- // //tu powinnismy robin foreach $CECHY_POSZUKIWANE - aby przeleciec wszystkie cechy komorki z tabeli
- // $NUMER_ID_TABELI_Z_BAZY=$ID_FIELD_VAL;
- foreach($STRUCTURE_LOCAL[$LOCAL_TABLE_FOUND]['FIELDS'] as $TSTIND=>$ID_FIELD_VAL_FLD) { //tu robie tabelke do odhaczania z niej zmiennych
- $SA_PROBLEMY_W_KOMORKACH=false;
- if(isset($KOMPLET_DANYCH_KOMORKI))unset($KOMPLET_DANYCH_KOMORKI);
- echo "\n SRU: dla ".$TSTIND. "oraz tabeli".$ID_FIELD_VAL_FLD->Field;
- //print_r($ID_FIELD_VAL_FLD);
- //die1();
- //print_r($STRUCTURE_LOCAL[$LOCAL_TABLE_FOUND]);
- foreach($CECHY_POSZUKIWANE as $IINDEX=>$VVALUE) {
- foreach($VVALUE as $TYPE=>$VALUE) {
- //sprawdzamy czy jestesmy w dobrej komorce foreach
- //if($ID_FIELD!=$ID_FIELD_VAL_TBL->Field) continue;
-
- //sprawdzamy zgodnosc oczekiwanego typu lokalnego z parametrami w konfigu
- echo "\n Sprawdzam zgodnosc strukturr: ".$TYPE." dla pola LEFT:" ;
- // print_r($ID_FIELD_VAL_FLD);
- //die1();
- //if($ID_FIELD_VAL_FLD->$TYPE!=$TYPE) {
- //echo "\n".$ID_FIELD_VAL_FLD->$TYPE."!=".$TYPE ;}
-
- echo "\n--- dalej Sprawdzam zgodnosc struktur:".$LOCAL_TABLE_FOUND."::: ".$ID_FIELD_VAL_FLD->Field." ".$TYPE ;
- //SZUKAMY CO JEST W CECHACH
- $sql="select `ID`,`A_STATUS`,`CECHA_ID`,`PRODUKT_ID`,`DESC` from `IN7_PRODUKTY_CECHY` where
- `A_STATUS`!='DELETED' and `CECHA_ID`='".$DRZEWO_CECH['NUMER_CECHY_DLA_DB_'.$IINDEX.$TYPE]."' and
- `PRODUKT_ID`='".$SYNC_279['KOMORKI_DO_SPRAWDZENIA_W_REM'][$ID_FIELD_VAL_FLD->Field]."' ";
- echo "\n ".$sql;
- //SPRAWDZAMY Z TYM CO POWINNO BYC W BAZIE
- $result=$CONNLOCAL->query($sql) or die1('problem ze sql '.$sql);
-
- while($h=mysql_fetch_object($result)) {
- $KOMPLET_DANYCH_KOMORKI[$TYPE]=$h->DESC;
- if($ID_FIELD_VAL_FLD->$TYPE==addslashes($h->DESC)) {
- echo "\n Zgodnosc cechy ".$TYPE." ".$h->DESC." z ".addslashes($ID_FIELD_VAL_FLD->$TYPE);
- break; //nie robimy dalej tego foreach, bo jest zgodnosc tej cechy?
- } else {
- DEBUG_S(-3,"\n BRAK ZGODNOSCI! cechy ".$TYPE." ".$h->DESC." z ".addslashes($ID_FIELD_VAL_FLD->$TYPE),'',__FILE__, __FUNCTION__, __LINE__) ;
- $SA_PROBLEMY_W_KOMORKACH=123;
- }
-
- }
- //else DODAJEMY OPISY CECH DO BAZY DANYCH
-
-
- }
- echo "\n TEstuje problemy w komorkach:(".$SA_PROBLEMY_W_KOMORKACH.")";
- if($SA_PROBLEMY_W_KOMORKACH) {
- echo " ---- TAK SA - idziemy!:";
- $SA_PROBLEMY_W_KOMORKACH=false;
- print_r($KOMPLET_DANYCH_KOMORKI);
- if(count($KOMPLET_DANYCH_KOMORKI)<5) die1('Niie ma w bazie zasobow odpowiedniej definicji tabeli/komorki - zla struktura!');
- if(!isset($KOMPLET_DANYCH_KOMORKI['Field'])||!isset($KOMPLET_DANYCH_KOMORKI['Type'])||!isset($KOMPLET_DANYCH_KOMORKI['Null'])||!isset($KOMPLET_DANYCH_KOMORKI['Default'])||!isset($KOMPLET_DANYCH_KOMORKI['Extra'])) die1('Zla struktura - niepelne definicje tabel/komorek w zasobach.');
- $sql="ALTER TABLE `".$LOCAL_TABLE_FOUND."` CHANGE `".$ID_FIELD_VAL_FLD->Field."` `".$ID_FIELD_VAL_FLD->Field."` ".$KOMPLET_DANYCH_KOMORKI['Type']." " ;
- if($KOMPLET_DANYCH_KOMORKI['Null']=='YES') $sql.=" NULL ";
- if(!empty($KOMPLET_DANYCH_KOMORKI['Default'])) $sql.=" default '".$KOMPLET_DANYCH_KOMORKI['Default']."' ";
- echo "\n ".$sql;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or DEBUG_S(-3,'Problem ze SQL: ',$sql,__FILE__, __FUNCTION__, __LINE__) or die1('');
- if(mysql_affected_rows($CONNREMOTE)>0) echo "\R Success alter";
- //if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($sql) or die1('\nProblem z table '.$LOCAL_TABLE_FOUND.' Komorka '.$ID_FIELD_VAL->Field.' , parameter : '.$TYPE.' sql: '.$sql);
- }
- }
-
-
- }
-
-
- echo "\nZNALEZIONO_KOMORKI_W_BAZIE_REM\n";print_r($SYNC_279['ZNALEZIONO_KOMORKI_W_BAZIE_REM']);
- echo "\nKOMORKI_DO_ZNALEZIENIA_W_REM\n";print_r($SYNC_279['KOMORKI_DO_ZNALEZIENIA_W_REM']);
- unset($SYNC_279['ZNALEZIONO_KOMORKI_W_BAZIE_REM']);
- unset($SYNC_279['KOMORKI_DO_ZNALEZIENIA_W_REM']);
- unset($SYNC_279['TABELE_DO_ZNALEZIENIA_W_REM']);
- unset($SYNC_279['ZNALEZIONO_TABELE_W_BAZIE_REM']);
- unset($SYNC_279['TABELE_DO_SPRAWDZENIA_W_REM']);
- unset($SYNC_279['KOMORKI_DO_SPRAWDZENIA_W_REM']);
- }
-
- print_r($DRZEWO_CECH);
- print_r($SYNC_279);
- //unset($SYNC_279);
-
-
-
- }
-
-
- }// else if($SYNC_OPTIONS=='FROM_ZASOBY_TO_DATABASE')
- else if($SYNC_OPTIONS=='FROM_ZASOBY_TO_ZASOBY') {
-
- FROM_ZASOBY_TO_ZASOBY($CONNLOCAL,$CONNREMOTE,$SYSTEM_PROFILE_STRING_IMPORT_EXPORT,$CONFIRM_SQL_UPDATE,$CRM_IMPORT_TRANSLATE);
- // ! CLEAR_IMPORTED_ZASOBY_REMOTE
- } else if($SYNC_OPTIONS=='CLEAR_IMPORTED_ZASOBY_REMOTE') {
- //jedziemy po wszystkich tabelach z CRM_IMPORT_TRANSLATE
- if( isset($sql)) unset($sql);
- if( isset($zap)) unset($zap);
- echo "\n<br> Będą kasowane zaimportowane zasoby, procesy, wskazniki, pytania, zdjecia dla zaimportowanych struktur - aby wgrac od nowa czyste ";
- $sql[]="delete t1.* from `CRM_PROCES` as t1 , `CRM_IMPORT_TRANSLATE` as t2 where ( t1.`ID`=t2.`DST_TABLE_ID` and t2.`REM_TABLE`='CRM_PROCES' ) ";
- $sql[]="delete t1.* from `CRM_WSKAZNIK` as t1 , `CRM_IMPORT_TRANSLATE` as t2 where ( t1.`ID`=t2.`DST_TABLE_ID` and t2.`REM_TABLE`='CRM_WSKAZNIK' ) ";
- $sql[]="delete t1.* from `CRM_LISTA_ZASOBOW` as t1 , `CRM_IMPORT_TRANSLATE` as t2 where ( t1.`ID`=t2.`DST_TABLE_ID` and t2.`REM_TABLE`='CRM_LISTA_ZASOBOW' ) ";
- $sql[]="delete t1.* from `CRM_TESTY_PYTANIA` as t1 , `CRM_IMPORT_TRANSLATE` as t2 where ( t1.`ID`=t2.`DST_TABLE_ID` and t2.`REM_TABLE`='CRM_TESTY_PYTANIA' ) ";
- $sql[]="delete t1.* from `CRM_IMAGE` as t1 , `CRM_IMPORT_TRANSLATE` as t2 where ( t1.`ID`=t2.`DST_TABLE_ID` and t2.`REM_TABLE`='CRM_IMAGE' ) ";
- $sql[]="delete t2.* from `CRM_IMPORT_TRANSLATE` as t2 where t2.`REM_TABLE`='CRM_PROCES'";
- $sql[]="delete t2.* from `CRM_IMPORT_TRANSLATE` as t2 where t2.`REM_TABLE`='CRM_WSKAZNIK'";
- $sql[]="delete t2.* from `CRM_IMPORT_TRANSLATE` as t2 where t2.`REM_TABLE`='CRM_LISTA_ZASOBOW'";
- $sql[]="delete t2.* from `CRM_IMPORT_TRANSLATE` as t2 where t2.`REM_TABLE`='CRM_TESTY_PYTANIA'";
- $sql[]="delete t2.* from `CRM_IMPORT_TRANSLATE` as t2 where t2.`REM_TABLE`='CRM_IMAGE'";
-
- DEBUG_S(-3,'Zapytanie SQL czyszczace tabele: ',$sql,__FILE__, __FUNCTION__, __LINE__) ;
- foreach($sql as $zap_ind=>$zap) {
- DEBUG_S(-3,'Wyzwalam : Zapytanie SQL czyszczace tabele: ',$zap,__FILE__, __FUNCTION__, __LINE__) ;
- if(!empty($CONFIRM_SQL_UPDATE)) $result=$CONNREMOTE->query($zap) or die1('\nProblem z '.$zap);
-
- }
- //! MAKE_SE_AND_HIST_FIELDS_FOR_TABLE
- } else if($SYNC_OPTIONS=='MAKE_SE_AND_HIST_FIELDS_FOR_TABLE') {
-
- $result=$CONNLOCAL->show_tables($SYSTEM_PROFILE_STRING_IMPORT_EXPORT);
-
- while($h=$CONNLOCAL->fetch_array($result)) {
-
- if(!strstr($h[0], '_HIST')) {
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNLOCAL->MAKE_SE_AND_HIST_FIELDS_FOR_TABLE($h[0]);
- else DEBUG_S(-3,'Suppressed running command function CONNLOCAL->MAKE_SE_AND_HIST_FIELDS_FOR_TABLE('.$h[0].')',__FILE__,__FUNCTION__,__LINE__);
- }
-
- }
- //! IMPORT_SORT_DESC_INFO
- } else if($SYNC_OPTIONS=='SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC_FIX_ALIAS') {
-
- SYSTEM_IMPORT_FIX_ZASOB_FIX_PROC_FIX_ALIAS($CONNREMOTE,$CONFIRM_SQL_UPDATE);
-
- } else if($SYNC_OPTIONS=='IMPORT_SORT_DESC_INFO') {
- echo "<br>f.IMPORT_SORT_DESC_INFO";
- $cnf=Config::getConfFile('default_db');
- $exec="/usr/local/mysql/bin/mysqldump --skip-lock-tables -h se.dev.webone.pl -ucrmexportprof -pcrmexportprof SES_USERS2 CRM_LISTA_ZASOBOW |/usr/local/mysql/bin/mysql -Dtest -u{$cnf['user']} -p{$cnf['pass']}";
- exec($exec,$out,$exit);
- DEBUG_S(-3,'Importuje swieza tabele zasobow',array($cnf,$out,$exit));
- flush();
-
- $sql="update {$cnf['database']}.CRM_LISTA_ZASOBOW cz , {$cnf['database']}.CRM_LISTA_ZASOBOW cz2
- , test.CRM_LISTA_ZASOBOW cs , test.CRM_LISTA_ZASOBOW cs2
- set cz.DESC_PL=cs.DESC_PL
- , cz.SORT_PRIO=cs.SORT_PRIO
- where cz.`DESC`=cs.`DESC` and cz.DESC_PL like ''
- and cz.PARENT_ID=cz2.ID and cs.PARENT_ID=cs2.ID
- and cs2.`DESC`=cz2.`DESC` ";
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
- //! CLEAR_TREE_DUBLES_AND_MOVE_WSK
- } else if($SYNC_OPTIONS=='CLEAR_TREE_DUBLES_AND_MOVE_WSK') {
- $sql="select cz.ID, group_concat(cz.ID) as ID_GROUP, cz.`DESC`, count(cz.ID) as cnt
- from CRM_LISTA_ZASOBOW as cz
- where cz.PARENT_ID!='-1' and cz.`DESC` like '_%' and ( cz.`TYPE`='KOMORKA' or cz.`TYPE`='TABELA' or cz.`TYPE`='TYPESPECIALS' or cz.`TYPE`='TYPESPECIAL' or cz.`TYPE`='VARIABLES' or cz.`TYPE`='VARIABLE' )
- group by cz.PARENT_ID,cz.`DESC` ,cz.`TYPE`,cz.ALIAS_ID having cnt>1
- limit 100
- ";
- DEBUG_S(-3,'szukam',array($sql),__FILE__,__FUNCTION__,__LINE__);
- $res=$CONNREMOTE->query($sql);
-
- while($h=DB::fetch($res)) {
-
- //if(empty($h->DESC2)) {
- //bedziemy przerzucac na cz.ID wskazniki,
- $to_move=explode(',',$h->ID_GROUP);
- $dest_move=$to_move[0];
- unset($to_move[0]);
- foreach($to_move as $mv) {
- echo "<hr> ".$h->DESC." (".$h->ID_GROUP.")";
- $sql="update CRM_LISTA_ZASOBOW set PARENT_ID='".$dest_move."' where PARENT_ID='".$mv."' ";
- DEBUG_S(3,'aktualizuje PARENT_ID',array($sql,$mv,$h),__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
-
- $sql="update CRM_LISTA_ZASOBOW set ALIAS_ID='".$dest_move."' where ALIAS_ID='".$mv."' ";
- DEBUG_S(3,'aktualizuje PARENT_ID',array($sql,$mv,$h),__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
- $sql="update CRM_WSKAZNIK set ID_ZASOB='".$dest_move."' where ID_ZASOB='".$mv."' ";
- DEBUG_S(-3,'aktualizuje WSKAZNIK',array($sql,$mv,$h),__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
- // a reszte kasowac, damy info w CRM_IMPORT_TRANSLATE jak bylo cos na niego
- $sql="update CRM_IMPORT_TRANSLATE set DST_TABLE_ID='".$dest_move."' where DST_TABLE_ID='".$mv."' and REM_TABLE='CRM_LISTA_ZASOBOW'";
- DEBUG_S(-3,'aktualizuje CRM_TRANS',array($sql),__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
- $sql="update CRM_LISTA_ZASOBOW set PARENT_ID='-1', `DESC`='DELETED', A_RECORD_UPDATE_AUTHOR=concat('script CLEAR_TREE',`DESC`) where ID='".$mv."'";
- DEBUG_S(-3,'aktualizuje - kasuje stary',array($sql),__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
- $sql="update ignore USERS2 set CRM_LISTA_ZASOBOW_ID='".$dest_move."' where CRM_LISTA_ZASOBOW_ID='".$mv."' ";
- DEBUG_S(-3,'aktualizuje USERS2',array($sql),__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
- $sql="update ignore ADMIN_USERS set CRM_LISTA_ZASOBOW_ID='".$dest_move."' where CRM_LISTA_ZASOBOW_ID='".$mv."' ";
- DEBUG_S(-3,'aktualizuje ADMIN_USERS',array($sql),__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
- $sql="update ignore CRM_AUTH_PROFILE set ID_ZASOB='".$dest_move."' where ID_ZASOB='".$mv."' ";
- DEBUG_S(-3,'aktualizuje CRM_AUTH_PROFILE',array($sql),__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
- $sql="delete from CRM_AUTH_PROFILE where ID_ZASOB='".$mv."' ";
- DEBUG_S(-3,'delete from CRM_AUTH_PROFILE',array($sql),__FILE__,__FUNCTION__,__LINE__);
- if(!empty($CONFIRM_SQL_UPDATE)) $CONNREMOTE->query($sql) or die1(' Problem ze sql '.$sql);
-
- }
- //}
- }
-
- }
-
- echo "</pre>\n";
- unset($_SESSION['DEBUG']);
-
- }
-
-
- echo "<HR>EOF";
- ?>
|