@@ -89,11 +89,10 @@ class Wizard
8989 ),
9090 'networks ' => array (
9191 'format ' => '' ,
92- 's ' => 4 ,
93- 'n ' => 0 ,
92+ 'len ' => 4 ,
93+ 'items ' => 0 ,
9494 'fields ' => array (),
9595 ),
96- 'maxItemLen ' => 0 ,
9796 );
9897
9998 /**
@@ -609,8 +608,7 @@ protected function cleanTmpDb()
609608 foreach ($ this ->networks as $ network ) {
610609 foreach ($ network ['map ' ] as $ register ) {
611610 $ innerSql = 'SELECT `_pk` FROM ` ' .$ register .'` GROUP BY `_pk` ' ;
612- $ sql = 'DELETE FROM `_ips` WHERE WHERE `parameter` = " ' .$ register .'" AND `value` NOT IN ( '
613- .$ innerSql .'); ' ;
611+ $ sql = 'DELETE FROM `_ips` WHERE WHERE `parameter` = " ' .$ register .'" AND `value` NOT IN ( ' .$ innerSql .'); ' ;
614612 $ this ->pdo ->exec ($ sql );
615613 }
616614 }
@@ -644,14 +642,12 @@ protected function definePackFormat() {
644642 }
645643 break ;
646644 default :
647- $ fieldClassName = __NAMESPACE__ .'\\Field \\'
648- .mb_convert_case ($ data ['type ' ], \MB_CASE_TITLE ).'Field ' ;
645+ $ fieldClassName = __NAMESPACE__ .'\\Field \\' .mb_convert_case ($ data ['type ' ], \MB_CASE_TITLE ).'Field ' ;
649646 /**
650647 * @var FieldAbstract $validator
651648 */
652649 $ validator = new $ fieldClassName ($ field , $ data );
653- $ sql = 'SELECT MAX(` ' . $ field . '`) AS `max`, MIN(` ' . $ field . '`) AS `min` FROM ` '
654- . $ table . '`; ' ;
650+ $ sql = 'SELECT MAX(` ' . $ field . '`) AS `max`, MIN(` ' . $ field . '`) AS `min` FROM ` ' . $ table . '`; ' ;
655651 $ res = $ this ->pdo ->query ($ sql );
656652 $ row = $ res ->fetch ();
657653 $ validator ->update ($ row ['min ' ]);
@@ -666,8 +662,8 @@ protected function definePackFormat() {
666662 $ bin = Pack::pack ($ pack , $ empty );
667663
668664 $ this ->meta ['registers ' ][$ table ]['format ' ] = $ pack ;
669- $ this ->meta ['registers ' ][$ table ]['s ' ] = strlen ($ bin );
670- $ this ->meta ['registers ' ][$ table ]['n ' ] = 0 ;
665+ $ this ->meta ['registers ' ][$ table ]['len ' ] = strlen ($ bin );
666+ $ this ->meta ['registers ' ][$ table ]['items ' ] = 0 ;
671667 $ this ->meta ['registers ' ][$ table ]['fields ' ] = $ empty ;
672668 }
673669 }
@@ -684,7 +680,7 @@ protected function compileRegister($register)
684680 $ empty = $ this ->meta ['registers ' ][$ register ]['fields ' ];
685681 $ bin = Pack::pack ($ format , $ empty );
686682 fwrite ($ file , $ bin );
687- $ offset = strlen ( $ bin ) ;
683+ $ offset = 0 ;
688684 $ select = array (
689685 '* ' => '` ' .$ register .'`.* ' ,
690686 );
@@ -712,19 +708,13 @@ protected function compileRegister($register)
712708 if (!empty ($ cellValue )) $ check = 1 ;
713709 }
714710 $ bin = Pack::pack ($ format , $ row );
715- $ binLen = strlen ($ bin );
716711 if ($ check ) {
717- if ($ binLen > $ this ->meta ['maxItemLen ' ]) {
718- $ this ->meta ['maxItemLen ' ] = $ binLen ;
719- }
720- $ offset += $ binLen ;
712+ $ offset ++;
721713 fwrite ($ file ,$ bin );
722714 }
723- $ sql = 'UPDATE ` ' .$ register .'` SET `_offset` = \'' .($ check ?$ offset :0 ).'\' WHERE `_pk` = \'' .$ rowId .'\'; ' ;
724- $ this ->pdo ->exec ($ sql );
725- $ sql = 'UPDATE `_ips` SET `offset` = \'' .($ check ?$ offset :0 ).'\' WHERE `parameter` = \''
726- .$ register .'\' AND `value`= \'' .$ rowId .'\'; ' ;
727- $ this ->pdo ->exec ($ sql );
715+
716+ $ this ->pdo ->exec ('UPDATE ` ' .$ register .'` SET `_offset` = \'' .($ check ?$ offset :0 ).'\' WHERE `_pk` = \'' .$ rowId .'\'; ' );
717+ $ this ->pdo ->exec ('UPDATE `_ips` SET `offset` = \'' .($ check ?$ offset :0 ).'\' WHERE `parameter` = \'' .$ register .'\' AND `value`= \'' .$ rowId .'\'; ' );
728718
729719 $ transactionIterator += 2 ;
730720 if ($ transactionIterator > 100000 ) {
@@ -733,7 +723,7 @@ protected function compileRegister($register)
733723 $ transactionIterator = 0 ;
734724 }
735725 }
736- $ this ->meta ['registers ' ][$ register ]['n ' ] = $ offset ;
726+ $ this ->meta ['registers ' ][$ register ]['items ' ] = $ offset ;
737727 $ this ->pdo ->commit ();
738728 fclose ($ file );
739729 }
@@ -757,19 +747,15 @@ protected function compileNetwork()
757747 $ format = array ();
758748 foreach ($ fields as $ register =>$ null ) {
759749 $ values [$ register ] = array ();
760- $ format [$ register ] = Pack::getOptimalFormat (
761- 0 ,
762- $ this ->meta ['registers ' ][$ register ]['n ' ],
763- $ register
764- );
750+ $ format [$ register ] = Pack::getOptimalFormat (0 , $ this ->meta ['registers ' ][$ register ]['items ' ], $ register );
765751 }
766752
767753
768754 $ this ->meta ['networks ' ]['format ' ] = implode ('/ ' , $ format );
769755
770756 $ pack = $ this ->meta ['networks ' ]['format ' ];
771757 $ binaryPrevData = Pack::pack ($ pack , $ fields );
772- $ this ->meta ['networks ' ]['s ' ] += strlen ($ binaryPrevData );
758+ $ this ->meta ['networks ' ]['len ' ] += strlen ($ binaryPrevData );
773759 $ offset = 0 ;
774760 $ this ->meta ['index ' ][0 ] = 0 ;
775761 $ file = fopen ($ this ->prefix .'.networks.dat ' ,'w ' );
@@ -810,7 +796,7 @@ protected function compileNetwork()
810796 fwrite ($ file , pack ('N ' , $ ip ) . $ binaryData );
811797 }
812798 }
813- $ this ->meta ['networks ' ]['n ' ] = $ offset ;
799+ $ this ->meta ['networks ' ]['items ' ] = $ offset ;
814800 for ($ i =1 ;$ i <=255 ;$ i ++) {
815801 if (!isset ($ this ->meta ['index ' ][$ i ])) $ this ->meta ['index ' ][$ i ] = $ this ->meta ['index ' ][$ i -1 ];
816802 }
@@ -831,34 +817,27 @@ protected function compileHeader()
831817 */
832818 $ header = pack ('C ' , self ::FORMAT_VERSION );
833819
834- /*
835- * Maximal length of register item
836- */
837- $ header .= pack ('I ' , $ this ->meta ['maxItemLen ' ]);
838-
839820 /*
840821 * Registers count.
841822 */
842823 $ header .= pack ('C ' , count ($ this ->meta ['registers ' ]));
843824
825+
844826 $ rnmLen = 1 ;
845827 $ pckLen = strlen ($ this ->meta ['networks ' ]['format ' ]);
846- $ numMax = $ this ->meta ['networks ' ]['n ' ];
847- $ registerOffset = filesize ( $ this ->prefix . ' . networks.dat ' ); ;
828+ $ lenMax = $ this ->meta ['networks ' ]['len ' ];
829+ $ itmMax = $ this ->meta [ ' networks ' ][ ' items ' ] ;
848830 foreach ($ this ->meta ['registers ' ] as $ registerName => $ register ) {
849- $ this ->meta ['registers ' ][$ registerName ]['s ' ] = $ registerOffset ;
850- $ file = $ this ->prefix .'.reg. ' .$ registerName .'.dat ' ;
851- $ registerOffset += filesize ($ file );
852831 if (strlen ($ registerName ) > $ rnmLen ) $ rnmLen = strlen ($ registerName );
853832 if (strlen ($ register ['format ' ]) > $ pckLen ) $ pckLen = strlen ($ register ['format ' ]);
854- if ($ register ['n ' ] > $ numMax ) $ numMax = $ register ['n ' ];
833+ if ($ register ['len ' ] > $ lenMax ) $ lenMax = $ register ['len ' ];
834+ if ($ register ['items ' ] > $ itmMax ) $ itmMax = $ register ['items ' ];
855835 }
856836 $ rnm = 'A ' .$ rnmLen .'name ' ;
857837 $ pck = 'A ' .$ pckLen .'format ' ;
858- $ sizeMax = ($ this ->meta ['networks ' ]['s ' ] > $ registerOffset )?$ this ->meta ['networks ' ]['s ' ]:$ registerOffset ;
859- $ size = Pack::getOptimalFormat (0 , $ sizeMax , 's ' );
860- $ itm = Pack::getOptimalFormat (0 , $ numMax , 'n ' );
861- $ format = $ rnm .'/ ' .$ pck .'/ ' .$ size .'/ ' .$ itm ;
838+ $ len = Pack::getOptimalFormat (0 , $ lenMax , 'len ' );
839+ $ itm = Pack::getOptimalFormat (0 , $ itmMax , 'items ' );
840+ $ format = $ rnm .'/ ' .$ pck .'/ ' .$ len .'/ ' .$ itm ;
862841
863842 /*
864843 * Size of registers definition unpack format.
@@ -871,8 +850,8 @@ protected function compileHeader()
871850 $ empty = array (
872851 'name ' => '' ,
873852 'format ' => '' ,
874- 's ' => 0 ,
875- 'n ' => 0 ,
853+ 'len ' => 0 ,
854+ 'items ' => 0 ,
876855 );
877856 $ header .= pack ('S ' ,strlen (Pack::pack ($ format , $ empty )));
878857
@@ -923,8 +902,8 @@ protected function compileHeader()
923902 array (
924903 'name ' => $ registerName ,
925904 'format ' => $ register ['format ' ],
926- 's ' => $ register ['s ' ],
927- 'n ' => $ register ['n ' ]
905+ 'len ' => $ register ['len ' ],
906+ 'items ' => $ register ['items ' ]
928907 )
929908 );
930909 }
@@ -937,8 +916,8 @@ protected function compileHeader()
937916 array (
938917 'name ' => 'n ' ,
939918 'format ' => $ this ->meta ['networks ' ]['format ' ],
940- 's ' => $ this ->meta ['networks ' ]['s ' ],
941- 'n ' => $ this ->meta ['networks ' ]['n ' ]
919+ 'len ' => $ this ->meta ['networks ' ]['len ' ],
920+ 'items ' => $ this ->meta ['networks ' ]['items ' ]
942921 )
943922 );
944923
@@ -999,13 +978,12 @@ protected function makeFile($fileName)
999978 fclose ($ stream );
1000979 if (is_writable ($ file )) unlink ($ file );
1001980 }
1002- $ data = array (
1003- 'time ' => empty ($ this ->time )?time ():$ this ->time ,
1004- 'author ' => $ this ->author ,
1005- 'license ' => $ this ->license ,
1006- );
1007- fwrite ($ database ,pack::pack ('Itime/~author/A*license ' , $ data ));
981+
982+ $ time = empty ($ this ->time )?time ():$ this ->time ;
983+ fwrite ($ database ,pack ('I1A128 ' ,$ time ,$ this ->author ));
984+ fwrite ($ database ,pack ('A* ' ,$ this ->license ));
1008985 fclose ($ database );
986+
1009987 rename ($ tmp , $ fileName );
1010988 }
1011989}
0 commit comments