editChajian.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /**
  3. 修改记录插件
  4. */
  5. class editChajian extends Chajian{
  6. public $editarr = array();
  7. /**
  8. 获取修改记录
  9. $table 表
  10. $id id值
  11. $oners 旧数组
  12. $newrs 新数组
  13. return string
  14. */
  15. public function record($table, $id, $oners, $newrs, $glx=1)
  16. {
  17. $str = '';
  18. $db = m($table);
  19. $this->editarr = array();
  20. if($oners){
  21. $farr = $this->getfield($table);
  22. $str = $this->editcont($farr, $oners, $newrs);
  23. }
  24. if($glx == 1 && $str != ''){
  25. $str = '['.$this->adminname.']('.$this->rock->now.')修改:'.$str.'';
  26. }
  27. if($glx == 2){
  28. $this->addrecord($table, $id);
  29. }
  30. return $str;
  31. }
  32. public function records($farr,$table, $id, $oners, $newrs)
  33. {
  34. $this->editcont($farr, $oners, $newrs);
  35. $this->addrecord($table, $id);
  36. }
  37. public function editcont($farr, $oners, $narr)
  38. {
  39. $str = '';
  40. $this->editarr = array();
  41. if($oners){
  42. foreach($narr as $k=>$v){
  43. if(!isset($farr[$k]))continue;
  44. $fa = $farr[$k];
  45. $nv = $v;
  46. $ov = '';
  47. if(isset($oners[$k]))$ov = $oners[$k];
  48. if($nv != $ov){
  49. $sel = array();
  50. if(isset($fa['selarr']))$sel = $fa['selarr'];
  51. if(isset($sel[$ov]))$ov = $sel[$ov];
  52. if(isset($sel[$nv]))$nv = $sel[$nv];
  53. $str .= ''.$fa['name'].':'.$ov.'→'.$nv.';';
  54. $this->editarr[] = array(
  55. 'fieldsname' => $fa['name'],
  56. 'oldval' => $ov,
  57. 'newval' => $nv
  58. );
  59. }
  60. }
  61. }
  62. return $str;
  63. }
  64. public function addrecord($table, $id)
  65. {
  66. $dbs = m('editrecord');
  67. foreach($this->editarr as $k=>$rs){
  68. $rs['optid'] = $this->adminid;
  69. $rs['optname'] = $this->adminname;
  70. $rs['optdt'] = $this->rock->now;
  71. $rs['table'] = $table;
  72. $rs['mid'] = $id;
  73. $dbs->insert($rs);
  74. }
  75. }
  76. /**
  77. 获取对应表上字段信息
  78. $glx 0基本字段,1流程上
  79. return {字段名:对应信息}
  80. */
  81. public function getfield($table, $glx=0)
  82. {
  83. $farr = $this->db->gettablefields($this->rock->T($table));
  84. $rows = array();
  85. $arrar = c('array');
  86. foreach($farr as $k=>$rs){
  87. $va = $rs['explain'];
  88. $vn = $rs['name'];
  89. $sel= array();
  90. if(!$this->rock->isempt($va)){
  91. $vas = explode('@', $va);
  92. $va = $vas[0];
  93. $len = count($vas);
  94. if($len>1)$sel = $arrar->strtoobject($vas[1]);
  95. if($len>2&&$glx==1&&$vas[2]=='not')$va='';
  96. }
  97. if(!$this->rock->isempt($va)){
  98. $rows[$vn] = array(
  99. 'name' => $va,
  100. 'selarr' => $sel
  101. );
  102. }
  103. }
  104. return $rows;
  105. }
  106. }
粤ICP备19079148号