When using Mollom with a CCK node type, I get the following PHP warning when I submit a node:

warning: Cannot use a scalar value as an array in /var/www/dev.indymedia.be/trunk/sites/all/modules/cck/content.module on line 606.

The content is submitted fine though.

Not sure if this report belongs in CCK's issue queue. Since the warning disappears when disabling Mollom, I'm posting it here.

Comments

brunodbo’s picture

Project: Mollom » Content Construction Kit (CCK)
Version: 5.x-1.3 » 5.x-1.7
Component: Code » content.module

I'm not sure if this report belongs in CCK's or Mollom's issue queue. Anyone?

yched’s picture

Hard to tell. That error means the node that gets rendered has something like $node->field_foo == 'a string', instead of the expected array of values.
Does this happens only after submitting the node ? Or even when simply viewing it ? (please also try 'simply viewing' after emptying the cache)

If it's only on node submit, then something's wrong during the phase where mollom renders the node to send it to the service.
You could try altering mollom_data_node_form() in this way (you need devel.module, obviously), so that we can have more info on what's happening :

..
$data = node_build_content((object)$form_values, FALSE, FALSE);
dsm($data); // <-- add this line
$content = drupal_render($data->content);

brunodbo’s picture

The warning only appears on a node submit. I'm pasting the output of dsm($data); underneath:

