Exemplo n.º 1
0
 }
 if ($length) {
     Auth::user()->setPreference('admin_site_change_page_size', $length);
     $limit = " LIMIT :limit OFFSET :offset";
     $args['limit'] = $length;
     $args['offset'] = $start;
 } else {
     $limit = "";
 }
 // This becomes a JSON list, not array, so need to fetch with numeric keys.
 $rows = Database::prepare($sql_select . $where . $order_by . $limit)->execute($args)->fetchAll(PDO::FETCH_OBJ);
 // Total filtered/unfiltered rows
 $recordsFiltered = (int) Database::prepare("SELECT FOUND_ROWS()")->fetchOne();
 $recordsTotal = (int) Database::prepare("SELECT COUNT(*) FROM `##change`")->fetchOne();
 $data = array();
 $algorithm = new MyersDiff();
 foreach ($rows as $row) {
     $old_lines = preg_split('/[\\n]+/', $row->old_gedcom, -1, PREG_SPLIT_NO_EMPTY);
     $new_lines = preg_split('/[\\n]+/', $row->new_gedcom, -1, PREG_SPLIT_NO_EMPTY);
     $differences = $algorithm->calculate($old_lines, $new_lines);
     $diff_lines = array();
     foreach ($differences as $difference) {
         switch ($difference[1]) {
             case MyersDiff::DELETE:
                 $diff_lines[] = '<del>' . $difference[0] . '</del>';
                 break;
             case MyersDiff::INSERT:
                 $diff_lines[] = '<ins>' . $difference[0] . '</ins>';
                 break;
             default:
                 $diff_lines[] = $difference[0];
Exemplo n.º 2
0
 /**
  * Default previewer for plugins with no custom preview.
  *
  * @param GedcomRecord $record
  *
  * @return string
  */
 public function getActionPreview(GedcomRecord $record)
 {
     $old_lines = preg_split('/[\\n]+/', $record->getGedcom());
     $new_lines = preg_split('/[\\n]+/', $this->updateRecord($record->getXref(), $record->getGedcom()));
     $algorithm = new MyersDiff();
     $differences = $algorithm->calculate($old_lines, $new_lines);
     $diff_lines = array();
     foreach ($differences as $difference) {
         switch ($difference[1]) {
             case MyersDiff::DELETE:
                 $diff_lines[] = self::decorateDeletedText($difference[0]);
                 break;
             case MyersDiff::INSERT:
                 $diff_lines[] = self::decorateInsertedText($difference[0]);
                 break;
             default:
                 $diff_lines[] = $difference[0];
         }
     }
     return '<pre class="gedcom-data">' . self::createEditLinks(implode("\n", $diff_lines)) . '</pre>';
 }