zentaomax.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. /**
  3. * Move reivew result to node.
  4. *
  5. * @access public
  6. * @return void
  7. */
  8. public function moveResult2Node()
  9. {
  10. $this->app->loadLang('approval');
  11. $reviews = $this->dao->select('id,status,result,reviewedBy')->from(TABLE_REVIEW)->where('deleted')->eq('0')->fetchAll('id');
  12. $results = $this->dao->select('*')->from(TABLE_REVIEWRESULT)
  13. ->where('type')->eq('review')
  14. ->fetchGroup('review', 'id');
  15. $nodes = $this->dao->select('nodes')->from(TABLE_APPROVALFLOWSPEC)->orderBy('id_asc')->fetch('nodes');
  16. foreach($reviews as $reviewID => $review)
  17. {
  18. $reviewers = explode(',', $review->reviewedBy);
  19. if(isset($results[$reviewID]))
  20. {
  21. foreach($results[$reviewID] as $result)
  22. {
  23. if(in_array($result->reviewer, $reviewers))
  24. {
  25. $key = array_search($result->reviewer, $reviewers);
  26. unset($reviewers[$key]);
  27. }
  28. }
  29. }
  30. else
  31. {
  32. $results[$reviewID] = array();
  33. }
  34. foreach($reviewers as $reviewer)
  35. {
  36. if(!$reviewer) continue;
  37. $result = new stdclass();
  38. $result->review = $reviewID;
  39. $result->type = 'review';
  40. $result->result = '';
  41. $result->reviewer = $reviewer;
  42. $result->createdDate = $review->createdDate;
  43. $results[$reviewID][] = $result;
  44. }
  45. }
  46. if(empty($reviews)) return;
  47. foreach($reviews as $id => $review)
  48. {
  49. $approval = new stdclass();
  50. $approval->flow = 1;
  51. $approval->objectType = 'review';
  52. $approval->objectID = $id;
  53. $approval->version = 1;
  54. $approval->nodes = $nodes;
  55. $approval->status = $review->status == 'pass' ? 'done' : 'doing';
  56. $this->dao->insert(TABLE_APPROVAL)->data($approval)->autoCheck()->exec();
  57. $approvalID = $this->dao->lastInsertID();
  58. $approvalObject = new stdclass();
  59. $approvalObject->approval = $approvalID;
  60. $approvalObject->objectType = 'review';
  61. $approvalObject->objectID = $id;
  62. $this->dao->insert(TABLE_APPROVALOBJECT)->data($approvalObject)->autoCheck()->exec();
  63. if(isset($results[$id]))
  64. {
  65. $reviewResults = $results[$id];
  66. foreach($reviewResults as $resultID => $result)
  67. {
  68. $node = new stdclass();
  69. $node->approval = $approvalID;
  70. $node->title = $this->lang->approval->common;
  71. $node->account = $result->reviewer;
  72. $node->result = $result->result ? ($result->result == 'pass' ? 'pass' : 'fail') : '';
  73. $node->node = '3ewcj92p55e';
  74. $node->multipleType = 'and';
  75. $node->status = $result->result ? 'done' : 'doing';
  76. $node->reviewedDate = $result->createdDate;
  77. $this->dao->insert(TABLE_APPROVALNODE)->data($node)->autoCheck()->exec();
  78. }
  79. }
  80. }
  81. }