function diffsparsejson($old, $new) { $diff = diff(diffstringsplit($old), diffstringsplit($new)); $adj = 0; $out = array(); foreach ($diff as $k => $v) { if (is_array($v)) { if (empty($v['d']) && empty($v['i'])) { $adj += 1; continue; } else { if (empty($v['d'])) { //insert $out[] = array(0, $k - $adj, $v['i']); $adj += 1; } else { if (empty($v['i'])) { //delete $out[] = array(1, $k - $adj, count($v['d'])); $adj -= count($v['d']) - 1; } else { //replace $out[] = array(2, $k - $adj, count($v['d']), $v['i']); $adj -= count($v['d']) - 1; } } } } } if (count($out) == 0) { return ''; } else { if (function_exists('json_encode')) { return json_encode($out); } else { require_once "JSON.php"; $jsonser = new Services_JSON(); return $jsonser->encode($out); } } }
exit; } else { $curBreadcrumb .= " > <a href=\"viewwiki.php?cid={$cid}&id={$id}&grp={$groupid}{$framed}\">View Wiki</a>"; $curBreadcrumb .= " > Clear WikiPage History\n"; $pagetitle = "Confirm History Delete"; } } else { if (isset($_GET['revert']) && isset($teacherid)) { if ($_GET['revert'] == 'true') { $revision = intval($_GET['torev']); $query = "SELECT revision FROM imas_wiki_revisions WHERE wikiid='{$id}' AND stugroupid='{$groupid}' "; $query .= "AND id>={$revision} ORDER BY id DESC"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); if (mysql_num_rows($result) > 1 && $revision > 0) { $row = mysql_fetch_row($result); $base = diffstringsplit($row[0]); while ($row = mysql_fetch_row($result)) { //apply diffs $base = diffapplydiff($base, $row[0]); } $newbase = addslashes(implode(' ', $base)); $query = "UPDATE imas_wiki_revisions SET revision='{$newbase}' WHERE id={$revision}"; mysql_query($query) or die("Query failed : " . mysql_error()); $query = "DELETE FROM imas_wiki_revisions WHERE wikiid='{$id}' AND stugroupid='{$groupid}' AND id>{$revision}"; mysql_query($query) or die("Query failed : " . mysql_error()); } header('Location: ' . $urlmode . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/viewwiki.php?cid={$cid}&id={$id}{$framed}"); exit; } else { $curBreadcrumb .= " > <a href=\"viewwiki.php?cid={$cid}&id={$id}&grp={$groupid}{$framed}\">View Wiki</a>"; $curBreadcrumb .= " > Revert Wiki\n";
//$users = '{'; $users = array(); foreach ($keys as $uid) { //if ($i>0) { $users .= ',';} //$users .= $uid.':"'.str_replace(array('\\','"',), array('\\\\','\"'), $revisionusers[$uid]).'"'; $users[$uid] = $revisionusers[$uid]; $i++; } //$users .= '}'; } else { $users = array(); //'{}'; $revisionhistory = array(); //'[]'; } $text = diffstringsplit($text); foreach ($text as $k => $v) { $text[$k] = filter($v); //str_replace(array("\n","\r",'"'),array('','','\\"'),filter($v)); } //$original = '["'.implode('","',$text).'"]'; } } } if ($overwriteBody == 1) { echo $body; } else { // general JSON $out = array('o' => $text, 'h' => $revisionhistory, 'u' => $users); if (function_exists('json_encode')) { echo json_encode($out);