MDL-18901 reimplemented trusstext support in glossary + standardising format column for text fields

This commit is contained in:
skodak
2009-04-20 10:05:50 +00:00
parent 37051e5877
commit cbc2b5df03
11 changed files with 242 additions and 151 deletions
@@ -86,8 +86,8 @@ class block_glossary_random extends block_base {
}
$options = new object;
$options->trusttext = true;
$text .= format_text($entry->definition, $entry->format, $options);
$options->trusted = $entry->definitiontrust;
$text .= format_text($entry->definition, $entry->definitionformat, $options);
$this->config->nexttime = usergetmidnight(time()) + DAYSECS * $this->config->refresh;
$this->config->previous = $i;
+55 -29
View File
@@ -1227,12 +1227,16 @@ function format_text($text, $format=FORMAT_MOODLE, $options=NULL, $courseid=NULL
return ''; // no need to do any filters and cleaning
}
if (!isset($options->trusttext)) {
$options->trusttext = false;
if (!isset($options->trusted)) {
$options->trusted = false;
}
if (!isset($options->noclean)) {
$options->noclean=false;
if ($options->trusted and trusttext_active()) {
// no cleaning if text trusted and noclean not specified
$options->noclean=true;
} else {
$options->noclean=false;
}
}
if (!isset($options->nocache)) {
$options->nocache=false;
@@ -1262,7 +1266,7 @@ function format_text($text, $format=FORMAT_MOODLE, $options=NULL, $courseid=NULL
if (!empty($CFG->cachetext) and empty($options->nocache)) {
$hashstr .= $text.'-'.$filtermanager->text_filtering_hash($context, $courseid).'-'.(int)$courseid.'-'.current_language().'-'.
(int)$format.(int)$options->trusttext.(int)$options->noclean.(int)$options->smiley.
(int)$format.(int)$options->trusted.(int)$options->noclean.(int)$options->smiley.
(int)$options->filter.(int)$options->para.(int)$options->newlines;
$time = time() - $CFG->cachetext;
@@ -1288,24 +1292,6 @@ function format_text($text, $format=FORMAT_MOODLE, $options=NULL, $courseid=NULL
}
}
// trusttext overrides the noclean option!
if ($options->trusttext) {
if (trusttext_present($text)) {
$text = trusttext_strip($text);
if (!empty($CFG->enabletrusttext)) {
$options->noclean = true;
} else {
$options->noclean = false;
}
} else {
$options->noclean = false;
}
} else if (!debugging('', DEBUG_DEVELOPER)) {
// strip any forgotten trusttext in non-developer mode
// do not forget to disable text cache when debugging trusttext!!
$text = trusttext_strip($text);
}
switch ($format) {
case FORMAT_HTML:
if ($options->smiley) {
@@ -1580,10 +1566,7 @@ function trusttext_present($text) {
}
/**
* This funtion MUST be called before the cleaning or any other
* function that modifies the data! We do not know the origin of trusttext
* in database, if it gets there in tweaked form we must not convert it
* to supported form!!!
* Legacy function, used for cleaning of old forum and glossary text only.
* @param string $text text that may contain TRUSTTEXT marker
* @return text without any TRUSTTEXT marker
*/
@@ -1592,7 +1575,7 @@ function trusttext_strip($text) {
while (true) { //removing nested TRUSTTEXT
$orig = $text;
$text = str_replace(TRUSTTEXT, '', $text);
$text = str_replace('#####TRUSTTEXT#####', '', $text);
if (strcmp($orig, $text) === 0) {
return $text;
}
@@ -1606,6 +1589,7 @@ function trusttext_strip($text) {
* it into database!
*/
function trusttext_mark($text) {
//TODO: delete
global $CFG;
if (!empty($CFG->enabletrusttext) and (strpos($text, TRUSTTEXT) === FALSE)) {
return TRUSTTEXT.$text;
@@ -1615,6 +1599,7 @@ function trusttext_mark($text) {
}
function trusttext_after_edit(&$text, $context) {
//TODO: delete
if (has_capability('moodle/site:trustcontent', $context)) {
$text = trusttext_strip($text);
$text = trusttext_mark($text);
@@ -1625,7 +1610,7 @@ function trusttext_after_edit(&$text, $context) {
function trusttext_prepare_edit(&$text, &$format, $usehtmleditor, $context) {
global $CFG;
//TODO: delete
$options = new object();
$options->smiley = false;
$options->filter = false;
@@ -1645,6 +1630,47 @@ function trusttext_prepare_edit(&$text, &$format, $usehtmleditor, $context) {
}
}
/**
* Must be called before editing of all texts
* with trust flag. Removes all XSS nasties
* from texts stored in database if needed.
* @param object $object data object with xxx, xxxformat and xxxtrust fields
* @param string $field name of text field
* @param object $context active context
* @return object updated $object
*/
function trusttext_pre_edit($object, $field, $context) {
$trustfield = $field.'trust';
$formatfield = $field.'format';
if (!$object->$trustfield or !trusttext_trusted($context)) {
$object->$field = clean_text($object->$field, $object->$formatfield);
}
return $object;
}
/**
* Is user trusted to enter no dangerous XSS in this context?
* Please note the user must be in fact trusted everywhere on this server!!
* @param $context
* @return bool true if user trusted
*/
function trusttext_trusted($context) {
return (trusttext_active() and has_capability('moodle/site:trustcontent', $context));
}
/**
* Is trusttext feature active?
* @param $context
* @return bool
*/
function trusttext_active() {
global $CFG;
return !empty($CFG->enabletrusttext);
}
/**
* Given raw text (eg typed in by a user), this function cleans it up
* and removes any nasty tags that could mess up Moodle pages.
+13 -13
View File
@@ -11,8 +11,8 @@
// | |
// glossary_entries --------------------------------glossary_entries_categories
// (UL,pk->id, fk->glossaryid, files) | (UL, pk->categoryid,entryid)
// | |
// | |--------------------glossary_ratings
// | |
// | |--------------------glossary_ratings
// | | (UL, pk->id, pk->entryid)
// glossary_comments |
// (UL,pk->id, fk->entryid) |---------------------glossary_alias
@@ -47,11 +47,11 @@
function glossary_backup_one_mod($bf,$preferences,$glossary) {
global $CFG, $DB;
if (is_numeric($glossary)) {
$glossary = $DB->get_record('glossary', array('id'=>$glossary));
}
$status = true;
//Start mod
@@ -159,9 +159,9 @@
$glossary_entries = $DB->get_records("glossary_entries", array("glossaryid"=>$glossary),"id");
//If there is entries
if ($glossary_entries) {
if ($glossary_entries) {
$dumped_entries = 0;
//Iterate over each entry
foreach ($glossary_entries as $glo_ent) {
//Start entry
@@ -178,7 +178,7 @@
fwrite ($bf,full_tag("USERID",6,false,$glo_ent->userid));
fwrite ($bf,full_tag("CONCEPT",6,false,trim($glo_ent->concept)));
fwrite ($bf,full_tag("DEFINITION",6,false,$glo_ent->definition));
fwrite ($bf,full_tag("FORMAT",6,false,$glo_ent->format));
fwrite ($bf,full_tag("FORMAT",6,false,$glo_ent->definitionformat));
fwrite ($bf,full_tag("ATTACHMENT",6,false,$glo_ent->attachment));
fwrite ($bf,full_tag("SOURCEGLOSSARYID",6,false,$glo_ent->sourceglossaryid));
fwrite ($bf,full_tag("USEDYNALINK",6,false,$glo_ent->usedynalink));
@@ -227,10 +227,10 @@
fwrite ($bf,full_tag("ID",8,false,$comment->id));
fwrite ($bf,full_tag("USERID",8,false,$comment->userid));
fwrite ($bf,full_tag("ENTRYCOMMENT",8,false,$comment->entrycomment));
fwrite ($bf,full_tag("FORMAT",8,false,$comment->format));
fwrite ($bf,full_tag("FORMAT",8,false,$comment->entrycommentformat));
fwrite ($bf,full_tag("TIMEMODIFIED",8,false,$comment->timemodified));
$status =fwrite ($bf,end_tag("COMMENT",7,true));
$status =fwrite ($bf,end_tag("COMMENT",7,true));
}
$status =fwrite ($bf,end_tag("COMMENTS",6,true));
}
@@ -260,7 +260,7 @@
}
return $status;
}
//Backup glossary_alias contents (executed from backup_glossary_entries)
function backup_glossary_aliases ($bf,$preferences,$entryid) {
global $CFG, $DB;
@@ -275,7 +275,7 @@
fwrite ($bf,full_tag("ALIAS_TEXT",8,false,trim($alias->alias)));
$status =fwrite ($bf,end_tag("ALIAS",7,true));
$status =fwrite ($bf,end_tag("ALIAS",7,true));
}
$status =fwrite ($bf,end_tag("ALIASES",6,true));
}
@@ -309,7 +309,7 @@
if ($status) {
//Calculate moddata/glossary dir
$glo_dir_from = $CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/glossary";
//Only if it exists !!
//Only if it exists !!
if (is_dir($glo_dir_from."/".$glossary."/".$entry)) {
$status = backup_copy_file($glo_dir_from."/".$glossary."/".$entry,
$glo_dir_to."/".$glossary."/".$entry);
@@ -396,7 +396,7 @@
FROM {glossary} a
WHERE a.course = ?", array($course));
}
//Returns an array of glossary_answers id
function glossary_entries_ids_by_course ($course) {
global $DB;
+16 -15
View File
@@ -60,14 +60,13 @@ function glossary_comment_add() {
}
if ($data = $mform->get_data()) {
trusttext_after_edit($data->entrycomment, $context);
$newcomment = new object();
$newcomment->entryid = $entry->id;
$newcomment->entrycomment = $data->entrycomment;
$newcomment->format = $data->format;
$newcomment->timemodified = time();
$newcomment->userid = $USER->id;
$newcomment->entryid = $entry->id;
$newcomment->entrycomment = $data->entrycomment;
$newcomment->entrycommentformat = $data->entrycommentformat;
$newcomment->entrycommenttrust = trusttext_trusted($context);
$newcomment->timemodified = time();
$newcomment->userid = $USER->id;
if (!$newcomment->id = $DB->insert_record('glossary_comments', $newcomment)) {
print_error('cannotinsertcomment');
@@ -175,18 +174,20 @@ function glossary_comment_edit() {
print_error('cannoteditcommentexpired');
}
// clean up existing text if needed
$comment = trusttext_pre_edit($comment, 'entrycomment', $context);
$mform = new mod_glossary_comment_form();
trusttext_prepare_edit($comment->entrycomment, $comment->format, can_use_html_editor(), $context);
$mform->set_data(array('cid'=>$cid, 'action'=>'edit', 'entrycomment'=>$comment->entrycomment, 'format'=>$comment->format));
$mform->set_data(array('cid'=>$cid, 'action'=>'edit', 'entrycomment'=>$comment->entrycomment, 'entrycommentformat'=>$comment->entrycommentformat));
if ($data = $mform->get_data()) {
trusttext_after_edit($data->entrycomment, $context);
$updatedcomment = new object();
$updatedcomment->id = $cid;
$updatedcomment->entrycomment = $data->entrycomment;
$updatedcomment->format = $data->format;
$updatedcomment->timemodified = time();
$updatedcomment->id = $cid;
$updatedcomment->entrycomment = $data->entrycomment;
$updatedcomment->entrycommentformat = $data->entrycommentformat;
$updatedcomment->entrycommenttrust = trusttext_trusted($context);
$updatedcomment->timemodified = time();
$DB->update_record('glossary_comments', $updatedcomment);
add_to_log($course->id, 'glossary', 'update comment', "comments.php?id=$cm->id&eid=$entry->id", "$updatedcomment->id",$cm->id);
@@ -220,7 +221,7 @@ function glossary_comment_print_header($course, $cm, $glossary, $entry, $action)
$strglossary = get_string('modulename', 'glossary');
$strcomments = get_string('comments', 'glossary');
$navlinks = array();
$navlinks[] = array('name' => $strcomments, 'link' => "comments.php?id=$cm->id&eid=$entry->id", 'type' => 'title');
$navlinks[] = array('name' => $straction, 'link' => '', 'type' => 'action');
+3 -3
View File
@@ -9,11 +9,11 @@ class mod_glossary_comment_form extends moodleform {
// visible elements
$mform->addElement('htmleditor', 'entrycomment',get_string('comment', 'glossary'));
$mform->addRule('entrycomment', get_string('required'), 'required', null, 'client');
$mform->setType('entrycomment', PARAM_RAW); // processed by trusttext or cleaned before the display
$mform->setType('entrycomment', PARAM_RAW); // processed by trust text or cleaned before the display
$mform->setHelpButton('entrycomment', array('writing', 'richtext2'), false, 'editorhelpbutton');
$mform->addElement('format', 'format', get_string('format'));
$mform->setHelpButton('format', array('textformat', get_string('helpformatting')));
$mform->addElement('format', 'entrycommentformat', get_string('format'));
$mform->setHelpButton('entrycommentformat', array('textformat', get_string('helpformatting')));
// hidden optional params
$mform->addElement('hidden', 'cid', 0);
+92 -2
View File
@@ -1,6 +1,6 @@
<?php //$Id$
// This file keeps track of upgrades to
// This file keeps track of upgrades to
// the glossary module
//
// Sometimes, changes between versions involve
@@ -60,7 +60,7 @@ function xmldb_glossary_upgrade($oldversion) {
if ($entry->sourceglossaryid and !is_readable($filepath)) {
//eh - try the second possible location
$filepath = "$CFG->dataroot/$entry->course/$CFG->moddata/glossary/$entry->sourceglossaryid/$entry->id/$entry->attachment";
}
if (!is_readable($filepath)) {
//file missing??
@@ -100,6 +100,96 @@ function xmldb_glossary_upgrade($oldversion) {
upgrade_mod_savepoint($result, 2008081900, 'glossary');
}
if ($result && $oldversion < 2009042000) {
/// Rename field definitionformat on table glossary_entries to NEWNAMEGOESHERE
$table = new xmldb_table('glossary_entries');
$field = new xmldb_field('format', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'definition');
/// Launch rename field definitionformat
$dbman->rename_field($table, $field, 'definitionformat');
/// glossary savepoint reached
upgrade_mod_savepoint($result, 2009042000, 'glossary');
}
if ($result && $oldversion < 2009042001) {
/// Define field definitiontrust to be added to glossary_entries
$table = new xmldb_table('glossary_entries');
$field = new xmldb_field('definitiontrust', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'definitionformat');
/// Launch add field definitiontrust
$dbman->add_field($table, $field);
/// glossary savepoint reached
upgrade_mod_savepoint($result, 2009042001, 'glossary');
}
if ($result && $oldversion < 2009042002) {
/// Rename field format on table glossary_comments to NEWNAMEGOESHERE
$table = new xmldb_table('glossary_comments');
$field = new xmldb_field('format', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'entrycomment');
/// Launch rename field format
$dbman->rename_field($table, $field, 'entrycommentformat');
/// glossary savepoint reached
upgrade_mod_savepoint($result, 2009042002, 'glossary');
}
if ($result && $oldversion < 2009042003) {
/// Define field entrycommenttrust to be added to glossary_comments
$table = new xmldb_table('glossary_comments');
$field = new xmldb_field('entrycommenttrust', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'entrycommentformat');
/// Conditionally launch add field entrycommenttrust
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
/// glossary savepoint reached
upgrade_mod_savepoint($result, 2009042003, 'glossary');
}
if ($result && $oldversion < 2009042004) {
$trustmark = '#####TRUSTTEXT#####';
$rs = $DB->get_recordset_sql("SELECT * FROM {glossary_entries} WHERE definition LIKE '$trustmark%'");
foreach ($rs as $entry) {
if (strpos($entry->definition, $trustmark) !== 0) {
// probably lowercase in some DBs
continue;
}
$entry->definition = trusttext_strip($entry->definition);
$entry->definitiontrust = 1;
$DB->update_record('glossary_entries', $entry);
}
$rs->close();
/// glossary savepoint reached
upgrade_mod_savepoint($result, 2009042004, 'glossary');
}
if ($result && $oldversion < 2009042005) {
$trustmark = '#####TRUSTTEXT#####';
$rs = $DB->get_recordset_sql("SELECT * FROM {glossary_comments} WHERE entrycomment LIKE '$trustmark%'");
foreach ($rs as $comment) {
if (strpos($comment->entrycomment, $trustmark) !== 0) {
// probably lowercase in some DBs
continue;
}
$comment->entrycomment = trusttext_strip($comment->entrycomment);
$comment->entrycommenttrust = 1;
$DB->update_record('glossary_comments', $comment);
}
$rs->close();
/// glossary savepoint reached
upgrade_mod_savepoint($result, 2009042005, 'glossary');
}
return $result;
}
+18 -16
View File
@@ -43,8 +43,10 @@ if ($id) { // if entry is specified
}
}
// clean up text before edit if needed
$entry = trusttext_pre_edit($entry, 'definition', $context);
//prepare extra data
trusttext_prepare_edit($entry->definition, $entry->format, can_use_html_editor(), $context);
if ($aliases = $DB->get_records_menu("glossary_alias", array("entryid"=>$id), '', 'id, alias')) {
$entry->aliases = implode("\n", $aliases) . "\n";
}
@@ -56,16 +58,16 @@ if ($id) { // if entry is specified
} else { // new entry
require_capability('mod/glossary:write', $context);
$entry = new object();
$entry->id = null;
$entry->definition = '';
$entry->format = FORMAT_HTML; // TODO: better default value
$entry->id = null;
$entry->definition = '';
$entry->definitionformat = FORMAT_HTML; // TODO: better default value
}
$entry->cmid = $cm->id;
$draftid_editor = file_get_submitted_draft_itemid('entry');
$currenttext = file_prepare_draft_area($draftid_editor, $context->id, 'glossary_entry', $entry->id, true, $entry->definition);
$entry->entry = array('text'=>$currenttext, 'format'=>$entry->format, 'itemid'=>$draftid_editor);
$entry->entry = array('text'=>$currenttext, 'format'=>$entry->definitionformat, 'itemid'=>$draftid_editor);
$draftitemid = file_get_submitted_draft_itemid('attachments');
file_prepare_draft_area($draftitemid, $context->id, 'glossary_attachment', $entry->id , false);
@@ -94,14 +96,15 @@ if ($mform->is_cancelled()){
$entry->teacherentry = has_capability('mod/glossary:manageentries', $context);
}
$entry->concept = trim($data->concept);
$entry->definition = ''; // updated later
$entry->format = FORMAT_HTML; // updated later
$entry->timemodified = $timenow;
$entry->approved = 0;
$entry->usedynalink = isset($data->usedynalink) ? $data->usedynalink : 0;
$entry->casesensitive = isset($data->casesensitive) ? $data->casesensitive : 0;
$entry->fullmatch = isset($data->fullmatch) ? $data->fullmatch : 0;
$entry->concept = trim($data->concept);
$entry->definition = ''; // updated later
$entry->definitionformat = FORMAT_HTML; // updated later
$entry->definitiontrust = trusttext_trusted($context);
$entry->timemodified = $timenow;
$entry->approved = 0;
$entry->usedynalink = isset($data->usedynalink) ? $data->usedynalink : 0;
$entry->casesensitive = isset($data->casesensitive) ? $data->casesensitive : 0;
$entry->fullmatch = isset($data->fullmatch) ? $data->fullmatch : 0;
if ($glossary->defaultapproval or has_capability('mod/glossary:approve', $context)) {
$entry->approved = 1;
@@ -122,9 +125,8 @@ if ($mform->is_cancelled()){
}
// save and relink embedded images
$entry->format = $data->entry['format'];
$entry->definition = file_save_draft_area_files($draftid_editor, $context->id, 'glossary_entry', $entry->id, true, $data->entry['text']);
trusttext_after_edit($entry->definition, $context);
$entry->definitionformat = $data->entry['format'];
$entry->definition = file_save_draft_area_files($draftid_editor, $context->id, 'glossary_entry', $entry->id, true, $data->entry['text']);
// save attachments
$info = file_get_draft_area_info($draftitemid);
+17 -47
View File
@@ -641,30 +641,15 @@ function glossary_print_entry_default ($entry, $glossary, $cm) {
$definition = $entry->definition;
// always detect and strip TRUSTTEXT marker before processing and add+strip it afterwards!
if (trusttext_present($definition)) {
$ttpresent = true;
$definition = trusttext_strip($definition);
} else {
$ttpresent = false;
}
$definition = '<span class="nolink">' . strip_tags($definition) . '</span>';
// reconstruct the TRUSTTEXT properly after processing
if ($ttpresent) {
$definition = trusttext_mark($definition);
} else {
$definition = trusttext_strip($definition); //make 100% sure TRUSTTEXT marker was not created
}
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$definition = file_rewrite_pluginfile_urls($definition, 'pluginfile.php', $context->id, 'glossary_entry', $entry->id);
$options = new object();
$options->para = false;
$options->trusttext = true;
$definition = format_text($definition, $entry->format, $options);
$options->trusted = $entry->definitiontrust;
$definition = format_text($definition, $entry->definitionformat, $options);
echo ($definition);
echo '<br /><br />';
}
@@ -687,14 +672,6 @@ function glossary_print_entry_definition($entry, $glossary, $cm) {
$definition = $entry->definition;
// always detect and strip TRUSTTEXT marker before processing and add+strip it afterwards!
if (trusttext_present($definition)) {
$ttpresent = true;
$definition = trusttext_strip($definition);
} else {
$ttpresent = false;
}
global $GLOSSARY_EXCLUDECONCEPTS;
//Calculate all the strings to be no-linked
@@ -709,23 +686,16 @@ function glossary_print_entry_definition($entry, $glossary, $cm) {
$options = new object();
$options->para = false;
$options->trusttext = true;
// reconstruct the TRUSTTEXT properly after processing
if ($ttpresent) {
$definition = trusttext_mark($definition);
} else {
$definition = trusttext_strip($definition); //make 100% sure TRUSTTEXT marker was not created
}
$options->trusted = $entry->definitiontrust;
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$definition = file_rewrite_pluginfile_urls($definition, 'pluginfile.php', $context->id, 'glossary_entry', $entry->id);
$text = format_text($definition, $entry->format, $options);
$text = format_text($definition, $entry->definitionformat, $options);
// Stop excluding concepts from autolinking
unset($GLOSSARY_EXCLUDECONCEPTS);
if (!empty($entry->highlight)) {
$text = highlight($entry->highlight, $text);
}
@@ -863,14 +833,14 @@ function glossary_print_entry_commentslink($course, $cm, $glossary, $entry,$mode
}
}
function glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook,$printicons,$ratings,$aliases=true) {
function glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook, $printicons, $ratings, $aliases=true) {
if ($aliases) {
$aliases = glossary_print_entry_aliases($course, $cm, $glossary, $entry, $mode, $hook,'html');
}
$icons = '';
$return = '';
if ( $printicons ) {
if ($printicons) {
$icons = glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode, $hook,'html');
}
if ($aliases || $icons || $ratings) {
@@ -907,10 +877,10 @@ function glossary_print_entry_attachment($entry, $cm, $format=NULL, $align="righ
}
}
function glossary_print_entry_approval($cm, $entry, $mode,$align="right",$insidetable=true) {
function glossary_print_entry_approval($cm, $entry, $mode, $align="right", $insidetable=true) {
global $CFG;
if ( $mode == 'approval' and !$entry->approved ) {
if ($mode == 'approval' and !$entry->approved) {
if ($insidetable) {
echo '<table class="glossaryapproval" align="'.$align.'"><tr><td align="'.$align.'">';
}
@@ -1472,8 +1442,8 @@ function glossary_print_comment($course, $cm, $glossary, $entry, $comment) {
echo '</td><td class="entry">';
$options = new object();
$options->trusttext = true;
echo format_text($comment->entrycomment, $comment->format, $options);
$options->trusted = $comment->entrycommenttrust;
echo format_text($comment->entrycomment, $comment->entrycommentformat, $options);
echo '<div class="icons commands">';
@@ -1593,7 +1563,7 @@ function glossary_generate_export_csv($entries, $aliases, $categories) {
foreach ($entries as $entry) {
$thisaliasesentry = array();
$thiscategoriesentry = array();
$thiscsventry = array($entry->concept, nl2br(trusttext_strip($entry->definition)));
$thiscsventry = array($entry->concept, nl2br($entry->definition));
if (array_key_exists($entry->id, $aliases) && is_array($aliases[$entry->id])) {
$thiscount = count($aliases[$entry->id]);
@@ -1681,8 +1651,8 @@ function glossary_generate_export_file($glossary, $hook = "", $hook = 0) {
if ( $entry->approved and $permissiongranted ) {
$co .= glossary_start_tag("ENTRY",3,true);
$co .= glossary_full_tag("CONCEPT",4,false,trim($entry->concept));
$co .= glossary_full_tag("DEFINITION",4,false,trusttext_strip($entry->definition));
$co .= glossary_full_tag("FORMAT",4,false,$entry->format);
$co .= glossary_full_tag("DEFINITION",4,false,$entry->definition);
$co .= glossary_full_tag("FORMAT",4,false,$entry->definitionformat);
$co .= glossary_full_tag("USEDYNALINK",4,false,$entry->usedynalink);
$co .= glossary_full_tag("CASESENSITIVE",4,false,$entry->casesensitive);
$co .= glossary_full_tag("FULLMATCH",4,false,$entry->fullmatch);
+11 -11
View File
@@ -163,7 +163,7 @@
$entry->userid = backup_todb($ent_info['#']['USERID']['0']['#']);
$entry->concept = backup_todb(trim($ent_info['#']['CONCEPT']['0']['#']));
$entry->definition = backup_todb($ent_info['#']['DEFINITION']['0']['#']);
$entry->format = backup_todb($ent_info['#']['FORMAT']['0']['#']);
$entry->definitionformat = backup_todb($ent_info['#']['FORMAT']['0']['#']);
$entry->attachment = backup_todb($ent_info['#']['ATTACHMENT']['0']['#']);
$entry->sourceglossaryid = backup_todb($ent_info['#']['SOURCEGLOSSARYID']['0']['#']);
$entry->usedynalink = backup_todb($ent_info['#']['USEDYNALINK']['0']['#']);
@@ -250,7 +250,7 @@
$comment->entrycomment = backup_todb($com_info['#']['ENTRYCOMMENT']['0']['#']);
}
$comment->timemodified = backup_todb($com_info['#']['TIMEMODIFIED']['0']['#']);
$comment->format = backup_todb($com_info['#']['FORMAT']['0']['#']);
$comment->entrycommentformat = backup_todb($com_info['#']['FORMAT']['0']['#']);
//We have to recode the userid field
$user = backup_getid($restore->backup_unique_code,"user",$comment->userid);
@@ -527,13 +527,13 @@
//glossary_decode_content_links_caller() function in each module
//in the restore process
function glossary_decode_content_links ($content,$restore) {
global $CFG;
$result = $content;
//Link to the list of glossarys
$searchstring='/\$@(GLOSSARYINDEX)\*([0-9]+)@\$/';
//We look for it
preg_match_all($searchstring,$content,$foundset);
@@ -550,7 +550,7 @@
if($rec->new_id) {
//Now replace it
$result= preg_replace($searchstring,$CFG->wwwroot.'/mod/glossary/index.php?id='.$rec->new_id,$result);
} else {
} else {
//It's a foreign link so leave it as original
$result= preg_replace($searchstring,$restore->original_wwwroot.'/mod/glossary/index.php?id='.$old_id,$result);
}
@@ -593,7 +593,7 @@
function glossary_decode_content_links_caller($restore) {
global $CFG, $DB;
$status = true;
//Process every glossary ENTRY in the course
if ($entries = $DB->get_records_sql("SELECT e.id, e.definition
FROM {glossary_entries} e,
@@ -691,7 +691,7 @@
//Convert to Markdown
$wtm = new WikiToMarkdown();
$record->entrycomment = $wtm->convert($record->entrycomment, $restore->course_id);
$record->format = FORMAT_MARKDOWN;
$record->entrycommentformat = FORMAT_MARKDOWN;
$status = $DB->update_record('glossary_comments', $record);
//Do some output
$i++;
@@ -725,7 +725,7 @@
//Convert to Markdown
$wtm = new WikiToMarkdown();
$record->definition = $wtm->convert($record->definition, $restore->course_id);
$record->format = FORMAT_MARKDOWN;
$record->entrycommentformat = FORMAT_MARKDOWN;
$status = $DB->update_record('glossary_entries', $record);
//Do some output
$i++;
@@ -741,7 +741,7 @@
}
}
return $status;
}
+13 -11
View File
@@ -138,7 +138,7 @@
$items = array();
$params = array('gid'=>$glossary->id, 'newsince'=>$newsince);
$params = array('gid'=>$glossary->id, 'newsince'=>$newsince);
if ($newsince) {
$newsince = "AND e.timecreated > :newsince";
@@ -146,12 +146,13 @@
$newsince = "";
}
if ($recs = $DB->get_records_sql ("SELECT e.id AS entryid,
e.concept AS entryconcept,
e.definition AS entrydefinition,
e.format AS entryformat,
e.timecreated AS entrytimecreated,
u.id AS userid,
if ($recs = $DB->get_records_sql ("SELECT e.id AS entryid,
e.concept AS entryconcept,
e.definition AS entrydefinition,
e.definitionformat AS entryformat,
e.definitiontrust AS entrytrust,
e.timecreated AS entrytimecreated,
u.id AS userid,
u.firstname AS userfirstname,
u.lastname AS userlastname
FROM {glossary_entries} e,
@@ -169,7 +170,7 @@
$articlesleft = $glossary->rssarticles;
$formatoptions = new object;
$formatoptions->trusttext = true;
$formatoptions->trusted = $comment->entrytrust;
foreach ($recs as $rec) {
$item = new object();
@@ -198,7 +199,7 @@
$items = array();
$params = array('gid'=>$glossary->id, 'newsince'=>$newsince);
$params = array('gid'=>$glossary->id, 'newsince'=>$newsince);
if ($newsince) {
$newsince = "AND e.timecreated > :newsince";
@@ -209,7 +210,8 @@
if ($recs = $DB->get_records_sql ("SELECT e.id AS entryid,
e.concept AS entryconcept,
e.definition AS entrydefinition,
e.format AS entryformat,
e.definitionformat AS entryformat,
e.definitiontrust AS entrytrust,
e.timecreated AS entrytimecreated,
u.id AS userid,
u.firstname AS userfirstname,
@@ -230,7 +232,7 @@
$articlesleft = $glossary->rssarticles;
$formatoptions = new object;
$formatoptions->trusttext = true;
$formatoptions->trusted = $comment->entrytrust;
foreach ($recs as $rec) {
$item = new object();
+2 -2
View File
@@ -5,8 +5,8 @@
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
/////////////////////////////////////////////////////////////////////////////////
$module->version = 2008081901;
$module->requires = 2008081600; // Requires this Moodle version
$module->version = 2009042005;
$module->requires = 2009041700; // Requires this Moodle version
$module->cron = 0; // Period for cron to check this module (secs)
?>