/** * Function for setting values to deal with persistent_variable either from * template or internally on {@link self::$persistentVariable} * * @internal * @param string $key Key to store values on * @param string|array $value Value(s) to store * @param eZTemplate $tpl Template object to get values from * @param bool $append Append or prepend value? * @param bool $arrayUnique Make sure array is unique to remove duplicates * @param bool $returnArrayDiff Return diff against existing values instead of resulting array * @param bool $override Override/Wipe out values or merge? * @return array */ public static function setPersistentArray($key, $value, eZTemplate $tpl, $append = true, $arrayUnique = false, $returnArrayDiff = false, $override = false) { $isPageLayout = false; $persistentVariable = array(); if ($tpl->hasVariable('module_result')) { $isPageLayout = true; $moduleResult = $tpl->variable('module_result'); } if (isset($moduleResult['content_info']['persistent_variable'])) { $persistentVariable = $moduleResult['content_info']['persistent_variable']; } else { if (!$isPageLayout && $tpl->hasVariable('persistent_variable')) { $persistentVariable = $tpl->variable('persistent_variable'); } else { if (self::$persistentVariable !== null) { $persistentVariable = self::$persistentVariable; } } } if ($persistentVariable === false || !is_array($persistentVariable)) { // Give warning if value is not array as we depend on it if (!$isPageLayout && $persistentVariable) { eZDebug::writeError('persistent_variable was not an array and where cleared, see ezjscore requriments!', __METHOD__); } $persistentVariable = array(); } // make a copy in case we need to diff value in the end $persistentVariableCopy = $persistentVariable; if (!$override) { if (isset($persistentVariable[$key]) && is_array($persistentVariable[$key])) { if (is_array($value)) { if ($append) { $persistentVariable[$key] = array_merge($persistentVariable[$key], $value); } else { $persistentVariable[$key] = array_merge($value, $persistentVariable[$key]); } } else { if ($append) { $persistentVariable[$key][] = $value; } else { $persistentVariable[$key] = array_merge(array($value), $persistentVariable[$key]); } } } else { if (is_array($value)) { $persistentVariable[$key] = $value; } else { $persistentVariable[$key] = array($value); } } } else { $persistentVariable[$key] = $value; } if ($arrayUnique && isset($persistentVariable[$key][1])) { $persistentVariable[$key] = array_unique($persistentVariable[$key]); } // set the finnished array in the template if ($isPageLayout) { if (isset($moduleResult['content_info']['persistent_variable'])) { $moduleResult['content_info']['persistent_variable'] = $persistentVariable; $tpl->setVariable('module_result', $moduleResult); } } else { $tpl->setVariable('persistent_variable', $persistentVariable); } // storing the value internally as well in case this is not a view that supports persistent_variable (ezpagedata will look for it) self::$persistentVariable = $persistentVariable; if ($returnArrayDiff && isset($persistentVariableCopy[$key][0])) { return array_diff($persistentVariable[$key], $persistentVariableCopy[$key]); } return $persistentVariable[$key]; }
/** * @uses ezjscPackerTemplateFunctions::getPersistentVariable() * * @deprecated * @param string $key Optional, return all values if null * @return array|string */ static public function getPersistentVariable( $key = null ) { return ezjscPackerTemplateFunctions::getPersistentVariable( $key ); }