$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];
         }
     }
     // Only convert valid xrefs to links
     $data[] = array($row->change_id, $row->change_time, I18N::translate($row->status), GedcomRecord::getInstance($row->xref, Tree::findByName($gedc)) ? "<a href='gedrecord.php?pid={$row->xref}&ged={$row->gedcom_name}'>{$row->xref}</a>" : $row->xref, '<div class="gedcom-data" dir="ltr">' . preg_replace_callback('/@(' . WT_REGEX_XREF . ')@/', function ($match) use($gedc) {
 /**
  * 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>';
 }