static function optimizeVariable($useComments, &$php, $tpl, &$data, &$resourceData) { $ret = 0; /* node.object.data_map optimization */ if (count($data) >= 3 and $data[0][0] == eZTemplate::TYPE_VARIABLE and $data[0][1][2] == 'node' and $data[1][0] == eZTemplate::TYPE_ATTRIBUTE and $data[1][1][0][1] == 'object' and $data[2][0] == eZTemplate::TYPE_ATTRIBUTE and $data[2][1][0][1] == 'data_map') { /* Modify the next two nodes in the array too as we know for sure * what type it is. This fixes the dependency on * compiledFetchAttribute */ if (count($data) >= 5 and $data[3][0] == eZTemplate::TYPE_ATTRIBUTE and $data[4][0] == eZTemplate::TYPE_ATTRIBUTE) { $data[3][0] = eZTemplate::TYPE_OPTIMIZED_ARRAY_LOOKUP; if ($data[4][1][0][1] == "content") { $data[4][0] = eZTemplate::TYPE_OPTIMIZED_CONTENT_CALL; } else { $data[4][0] = eZTemplate::TYPE_OPTIMIZED_ATTRIBUTE_LOOKUP; } } /* Create a new node representing the optimization */ array_unshift($data, array(eZTemplate::TYPE_OPTIMIZED_NODE, null, 2)); $ret = 1; } /* node.object.data_map optimization through function */ if (isset($data[0]) and $data[0][0] == eZTemplate::NODE_INTERNAL_CODE_PIECE) { $functionRet = eZTemplateOptimizer::optimizeFunction($useComments, $php, $tpl, $data[0], $resourceData); // Merge settings $ret = $ret | $functionRet; } return $ret; }