Ejemplo n.º 1
0
 public function saveTextRevision($moduleId, $moduleContentTypeId, $moduleContentId, $oldText, $newText, $textfieldIndex = 0, $revision = 0)
 {
     global $dbi, $login, $settings;
     if (!$settings->enableRevisioning) {
         return;
     }
     // Get latest revision number and increment
     $maxRevision = 0;
     if (empty($revision)) {
         $result = $dbi->query("SELECT MAX(revision) FROM " . revisionTableName . " WHERE moduleId=" . $dbi->quote($moduleId) . " AND moduleContentTypeId=" . $dbi->quote($moduleContentTypeId) . " AND moduleContentId=" . $dbi->quote($moduleContentId));
         if ($result->rows()) {
             list($maxRevision) = $result->fetchrow_array();
             $maxRevision++;
         }
     } else {
         $maxRevision = $revision;
     }
     // Parse text strings
     $newText = parseString($newText);
     $oldText = parseString($oldText);
     // Calculate diff
     $diff = new Diff();
     $result = $diff->stringDiff($newText, $oldText, " ");
     $changes = $diff->sequentialChanges($result);
     if (sizeof($changes) > 0) {
         $serializedChanges = serialize($changes);
         // Insert diff
         $dbi->query("INSERT INTO " . revisionTableName . "(moduleId,moduleContentTypeId,moduleContentId,textfieldIndex,diff,revision,userId,timestamp) VALUES(" . $dbi->quote($moduleId) . "," . $dbi->quote($moduleContentTypeId) . "," . $dbi->quote($moduleContentId) . "," . $dbi->quote($textfieldIndex) . "," . $dbi->quote($serializedChanges) . "," . $dbi->quote($maxRevision) . "," . $dbi->quote($login->id) . ",NOW())");
     }
     return $maxRevision;
 }