From: Honza M. <hon...@ec...> - 2021-02-23 00:55:21
|
Hola Misi, nice to see you here! > Hi Honza, Ariel, I hope you are doing well during these difficult times We are OK with our family, I hope you all too. > Tried to migrate AA site from php 5.5 to 7.2. > Did svn update to the last revision and updated the database. Great - the last AA in SVN support PHP >= 7.2 > I have encountered the new site module approach, did not understand how > it works, how can you migrate sites using the "old way", and could not > find any documentation about it. The "new" approach to Site Module is there from commit 2009-08-17 in SVN - / Site Module now you can use without any control-file, so you do not/ / need any PHP scripting at all. All you need is to select/ / AA_Router_Seo in "Router" field in Site Setting and specify/ / the slices, which are used within the Site Module. This means, that/ / AA_Router_Seo is now stabilized and standardized. See also new/ / possibilities useful here - {xid}, {xid:path}, {xid:1}, {go} and tree/ / posibilities of {item}/ It works well for the new sites and we use it from that time. The documentation is not in good shape for it, but if you are interested, I will prepare some example. On the other hand, we are trying to be as backward compatible as possible, so the old sites should work in new AA as well. We still run some sites based on that older approach with the most current AA. The rewrite of the site from old to new approach is not trivial and I would go for it only in the case of redesign of the whole site. > For the time being I had to stick to the old ways - start feeling like > in some old, burned out gunman character from a western movie :-) - here > is my experience, if anybody needs it: > > location: apc-aa/modules/site/sites > file: > > Found that the ereg() function used here is out of php 7, found > suggestion of using preg_match() instead. Right - ereg is gone in php7. One of the advantage of the new sitemodule is, that you do not need external php script, so all php code is managed and updated be AA. > # previous php 5.5 version > > if( ereg( > "^([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-]) > ([a-zA-Z_]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)", $apc, $vars )) > > list($old_state,$old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t,$old > _x) = $vars; > > else > list($old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t) = > array( 'i', '-', '-', 'r', 0, '-', '-', '-'); > > > The problem is that preg_match() is creating two dimensional array, and > the syntax is a bit different. Need to use differently the list > function, 2 versions below: > > (need to be adapted to the state variable structure used) > > # ======================================================= > # replacement for PHP 7+ > # v. 1 > > if( preg_match( > '"^([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-] > )([a-zA-Z_-]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)"', $apc, $vars, > PREG_OFFSET_CAPTURE )) { > > list($old_state,$old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t,$old > _x) = $vars; > $old_state = $vars[0][0]; > $old_w = $vars[1][0]; > $old_s = $vars[2][0]; > $old_f = $vars[3][0]; > $old_l = $vars[4][0]; > $old_a = $vars[5][0]; > $old_r = $vars[6][0]; > $old_p = $vars[7][0]; > $old_t = $vars[8][0]; > $old_x = $vars[9][0]; > } > else > list($old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t) = > array( 'i', '-', '-', 'r', 0, '-', '-', '-'); > > # ======================================================= > # replacement for PHP 7+ > # v. 2 > > if( preg_match( > '"^([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-] > )([a-zA-Z_-]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)"', $apc, $vars, > PREG_OFFSET_CAPTURE )) > > list( list($old_state, ),list($old_w, ),list($old_s, ),list($old_f, > ),list($old_l, ),list($old_a, ),list($old_r, ),list($old_p, > ),list($old_t, ),list($old_x, ) ) = $vars; > > else > list($old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t) = > array( 'i', '-', '-', 'r', 0, '-', '-', '-'); > > # ======================================================= > This second one looks more sophisticated & PHP like, however I feel like > it is to complicated structure to be efficient, I don't know the inner > workings of PHP, can not decide which one is faster on execution. > > Anyway probably there was some sick mind coming up with this syntax of > the list function, to use blank space for parameters to skip (embedded > list structure). Looks like broken code to me. I still prefer C as a > programming language :-) . There are two examples of this older sitemodule approach in the /modules/site/sites/ directory. The examples are addapted to PHP 7,2 and should be OK. One approach is in site_ecn_as_example.php3: if ( preg_match( "/^([a-zA-Z0-9_])([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z_]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)/", $apc, $vars )) { list($old_state,$old_w,$old_s,$old_f,$old_r,$old_p,$old_t,$old_x) = $vars; } else { list($old_w,$old_s,$old_f,$old_r,$old_p,$old_t) = ['z', 'z', 'v', 'x', '-', '-']; } Another - site_greenpages.php3 - uses the built-in function ModW_str2arr() $apc_varnames = "tpmiuvw"; //TODO replace with "tpmih*" $apc_reg = "^([-pe])([-]|[0-9]+)([hbsfcCt])([-]|[0-9]+)([hbsfcCt][-0-9]+)*"; $apc_init = '--h-s-'; $apc_state = ModW_str2arr($apc_varnames, $apc, $apc_init, $apc_reg); > ------------------------------------------------------- > the MLX / add / edit item form problem: > > I am using MLX for multiple languages. The "Edit <language>" tab works > on existing items. However if I want to add another item on ther > language, and select "Add <language>" tab, it is generating a blank Add > item form of another slice, perhaps the first slice of the database. > > Also when I select the last button (abort or cancel, mine is in > romanian) also jumps back to the other slice item list (not always > though). If I coming out of the form with the "Update" (first) button, > it behaves normally. Today just logged in again, fresh start, and went > in, this time left the form normally with Cancel button. Strange. > > I noticed that the link ends in the & character when you hover above the > Add <language> link - like some parameter is missing. Found that if I > add module ID at the end, the Add form is generated but blank, the data > from the corresponding item on another language is not copied, and > language field is filled with random values, like Norwegian, Japanese, > Russian, etc. which I never use. > > example: > > Original link: > https://site.ro/aa/admin/itemedit.php3?encap=false&add=1&mlxl=HU&mlxid=4e5b4 > d4073eb2e9f937d5cf72934d819& > > Altered link generating the blank page: > https://site.ro/aa/admin/itemedit.php3?encap=false&add=1&mlxl=HU&mlxid=4e5b4 > d4073eb2e9f937d5cf72934d819&module_id=fd49721e08b3ad1ffca8211b1dbdee1b > > After added new item - need to care about the language selection field, > otherwise strange things are happening - things are back to normal, you > can edit and save normally, MLX does its job and item is properly > displayed in the site. Well MLX. I must say we are not using MLX extension on any of our sites, so it is quite difficult for me to test it. There is already another translation approach in current AA which we use. The MLX extension is still in AA and we are trying to update is to newer PHP, but it is no longer maintained by Michael Moritz and not much tested. I can take a look on it if you give me access to your AA and AA files in the server... Best, Honza Dne pondělí 22. února 2021 14:04:46 CET, Bako Mihaly napsal(a): > // apparently I'm off the list, resubscribed with mi...@ng... > > Hi guys! > > Have not seen much talk on this list, hopefully I am still on it. > > Hi Honza, Ariel, I hope you are doing well during these difficult times > - Cc:-d this to you as well just in case. > > Tried to migrate AA site from php 5.5 to 7.2. > > Did svn update to the last revision and updated the database. > > I have encountered the new site module approach, did not understand how > it works, how can you migrate sites using the "old way", and could not > find any documentation about it. > > For the time being I had to stick to the old ways - start feeling like > in some old, burned out gunman character from a western movie :-) - here > is my experience, if anybody needs it: > > location: apc-aa/modules/site/sites > file: > > Found that the ereg() function used here is out of php 7, found > suggestion of using preg_match() instead. > > # previous php 5.5 version > > if( ereg( > "^([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-]) > ([a-zA-Z_]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)", $apc, $vars )) > > list($old_state,$old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t,$old > _x) = $vars; > > else > list($old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t) = > array( 'i', '-', '-', 'r', 0, '-', '-', '-'); > > > The problem is that preg_match() is creating two dimensional array, and > the syntax is a bit different. Need to use differently the list > function, 2 versions below: > > (need to be adapted to the state variable structure used) > > # ======================================================= > # replacement for PHP 7+ > # v. 1 > > if( preg_match( > '"^([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-] > )([a-zA-Z_-]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)"', $apc, $vars, > PREG_OFFSET_CAPTURE )) { > > list($old_state,$old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t,$old > _x) = $vars; > $old_state = $vars[0][0]; > $old_w = $vars[1][0]; > $old_s = $vars[2][0]; > $old_f = $vars[3][0]; > $old_l = $vars[4][0]; > $old_a = $vars[5][0]; > $old_r = $vars[6][0]; > $old_p = $vars[7][0]; > $old_t = $vars[8][0]; > $old_x = $vars[9][0]; > } > else > list($old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t) = > array( 'i', '-', '-', 'r', 0, '-', '-', '-'); > > # ======================================================= > # replacement for PHP 7+ > # v. 2 > > if( preg_match( > '"^([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-])([a-zA-Z0-9_-] > )([a-zA-Z_-]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)"', $apc, $vars, > PREG_OFFSET_CAPTURE )) > > list( list($old_state, ),list($old_w, ),list($old_s, ),list($old_f, > ),list($old_l, ),list($old_a, ),list($old_r, ),list($old_p, > ),list($old_t, ),list($old_x, ) ) = $vars; > > else > list($old_w,$old_s,$old_f,$old_l,$old_a,$old_r,$old_p,$old_t) = > array( 'i', '-', '-', 'r', 0, '-', '-', '-'); > > # ======================================================= > > This second one looks more sophisticated & PHP like, however I feel like > it is to complicated structure to be efficient, I don't know the inner > workings of PHP, can not decide which one is faster on execution. > > Anyway probably there was some sick mind coming up with this syntax of > the list function, to use blank space for parameters to skip (embedded > list structure). Looks like broken code to me. I still prefer C as a > programming language :-) . > > ------------------------------------------------------- > the MLX / add / edit item form problem: > > I am using MLX for multiple languages. The "Edit <language>" tab works > on existing items. However if I want to add another item on ther > language, and select "Add <language>" tab, it is generating a blank Add > item form of another slice, perhaps the first slice of the database. > > Also when I select the last button (abort or cancel, mine is in > romanian) also jumps back to the other slice item list (not always > though). If I coming out of the form with the "Update" (first) button, > it behaves normally. Today just logged in again, fresh start, and went > in, this time left the form normally with Cancel button. Strange. > > I noticed that the link ends in the & character when you hover above the > Add <language> link - like some parameter is missing. Found that if I > add module ID at the end, the Add form is generated but blank, the data > from the corresponding item on another language is not copied, and > language field is filled with random values, like Norwegian, Japanese, > Russian, etc. which I never use. > > example: > > Original link: > https://site.ro/aa/admin/itemedit.php3?encap=false&add=1&mlxl=HU&mlxid=4e5b4 > d4073eb2e9f937d5cf72934d819& > > Altered link generating the blank page: > https://site.ro/aa/admin/itemedit.php3?encap=false&add=1&mlxl=HU&mlxid=4e5b4 > d4073eb2e9f937d5cf72934d819&module_id=fd49721e08b3ad1ffca8211b1dbdee1b > > After added new item - need to care about the language selection field, > otherwise strange things are happening - things are back to normal, you > can edit and save normally, MLX does its job and item is properly > displayed in the site. > > This is my 2c. > > Have a nice day! > > Best, > > Misi > Strawberrynet Romania > > > > _______________________________________________ > "Did you get answers to your ActionApps-related queries? If yes, please > help the ActionApps community by uploading the answers onto appropriate > space in the ActionApps documentation wiki. See the *How to contribute* > section today http://actionapps.org/en/How_To_Contribute" > _______________________________________________ > apc-aa-general mailing list > apc...@li... > https://lists.sourceforge.net/lists/listinfo/apc-aa-general |