PageRenderTime 51ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/cms/Template/TagLib/TagLibIic.class.php

http://iiccms.googlecode.com/
PHP | 87 lines | 85 code | 2 blank | 0 comment | 16 complexity | fbff24555668de974fe3e66076b59987 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause, LGPL-2.1
  1. <?php
  2. import ( 'TagLib' );
  3. class TagLibIic extends TagLib {
  4. public function _getData($attr, $content) {
  5. static $_iterateParseCache = array ();
  6. $cacheIterateId = md5 ( $attr . $content );
  7. if (isset ( $_iterateParseCache [$cacheIterateId] ))
  8. return $_iterateParseCache [$cacheIterateId];
  9. $tag = $this->parseXmlAttr ( $attr, 'getData' );
  10. $name = $tag ['name'];
  11. $model = $tag ['model'];
  12. $condition = empty ( $tag ['where'] ) ? '\"\"' : '"' . $tag ['where']. '"';
  13. $order = empty ( $tag ['order'] ) ? '\'\'' : '\'' . $tag ['order'] . '\'';
  14. $sql = empty ( $tag ['sql'] ) ? '' : addslashes ( $tag ['sql'] );
  15. $limit = empty ( $tag ['limit'] ) ? 10 : '\'' . $tag ['limit'] . '\'';
  16. $id = $tag ['id'];
  17. $empty = isset ( $tag ['empty'] ) ? $tag ['empty'] : '';
  18. $key = ! empty ( $tag ['key'] ) ? $tag ['key'] : 'i';
  19. $mod = isset ( $tag ['mod'] ) ? $tag ['mod'] : '2';
  20. $name = $this->autoBuildVar ( $name );
  21. if (! empty ( $model )) {
  22. $parseStr .= '<?php';
  23. $parseStr .= ' $condition = ' . $condition . ';';
  24. $parseStr .= ' $order = ' . $order . ';';
  25. $parseStr .= ' $limit = ' . $limit . ';';
  26. $parseStr .= ' if(!isset($' . $model . ')) : $' . $model . 'Dao = M(\'' . $model . '\'); endif;';
  27. if (empty ( $sql )) {
  28. $parseStr .= ' if(!isset(' . $name . ')) :' . $name . ' = $' . $model . 'Dao->Where($condition)->Order($order)->Limit($limit)->findAll();endif;';
  29. } else {
  30. $parseStr .= ' if(!isset(' . $name . ')) :' . $name . ' = $' . $model . 'Dao->query(\'' . $sql . '\');endif;';
  31. }
  32. $parseStr .= ' if(is_array(' . $name . ')): $' . $key . ' = 0;';
  33. if (isset ( $tag ['length'] ) && '' != $tag ['length']) {
  34. $parseStr .= ' $__LIST__ = array_slice(' . $name . ',' . $tag ['offset'] . ',' . $tag ['length'] . ');';
  35. } elseif (isset ( $tag ['offset'] ) && '' != $tag ['offset']) {
  36. $parseStr .= ' $__LIST__ = array_slice(' . $name . ',' . $tag ['offset'] . ');';
  37. } else {
  38. $parseStr .= ' $__LIST__ = ' . $name . ';';
  39. }
  40. $parseStr .= 'if( count($__LIST__)==0 ) : echo "' . $empty . '" ;';
  41. $parseStr .= 'else: ';
  42. $parseStr .= 'foreach($__LIST__ as $key=>$' . $id . '): ';
  43. $parseStr .= '++$' . $key . ';';
  44. $parseStr .= '$mod = ($' . $key . ' % ' . $mod . ' )?>';
  45. $parseStr .= $this->tpl->parse ( $content );
  46. $parseStr .= '<?php endforeach; endif; else: echo "' . $empty . '" ;endif; ?>';
  47. $_iterateParseCache [$cacheIterateId] = $parseStr;
  48. if (! empty ( $parseStr )) {
  49. return $parseStr;
  50. }
  51. }
  52. return;
  53. }
  54. public function _getItem($attr, $content) {
  55. static $_iterateParseCache = array ();
  56. $cacheIterateId = md5 ( $attr . $content );
  57. if (isset ( $_iterateParseCache [$cacheIterateId] ))
  58. return $_iterateParseCache [$cacheIterateId];
  59. $tag = $this->parseXmlAttr ( $attr, 'getItem' );
  60. $name = $tag ['name'];
  61. $model = $tag ['model'];
  62. $condition = empty ( $tag ['where'] ) ? '\'\'' : '\'' . addslashes ( $tag ['where'] ) . '\'';
  63. $sql = addslashes ( $tag ['sql'] );
  64. $empty = isset ( $tag ['empty'] ) ? $tag ['empty'] : '';
  65. $name = $this->autoBuildVar ( $name );
  66. if (! empty ( $model )) {
  67. $parseStr .= '<?php';
  68. $parseStr .= ' $condition = ' . $condition . ';';
  69. $parseStr .= ' if(!isset($' . $model . ')) : $' . $model . ' = M(\'' . $model . '\'); endif;';
  70. if (empty ( $sql )) {
  71. $parseStr .= ' if(!isset(' . $name . ')) :' . $name . ' = $' . $model . '->Where($condition)->find();endif;';
  72. } else {
  73. $parseStr .= ' if(!isset(' . $name . ')) :' . $name . ' = $' . $model . '->query(\'' . $sql . '\');' . $name . ' = ' . $name . '[0]; endif; ';
  74. }
  75. $parseStr .= ' ?>';
  76. $parseStr .= $this->tpl->parse ( $content );
  77. $_iterateParseCache [$cacheIterateId] = $parseStr;
  78. if (! empty ( $parseStr )) {
  79. return $parseStr;
  80. }
  81. }
  82. return;
  83. }
  84. }
  85. ?>