From 49d54c0c3199fb8e380ce68f8fb08a308ddf56a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Eduardo?= Date: Mon, 25 Dec 2017 16:58:41 -0500 Subject: =?UTF-8?q?migraci=C3=B3n=20mayor=20a=20smarty=20PHP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sysplugins/smarty_internal_runtime_foreach.php | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 smarty/sysplugins/smarty_internal_runtime_foreach.php (limited to 'smarty/sysplugins/smarty_internal_runtime_foreach.php') diff --git a/smarty/sysplugins/smarty_internal_runtime_foreach.php b/smarty/sysplugins/smarty_internal_runtime_foreach.php new file mode 100644 index 0000000..bdefe69 --- /dev/null +++ b/smarty/sysplugins/smarty_internal_runtime_foreach.php @@ -0,0 +1,137 @@ +count($from) : 1; + if (isset($tpl->tpl_vars[ $item ])) { + $saveVars[ $item ] = $tpl->tpl_vars[ $item ]; + } + $tpl->tpl_vars[ $item ] = new Smarty_Variable(null, $tpl->isRenderingCache); + if (empty($from)) { + $from = null; + $total = 0; + if ($needTotal) { + $tpl->tpl_vars[ $item ]->total = 0; + } + } else { + if ($key) { + if (isset($tpl->tpl_vars[ $key ])) { + $saveVars[ $key ] = $tpl->tpl_vars[ $key ]; + } + $tpl->tpl_vars[ $key ] = new Smarty_Variable(null, $tpl->isRenderingCache); + } + if ($needTotal) { + $tpl->tpl_vars[ $item ]->total = $total; + } + } + if ($name) { + $namedVar = "__smarty_foreach_{$name}"; + if (isset($tpl->tpl_vars[ $namedVar ])) { + $saveVars[ $namedVar ] = $tpl->tpl_vars[ $namedVar ]; + } + $namedProp = array(); + if (isset($properties[ 'total' ])) { + $namedProp[ 'total' ] = $total; + } + if (isset($properties[ 'iteration' ])) { + $namedProp[ 'iteration' ] = 0; + } + if (isset($properties[ 'index' ])) { + $namedProp[ 'index' ] = - 1; + } + if (isset($properties[ 'show' ])) { + $namedProp[ 'show' ] = ($total > 0); + } + $tpl->tpl_vars[ $namedVar ] = new Smarty_Variable($namedProp); + } + $this->stack[] = $saveVars; + return $from; + } + + /** + * Restore saved variables + * + * @param \Smarty_Internal_Template $tpl + */ + public function restore(Smarty_Internal_Template $tpl) + { + foreach (array_pop($this->stack) as $k => $v) { + $tpl->tpl_vars[ $k ] = $v; + } + } + + /* + * + * [util function] counts an array, arrayAccess/traversable or PDOStatement object + * + * @param mixed $value + * + * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0 + * for empty elements + */ + public function count($value) + { + if (is_array($value) === true || $value instanceof Countable) { + return count($value); + } elseif ($value instanceof IteratorAggregate) { + // Note: getIterator() returns a Traversable, not an Iterator + // thus rewind() and valid() methods may not be present + return iterator_count($value->getIterator()); + } elseif ($value instanceof Iterator) { + if ($value instanceof Generator) { + return 1; + } + return iterator_count($value); + } elseif ($value instanceof PDOStatement) { + return $value->rowCount(); + } elseif ($value instanceof Traversable) { + return iterator_count($value); + } elseif ($value instanceof ArrayAccess) { + if ($value->offsetExists(0)) { + return 1; + } + } elseif (is_object($value)) { + return count($value); + } + return 0; + } +} -- cgit v1.2.3