# Trial no. 5

Hypothesis: the problem is caused because the imported database has traces of a ZC 1.5.4 install with PPL and the installation process tries to INSERT things which already exist

Restored my modified install of ZC 1.5.8 with imported data from ZC 1.5.4

SELECT * FROM configuration WHERE configuration_key LIKE 'PL_%'; returns 119 lines
SELECT * FROM configuration_group WHERE configuration_group_title='Printable Price-list'; returns 1 line
SELECT * FROM configuration_group WHERE configuration_group_title LIKE 'Price-list Profile-%'; returns 3 lines
SELECT * FROM admin_pages WHERE page_key LIKE 'config%Pricelist%'; returns 4 lines

Ran the following SQL commands in phpMyAdmin:

DELETE FROM configuration WHERE configuration_key LIKE 'PL_%';
DELETE FROM configuration_group WHERE configuration_group_title='Printable Price-list';
DELETE FROM configuration_group WHERE configuration_group_title LIKE 'Price-list Profile-%';
DELETE FROM admin_pages WHERE page_key LIKE 'config%Pricelist%';

Uploaded ONG's fix to PPL, extracted it, copied the folders into the appropriate folder in my ZC 1.5.8 install with the upgraded data from 1.5.8, and clicked any button in the admin interface:

Blank screen with "WARNING: An Error occurred, please let us know! If you were entering information, press the BACK button in your browser and re-check the information you had entered to be sure you entered valid data.

Three logged errors. The SQL commands are very long so I will only quote one in full.

