require_once ("diff.inc.php"); $previous = $this->LoadPageById($page['previous_version']); $diff = text_diff_by_lines($previous['body'], $page['body'], false); $htmlDiff = "<table style=\"width: 100%;\">"; $htmlDiff .= "<tr><th colspan=\"2\" style=\"text-align: center;\">Version du " . $previous['time'] . "</th><th colspan=\"2\" style=\"text-align: center;\">Version du " . $page['time'] . "</th></tr>"; foreach ($diff as $line) { $htmlDiff .= "<tr><td" . ($line['type'] == '+' ? ' colspan="2">&nbsp;' : '>- </td><td>' . htmlspecialchars($line[0],ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, "ISO8859-1")) . "</td>"; $htmlDiff .= "<td" . ($line['type'] == '-' ? ' colspan="2">&nbsp;' : '>+ </td><td>' . htmlspecialchars($line[(int) ($line['type'] == 'c')],ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, "ISO8859-1")) . "</td></tr>"; } $htmlDiff .= "</table>"; unset($diff); } else { $htmlDiff = "<h2>Page créée le " . $page['time'] . ":</h2>"; $htmlDiff .= nl2br(htmlspecialchars($page['body'],ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, "ISO8859-1")); } $output .= $htmlDiff . "]]></content:encoded>\n"; $output .= "</item>\n"; unset($pages[$i]); } //else {$output="La présente page n'est pas accessible à tous.";} } $output .= "</channel>\n"; $output .= "</rss>\n"; echo demicrosoftize($output) ; } ?>
/** * Clean up the given text * * @param string $text The text to be cleaned * @return string The clean text */ function clean_text($text) { global $CFG; if (empty($text) or is_numeric($text)) { return (string) $text; } /// Fix non standard entity notations $text = preg_replace('/(&#[0-9]+)(;?)/i', "\\1;", $text); $text = preg_replace('/(&#x[0-9a-fA-F]+)(;?)/i', "\\1;", $text); $text = demicrosoftize($text); //$text = swapMicrosoftChars($text); require_once $CFG->dirAddress . 'core/lib/htmlpurifier-4.5.0/library/HTMLPurifier.auto.php'; $config = HTMLPurifier_Config::createDefault(); $config->set('Core.Encoding', 'utf-8'); // replace with your encoding $config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); $config->set('HTML.SafeIframe', true); $config->set('HTML.SafeEmbed', true); $config->set('HTML.SafeObject', true); $config->set('Output.FlashCompat', true); $config->set('HTML.FlashAllowFullScreen', true); //$config->set('HTML.Allowed', 'object[id|codebase|align|classid|width|height|data],param[name|value],embed[src|quality|bgcolor|name|align|pluginspage|type|allowscriptaccess|width|height|wmode|flashvars]'); $safeurls = '%^(http:|https:)?//('; if (isset($CFG->safeurls)) { $count = sizeof($CFG->safeurls); for ($i = 0; $i < $count; $i++) { if ($i == 0) { $safeurls .= $CFG->safeurls[$i]; } else { $safeurls .= "|" . $CFG->safeurls[$i]; } } } else { $safeurls .= 'www.youtube.com/embed/'; $safeurls .= '|player.vimeo.com/video/'; $safeurls .= '|cohere.open.ac.uk/'; $safeurls .= '|www.ustream.tv/'; $safeurls .= '|www.schooltube.com/'; $safeurls .= '|archive.org/'; $safeurls .= '|www.blogtv.com/'; $safeurls .= '|uk.video.yahoo.com/'; $safeurls .= '|www.teachertube.com/'; $safeurls .= '|sciencestage.com/'; $safeurls .= '|www.flickr.com/'; } $safeurls .= ')%'; $config->set('URI.SafeIframeRegexp', $safeurls); $def = $config->getHTMLDefinition(true); $def->addAttribute('object', 'flashvars', 'CDATA'); $def->addAttribute('object', 'classid', 'CDATA'); $def->addAttribute('object', 'codebase', 'CDATA'); $def->addAttribute('object', 'id', 'CDATA'); $def->addAttribute('object', 'align', 'CDATA'); // already handled. //$def->addAttribute('embed', 'src', 'URI#embedded'); $def->addAttribute('embed', 'quality', 'CDATA'); $def->addAttribute('embed', 'name', 'CDATA'); $def->addAttribute('embed', 'pluginspage', 'CDATA'); $def->addAttribute('embed', 'align', 'CDATA'); $def->addAttribute('embed', 'bgcolor', 'CDATA'); $embedFilter = new HTMLPurifier_URIFilter_SafeEmbed(); $embedFilter->setRegularExpression($safeurls); $objectFilter = new HTMLPurifier_URIFilter_SafeObject(); $objectFilter->setRegularExpression($safeurls); $uri = $config->getDefinition('URI'); $uri->addFilter($embedFilter, $config); $uri->addFilter($objectFilter, $config); $purifier = new HTMLPurifier($config); $text = $purifier->purify($text); return $text; }