stdClass Object
(
    [nid] => 
    [vid] => 
    [uid] => 0
    [created] => 
    [type] => article
    [changed] => 
    [title] => Leiders G8 komen beloftes niet na. Deze keer wel?
    [name] => 
    [date] => 
    [status] => 1
    [promote] => 
    [sticky] => 
    [revision] => 
    [preview] => Preview
    [op] => Submit
    [submit] => Submit
    [form_id] => article_node_form
    [comment] => 2
    [menu] => Array
        (
            [title] => 
            [description] => 
            [pid] => 
            [path] => 
            [weight] => 0
            [mid] => 0
            [type] => 86
        )

    [path] => 
    [taxonomy] => Array
        (
            [1] => 
        )

    [field_arname] => Array
        (
            [0] => Array
                (
                    [value] => Christophe
                    [view] => Christophe
                )

            [1] => Array
                (
                    [value] => 
                    [view] => 
                )

            [2] => Array
                (
                    [value] => 
                    [view] => 
                )

        )

    [field_intro] => Array
        (
            [0] => Array
                (
                    [value] => Wereldleiders die aan het begin van de zomervakantie samenkomen in een exclusief vakantieoord. Veel betogers die door nog meer politieagenten op een veilige afstand worden gehouden. NGO's en vakbonden die hun verlanglijstjes afgeven. Dit moet wel de jaarlijkse G8-top zijn. Even traditioneel zijn ook de ronkende slotverklaringen over verhoogde hulp aan de noodlijdende derde wereldlanden. Beloftes die niet altijd even nauwgezet worden nagekomen. Zal het dit jaar anders zijn?
                    [view] => Wereldleiders die aan het begin van de zomervakantie samenkomen in een exclusief vakantieoord. Veel betogers die door nog meer politieagenten op een veilige afstand worden gehouden. NGO&#039;s en vakbonden die hun verlanglijstjes afgeven. Dit moet wel de jaarlijkse G8-top zijn. Even traditioneel zijn ook de ronkende slotverklaringen over verhoogde hulp aan de noodlijdende derde wereldlanden. Beloftes die niet altijd even nauwgezet worden nagekomen. Zal het dit jaar anders zijn?
                )

        )

    [field_photo_upload] => 
    [upload] => Upload
    [field_photo-attach-url] => http://dev.indymedia.be/en/imagefield/js
    [field_text] => Array
        (
            [0] => Array
                (
                    [value] => Het standpunt van de wereldvakbond ITUC en het Trade Union Advisory Committee bij de OESO (TUAC) voor de G8-top in het Japanse Hokkaido Toyako lijkt wel een bloemlezing van gebroken beloftes. De leiders van de acht rijkste landen beloofden op de top van Gleneagles in 2005 een nieuw partnership met Afrika met ondermeer een verdubbeling van de officiële hulp – een top die door die gulle beloftes historisch werd genoemd. Drie jaar later blijkt dat de meeste G8-landen in 2007 minder geld besteedden aan ontwikkelingssamenwerking. De totale som die in de Oeso-landen naar ontwikkelingssamenwerking ging in 2007 daalde zelfs met 8,4 procent. Die hulp blijft daardoor steken op 0,25 procent, alsmaar verder verwijderd van de beloofde 0,7 procent. De Britse krant The Financial Times schreef vorige week dat de G8-landen nog meer willen knabbelen aan de beloofde steun.

Of neem de belofte om veel meer te investeren in onderwijs. Die dateert al van de top in Keulen in 1999. Een belofte die herhaald werd in 2000 in Okinawa en nog eens vijf jaar later in Gleneagles. Drie jaar later schrijven de vakbonden: “Er is nog altijd weinig bewijs van vooruitgang. Er gaapt een onaanvaardbare kloof tussen bedoelingen en prestaties op bijna alle belangrijke punten.”

De wereldvakbond roept de acht wereldleiders op om de vroegere beloftes eindelijk na te komen. In hun standpunt voor de top in Hokkaido Toyako schetsen de vakbonden een somber beeld van de toestand in de wereld. De VS kijken aan tegen de grootste financiële crisis sinds 1929. In de plaats van duurzame groei kwamen er financiële luchtbellen en slechtere arbeidsomstandigheden voor de werknemers. In 53 van de 73 landen waar cijfers over beschikbaar zijn (= 4/5 van de wereldbevolking) steeg de kloof tussen rijk en arm. De voedselprijzen gingen het afgelopen jaar met 57 procent omhoog wat leidt tot een humanitaire crisis in veel derdewereldlanden. En ondertussen blijft de klimaatverandering als een zwaard van Damocles boven de toekomst van de planeet zweven.

De wereldvakbond wil dat de G8 op al die terreinen vooruitgang boeken. De G8 moeten de vraag opkrikken en de lagere en middeninkomens te hulp snellen. De financiële markten moeten aan banden worden gelegd. Voor slachtoffers van de voedselcrisis moeten er noodmaatregelen komen. Om de klimaatverandering tegen te gaan pleiten de vakbonden voor sociale maatregelen en de ontwikkeling van groene jobs.


                    [format] => 1
                    [view] => <p>Het standpunt van de wereldvakbond ITUC en het Trade Union Advisory Committee bij de OESO (TUAC) voor de G8-top in het Japanse Hokkaido Toyako lijkt wel een bloemlezing van gebroken beloftes. De leiders van de acht rijkste landen beloofden op de top van Gleneagles in 2005 een nieuw partnership met Afrika met ondermeer een verdubbeling van de officiële hulp – een top die door die gulle beloftes historisch werd genoemd. Drie jaar later blijkt dat de meeste G8-landen in 2007 minder geld besteedden aan ontwikkelingssamenwerking. De totale som die in de Oeso-landen naar ontwikkelingssamenwerking ging in 2007 daalde zelfs met 8,4 procent. Die hulp blijft daardoor steken op 0,25 procent, alsmaar verder verwijderd van de beloofde 0,7 procent. De Britse krant The Financial Times schreef vorige week dat de G8-landen nog meer willen knabbelen aan de beloofde steun.</p>
<p>Of neem de belofte om veel meer te investeren in onderwijs. Die dateert al van de top in Keulen in 1999. Een belofte die herhaald werd in 2000 in Okinawa en nog eens vijf jaar later in Gleneagles. Drie jaar later schrijven de vakbonden: “Er is nog altijd weinig bewijs van vooruitgang. Er gaapt een onaanvaardbare kloof tussen bedoelingen en prestaties op bijna alle belangrijke punten.”</p>
<p>De wereldvakbond roept de acht wereldleiders op om de vroegere beloftes eindelijk na te komen. In hun standpunt voor de top in Hokkaido Toyako schetsen de vakbonden een somber beeld van de toestand in de wereld. De VS kijken aan tegen de grootste financiële crisis sinds 1929. In de plaats van duurzame groei kwamen er financiële luchtbellen en slechtere arbeidsomstandigheden voor de werknemers. In 53 van de 73 landen waar cijfers over beschikbaar zijn (= 4/5 van de wereldbevolking) steeg de kloof tussen rijk en arm. De voedselprijzen gingen het afgelopen jaar met 57 procent omhoog wat leidt tot een humanitaire crisis in veel derdewereldlanden. En ondertussen blijft de klimaatverandering als een zwaard van Damocles boven de toekomst van de planeet zweven.</p>
<p>De wereldvakbond wil dat de G8 op al die terreinen vooruitgang boeken. De G8 moeten de vraag opkrikken en de lagere en middeninkomens te hulp snellen. De financiële markten moeten aan banden worden gelegd. Voor slachtoffers van de voedselcrisis moeten er noodmaatregelen komen. Om de klimaatverandering tegen te gaan pleiten de vakbonden voor sociale maatregelen en de ontwikkeling van groene jobs.</p>

                )

        )

    [field_link] => Array
        (
            [0] => Array
                (
                    [url] => 
                    [title] => 
                    [view] => 
                )

            [1] => Array
                (
                    [url] => 
                    [title] => 
                    [view] => 
                )

            [more-url] => <ttp://dev.indymedia.be/en/link/widget/js/article/field_link
            [count] => 1
            [more] => <ore Links
        )

    [field_related_content] => Array
        (
            [0] => Array
                (
                    [node_name] => 
                    [view] => 
                )

            [1] => Array
                (
                    [node_name] => 
                    [view] => 
                )

            [2] => Array
                (
                    [node_name] => 
                    [view] => 
                )

        )

    [field_arfile_upload] => 
    [field_arfile-attach-url] => http://dev.indymedia.be/en/filefield/js
    [body] => 
    [readmore] => 
    [content] => Array
        (
            [body] => Array
                (
                    [#value] => 
                    [#weight] => 0
                )

            [field_author] => Array
                (
                    [#weight] => 0
                    [#value] => 
                    [#access] => 1
                )

            [field_arname] => Array
                (
                    [#weight] => 0
                    [#value] => <div class="field field-type-text field-field-arname"><div class="field-items"><div class="field-item">Christophe</div></div></div>
                    [#access] => 1
                )

            [field_intro] => Array
                (
                    [#weight] => 1
                    [#value] => <div class="field field-type-text field-field-intro"><div class="field-items"><div class="field-item">Wereldleiders die aan het begin van de zomervakantie samenkomen in een exclusief vakantieoord. Veel betogers die door nog meer politieagenten op een veilige afstand worden gehouden. NGO&#039;s en vakbonden die hun verlanglijstjes afgeven. Dit moet wel de jaarlijkse G8-top zijn. Even traditioneel zijn ook de ronkende slotverklaringen over verhoogde hulp aan de noodlijdende derde wereldlanden. Beloftes die niet altijd even nauwgezet worden nagekomen. Zal het dit jaar anders zijn?</div></div></div>
                    [#access] => 1
                )

            [field_photo] => Array
                (
                    [#weight] => 2
                    [#value] => 
                    [#access] => 1
                )

            [field_text] => Array
                (
                    [#weight] => 3
                    [#value] => <div class="field field-type-text field-field-text"><div class="field-items"><div class="field-item"><p>Het standpunt van de wereldvakbond ITUC en het Trade Union Advisory Committee bij de OESO (TUAC) voor de G8-top in het Japanse Hokkaido Toyako lijkt wel een bloemlezing van gebroken beloftes. De leiders van de acht rijkste landen beloofden op de top van Gleneagles in 2005 een nieuw partnership met Afrika met ondermeer een verdubbeling van de officiële hulp – een top die door die gulle beloftes historisch werd genoemd. Drie jaar later blijkt dat de meeste G8-landen in 2007 minder geld besteedden aan ontwikkelingssamenwerking. De totale som die in de Oeso-landen naar ontwikkelingssamenwerking ging in 2007 daalde zelfs met 8,4 procent. Die hulp blijft daardoor steken op 0,25 procent, alsmaar verder verwijderd van de beloofde 0,7 procent. De Britse krant The Financial Times schreef vorige week dat de G8-landen nog meer willen knabbelen aan de beloofde steun.</p>
<p>Of neem de belofte om veel meer te investeren in onderwijs. Die dateert al van de top in Keulen in 1999. Een belofte die herhaald werd in 2000 in Okinawa en nog eens vijf jaar later in Gleneagles. Drie jaar later schrijven de vakbonden: “Er is nog altijd weinig bewijs van vooruitgang. Er gaapt een onaanvaardbare kloof tussen bedoelingen en prestaties op bijna alle belangrijke punten.”</p>
<p>De wereldvakbond roept de acht wereldleiders op om de vroegere beloftes eindelijk na te komen. In hun standpunt voor de top in Hokkaido Toyako schetsen de vakbonden een somber beeld van de toestand in de wereld. De VS kijken aan tegen de grootste financiële crisis sinds 1929. In de plaats van duurzame groei kwamen er financiële luchtbellen en slechtere arbeidsomstandigheden voor de werknemers. In 53 van de 73 landen waar cijfers over beschikbaar zijn (= 4/5 van de wereldbevolking) steeg de kloof tussen rijk en arm. De voedselprijzen gingen het afgelopen jaar met 57 procent omhoog wat leidt tot een humanitaire crisis in veel derdewereldlanden. En ondertussen blijft de klimaatverandering als een zwaard van Damocles boven de toekomst van de planeet zweven.</p>
<p>De wereldvakbond wil dat de G8 op al die terreinen vooruitgang boeken. De G8 moeten de vraag opkrikken en de lagere en middeninkomens te hulp snellen. De financiële markten moeten aan banden worden gelegd. Voor slachtoffers van de voedselcrisis moeten er noodmaatregelen komen. Om de klimaatverandering tegen te gaan pleiten de vakbonden voor sociale maatregelen en de ontwikkeling van groene jobs.</p>
</div></div></div>
                    [#access] => 1
                )

            [field_link] => Array
                (
                    [#weight] => 4
                    [#value] => <div class="field field-type-link field-field-link"><div class="field-items"><div class="field-item"><</div><div class="field-item"><</div></div></div>
                    [#access] => 1
                )

            [field_related_content] => Array
                (
                    [#weight] => 5
                    [#value] => 
                    [#access] => 1
                )

            [field_arfile] => Array
                (
                    [#weight] => 6
                    [#value] => 
                    [#access] => 1
                )

        )

)
karens’s picture

Project: Content Construction Kit (CCK) » Link
Version: 5.x-1.7 » 5.x-1.x-dev
Component: content.module » Code

It looks like the Link module is adding some unexpected values to the node. I'd say this might be a Link module issue. Moving it there so they can investigate.

yched’s picture

Right, the entry for field_link seem very likely to produce the error.

quicksketch’s picture

Project: Link » Mollom
Version: 5.x-1.x-dev » 5.x-1.4

Link module cleans up it's own mess, but I think that Mollom is just getting a shot at the submitted data before Link does. Perhaps Mollom's submit handler could be run after CCK runs the "process form data" hook? Here's Link trying to clean up it's information:

    case 'process form values':
      // Remove the JS helper fields.
      unset($items['more-url']);
      unset($items['count']);
      unset($items['more']);

But if Mollom runs before CCK calls Link to do the cleanup, I'm not sure that there's anything Link can do. I'll push it over to the Mollom queue. Let me know if there's something to do about it on the Link side.

AdrianB’s picture

I was hit by this as well when I activated a Link field on a Drupal 5.9 installation with Mollom. When I disabled Mollom the error message disappeared. (Another way of saying "subscribing".)

brunodbo’s picture

I investigated this some more ...

- The warning only appears when the Link field is multivalue (and when Mollom is enabled).
- On another node type with a multivalue Link field, I also get the following warning (on top of the 'scalar value' warning mentioned above, and only with Mollom enabled):

warning: unserialize() expects parameter 1 to be string, array given in /home/bruno/workspace/dev.indymedia.be/trunk/sites/all/modules/link/link.module on line 616.

I'm moving this back to Link field. If I shouldn't have, please move it back to Mollom's queue.

brunodbo’s picture

Project: Mollom » Link
Version: 5.x-1.4 » 5.x-2.3.1

Actually moving it to Link ...

quicksketch’s picture

Project: Link » Mollom
Version: 5.x-2.3.1 » 5.x-1.5

Once again (as noted in #6), link.module is doing every thing it can to clean up its information. I think it's Mollom that's causing the problem.

brunodbo’s picture

Title: PHP warning when using Mollom with CCK type » PHP warnings when using Mollom with multivalue CCK link field

Updating title.

dave reid’s picture

Version: 5.x-1.5 » 6.x-1.x-dev
Status: Active » Postponed (maintainer needs more info)

Still a problem in the current version?

sun’s picture

Status: Postponed (maintainer needs more info) » Fixed

I guess this is fixed now, because we no longer invoke Mollom's validation functions during form processing.

Thanks for reporting though! The improvement will be available in the next official release.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.

joachim’s picture

Version: 6.x-1.x-dev » 5.x-1.8
Status: Closed (fixed) » Active

This is still a problem in 5.

joachim’s picture

Status: Active » Needs review
StatusFileSize
new923 bytes

Here is a patch on the CVS 5 branch.

sun’s picture

StatusFileSize
new1.1 KB
+++ mollom.module	5 Feb 2010 17:25:23 -0000
@@ -494,9 +494,11 @@ function mollom_data_comment_form($form_
 function mollom_data_node_form($form_values) {
...
+  node_validate($node);

This can easily end in infinite recursion -- node form validation invokes mollom node form validation handler, which invokes node_validate(), which invokes node form validation.

That's a bit too hot, I think. Let's apply a stop-gap fix here.

Can you test attached patch, please? Works for me. We are about to create one last Drupal 5 release in the next days.

Powered by Dreditor.

sun’s picture

Status: Needs review » Reviewed & tested by the community

I actually tested this patch manually, so I know it works, hence, RTBC.

dries’s picture

Status: Reviewed & tested by the community » Fixed

I haven't tested the patch but I'm happy to trust sun's testing. :)

It's quite a hack but I'm OK with it as it is D5 only.

Committed to the DRUPAL-5 branch.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.