Example #1
0
 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;
 }