static function combineStaticNodes($tpl, &$resourceData, &$lastNode, &$newNode) { if ($lastNode == false or $newNode == false) { return false; } $lastNodeType = $lastNode[0]; $newNodeType = $newNode[0]; if (!in_array($lastNodeType, array(eZTemplate::NODE_TEXT, eZTemplate::NODE_VARIABLE)) or !in_array($newNodeType, array(eZTemplate::NODE_TEXT, eZTemplate::NODE_VARIABLE))) { return false; } if ($lastNodeType == eZTemplate::NODE_VARIABLE) { if (is_array($lastNode[1])) { return false; } $lastDataInspection = eZTemplateCompiler::inspectVariableData($tpl, $lastNode[2], $lastNode[3], $resourceData); if (!$lastDataInspection['is-constant'] or $lastDataInspection['is-variable'] or $lastDataInspection['has-attributes'] or $lastDataInspection['has-operators']) { return false; } if (isset($lastNode[4]) and isset($lastNode[4]['text-result']) and !$lastNode[4]['text-result']) { return false; } } if ($newNodeType == eZTemplate::NODE_VARIABLE) { if (is_array($newNode[1])) { return false; } $newDataInspection = eZTemplateCompiler::inspectVariableData($tpl, $newNode[2], $newNode[3], $resourceData); if (!$newDataInspection['is-constant'] or $newDataInspection['is-variable'] or $newDataInspection['has-attributes'] or $newDataInspection['has-operators']) { return false; } if (isset($newNode[4]) and isset($newNode[4]['text-result']) and !$newNode[4]['text-result']) { return false; } if (isset($newNode[1]) and $newNode[1] !== false) { return false; } } $textElements = array(); $lastNodeData = eZTemplateCompiler::staticNodeData($lastNode); $newNodeData = eZTemplateCompiler::staticNodeData($newNode); $tpl->appendElementText($textElements, $lastNodeData, false, false); $tpl->appendElementText($textElements, $newNodeData, false, false); $newData = implode('', $textElements); $newPlacement = $lastNode[3]; if (!is_array($newPlacement)) { $newPlacement = $newNode[3]; } else { $newPlacement[1][0] = $newNode[3][1][0]; // Line end $newPlacement[1][1] = $newNode[3][1][1]; // Column end $newPlacement[1][2] = $newNode[3][1][2]; // Position end } $lastNode = false; $newNode = array(eZTemplate::NODE_TEXT, false, $newData, $newPlacement); }