PageRenderTime 46ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 1ms

/application/controllers/CompareController.php

https://gitlab.com/klausmig/CloudSemanticWeb
PHP | 191 lines | 168 code | 9 blank | 14 comment | 18 complexity | ea46dd516d48ea817a50f9b7f3210790 MD5 | raw file
  1. <?php
  2. include_once ROOT . DS . 'libraries' . DS . 'backend' . DS . 'SlideCompare' . DS . 'SlideCompare.php';
  3. class CompareController extends Controller {
  4. private function compare($slide1, $slide2) {
  5. }
  6. //written by Ivan ------------------
  7. function mergeSlides() {
  8. $slide1 = new Slide ();
  9. $id = 327;
  10. $slide1->createFromID ( $id ); // revision id
  11. $slide2 = new Slide ();
  12. $slide2->id = $slide1->getPreviousRevisionID ();
  13. if ($slide2->id != NULL) {
  14. $slide2->createFromID ( $slide2->id );
  15. ;
  16. $comparison_result = $this->compare ( $slide1, $slide2 );
  17. $this->set ( 'first_slide_content', $comparison_result [0] );
  18. $this->set ( 'second_slide_content', $comparison_result [1] );
  19. $this->set ( 'comparison_result', $comparison_result [2] );
  20. }
  21. }
  22. //----------------------------------
  23. function tidyhtml($input) {
  24. $config = array(
  25. 'show-errors' => 0,
  26. 'show-warnings' => false,
  27. 'break-before-br' => true,
  28. 'indent' => true,
  29. 'indent-attributes' => true,
  30. 'add-xml-decl' => false,
  31. 'force-output' => true,
  32. 'fix-backslash' => false,
  33. 'merge-divs' => false,
  34. 'merge-spans' => false,
  35. 'doctype' => 'omit',
  36. 'enclose-block-text' => true,
  37. 'drop-empty-paras' => false,
  38. 'output-html' => true,
  39. 'show-body-only' => true,
  40. 'wrap' => 1);
  41. $tidy = new tidy;
  42. $tidy->parseString($input, $config, 'utf8');
  43. $tidy->cleanRepair();
  44. // Output
  45. return $tidy;
  46. }
  47. function compareParentTranslations(){
  48. $this->_template->disableHeader();
  49. $this->_template->disableFooter();
  50. $id = @$_GET ['deck']; //the source revision for the current translation
  51. $compareTo= @$_GET ['compareTo']; //the last revision of the source deck
  52. //language of the current deck, if we want to update the translation
  53. $language_id = @$_GET['language_id'];
  54. $language_name = @$_GET['language_name'];
  55. if(!isset($id))
  56. die("Error in receiving Deck id!");
  57. $deck1=new Deck();
  58. $deck2=new Deck();
  59. $deck1->createFromIDLite($id);
  60. if(!isset($compareTo))
  61. $deck2->id = $deck1->getPreviousRevisionID ();
  62. else
  63. $deck2->id = $compareTo;
  64. $deck2->createFromIDLite($deck2->id);
  65. $deck1->content = $deck1->fetchDeckContentLite ();
  66. $deck2->content = $deck2->fetchDeckContentLite ();
  67. $this->set ( 'page_title', 'SlideWiki - Compare Decks/Slides') ;
  68. $this->set ( 'new_content', json_encode($this->getTree($deck1)) );
  69. $this->set ( 'old_content', json_encode($this->getTree($deck2)) );
  70. $this->set ( 'last_id', $id);
  71. $this->set ( 'language_id', $language_id);
  72. $this->set ( 'language_name', $language_name);
  73. }
  74. //written by Ali ------------------
  75. function compareDecks() {
  76. //$this->_template->disableHeader();
  77. //$this->_template->disableFooter();
  78. $id = @$_GET ['deck'];
  79. $compareTo= @$_GET ['compareTo'];
  80. if(!isset($id))
  81. die("Error in receiving Deck id!");
  82. $deck1=new Deck();
  83. $deck2=new Deck();
  84. $deck1->createFromIDLite($id);
  85. if(!isset($compareTo))
  86. $deck2->id = $deck1->getPreviousRevisionID ();
  87. else
  88. $deck2->id = $compareTo;
  89. $deck2->createFromIDLite($deck2->id);
  90. $deck1->content = $deck1->fetchDeckContentLite ();
  91. $deck2->content = $deck2->fetchDeckContentLite ();
  92. $this->set ( 'page_title', 'SlideWiki - Compare Decks/Slides') ;
  93. $this->set ( 'new_content', json_encode($this->getTree($deck1)) );
  94. $this->set ( 'old_content', json_encode($this->getTree($deck2)) );
  95. }
  96. private function getTree($deck) {
  97. $output [] = array ("attr" => array ('id' => 'tree-0-deck-' . $deck->id . '-1' . '-node' ), 'state' =>'open', 'data' => array ("title" => $deck->shortenTitle ( $deck->title ), 'icon' => $deck->getIcon (), 'attr' => array ('id' => 'tree-0-deck-' . $deck->id . '-1', 'class' => 'root-node tnode tdeck deck-' . $deck->id, 'title'=>$deck->title, 'href'=>"deck/".$deck->id.'_'.$deck->slug_title) ), 'children' => $this->getTreeNodes ($deck) );
  98. return $output;
  99. }
  100. private function getTreeNodes($deck) {
  101. static $index_counter=0;
  102. $output = $childs = array ();
  103. foreach ( $deck->content as $v ) {
  104. if (get_class ( $v ) == 'Deck'){
  105. $childs = $this->getTreeNodes ($v);
  106. $output [] = array ("attr" => array ('id' => 'tree-' . $deck->id . '-deck-' . $v->id . '-' . $v->position . '-node' ), 'data' => array ("title" => $v->shortenTitle ( $v->title ), 'icon' => $v->getIcon (), 'attr' => array ('id' => 'tree-' . $deck->id . '-deck-' . $v->id . '-' . $v->position, 'class' => 'tnode tdeck deck-' . $v->id, 'title'=>$v->title, 'href'=>"deck/".$v->id.'_'.$v->slug_title ) ), 'children' => $childs );
  107. }else{
  108. $output [] = array ("attr" => array ('id' => 'tree-' . $deck->id . '-slide-' . $v->id . '-' . $v->position .'-node' ), 'data' => array ("title" => $v->shortenTitle ( $v->title ), 'icon' => $v->getIcon (), 'attr' => array ('id' => 'tree-' . $deck->id . '-slide-' . $v->id . '-' . $v->position, 'class' => 'tnode tslide slide-' . $v->id, 'title'=>$v->title, 'href'=>"slide/".$v->id) ) );
  109. $index_counter++;
  110. }
  111. $childs = array ();
  112. }
  113. return $output;
  114. }
  115. function reportSlideChanges() {
  116. $this->_template->disableHeader();
  117. $this->_template->disableFooter();
  118. $id = @$_GET ['slide'];
  119. $compareTo= @$_GET ['compareTo'];
  120. if(!isset($id))
  121. die("Error in receiving Slide id!");
  122. $slide1=new Slide();
  123. $slide2=new Slide();
  124. $slide1->createFromIDLite($id);
  125. if(!isset($compareTo))
  126. $slide2->id = $slide1->getPreviousRevisionID ();
  127. else
  128. $slide2->id = $compareTo;
  129. $slide2->createFromIDLite($slide2->id);
  130. //$slide2->content=$this->tidyhtml($slide2->content);
  131. //$slide1->content=$this->tidyhtml($slide1->content);
  132. $this->set ( 'new_content', htmlspecialchars($slide1->content) );
  133. $this->set ( 'old_content', htmlspecialchars($slide2->content) );
  134. $this->set ( 'slide_id', $id );
  135. //echo $this->htmlDiff($slide2->content, $slide1->content);
  136. }
  137. function reportDeckChanges() {
  138. //$this->_template->disableHeader();
  139. //$this->_template->disableFooter();
  140. $this->_noRender = true;
  141. $id = $_GET ['deck'];
  142. $deck = new Deck ();
  143. $deck->createFromIDLite ( $id ); // revision id
  144. $deck2 = new Deck ();
  145. $deck2->id = $deck->getPreviousRevisionID ();
  146. if ($deck2->id != NULL) {
  147. $deck2->createFromIDLite ( $deck2->id );
  148. $deck->content = $deck->fetchDeckContentLite ();
  149. $deck2->content = $deck2->fetchDeckContentLite ();
  150. $deck_count = count ( $deck->content );
  151. $deck2_count = count ( $deck2->content );
  152. //var_dump($deck->content);
  153. //var_dump($deck2->content);
  154. if ($deck_count > $deck2_count) {
  155. echo ($deck_count - $deck2_count) . " slide(s) added to the deck.";
  156. } elseif ($deck_count < $deck2_count) {
  157. echo ($deck2_count - $deck_count) . " slide(s) removed from the deck.";
  158. } else {
  159. $flag = 0;
  160. $changes = array ();
  161. foreach ( $deck->content as $index => $val ) {
  162. if ($val->id != $deck2->content [$index]->id) {
  163. $flag ++;
  164. array_push ( $changes, array ($index, $deck2->content [$index]->id, $val->id ) );
  165. }
  166. }
  167. if ($flag) {
  168. echo "Content of the following " . $flag . " slide(s) has been modified:<br>";
  169. echo "<ol>";
  170. foreach ( $changes as $v ) {
  171. echo "<li>";
  172. echo "<a href='slide/" . $v [1] . "' target='_blank'>Slide</a> at position <b>" . ($v [0] + 1) . "</b> <a href='slide/" . $v [2] . "' target='_blank'>changed</a> (<small><a style='color:#888855;' target='_blank' href='?url=compare/reportSlideChanges&slide=".$v [2]."&compareTo=".$v [1]."'>details</a></small>).";
  173. echo "</li>";
  174. }
  175. echo "</ol>";
  176. } else {
  177. echo "Just a copy of the previous revision!";
  178. }
  179. }
  180. }
  181. }
  182. }