PageRenderTime 30ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/php/lib/block.mtunless.php

http://github.com/movabletype/movabletype
PHP | 78 lines | 71 code | 1 blank | 6 comment | 16 complexity | e5e21db28e466803479f2ca5fc7cf944 MD5 | raw file
Possible License(s): LGPL-2.1, MIT, BSD-3-Clause
  1. <?php
  2. # Movable Type (r) (C) 2001-2020 Six Apart Ltd. All Rights Reserved.
  3. # This code cannot be redistributed without permission from www.sixapart.com.
  4. # For more information, consult your Movable Type license.
  5. #
  6. # $Id$
  7. function smarty_block_mtunless($args, $content, &$ctx, &$repeat) {
  8. if (!isset($content)) {
  9. $result = 0;
  10. if (isset($args['var'])) {
  11. $val = $ctx->__stash['vars'][$args['var']];
  12. } elseif (isset($args['name'])) {
  13. $val = $ctx->__stash['vars'][$args['name']];
  14. } elseif (isset($args['tag'])) {
  15. $tag = $args['tag'];
  16. $tag = preg_replace('/^mt:?/i', '', $tag);
  17. $largs = $args; // local arguments without 'tag' element
  18. unset($largs['tag']);
  19. $val = $ctx->tag($tag, $largs);
  20. }
  21. if (!is_array($val)
  22. && preg_match('/^smarty_fun_[a-f0-9]+$/', $val)) {
  23. if (function_exists($val)) {
  24. ob_start();
  25. $val($ctx, array());
  26. $val = ob_get_contents();
  27. ob_end_clean();
  28. } else {
  29. $val = '';
  30. }
  31. }
  32. if (array_key_exists('eq', $args)) {
  33. $val2 = $args['eq'];
  34. $result = $val == $val2 ? 1 : 0;
  35. } elseif (array_key_exists('ne', $args)) {
  36. $val2 = $args['ne'];
  37. $result = $val != $val2 ? 1 : 0;
  38. } elseif (array_key_exists('gt', $args)) {
  39. $val2 = $args['gt'];
  40. $result = $val > $val2 ? 1 : 0;
  41. } elseif (array_key_exists('lt', $args)) {
  42. $val2 = $args['lt'];
  43. $result = $val < $val2 ? 1 : 0;
  44. } elseif (array_key_exists('ge', $args)) {
  45. $val2 = $args['ge'];
  46. $result = $val >= $val2 ? 1 : 0;
  47. } elseif (array_key_exists('le', $args)) {
  48. $val2 = $args['le'];
  49. $result = $val <= $val2 ? 1 : 0;
  50. } elseif (array_key_exists('like', $args)) {
  51. $patt = $args['like'];
  52. $opt = "";
  53. if (preg_match("/^\/.+\/([si]+)?$/", $patt, $matches)) {
  54. $patt = preg_replace("/^\/|\/([si]+)?$/", "", $patt);
  55. if ($matches[1])
  56. $opt = $matches[1];
  57. } else {
  58. $patt = preg_replace("!/!", "\\/", $patt);
  59. }
  60. $result = preg_match("/$patt/$opt", $val) ? 1 : 0;
  61. } elseif (array_key_exists('test', $args)) {
  62. $expr = 'return (' . $args['test'] . ') ? 1 : 0;';
  63. // export vars into local variable namespace, then eval expr
  64. extract($ctx->__stash['vars']);
  65. $result = eval($expr);
  66. if ($result === FALSE) {
  67. die("error in expression [" . $args['test'] . "]");
  68. }
  69. } else {
  70. $result = isset($val) && $val ? 1 : 0;
  71. }
  72. return $ctx->_hdlr_if($args, $content, $ctx, $repeat, !$result);
  73. } else {
  74. return $ctx->_hdlr_if($args, $content, $ctx, $repeat);
  75. }
  76. }
  77. ?>