vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   4.2.3 Usercp Illegal string warning (https://vborg.vbsupport.ru/showthread.php?t=319335)

TheAdminMarket 07-04-2015 05:21 AM

4.2.3 Usercp Illegal string warning
 
Hello,

Does anybody knows what causes the follow PHP Warnings in UserCP with 4.2.3? Till 4.2.2 everything was working fine.

PHP Code:

PHP WarningIllegal string offset 'pm_messagelist' in ..../includes/class_core.php(4730) : eval()'d code on line 146

PHP Warning: Illegal string offset '
pm_newpm' in ..../includes/class_core.php(4730) : eval()'d code on line 151

PHP Warning
Illegal string offset 'pm_trackpm' in ..../includes/class_core.php(4730) : eval()'d code on line 152

PHP Warning: Illegal string offset '
pm_editfolders' in ..../includes/class_core.php(4730) : eval()'d code on line 153

PHP Warning
Illegal string offset 'substhreads_editfolders' in ..../includes/class_core.php(4730) : eval()'d code on line 169

PHP Warning: Illegal string offset '
profile' in ..../includes/class_core.php(4730) : eval()'d code on line 180

PHP Warning
Illegal string offset 'profilepic' in ..../includes/class_core.php(4730) : eval()'d code on line 183

PHP Warning: Illegal string offset '
avatar' in ..../includes/class_core.php(4730) : eval()'d code on line 190

PHP Warning
Illegal string offset 'signature' in ..../includes/class_core.php(4730) : eval()'d code on line 197

PHP Warning: Illegal string offset '
privacy' in ..../includes/class_core.php(4730) : eval()'d code on line 204

PHP Warning
Illegal string offset 'password' in ..../includes/class_core.php(4730) : eval()'d code on line 216

PHP Warning: Illegal string offset '
options' in ..../includes/class_core.php(4730) : eval()'d code on line 217

PHP Warning
Illegal string offset 'ignorelist' in ..../includes/class_core.php(4730) : eval()'d code on line 232

PHP Warning: Illegal string offset '
buddylist' in ..../includes/class_core.php(4730) : eval()'d code on line 247

PHP Warning
Illegal string offset 'event_reminders' in ..../includes/class_core.php(4730) : eval()'d code on line 252

PHP Warning: Illegal string offset '
attachments' in ..../includes/class_core.php(4730) : eval()'d code on line 262

PHP Warning
Illegal string offset 'deleteditems' in ..../includes/class_core.php(4730) : eval()'d code on line 276

PHP Warning: Illegal string offset '
moderateditems' in ..../includes/class_core.php(4730) : eval()'d code on line 314

PHP Warning
Illegal string offset 'newitems' in ..../includes/class_core.php(4730) : eval()'d code on line 367 

My file contains the follow code at the top:

PHP Code:

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT''mgallery_usercp');
define('CSRF_PROTECTION'true);
define('CONTENT_PAGE'false);

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(
    
'mediagallery',
    
'user',
    
'postbit',
    
'posting'
);
// get special data templates from the datastore
$specialtemplates = array(
    
'smiliecache',
    
'bbcodecache',
    
'attachmentcache',
);
// pre-cache templates used by all actions
$globaltemplates = array(
    
'USERCP_SHELL',
    
'usercp_nav_folderbit',
    
'mediagallery_addedit_photo'
);
// pre-cache templates used by specific actions
$actiontemplates = array();
// Stylesheets
$includecss = array();
$includecss['member'] = 'member.css';
$includecss['userprofile'] = 'userprofile.css';
$includecss['container'] = 'container.css';
// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
require_once(
'./includes/functions_editor.php');
require_once(
'./includes/functions_newpost.php');
require_once(
'./includes/functions_user.php');
require_once(
'./includes/class_bbcode.php');
require_once(
'./includes/class_dm.php');
require_once(
'./includes/class_dm_pm.php');
require_once(
'./includes/functions_bigthree.php');
require_once(
'./mediagallery/includes/functions.php'); 

Thank you

kh99 07-04-2015 09:44 AM

It looks like that's in a template. It's using a string where an array is expected. I haven't seen anyone else mention that happening after upgrading to 4.2.3.

TheAdminMarket 07-04-2015 12:38 PM

Quote:

Originally Posted by kh99 (Post 2549298)
It looks like that's in a template. It's using a string where an array is expected. I haven't seen anyone else mention that happening after upgrading to 4.2.3.

The "funny" thing is that in my main site with 4.2.2 latest PL works fine. The exact same files in 4.2.3 shows these errors. The code works (eg the form is submitting and saved ok) but the screen is messed. Normal due to errors. I turn off all errors, warnings etc but still they appear on screen.

A final note. All mods were working fine before upgrading. And the errors are only in usercp pages. I did a test by moving the code of one such page to a non usercp page and it works fine.

kh99 07-04-2015 12:49 PM

It looks like the problem is with the variable $navclass, in case that helps.

TheAdminMarket 07-04-2015 01:25 PM

Quote:

Originally Posted by kh99 (Post 2549310)
It looks like the problem is with the variable $navclass, in case that helps.

Thank you for your advice. I'll try it when my domain appears again in my new server. The code that I've for $navbar is:
PHP Code:

    // Construct Navbar
    
construct_usercp_nav('addeditphoto');
    
$navbits construct_navbits(array(
        
'usercp.php' $vbulletin->session->vars['sessionurl_q'] => $vbphrase['user_control_panel'],
        
'media_usercp.php' $vbulletin->session->vars['sessionurl_q'] => $vbphrase['mediagallery_photo_rating'],
        
'' => $vbphrase['mediagallery_post_photo']
    ));
    
$navbar render_navbar_template($navbits); 


kh99 07-04-2015 01:39 PM

Well, $navclass seems to be an array of CSS class names to be used for the different parts of the UserCP. It's set by calling the function construct_usercp_nav(), which is called before the USERCP template is used. But I don't see anything in the code you posted that has to do with that, and I don't know why 4.2.3 would make a difference.

TheAdminMarket 07-04-2015 02:16 PM

Quote:

Originally Posted by kh99 (Post 2549314)
Well, $navclass seems to be an array of CSS class names to be used for the different parts of the UserCP. It's set by calling the function construct_usercp_nav(), which is called before the USERCP template is used. But I don't see anything in the code you posted that has to do with that, and I don't know why 4.2.3 would make a difference.

The array of css is the variable: $includecss which as you can see in the example code below is registered in the page template. The code below works fine in 4.2.2 but shows warnings in 4.2.3

PHP Code:

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT''mgallery_usercp');
define('CSRF_PROTECTION'true);
define('CONTENT_PAGE'false);

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(
    
'mediagallery',
    
'user',
    
'postbit',
    
'posting'
);
// get special data templates from the datastore
$specialtemplates = array(
    
'smiliecache',
    
'bbcodecache',
    
'attachmentcache',
);
// pre-cache templates used by all actions
$globaltemplates = array(
    
'USERCP_SHELL',
    
'usercp_nav_folderbit',
    
'mediagallery_addedit_photo'
);
// pre-cache templates used by specific actions
$actiontemplates = array();
// Stylesheets
$includecss = array();
$includecss['member'] = 'member.css';
$includecss['userprofile'] = 'userprofile.css';
$includecss['container'] = 'container.css';
// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
require_once(
'./includes/functions_editor.php');
require_once(
'./includes/functions_newpost.php');
require_once(
'./includes/functions_user.php');
require_once(
'./includes/class_bbcode.php');
require_once(
'./includes/class_dm.php');
require_once(
'./includes/class_dm_pm.php');
require_once(
'./includes/functions_bigthree.php');
require_once(
'./mediagallery/includes/functions.php');
// Zero Shell Template
$shell_template 0;
//  #######################################################################
//  ###############################  Add/Edit  ############################
//  #######################################################################
if ($_REQUEST['do'] == 'addedit')
{
    
// Construct Navbar
    
construct_usercp_nav('addeditphoto');
    
$navbits construct_navbits(array(
        
'usercp.php' $vbulletin->session->vars['sessionurl_q'] => $vbphrase['user_control_panel'],
        
'media_usercp.php' $vbulletin->session->vars['sessionurl_q'] => $vbphrase['mediagallery_photo_rating'],
        
'' => $vbphrase['mediagallery_post_photo']
    ));
    
$navbar render_navbar_template($navbits);
    
// Prepare Template
    
$templater vB_Template::create('mediagallery_addedit');
    
$templater->register('editorid'$editorid);
    
$templater->register('messagearea'$messagearea);
    
$templater->register('id'$photo[id]);
    
$templater->register('mediatype'$photo[mediatype]);
    
$templater->register('title'$photo[title]);
    
$templater->register('addtags'$addtags);
    
$templater->register('selectcategory'$selectcategory);
    
$templater->register('urlid'$urlid);
    
$templater->register('editmode'$editmode);
    
$HTML $templater->render();
    
// Add UserCP Shell Template
    
$shell_template 1;
}

//  #######################################################################
//  ###########################  UserCP Shell Template  ###################
//  #######################################################################
if ($shell_template == 1)
{
    
$navclass 'active';
    
$templater vB_Template::create('USERCP_SHELL');
    
$templater->register_page_templates();
    
$templater->register('includecss'$includecss);
    
$templater->register('cpnav'$cpnav);
    
$templater->register('HTML'$HTML);
    
$templater->register('navbar'$navbar);
    
$templater->register('navclass'$navclass);
    
$templater->register('onload'$onload);
    
$templater->register('pagetitle'$pagetitle);
    
$templater->register('template_hook'$template_hook);
    
print_output($templater->render());



kh99 07-04-2015 03:03 PM

$includecss is the array of css files to include. $navclass is an array of class names.

Anyway, you're calling construct_usercp_nav(), if do is 'addeditphoto', so that should be OK. Is that the entire script? If not, then look for a condition where $shell_template == 1 but you have not called construct_usercp_nav(). Otherwise, maybe a plugin is changing $navclass?

Could it be the reason you don't see those messages in 4.2.2 is because error messages are turned off?

TheAdminMarket 07-04-2015 03:31 PM

Even if I can't test it right now seems that we're going closer to the bug:
Quote:

Originally Posted by kh99 (Post 2549328)
Could it be the reason you don't see those messages in 4.2.2 is because error messages are turned off?

No, as I've tested without the Hide all that I had in config.php
Quote:

Originally Posted by kh99 (Post 2549328)
If not, then look for a condition where $shell_template == 1 but you have not called construct_usercp_nav()

All are in place.

Quote:

Originally Posted by kh99 (Post 2549328)
Anyway, you're calling construct_usercp_nav(), if do is 'addeditphoto', so that should be OK.

Here is the only difference. The do=addedit and not addeditphoto. But works with 4.2.2 as is.

kh99 07-04-2015 03:36 PM

Quote:

Originally Posted by NickTheGreek (Post 2549331)
Here is the only difference. The do=addedit and not addeditphoto. But works with 4.2.2 as is.

That was my mistake, addedit is right (or at least as far as I know from looking at the code you posted). If it really is supposed to be 'addeditphoto' then I agree that it doesn't look like it would make any difference to this problem.

When you can test, you could put in code to print out the value of $navclass at different places, and I'm sure you'll be able to figure it out.


All times are GMT. The time now is 01:11 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01637 seconds
  • Memory Usage 1,844KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (4)bbcode_php_printable
  • (7)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete