I realize this question is almost a year old, but it was bumped by SO and I think there is some value to debugging this type of problem for others.
Is your exception.log
showing that error consistently? If so, then you probably have a bad-patched state of application. I say that because, unless it's related to cache not having been cleared, then Magento will throw that error when the owning module's config.xml
does not declare mapped table names.
Here's an excerpt from the SUPEE-6788 patch:
diff --git app/code/core/Mage/Admin/etc/config.xml app/code/core/Mage/Admin/etc/config.xml
index 8446743..6097329 100644
--- app/code/core/Mage/Admin/etc/config.xml
+++ app/code/core/Mage/Admin/etc/config.xml
@@ -28,7 +28,7 @@
<config>
<modules>
<Mage_Admin>
- <version>1.6.1.0</version>
+ <version>1.6.1.2</version>
</Mage_Admin>
</modules>
<global>
@@ -50,6 +50,12 @@
<rule>
<table>admin_rule</table>
</rule>
+ <permission_variable>
+ <table>permission_variable</table>
+ </permission_variable>
+ <permission_block>
+ <table>permission_block</table>
+ </permission_block>
<assert>
<table>admin_assert</table>
</assert>
Notice the addition of entity config <permission_block>
. Is this information present in your instance? That would be the first place to check.
To understand the whitelisting process, see later in the same patch, the following:
...
@@ -160,8 +168,10 @@ class Mage_Core_Model_Email_Template_Filter extends Varien_Filter_Template
$layout = Mage::app()->getLayout();
if (isset($blockParameters['type'])) {
- $type = $blockParameters['type'];
- $block = $layout->createBlock($type, null, $blockParameters);
+ if ($this->_permissionBlock->isTypeAllowed($blockParameters['type'])) {
+ $type = $blockParameters['type'];
+ $block = $layout->createBlock($type, null, $blockParameters);
+ }
} elseif (isset($blockParameters['id'])) {
...
The inner if
condition only lets the block initialize if the permission manager can verify its type.