Moc / cookbook

Important: NOT READY FOR RELEASE YET!! A fully featured Cookbook plugin for e107, for all your recipes. Includes functionalities such as categorization, sharing, and bookmarking.
Apache License 2.0
2 stars 3 forks source link

SQL Insert Error when creating the first recipe #37

Closed ericc-dream closed 4 months ago

ericc-dream commented 4 months ago

Bug Description

When I created the first recipe, just after installing the plugin, I had a "SQL Insert Error" I retried several time with the same problem, so I activate "Developer mode" and this time it worked For each try, I delete the database and re-import it, so I'm in the same state each time

How to Reproduce

Steps to reproduce the behavior:

  1. Install the plugin
  2. Go to "Configure" and then "Add a recipe"
  3. Create your recipe, fill all cells
  4. click on "Create button"

Expected Behavior

Just the recipe to be added to the database

I activate the debug mode [debug=sql!] , and this is what I have collected :

System Debug
Event triggers fired (admin_cookbook_recipes_create, admin_ui_create) Toggle data
SQL Error #23000: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'r_instructionsnew' cannot be null
SQL QRY Error 
Debug Log
Message Function    File    Line
Session Save Method: db     e_session->setDefaultSystemConfig()()   /home/ericc/www/ericc/e107_handlers/session_handler.php     931 
Timezone: Europe/Brussels   init_session()  /home/ericc/www/ericc/class2.php    672 
Broken Icon Path: images/icon_32.png    e_parse->toIcon()()     /home/ericc/www/ericc/e107_core/shortcodes/batch/navigation_shortcodes.php  266 
Using Cached Core Update Data   admin_shortcodes->sc_admin_update()()   /home/ericc/www/ericc/e107_handlers/shortcode_handler.php   1154 
Possible issue: Missing a Unique Tablerender ID. Use $ns->setUniqueId() in the plugin script prior to setContent(). See 'source code' for more information.     e_render->setContent()()    /home/ericc/www/ericc/e107_handlers/e_render_class.php  391 
Possible issue: Missing a Unique Tablerender ID. Use $ns->setUniqueId() in the plugin script prior to setContent(). See 'source code' for more information.     e_render->setContent()()    /home/ericc/www/ericc/e107_handlers/e_render_class.php  391 

Probably an issue with the Admin theme, but at first I haven't see that there was something in the big almost white box

Array
(
    [_FIELD_TYPES] => Array
        (
            [r_id] => int
            [r_thumbnail] => str
            [r_name] => str
            [r_name_sef] => str
            [r_category] => int
            [r_datestamp] => int
            [r_author] => int
            [r_keywords] => str
            [r_persons] => int
            [r_time] => int
            [r_authorrating] => int
            [r_difficulty] => int
            [r_summary] => str
            [r_ingredients] => str
            [r_instructions] => str
            [r_instructionsnew] => json
        )

    [data] => Array
        (
            [r_id] => 
            [r_thumbnail] => {e_MEDIA_IMAGE}2024-07/i71869_toasts_au_chevre_avocat_et_tomates_sechees.webp
            [r_name] => Toast Avocat
            [r_name_sef] => toast-avocat
            [r_category] => 3
            [r_datestamp] => 1720035549
            [r_author] => 1
            [r_keywords] => Avocat,Poulet
            [r_persons] => 2
            [r_time] => 30
            [r_authorrating] => 1
            [r_difficulty] => 1
            [r_summary] => Voici une recette simple, rapide et excellente ... surtout en été
Mais vous devez absolument avoir un toaster, à plat ou de type "clam"
            [r_ingredients] => Pour 3 ou 4 toasts, pour 2 ou 3 personnes, selon la taille du pain, vous aurez besoin de :

[list][*]Pain de mie ou de campagne, avec des céréales c'est meilleur. J'utilise un pain noir avec de grandes tranches
  [*]Un avocat mur mais pas trop (pas qu'il tombe en purée)
  [*]  de la Mozzarella, environ 250gr ou plus, pour 2 ou 3 personnes. Pas besoin de prendre de la "di Bufala" sauf si vous avez de l'argent à perdre rolleyes
  [*]  des poivrons en bocal, grillés et à l'huile d'olive
  [*]  du beurre, du vrai que l'on peux chauffer, pour faire blondir le pain
[/list]

Optionnellement :

[list][*]des aiguillettes de poulet. Normalement ce sont des toasts végétariens, et c'est déjà bon comme cela, mais je suis un horrible carnassier blush2 ceci dit, je n'en met pas à chaque fois
    [*]des tomates séchées dans l'huile d'olive. Totalement accessoire ! La dernière fois que j'ai fait ces toasts, il restait un demi bocal de tomates séchés, c'est pas mal, mais c'est loin d'être obligatoire
[/list]
            [r_instructions] => Environ 1h avant:

    sortir les poivrons de l'huile d'olive et les étaler sur une assiette avec du papier absorbant (même chose avec les tomates si vous avez décidé d'en mettre)
    couper la mozzarella en relativement fines tranches (c'est moins simple que cela en à l'air) et les mettre sur une assiette pour quelle dégorge

Le but de tout ceci est de limiter la quantité de "liquide" par la suite qui pourrais venir imbiber le pain et/ou couler dans le toaster

Faire dorer le poulet, si vous avez choisi d'en mettre et ensuite le laisser refroidir dans une assiette sur du papier absorbant

Préparation des toasts :

    Couper l'avocat en deux, l'éplucher et le couper en fine tranche. Faire cela au dernier moment pour éviter qu'il ne devienne noir.
    Mettre du beurre sur toutes les faces des tranches de pain
    Puis sur le pain, mettre une couche de poivrons, de toutes les couleurs, c'est plus beau
    2 aiguillettes de poulet éventuellement
    une couche de Mozzarella
    une couche d'Avocat
    la tranche de pain

Quand vous avez préparez tout les toasts, deux par deux dans le toaster, jusqu'à ce que le pain soit bien grillé et la mozzarella fondue

Servez chaud, et régalez vous !
            [r_instructionsnew] => 
        )

)

Note that when the "Developer mode" is not active, there are no cell "instructionsnew" And when it's active, I see some cells with label "New instructions" but I never fill them

I tried to desactivate the "Developer mode" and create a new recipe and I encounter the same problem again

Server Information (optional)

Apache 2.0 running on Linux Ubuntu server in a VM

PHP Version

PHP8.2.20

Client Information

Firefox 127.0.2 , on Linux Kubuntu (Ubuntu and KDE)

Tell me if you need more info

ericc-dream commented 4 months ago

To be sure and complete On my dev server: I created a new database I created a new e107 version 2.3.3 installation. I did the full install, giving permission of all the required folders Didn't configure anything and didn't install any extra plugin, just the basic, default clone your repo with a "git clone https://github.com/Moc/cookbook.git" in the e107_plugin folder and give 777 permission Install the plugin from the admin interface. Everything works well Create 3 categories : "Starter", "Main course", "Dessert" Create the new recipe (same as yesterday) -> same error :

Event triggers fired (admin_cookbook_recipes_create, admin_ui_create) Toggle data SQL Error #23000: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'r_instructionsnew' cannot be null SQL QRY Error

Moc commented 4 months ago

Thank you! This is a bug caused by a mistake on my part. Will fix soon.

Moc commented 4 months ago

Please redownload the files from Github, reinstall the plugin, and you should be good to go :)

ericc-dream commented 4 months ago

OK, works for me Thanks