After updating my CVS checkout from yesterday, my dev site throws the following error when visiting update.php:

Fatal error: Call to undefined function phptemplate_get_ie_styles() in [...]/themes/garland/maintenance-page.tpl.php on line 23

I checked to see if others had reported it, and 141727 did look and sound like something, but from what I can tell, that should've affected yesterday's checkout as well... ? (Also noting that the .tpl.php called was checked in as part of 141727, according to the log.)

Comments

Freso’s picture

Title: Call to undefined phptemplate_get_ie_styles() in garland/maintenance-page.tpl.php » Garland's maintenance mode doesn't work without Minelli
Component: update system » Garland theme
Priority: Critical » Normal

And apparently it was caused by a missing Minnelli. Interesting. So the bug really is that Garland is dependent of its child theme Minnelli to function in maintenance mode. I didn't quite expect this behaviour.

gábor hojtsy’s picture

Drupal is dependent on Minnelli as a maintenance theme by default, that was so for all Drupal 6 since theming the maintenance pages was in (for a few months now). All the installer, update and error screens were printed with Minnelli. Garland and Minnelli are pretty much required with Drupal 6. IMHO that's by design. Maybe some more nice degradation could be in place, instead of a fatal error, but we are not checking for missing required components at other places either.

dvessel’s picture

And apparently it was caused by a missing Minnelli. Interesting. So the bug really is that Garland is dependent of its child theme Minnelli to function in maintenance mode. I didn't quite expect this behaviour.

Minnelli depends on Garland, not the other way around. And the maintenance page for installs and updates depend on Minnelli.

The maintenance tpl file (which is owned by Garland) is a close copy of Garlands' page.tpl.php which calls "phptemplate_get_ie_styles()".

What would be the best way to let it degrade? Gabor mentioned this before.. Have a separate "maintenance" theme for installs and updates clearly labeled on it's purpose? Less chance of getting it trashed.

chx’s picture

Status: Active » Closed (won't fix)

the only way this can happen is if you remove files from your Drupal install. Surely Drupal won't work after that.

Babalu’s picture

i get this error now after upgrade from 6.15 to 6.16 at the update.php

Fatal error: Call to undefined function phptemplate_get_ie_styles() in /srv/www/vhosts/example.com/httpdocs/themes/garland/maintenance-page.tpl.php on line 23

Babalu’s picture

Status: Closed (won't fix) » Active
RaRi’s picture

After update from 6.15 to 6.16 I got the same issue!

smk-ka’s picture

Status: Active » Closed (won't fix)

@Babalu, RaRi: You need to restore the 'minelli' directory in themes/garland and everything starts working again.

gold’s picture

Version: 6.x-dev » 6.22
Status: Closed (won't fix) » Active

Hate to reopen this after so long.

However, I've just had this occur after an update from 6.20 to 6.22 and I have the minnelli theme in place within garland. The update was performed by drush, not that I suspect that had anything to do with it but someone else may know better.

Continuing to explore the issue but any suggestions welcomed.

gold’s picture

Status: Active » Closed (won't fix)

Okay, this turned out to be our fault and not related to core themes at all.

The explanation, should anyone else find this issue in the future;

  1. We have a number of custom modules
  2. There were a number of define()'s in these modules
  3. A few were in more than one module (poor clean up when they moved from one to the other.)
  4. This threw a php notice which triggered a drupal_set_message() which invoked the theme layer.
  5. The site theme was called (despite us being in update.php)
  6. The maintenance theme had already been initilised at this point so when our base theme loaded its template.php file we got the "cannot redeclare" message as there were some phptemplate_* functions in the base themes template.php file..

Hopefully this will help others. Also, debug_backtrace() is your friend.