/market-place/app/functions/smarty_plugins/function.split.php

https://bitbucket.org/behram_b/cs-card-market-place · PHP · 78 lines · 48 code · 11 blank · 19 comment · 15 complexity · ebf9a3646e4fe427583c4600413c6635 MD5 · raw file

  1. <?php
  2. /**
  3. * Smarty plugin
  4. * @package Smarty
  5. * @subpackage plugins
  6. */
  7. /**
  8. * Smarty array split function plugin
  9. *
  10. * Type: function<br>
  11. * Name: split<br>
  12. * Purpose: Split array into chunks
  13. * @param array
  14. * @param integer
  15. * @param bool
  16. * @param bool
  17. * @return array
  18. */
  19. function smarty_function_split($params, &$smarty)
  20. {
  21. if (empty($params['data'])) {
  22. //$smarty->trigger_error("split: array doesn't defined");
  23. return;
  24. }
  25. if (empty($params['size'])) {
  26. $smarty->trigger_error("split: size doesn't defined");
  27. return;
  28. }
  29. if (empty($params['assign'])) {
  30. $smarty->trigger_error("split: assing variable doesn't defined");
  31. return;
  32. }
  33. if (!empty($params['preverse_keys'])) {
  34. $params['preserve_keys'] = $params['preverse_keys'];
  35. }
  36. $chunks = array();
  37. $size = count($params['data']);
  38. if ($params['simple'] == true) {
  39. $items_per_column = !empty($params['size_is_horizontal']) ? ceil($size / $params['size']) : $params['size'];
  40. for ($i=0; $i<$size; $i=$i+$items_per_column) {
  41. $chunks[] = array_slice($params['data'], $i, $items_per_column);
  42. }
  43. } else {
  44. if ($params['vertical_delimition'] == false) {
  45. $chunks = array_chunk($params['data'], $params['size'], $params['preserve_keys']);
  46. } else {
  47. $chunk_count = ($params['size_is_horizontal'] == true) ? ceil(count($params['data']) / $params['size']) : $size;
  48. $chunk_index = 0;
  49. foreach ($params['data'] as $key => $value) {
  50. $chunks[$chunk_index][] = $value;
  51. if (++$chunk_index == $chunk_count) {
  52. $chunk_index = 0;
  53. }
  54. }
  55. }
  56. if (empty($params['skip_complete'])) {
  57. end($chunks);
  58. $end_key = key($chunks);
  59. while (sizeof($chunks[$end_key]) < $params['size']) {
  60. $chunks[$end_key][] = '';
  61. }
  62. }
  63. }
  64. $smarty->assign($params['assign'], $chunks, false);
  65. }
  66. /* vim: set expandtab: */