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; }
$first_retweet[$text] = array_search(array_search($short_text, $retweets_short), $tweets); } $first_retweet_ids = array_values($first_retweet); sort($first_retweet_ids); $first_tweet = $tweets[$first_retweet_ids[0]]; $first_tweet_short = $retweets_short[$first_tweet]; // calculate levenshtein and diff for first occurences of modified text of retweet $levenshtein = $diffs = array(); foreach ($first_retweet as $text => $id) { if (empty($levenshtein)) { $levenshtein[$first_tweet_short] = 0; $diffs[$retweets_short[$text]] = $retweets_short[$text]; } else { $levenshtein[$retweets_short[$text]] = levenshtein($first_tweet_short, $retweets_short[$text]); $diffClass = new Diff(); $diffs[$retweets_short[$text]] = $diffClass->renderDiff($diffClass->stringDiff($first_tweet_short, $retweets_short[$text])); } } echo "<Br>Zoom: <span id='zoomin' class='zoom'>in</span> / <span id='zoomout' class='zoom'>out</span><Br>"; echo '<fieldset class="if_parameters">'; echo '<legend>Retweet URLs</legend>'; print "<div id='content'>"; //$palette = array("108cbf", "f62221", "008027", "97c932", "fad40d", "f8962b", "c99997", "7e7e7e", "cbcbcb", "44bdec", "ff6364", "42c168", "bced5e"); // issue crawler //$palette = array_reverse($palette); $palette = array("#90C4A7", "#EDA391", "#DEE287", "#DAC0D8", "#E0B97B", "#D6D0AA", "#A9DFDE", "#A2D093", "#D4D5CC", "#BABD7B", "#D6B4A2", "#E8ABBC", "#B0C1D0", "#D9EFAC", "#B6EECA"); asort($first_retweet); $distinct_retweets = count($indentation); print "<table cellspacing='0' cellpadding='0'>"; // header row print "<tr><td>date</td><td>user</td><td>source</td><td class='seperator'>tweet</td>"; foreach ($first_retweet_ids as $id) {