Code:
[12-Jan-2024 13:39:58 America/Vancouver] Request URI: /1.5.8/MY_ADMIN/, IP address: 172.218.225.67, Language id 1
#1  trigger_error() called at [/WEBROOT/includes/classes/db/mysql/query_factory.php:667]
#2  queryFactory->show_error() called at [/WEBROOT/includes/classes/db/mysql/query_factory.php:634]
#3  queryFactory->set_error() called at [/WEBROOT/includes/classes/db/mysql/query_factory.php:275]
#4  queryFactory->Execute() called at [/WEBROOT/MY_ADMIN/includes/init_includes/init_price_list_admin.php:155]
#5  require_once(/WEBROOT/MY_ADMIN/includes/init_includes/init_price_list_admin.php) called at [/WEBROOT/includes/autoload_func.php:40]
#6  require(/WEBROOT/includes/autoload_func.php) called at [/WEBROOT/MY_ADMIN/includes/application_top.php:42]
#7  require(/WEBROOT/MY_ADMIN/includes/application_top.php) called at [/WEBROOT/MY_ADMIN/home.php:9]
#8  require(/WEBROOT/MY_ADMIN/home.php) called at [/WEBROOT/MY_ADMIN/index.php:11]
--> PHP Fatal error: 1062:Duplicate entry 'PL_HEADER_LOGO_1' for key 'unq_config_key_zen' :: INSERT INTO configuration
                (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added)
             VALUES
                ('Enable Profile?', 'PL_ENABLE_1', 'true', 'Choose <em>true</em> to enable this price-list profile to be used on the <em>pricelist</em> page.', 42, 10, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Group Name', 'PL_GROUP_NAME_1', '', 'Set this field to a <b>Group Name</b> (see <em>Customers->Group Pricing</em>) to enable this profile <em>only</em> for customers in that group. Leave the field empty for the profile to apply to all customers.', 42, 15, NULL, NULL, now()),

                ('Profile Name', 'PL_PROFILE_NAME_1', 'Product Profile 1', 'Give this profile a name.', 42, 20, NULL, NULL, now()),

                ('Display Linked Products?', 'PL_USE_MASTER_CATS_ONLY_1', 'false', 'Should products be listed under all linked categories (<em>false</em>) or only under their master-category (<em>true</em>)?', 42, 32, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Show Selections?', 'PL_SHOW_BOXES_1', 'true', 'Set this value to <em>true</em> to display language and currency selections as well as a categories dropdown menu.', 42, 35, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Categories Dropdown: Main Only?', 'PL_CATEGORY_TREE_MAIN_CATS_ONLY_1', 'true', 'Should the categories dropdown menu contain <em>only</em> the main categories?  If set to <em>false</em>, then <b>all</b> categories are displayed.  <b>Note:</b> This setting is ignored if <em>Show Selections</em> is set to <em>false</em>', 42, 37, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Main Categories: New Page', 'PL_MAINCATS_NEW_PAGE_1', 'false', 'If true, main categories on the printed price-list will start on a new page.', 42, 40, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('No Wrap', 'PL_NOWRAP_1', 'false', 'To enable or disable wrapping on screen (nowrap is easier for debugging)', 42, 60, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Columns: Model', 'PL_SHOW_MODEL_1', 'true', 'Display each product\'s model number in a separate column?', 42, 100, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Columns: Manufacturer', 'PL_SHOW_MANUFACTURER_1', 'true', 'Display each product\'s manufacturer in a separate column?', 42, 105, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Columns: Weight', 'PL_SHOW_WEIGHT_1', 'false', 'Display each product\'s weight in a separate column?', 42, 110, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Columns: Stock-on-Hand', 'PL_SHOW_SOH_1', 'false', 'Display each product\'s stock-on-hand in a separate column?', 42, 115, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Columns: Notes (A)', 'PL_SHOW_NOTES_A_1', 'false', 'Display an empty column for each product, allowing the customer to make notes?', 42, 120, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Columns: Notes (B)', 'PL_SHOW_NOTES_B_1', 'false', 'Display another empty column for each product, allowing the customer to make notes?', 42, 125, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Columns:  Price', 'PL_SHOW_PRICE_1', 'true', 'Display each product\'s price, including or excluding tax based on your shop\'s tax-configuration settings)?', 42, 130, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Columns: Price (ex)', 'PL_SHOW_TAX_FREE_1', 'false', 'Display each product\'s tax-free price in a separate column?', 42, 135, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Show Specials Prices?', 'PL_SHOW_SPECIAL_PRICE_1', 'true', 'Display each product\'s &quot;special&quot; price?  If <em>true</em>, the script will execute 4 extra queries per product!', 42, 140, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Show Specials Expiry?', 'PL_SHOW_SPECIAL_DATE_1', 'false', 'Show special price expiry date?  This works <em>only</em> for specials (not for pricing by attributes and sales). Executes one extra query per special if enabled.', 42, 145, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Columns: Add-to-Cart', 'PL_SHOW_ADDTOCART_BUTTON_1', 'false', 'Display an add-to-cart button for each product? If the product has attributes, a &quot;More info&quot; link displays instead.', 42, 150, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Add-to-Cart Button Target', 'PL_ADDTOCART_TARGET_1', 'Cartpage', 'How to react to an Add-to-Cart button click: <em>Cartpage</em> sends all results to the same web page, <em>_self</em> sends result to the current page and <em>_blank</em> sends each result to a new page.', 42, 155, NULL, 'zen_cfg_select_option(array(\'Cartpage\', \'_self\', \'_blank\'),', now()),

                ('Show Product Images?', 'PL_SHOW_IMAGE_1', 'false', 'Display each product\'s image?', 42, 160, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Image Height', 'PL_IMAGE_PRODUCT_HEIGHT_1', '80', 'If the product images are to be displayed, what is the height of each image?', 42, 165, NULL, NULL, now()),

                ('Image Width', 'PL_IMAGE_PRODUCT_WIDTH_1', '100', 'If the product images are to be displayed, what is the width of each image?', 42, 170, NULL, NULL, now()),

                ('Show Descriptions?', 'PL_SHOW_DESCRIPTION_1', 'false', 'Display each product\'s description?', 42, 175, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Truncate Descriptions?', 'PL_TRUNCATE_DESCRIPTION_1', '300', 'If <em>Show Descriptions?</em> is set to <b>true</b> and this field is a value other than 0 or blank, product descriptions will be truncated to this length &mdash; HTML will be stripped.', 42, 180, NULL, NULL, now()),

                ('Show Inactive Products and Categories?', 'PL_SHOW_INACTIVE_1', 'false', 'Set this value to <em>true</em> to include disabled products and categories in the list.', 42, 200, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Sort By: Field', 'PL_SORT_PRODUCTS_BY_1', 'products_price', 'How products are sorted within a category', 42, 210, NULL, 'zen_cfg_select_option(array(\'products_name\', \'products_price\', \'products_model\' ),', now()),

                ('Sort By: Asc/Desc', 'PL_SORT_ASC_DESC_1', 'asc', 'Sort ascending or descending', 42, 215, NULL, 'zen_cfg_select_option(array(\'asc\', \'desc\' ),', now()),

                ('Enable Debug?', 'PL_DEBUG_1', 'false', 'If true debug info is shown', 42, 200, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Show Store Logo On-Screen?', 'PL_HEADER_LOGO_1', 'true', 'Display the store\'s logo at the top of the screen?', 42, 260, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Show Page Headers?', 'PL_SHOW_PRICELIST_PAGE_HEADERS_1', 'false', 'If true the page headers on each page are shown (screen and print).', 42, 270, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()),

                ('Show Page Footers?', 'PL_SHOW_PRICELIST_PAGE_FOOTERS_1', 'true', 'If true the page footers on each page are shown (screen and print).', 42, 280, NULL, 'zen_cfg_select_option(array(\'true\', \'false\'),', now()) ==> (as called by) /WEBROOT/MY_ADMIN/includes/init_includes/init_price_list_admin.php on line 155 <== in /WEBROOT/includes/classes/db/mysql/query_factory.php on line 667
Code:
[12-Jan-2024 13:39:54 America/Vancouver] Request URI: /1.5.8/MY_ADMIN/, IP address: 172.218.225.67, Language id 1
#1  trigger_error() called at [/WEBROOT/includes/classes/db/mysql/query_factory.php:667]
#2  queryFactory->show_error() called at [/WEBROOT/includes/classes/db/mysql/query_factory.php:634]
#3  queryFactory->set_error() called at [/WEBROOT/includes/classes/db/mysql/query_factory.php:275]
#4  queryFactory->Execute() called at [/WEBROOT/MY_ADMIN/includes/init_includes/init_price_list_admin.php:155]
#5  require_once(/WEBROOT/MY_ADMIN/includes/init_includes/init_price_list_admin.php) called at [/WEBROOT/includes/autoload_func.php:40]
#6  require(/WEBROOT/includes/autoload_func.php) called at [/WEBROOT/MY_ADMIN/includes/application_top.php:42]
#7  require(/WEBROOT/MY_ADMIN/includes/application_top.php) called at [/WEBROOT/MY_ADMIN/home.php:9]
#8  require(/WEBROOT/MY_ADMIN/home.php) called at [/WEBROOT/MY_ADMIN/index.php:11]
--> PHP Fatal error: 1062:Duplicate entry 'PL_HEADER_LOGO_1' for key 'unq_config_key_zen' :: INSERT INTO configuration ...
Code:
[12-Jan-2024 13:39:51 America/Vancouver] Request URI: /1.5.8/MY_ADMIN/keepalive.php?_=1705095253356, IP address: 172.218.225.67, Language id 1
#1  trigger_error() called at [/WEBROOT/includes/classes/db/mysql/query_factory.php:667]
#2  queryFactory->show_error() called at [/WEBROOT/includes/classes/db/mysql/query_factory.php:634]
#3  queryFactory->set_error() called at [/WEBROOT/includes/classes/db/mysql/query_factory.php:275]
#4  queryFactory->Execute() called at [/WEBROOT/MY_ADMIN/includes/init_includes/init_price_list_admin.php:155]
#5  require_once(/WEBROOT/MY_ADMIN/includes/init_includes/init_price_list_admin.php) called at [/WEBROOT/includes/autoload_func.php:40]
#6  require(/WEBROOT/includes/autoload_func.php) called at [/WEBROOT/MY_ADMIN/includes/application_top.php:42]
#7  require(/WEBROOT/MY_ADMIN/includes/application_top.php) called at [/WEBROOT/MY_ADMIN/keepalive.php:9]
--> PHP Fatal error: 1062:Duplicate entry 'PL_HEADER_LOGO_1' for key 'unq_config_key_zen' :: INSERT INTO configuration ...
I will double-check with the client but at this point I think I will abandon this plugin.