コード例 #1
0
 /**
  * Compares to revisions of the page
  *
  * @param	int		$a_left		Nr of first revision
  * @param	int		$a_right	Nr of second revision
  */
 function compareVersion($a_left, $a_right)
 {
     global $ilDB;
     // get page objects
     $l_page = new ilPageObject($this->getParentType(), $this->getId(), $a_left);
     $r_page = new ilPageObject($this->getParentType(), $this->getId(), $a_right);
     $l_hashes = $l_page->getPageContentsHashes();
     $r_hashes = $r_page->getPageContentsHashes();
     // determine all deleted and changed page elements
     foreach ($l_hashes as $pc_id => $h) {
         if (!isset($r_hashes[$pc_id])) {
             $l_hashes[$pc_id]["change"] = "Deleted";
         } else {
             if ($l_hashes[$pc_id]["hash"] != $r_hashes[$pc_id]["hash"]) {
                 $l_hashes[$pc_id]["change"] = "Modified";
                 $r_hashes[$pc_id]["change"] = "Modified";
                 include_once "./Services/COPage/mediawikidiff/class.WordLevelDiff.php";
                 // if modified element is a paragraph, highlight changes
                 if ($l_hashes[$pc_id]["content"] != "" && $r_hashes[$pc_id]["content"] != "") {
                     $new_left = str_replace("\n", "<br />", $l_hashes[$pc_id]["content"]);
                     $new_right = str_replace("\n", "<br />", $r_hashes[$pc_id]["content"]);
                     $wldiff = new WordLevelDiff(array($new_left), array($new_right));
                     $new_left = $wldiff->orig();
                     $new_right = $wldiff->closing();
                     $l_page->setParagraphContent($l_hashes[$pc_id]["hier_id"], $new_left[0]);
                     $r_page->setParagraphContent($l_hashes[$pc_id]["hier_id"], $new_right[0]);
                 }
             }
         }
     }
     // determine all new paragraphs
     foreach ($r_hashes as $pc_id => $h) {
         if (!isset($l_hashes[$pc_id])) {
             $r_hashes[$pc_id]["change"] = "New";
         }
     }
     $l_page->addChangeDivClasses($l_hashes);
     $r_page->addChangeDivClasses($r_hashes);
     return array("l_page" => $l_page, "r_page" => $r_page, "l_changes" => $l_hashes, "r_changes" => $r_hashes);
 }