Hi, I've got widgets and socialmedia installed on my website and when I clear the cache I get an "illegal offset type" warning through all the _widgets_errors() function, on lines 1024, 1028 and 1033(everywhere there's a $errors[$name] basically).
This is due to the fact that at some point the $name variables contains an array, as you can see from its dump:

string 'socialmedia_socialmedia-twitter-share-button-custom' (length=51)

array (size=12)
  'platform' => string 'facebook' (length=8)
  'label' => string 'Socialmedia Facebook share button' (length=33)
  'group' => string 'Social media: Facebook' (length=22)
  'template' => string '<a href="http://www.facebook.com/sharer.php?u=[|[node:url]||[current-page:url]|]&t=[|[node:title]||[current-page:title-plain]|]" title="Visit [?profile_username=[socialmedia:sm-facebook_username]?] on Facebook"[?link-target= target="{[socialmedia:sm-default_link_target_sharing]}"?][?link-rel= rel="{[socialmedia:sm-default_link_rel_sharing]}"?]><img src="[?icon-path=[socialmedia:sm-facebook_icon-path]?]" alt="Facebook icon" ></a>' (length=432)
  'form callback' => string 'socialmedia_widgets_share_platforms_form' (length=40)
  'module' => string 'socialmedia' (length=11)
  'name' => string 'socialmedia_socialmedia-facebook-share-button' (length=45)
  'data' => 
    array (size=0)
      empty
  'storage' => int 4
  'weid' => string '10' (length=2)
  'wsid' => string '2' (length=1)
  'weight' => string '-7' (length=2)

array (size=12)
  'platform' => string 'facebook' (length=8)
  'label' => string 'Socialmedia Facebook share button' (length=33)
  'group' => string 'Social media: Facebook' (length=22)
  'template' => string '<a href="http://www.facebook.com/sharer.php?u=[|[node:url]||[current-page:url]|]&t=[|[node:title]||[current-page:title-plain]|]" title="Visit [?profile_username=[socialmedia:sm-facebook_username]?] on Facebook"[?link-target= target="{[socialmedia:sm-default_link_target_sharing]}"?][?link-rel= rel="{[socialmedia:sm-default_link_rel_sharing]}"?]><img src="[?icon-path=[socialmedia:sm-facebook_icon-path]?]" alt="Facebook icon" ></a>' (length=432)
  'form callback' => string 'socialmedia_widgets_share_platforms_form' (length=40)
  'module' => string 'socialmedia' (length=11)
  'name' => string 'socialmedia_socialmedia-facebook-share-button' (length=45)
  'data' => 
    array (size=0)
      empty
  'storage' => int 4
  'weid' => string '10' (length=2)
  'wsid' => string '2' (length=1)
  'weight' => string '-7' (length=2)

string 'socialmedia_socialmedia-facebook-share-button' (length=45)

string 'socialmedia_socialmedia-google-share-button' (length=43)

string 'socialmedia_socialmedia-stumbleupon-share-button' (length=48)

string 'socialmedia_socialmedia-delicious-share-button' (length=46)

string 'socialmedia_socialmedia-digg-share-button' (length=41)

string 'socialmedia_socialmedia-linkedin-share-button' (length=45)

string 'socialmedia_socialmedia-myspace-share-button' (length=44)

string 'socialmedia_socialmedia-newsvine-share-button' (length=45)

string 'socialmedia_socialmedia-reddit-share-button' (length=43)

string 'socialmedia_socialmedia-technorati-share-button' (length=47)

string 'socialmedia_socialmedia-yahoo-share-button' (length=42)

string 'socialmedia_addthis-email' (length=25)

So the quick and dirty solution would be to check if $name is a string, but I don't think we can call it a good solution:

function _widgets_error($name, $action = 'get') {
  if (!is_string($name)) {
    return FALSE;
  }
  static $errors = array();
  // TODO not sure if this is the best idea, but cures the symptoms of #1468030
  if (!isset($errors[$name])) {
    return FALSE;
  }
  if ($action == 'set') {
    $errors[$name] = TRUE;
  }
  elseif ($action == 'reset') {
    $errors[$name] = FALSE;
  }
  if (isset($errors[$name])) {
    return $errors[$name];
  }
  else {
    return FALSE;
  }
}

Thank you for your attention

Comments

jinky32’s picture

Hi,

I have the same issue which I think is the cause of the issue I've described http://drupal.org/node/1794398. Tweet button doesn't render in Chrome and no warning is shown however it doe appear in Firefox and a warning

Warning: Illegal offset type in isset or empty in _widgets_error() (line 1024 of /opt/drupal/sites/test.uk.d7test5/modules/widgets/widgets.module). shows

shabam’s picture

I get a similar set of warnings:

Warning: Illegal offset type in isset or empty in _widgets_error() (line 1024 of /home/.../modules/widgets/widgets.module).
Warning: Illegal offset type in _widgets_error() (line 1028 of /home/rubyw349/public_html/.../modules/widgets/widgets.module).
Warning: Illegal offset type in isset or empty in _widgets_error() (line 1033 of /home/r.../modules/widgets/widgets.module).
Warning: Illegal offset type in isset or empty in _widgets_error() (line 1024 of /home/.../modules/widgets/widgets.module).
Warning: Illegal offset type in _widgets_error() (line 1028 of /home/.../modules/widgets/widgets.module).
Warning: Illegal offset type in isset or empty in _widgets_error() (line 1033 of /home/.../modules/widgets/widgets.module).

I found this in Social Media: http://drupal.org/node/1468030

If you are running social media as well, that is likely the culprit. There is a patch available.