Also reported in http://forum.piwik.org/index.php?showtopic=11541
This is not invalid, I am having the same error and do not run modx. v0.5.4 was fine. Upgraded to 0.7.0 and this error started for some sites when trying to load a widget with visits summary & graph (VisitsSummary Index).
Fatal error: Call to a member function getTimezone() on a non-object in /san/home/piwik0.7.0/core/Controller.php on line 212
DriverDan: can you try 0.8? There was no feedback on the Piwik forum from the original poster.
On the modx forum, the OP says:
If you are using piwik in a multiple site format- each site must be pulling stats, example if you have like in my case sites 1,2,3,4 and you dont have 2 installed piwikx throws an error. Why Im not sure but its probably worth investigating. I deleted the #2 site where piwikx was not installed yet and all the errors went away.
Are your errors and configuration similar?
We're running this across many live sites and have a lot of ones that are now inactive (>50%). I cannot delete them because we save the data for reference. I will try to upgrade to 0.8.0 as soon as I have time. I've made a lot of template changes and due to the way Piwik organizes its views/templates upgrades are very time consuming.
I've made a lot of template changes and due to the way Piwik organizes its views/templates upgrades are very time consuming.
Maybe it would be a good thing to work on theming for Piwik. see #5597
if you want to help with this let us know!
Please reopen if the issue is still here in 0.8, with steps to reproduce.
Still happening in 0.9:
Fatal error: Call to a member function getTimezone() on a non-object in piwik0.9.0/core/Controller.php on line 216
This is trying to load the Visits summary overview with graph widget using token_auth. If I log into the account everything in the dashboard works. If I log out and try accessing the widget with token_auth I get the error.
(In [2982]) Fixes #1450
DriverDan, can you please try the patch and see if it fixes the issue for you?
I finally had an opportunity to upgrade to 1.0.0. The previous error has been replaced by a new one.
Fatal error: Class 'HTML_QuickForm2_InvalidArgumentException' not found in piwik1.0.0/libs/HTML/QuickForm2/Renderer.php on line 161
Looks like the Exception.php file in libs/HTML/QuickForm2/ isn't being included. When I changed it to a regular exception I got "Renderer type 'smarty' is already registered".
(In [3040]) refs #1450 - some of the exception classes don't follow PEAR naming convention; use explicit require_once
Thanks for fixing that issue. This ticket should still be open though, the "Renderer type 'smarty' is already registered" error isn't going to be fixed by including the exceptions. Here's a backtrace when the exception is thrown:
<a href='/0'>#0</a> HTML_QuickForm2_Renderer::register(smarty, HTML_QuickForm2_Renderer_Smarty) called at [/san/home/piwik1.0.0/core/View.php:176]
<a href='/1'>#1</a> Piwik_View->addForm(Piwik_Login_FormLogin Object ([] => Array ([0] => form_login,[1] => form_password,[2] => form_nonce),[] => Array (),[] => Array ([0] => id,[1] => method),[] => Array ([0] => HTML_QuickForm2_Element_InputText Object ([] => Array ([type] => text,[name] => form_login,[id] => form_login-1),[] => Array ([0] => id,[1] => name,[2] => type),[] => ,[] => ,[] => Piwik_Login_FormLogin Object ( *RECURSION*,[] => Array (),[] => Array ([0] => Array ([0] => HTML_QuickForm2_Rule_Required Object ([] => HTML_QuickForm2_Element_InputText Object ( *RECURSION*,[] => Username required,[] => 1,[] => Array ([0] => Array ())),[1] => 1)),[] => Array (),[] => ,[] => 0,[] => ),[1] => HTML_QuickForm2_Element_InputPassword Object ([] => Array ([type] => password,[name] => form_password,[id] => form_password-1),[] => Array ([0] => id,[1] => name,[2] => type),[] => ,[] => ,[] => Piwik_Login_FormLogin Object ( *RECURSION*,[] => Array (),[] => Array ([0] => Array ([0] => HTML_QuickForm2_Rule_Required Object ([] => HTML_QuickForm2_Element_InputPassword Object ( *RECURSION*,[] => Password required,[] => 1,[] => Array ([0] => Array ())),[1] => 1)),[] => Array (),[] => ,[] => 0,[] => ),[2] => HTML_QuickForm2_Element_InputHidden Object ([] => Array ([type] => hidden,[name] => form_nonce,[id] => form_nonce-1),[] => Array ([0] => id,[1] => name,[2] => type),[] => ,[] => ,[] => Piwik_Login_FormLogin Object ( *RECURSION*,[] => Array (),[] => Array (),[] => Array (),[] => ,[] => 0,[] => ),[3] => HTML_QuickForm2_Element_InputSubmit Object ([] => Array ([type] => submit,[name] => submit,[id] => submit-1),[] => ,[] => Array ([0] => id,[1] => name,[2] => type),[] => ,[] => ,[] => Piwik_Login_FormLogin Object ( *RECURSION*,[] => Array (),[] => Array (),[] => Array (),[] => ,[] => 0,[] => )),[] => ,[] => ,[] => ,[] => Array (),[] => Array (),[] => Array (),[] => ,[] => Array ([action] => ?module=Widgetize&action=iframe&moduleToWidgetize=VisitsSummary&actionToWidgetize=index&disableLink=1&idSite=62&period=day&date=2010-09-01&token_auth=fc708dc6238181c26322816a6b5caac0,[name] => loginform,[id] => loginform,[method] => post),[] => 0,[] => )) called at [/san/home/piwik1.0.0/plugins/Login/Controller.php:66]
<a href='/2'>#2</a> Piwik_Login_Controller->login() called at [/san/home/piwik1.0.0/plugins/Login/Controller.php:28]
<a href='/3'>#3</a> Piwik_Login_Controller->index()
<a href='/4'>#4</a> call_user_func_array(Array ([0] => Piwik_Login_Controller Object ([] => Login,[] => ,[] => ,[] => 62,[] => ),[1] => index), Array ()) called at [/san/home/piwik1.0.0/core/FrontController.php:126]
<a href='/5'>#5</a> Piwik_FrontController->dispatch(Login, ) called at [/san/home/piwik1.0.0/core/Controller.php:434]
<a href='/6'>#6</a> Piwik_Controller->redirectToIndex(Login, index) called at [/san/home/piwik1.0.0/core/Controller.php:331]
<a href='/7'>#7</a> Piwik_Controller->setGeneralVariablesView(Piwik_View Object ([] => /san/home/piwik1.0.0/plugins/Widgetize/templates/iframe.tpl,[] => Piwik_Smarty Object ([template_dir] => Array ([0] => /san/home/piwik1.0.0/plugins,[1] => /san/home/piwik1.0.0/themes/default,[2] => /san/home/piwik1.0.0/themes),[compile_dir] => /san/home/piwik1.0.0/tmp/templates_c,[config_dir] => configs,[plugins_dir] => Array ([0] => /san/home/piwik1.0.0/core/SmartyPlugins,[1] => /san/home/piwik1.0.0/libs/Smarty/plugins),[debugging] => 0,[error_reporting] => 6143,[debug_tpl] => ,[debugging_ctrl] => NONE,[compile_check] => 1,[force_compile] => ,[caching] => 0,[cache_dir] => /san/home/piwik1.0.0/tmp/cache,[cache_lifetime] => 3600,[cache_modified_check] => ,[php_handling] => 0,[security] => ,[secure_dir] => Array (),[security_settings] => Array ([PHP_HANDLING] => ,[IF_FUNCS] => Array ([0] => array,[1] => list,[2] => isset,[3] => empty,[4] => count,[5] => sizeof,[6] => in_array,[7] => is_array,[8] => true,[9] => false,[10] => null),[INCLUDE_ANY] => ,[PHP_TAGS] => ,[MODIFIER_FUNCS] => Array ([0] => count),[ALLOW_CONSTANTS] => ,[ALLOW_SUPER_GLOBALS] => 1),[trusted_dir] => Array (),[left_delimiter] => {,[right_delimiter] => },[request_vars_order] => EGPCS,[request_use_auto_globals] => 1,[compile_id] => ,[use_sub_dirs] => ,[default_modifiers] => Array (),[default_resource_type] => file,[cache_handler_func] => ,[autoload_filters] => Array (),[config_overwrite] => 1,[config_booleanize] => 1,[config_read_hidden] => ,[config_fix_newlines] => 1,[default_template_handler_func] => ,[compiler_file] => Smarty_Compiler.class.php,[compiler_class] => Smarty_Compiler,[config_class] => Config_File,[_tpl_vars] => Array ([SCRIPT_NAME] => /tr/index.php,[tag] => piwik=1.0,[piwikUrl] => https://www.idealsweepstakes.com/tr/,[date] => ,[period] => day,[otherPeriods] => Array ([1] => week,[2] => month,[3] => year),[periodsNames] => Array ([day] => Array ([singular] => Day,[plural] => days),[week] => Array ([singular] => Week,[plural] => weeks),[month] => Array ([singular] => Month,[plural] => months),[year] => Array ([singular] => Year,[plural] => years))),[_smarty_vars] => ,[_sections] => Array (),[_foreach] => Array (),[_tag_stack] => Array (),[_conf_obj] => ,[_config] => Array ([0] => Array ([vars] => Array (),[files] => Array ())),[_smarty_md5] => f8d698aea36fcbead2b9d5359ffca76f,[_version] => 2.6.26,[_inclusion_depth] => 0,[_compile_id] => ,[_smarty_debug_id] => SMARTY_DEBUG,[_smarty_debug_info] => Array (),[_cache_info] => Array (),[_file_perms] => 420,[_dir_perms] => 505,[_reg_objects] => Array (),[_plugins] => Array ([modifier] => Array (),[function] => Array (),[block] => Array (),[compiler] => Array (),[prefilter] => Array (),[postfilter] => Array (),[outputfilter] => Array ([cachebuster] => Array ([0] => smarty_outputfilter_cachebuster,[1] => ,[2] => ,[3] => 1,[4] => 1),[ajaxcdn] => Array ([0] => smarty_outputfilter_ajaxcdn,[1] => ,[2] => ,[3] => 1,[4] => 1),[trimwhitespace] => Array ([0] => smarty_outputfilter_trimwhitespace,[1] => ,[2] => ,[3] => 1,[4] => 1)),[resource] => Array (),[insert] => Array ()),[_cache_serials] => Array (),[_cache_include] => ,[_cache_including] => ),[] => Array (),[] => text/html; charset=utf-8)) called at [/san/home/piwik1.0.0/plugins/Widgetize/Controller.php:67]
<a href='/8'>#8</a> Piwik_Widgetize_Controller->iframe() <a href='/9'>#9</a> call_user_func_array(Array ([0] => Piwik_Widgetize_Controller Object ([] => Widgetize,[] => ,[] => ,[] => 62,[] => ),[1] => iframe), Array ()) called at [/san/home/piwik1.0.0/core/FrontController.php:126]
<a href='/10'>#10</a> Piwik_FrontController->dispatch() called at [/san/home/piwik1.0.0/index.php:60]
In [3041], fixes comment:ticket:1450:17 - redirect to Login when user doesn't have view access to that site's stats
Applying this patch fixes the exception issues but shows a login page when trying to access widgets using the API key for the account I was using. Using the API key of a newly created account works as it should. It seems something in the database related to accounts and permissions wasn't updated on an upgrade (unknown version) which was causing my issue. I deleted the previous user and replaced it with a new one to solve the problem.
Next time you encounter this, please check that the user has view/admin access to that site.
When a site is added, existing users (except the superuser) have no access to the new site.
Thanks for the help. I'm well aware of how permissions work. I tried removing access for the account, changing it to view or admin and auth key access still didn't work. This is probably an edge case. I consider this closed and not worth any more time unless other people complain.
DriverDan, you suggest there is still a bug on "edge case" - can you please explain the steps to reproduce?
Unfortunately I can't. I'm pretty certain it was caused by a database change missing from an upgrade at some point, but I've been running this installation of Piwik for almost 3 years now so I have no idea which update caused the problem. Unless a lot of other people complain I wouldn't worry about it.