context.func.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. /**
  3. * The context function file of zin of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2023 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
  6. * @author Hao Sun <sunhao@easycorp.ltd>
  7. * @package zin
  8. * @version $Id
  9. * @link https://www.zentao.net
  10. */
  11. namespace zin;
  12. require_once __DIR__ . DS . 'context.class.php';
  13. function context()
  14. {
  15. return context::current();
  16. }
  17. function contextBegin($name)
  18. {
  19. return context::create($name);
  20. }
  21. function contextEnd()
  22. {
  23. return context::pop();
  24. }
  25. function enableGlobalRender()
  26. {
  27. context::current()->enableGlobalRender();
  28. }
  29. function disableGlobalRender()
  30. {
  31. context::current()->disableGlobalRender();
  32. }
  33. /**
  34. * @param \zin\node|\zin\iDirective $item
  35. */
  36. function renderInGlobal($item)
  37. {
  38. return context::current()->renderInGlobal($item);
  39. }
  40. /**
  41. * @param mixed $data
  42. */
  43. function skipRenderInGlobal($data)
  44. {
  45. return context::current()->skipRenderInGlobal($data);
  46. }
  47. function onBuildNode($callback)
  48. {
  49. return context::current()->onBuildNode($callback);
  50. }
  51. function onRenderNode($callback)
  52. {
  53. return context::current()->onRenderNode($callback);
  54. }
  55. function onBeforeBuildNode($callback)
  56. {
  57. return context::current()->onBeforeBuildNode($callback);
  58. }
  59. function onRender($callback)
  60. {
  61. return context::current()->onRender($callback);
  62. }
  63. function useWg($name)
  64. {
  65. $wgClass = requireWg($name);
  66. return context::current()->addWgRes($wgClass);
  67. }
  68. function pageJS()
  69. {
  70. return call_user_func_array('\zin\context::js', func_get_args());
  71. }
  72. function jsCall()
  73. {
  74. return call_user_func_array('\zin\context::jsCall', func_get_args());
  75. }
  76. function jsVar()
  77. {
  78. return call_user_func_array('\zin\context::jsVar', func_get_args());
  79. }
  80. function pageCSS()
  81. {
  82. return call_user_func_array('\zin\context::css', func_get_args());
  83. }
  84. function import()
  85. {
  86. return call_user_func_array('\zin\context::import', func_get_args());
  87. }
  88. function setPageData($name, $value)
  89. {
  90. $context = context::current();
  91. if(is_array($value) && empty($name))
  92. {
  93. foreach ($value as $key => $val) $context->setData($key, $val);
  94. return;
  95. }
  96. $context->setData($name, $value);
  97. }
  98. function getPageData($name)
  99. {
  100. $context = context::current();
  101. if(is_array($name))
  102. {
  103. $values = array();
  104. foreach($name as $propName)
  105. {
  106. $values[] = $context->getData($propName);
  107. }
  108. return $values;
  109. }
  110. return $context->getData($name);
  111. }
  112. function data()
  113. {
  114. $args = func_get_args();
  115. if(count($args) >= 2) return setPageData($args[0], $args[1]);
  116. return getPageData($args[0]);
  117. }
  118. /**
  119. * @param mixed $nameOrData
  120. * @param mixed ...$values
  121. */
  122. function d($nameOrData, ...$values)
  123. {
  124. if(is_string($nameOrData))
  125. {
  126. $name = $nameOrData;
  127. }
  128. else
  129. {
  130. $name = '';
  131. array_unshift($values, $nameOrData);
  132. }
  133. context::current()->addDebugData($name, ...$values);
  134. }