diff --git a/lib/portfoliolib.php b/lib/portfoliolib.php index 3a90f1b0943..519388c9696 100644 --- a/lib/portfoliolib.php +++ b/lib/portfoliolib.php @@ -102,6 +102,11 @@ class portfolio_add_button { */ public function __construct($options=null) { global $SESSION, $CFG; + + if (empty($CFG->enableportfolios)) { + debugging('Building portfolio add button while portfolios is disabled. This code can be optimised.', DEBUG_DEVELOPER); + } + $this->instances = portfolio_instances(); if (empty($options)) { return true; diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index 170c7f83036..ac89009887c 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -1866,23 +1866,25 @@ class assignment_base { $output = ''; - $fs = get_file_storage(); - - $found = false; - $submission = $this->get_submission($userid); + if (!$submission) { + return $output; + } - if (($submission) && $files = $fs->get_area_files($this->context->id, 'mod_assignment', 'submission', $submission->id, "timemodified", false)) { - require_once($CFG->libdir.'/portfoliolib.php'); + $fs = get_file_storage(); + $files = $fs->get_area_files($this->context->id, 'mod_assignment', 'submission', $submission->id, "timemodified", false); + if (!empty($files)) { require_once($CFG->dirroot . '/mod/assignment/locallib.php'); - $button = new portfolio_add_button(); + if ($CFG->enableportfolios) { + require_once($CFG->libdir.'/portfoliolib.php'); + $button = new portfolio_add_button(); + } foreach ($files as $file) { $filename = $file->get_filename(); - $found = true; $mimetype = $file->get_mimetype(); $path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$this->context->id.'/mod_assignment/submission/'.$submission->id.'/'.$filename); $output .= ''.$mimetype.''.s($filename).''; - if ($this->portfolio_exportable() && has_capability('mod/assignment:exportownsubmission', $this->context)) { + if ($CFG->enableportfolios && $this->portfolio_exportable() && has_capability('mod/assignment:exportownsubmission', $this->context)) { $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id, 'fileid' => $file->get_id()), '/mod/assignment/locallib.php'); $button->set_format_by_file($file); $output .= $button->to_html(PORTFOLIO_ADD_ICON_LINK); diff --git a/mod/assignment/renderer.php b/mod/assignment/renderer.php index 87282d4e1fe..89d9b75a2a0 100644 --- a/mod/assignment/renderer.php +++ b/mod/assignment/renderer.php @@ -85,19 +85,21 @@ class assignment_files implements renderable { public $course; public function __construct($context, $itemid, $filearea='submission') { global $USER, $CFG; - require_once($CFG->libdir . '/portfoliolib.php'); $this->context = $context; list($context, $course, $cm) = get_context_info_array($context->id); $this->cm = $cm; $this->course = $course; $fs = get_file_storage(); $this->dir = $fs->get_area_tree($this->context->id, 'mod_assignment', $filearea, $itemid); - $files = $fs->get_area_files($this->context->id, 'mod_assignment', $filearea, $itemid, "timemodified", false); - if (count($files) >= 1 && has_capability('mod/assignment:exportownsubmission', $this->context)) { - $button = new portfolio_add_button(); - $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id), '/mod/assignment/locallib.php'); - $button->reset_formats(); - $this->portfolioform = $button->to_html(); + if (!empty($CFG->enableportfolios)) { + require_once($CFG->libdir . '/portfoliolib.php'); + $files = $fs->get_area_files($this->context->id, 'mod_assignment', $filearea, $itemid, "timemodified", false); + if (count($files) >= 1 && has_capability('mod/assignment:exportownsubmission', $this->context)) { + $button = new portfolio_add_button(); + $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id), '/mod/assignment/locallib.php'); + $button->reset_formats(); + $this->portfolioform = $button->to_html(); + } } $this->preprocess($this->dir, $filearea); } @@ -107,13 +109,14 @@ class assignment_files implements renderable { $this->preprocess($subdir, $filearea); } foreach ($dir['files'] as $file) { - $button = new portfolio_add_button(); - if (has_capability('mod/assignment:exportownsubmission', $this->context)) { - $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id, 'fileid' => $file->get_id()), '/mod/assignment/locallib.php'); - $button->set_format_by_file($file); - $file->portfoliobutton = $button->to_html(PORTFOLIO_ADD_ICON_LINK); - } else { - $file->portfoliobutton = ''; + $file->portfoliobutton = ''; + if (!empty($CFG->enableportfolios)) { + $button = new portfolio_add_button(); + if (has_capability('mod/assignment:exportownsubmission', $this->context)) { + $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id, 'fileid' => $file->get_id()), '/mod/assignment/locallib.php'); + $button->set_format_by_file($file); + $file->portfoliobutton = $button->to_html(PORTFOLIO_ADD_ICON_LINK); + } } $url = file_encode_url("$CFG->wwwroot/pluginfile.php", '/'.$this->context->id.'/mod_assignment/'.$filearea.'/'.$file->get_itemid(). $file->get_filepath().$file->get_filename(), true); $filename = $file->get_filename(); diff --git a/mod/chat/report.php b/mod/chat/report.php index 6a4d96a2844..cf2268a0414 100644 --- a/mod/chat/report.php +++ b/mod/chat/report.php @@ -56,6 +56,8 @@ $navlinks = array(); + $canexportsess = has_capability('mod/chat:exportsession', $context); + /// Print a session if one has been specified if ($start and $end and !$confirmdelete) { // Show a full transcript @@ -101,8 +103,8 @@ echo $formatmessage->html; } } - $participated_cap = array_key_exists($USER->id, $participates) && has_capability('mod/chat:exportparticipatedsession', $context); - if (has_capability('mod/chat:exportsession', $context) || $participated_cap) { + $participatedcap = array_key_exists($USER->id, $participates) && has_capability('mod/chat:exportparticipatedsession', $context); + if (!empty($CFG->enableportfolios) && ($canexportsess || $participatedcap)) { require_once($CFG->libdir . '/portfoliolib.php'); $buttonoptions = array( 'id' => $cm->id, @@ -227,9 +229,8 @@ echo '

'; echo "id&start=$sessionstart&end=$sessionend\">$strseesession"; - if (has_capability('mod/chat:exportsession', $context) - || (array_key_exists($USER->id, $sessionusers) - && has_capability('mod/chat:exportparticipatedsession', $context))) { + $participatedcap = (array_key_exists($USER->id, $sessionusers) && has_capability('mod/chat:exportparticipatedsession', $context)); + if (!empty($CFG->enableportfolios) && ($canexportsess || $participatedcap)) { require_once($CFG->libdir . '/portfoliolib.php'); $buttonoptions = array( 'id' => $cm->id, @@ -257,7 +258,7 @@ $lasttime = $message->timestamp; } - if (has_capability('mod/chat:exportsession', $context)) { + if (!empty($CFG->enableportfolios) && $canexportsess) { require_once($CFG->libdir . '/portfoliolib.php'); $button = new portfolio_add_button(); $button->set_callback_options('chat_portfolio_caller', array('id' => $cm->id), '/mod/chat/locallib.php'); diff --git a/mod/data/lib.php b/mod/data/lib.php index 671a795c86f..ff954ddbc88 100644 --- a/mod/data/lib.php +++ b/mod/data/lib.php @@ -1291,7 +1291,7 @@ function data_print_template($template, $records, $data, $search='', $page=0, $r $patterns[]='##export##'; - if ($CFG->enableportfolios && ($template == 'singletemplate' || $template == 'listtemplate') + if (!empty($CFG->enableportfolios) && ($template == 'singletemplate' || $template == 'listtemplate') && ((has_capability('mod/data:exportentry', $context) || (data_isowner($record->id) && has_capability('mod/data:exportownentry', $context))))) { require_once($CFG->libdir . '/portfoliolib.php'); diff --git a/mod/data/view.php b/mod/data/view.php index de9edb5dbc4..3a68ae97ded 100644 --- a/mod/data/view.php +++ b/mod/data/view.php @@ -720,7 +720,7 @@ if ($showactivity) { $records = array(); } - if ($mode == '' && $CFG->enableportfolios) { + if ($mode == '' && !empty($CFG->enableportfolios)) { require_once($CFG->libdir . '/portfoliolib.php'); $button = new portfolio_add_button(); $button->set_callback_options('data_portfolio_caller', array('id' => $cm->id), '/mod/data/locallib.php'); diff --git a/mod/forum/discuss.php b/mod/forum/discuss.php index e33866d368a..ad095bd89bc 100644 --- a/mod/forum/discuss.php +++ b/mod/forum/discuss.php @@ -190,7 +190,7 @@ /// Print the controls across the top echo '

'; - if (has_capability('mod/forum:exportdiscussion', $modcontext) && (!empty($CFG->enableportfolios))) { + if (!empty($CFG->enableportfolios) && has_capability('mod/forum:exportdiscussion', $modcontext)) { require_once($CFG->libdir.'/portfoliolib.php'); $button = new portfolio_add_button(); $button->set_callback_options('forum_portfolio_caller', array('discussionid' => $discussion->id), '/mod/forum/locallib.php'); diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 6331f6c0037..03ad341f2ee 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -3295,7 +3295,7 @@ function forum_print_post($post, $discussion, $forum, &$cm, $course, $ownpost=fa $commands[] = array('url'=>new moodle_url('/mod/forum/post.php', array('reply'=>$post->id)), 'text'=>$str->reply); } - if ($cm->cache->caps['mod/forum:exportpost'] || ($ownpost && $cm->cache->caps['mod/forum:exportownpost'])) { + if ($CFG->enableportfolios && ($cm->cache->caps['mod/forum:exportpost'] || ($ownpost && $cm->cache->caps['mod/forum:exportownpost']))) { $p = array('postid' => $post->id); require_once($CFG->libdir.'/portfoliolib.php'); $button = new portfolio_add_button(); @@ -3932,46 +3932,49 @@ function forum_print_attachments($post, $cm, $type) { $canexport = (has_capability('mod/forum:exportpost', $context) || ($post->userid == $USER->id && has_capability('mod/forum:exportownpost', $context))); - require_once($CFG->libdir.'/portfoliolib.php'); - if ($files = $fs->get_area_files($context->id, 'mod_forum', 'attachment', $post->id, "timemodified", false)) { - $button = new portfolio_add_button(); - foreach ($files as $file) { - $filename = $file->get_filename(); - $mimetype = $file->get_mimetype(); - $iconimage = ''.$mimetype.''; - $path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$context->id.'/mod_forum/attachment/'.$post->id.'/'.$filename); + if (!empty($CFG->enableportfolios)) { + require_once($CFG->libdir.'/portfoliolib.php'); + $files = $fs->get_area_files($context->id, 'mod_forum', 'attachment', $post->id, "timemodified", false); + if ($files) { + $button = new portfolio_add_button(); + foreach ($files as $file) { + $filename = $file->get_filename(); + $mimetype = $file->get_mimetype(); + $iconimage = ''.$mimetype.''; + $path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$context->id.'/mod_forum/attachment/'.$post->id.'/'.$filename); - if ($type == 'html') { - $output .= "$iconimage "; - $output .= "".s($filename).""; - if ($canexport) { - $button->set_callback_options('forum_portfolio_caller', array('postid' => $post->id, 'attachment' => $file->get_id()), '/mod/forum/locallib.php'); - $button->set_format_by_file($file); - $output .= $button->to_html(PORTFOLIO_ADD_ICON_LINK); - } - $output .= "
"; - - } else if ($type == 'text') { - $output .= "$strattachment ".s($filename).":\n$path\n"; - - } else { //'returnimages' - if (in_array($mimetype, array('image/gif', 'image/jpeg', 'image/png'))) { - // Image attachments don't get printed as links - $imagereturn .= "
\"\""; - if ($canexport) { - $button->set_callback_options('forum_portfolio_caller', array('postid' => $post->id, 'attachment' => $file->get_id()), '/mod/forum/locallib.php'); - $button->set_format_by_file($file); - $imagereturn .= $button->to_html(PORTFOLIO_ADD_ICON_LINK); - } - } else { + if ($type == 'html') { $output .= "$iconimage "; - $output .= format_text("".s($filename)."", FORMAT_HTML, array('context'=>$context)); + $output .= "".s($filename).""; if ($canexport) { $button->set_callback_options('forum_portfolio_caller', array('postid' => $post->id, 'attachment' => $file->get_id()), '/mod/forum/locallib.php'); $button->set_format_by_file($file); $output .= $button->to_html(PORTFOLIO_ADD_ICON_LINK); } - $output .= '
'; + $output .= "
"; + + } else if ($type == 'text') { + $output .= "$strattachment ".s($filename).":\n$path\n"; + + } else { //'returnimages' + if (in_array($mimetype, array('image/gif', 'image/jpeg', 'image/png'))) { + // Image attachments don't get printed as links + $imagereturn .= "
\"\""; + if ($canexport) { + $button->set_callback_options('forum_portfolio_caller', array('postid' => $post->id, 'attachment' => $file->get_id()), '/mod/forum/locallib.php'); + $button->set_format_by_file($file); + $imagereturn .= $button->to_html(PORTFOLIO_ADD_ICON_LINK); + } + } else { + $output .= "$iconimage "; + $output .= format_text("".s($filename)."", FORMAT_HTML, array('context'=>$context)); + if ($canexport) { + $button->set_callback_options('forum_portfolio_caller', array('postid' => $post->id, 'attachment' => $file->get_id()), '/mod/forum/locallib.php'); + $button->set_format_by_file($file); + $output .= $button->to_html(PORTFOLIO_ADD_ICON_LINK); + } + $output .= '
'; + } } } } diff --git a/mod/glossary/export.php b/mod/glossary/export.php index 11d97f06e24..586b35094bc 100644 --- a/mod/glossary/export.php +++ b/mod/glossary/export.php @@ -67,7 +67,7 @@ $exporturl = moodle_url::make_pluginfile_url($context->id, 'mod_glossary', 'expo count_records('glossary_entries', array('glossaryid' => $glossary->id))) { + if (!empty($CFG->enableportfolios) && $DB->count_records('glossary_entries', array('glossaryid' => $glossary->id))) { require_once($CFG->libdir . '/portfoliolib.php'); $button = new portfolio_add_button(); $button->set_callback_options('glossary_full_portfolio_caller', array('id' => $cm->id), '/mod/glossary/locallib.php'); diff --git a/mod/glossary/lib.php b/mod/glossary/lib.php index 19848ae20fe..d488752e828 100644 --- a/mod/glossary/lib.php +++ b/mod/glossary/lib.php @@ -1098,7 +1098,9 @@ function glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode='',$h $return .= get_string('entryishidden','glossary'); } - if (has_capability('mod/glossary:manageentries', $context) or (isloggedin() and has_capability('mod/glossary:write', $context) and $entry->userid == $USER->id)) { + $iscurrentuser = ($entry->userid == $USER->id); + + if (has_capability('mod/glossary:manageentries', $context) or (isloggedin() and has_capability('mod/glossary:write', $context) and $iscurrentuser)) { // only teachers can export entries so check it out if (has_capability('mod/glossary:export', $context) and !$ismainglossary and !$importedentry) { $mainglossary = $DB->get_record('glossary', array('mainglossary'=>1,'course'=>$course->id)); @@ -1129,9 +1131,7 @@ function glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode='',$h $return .= " " . get_string("exportedentry","glossary") . ""; } } - if (has_capability('mod/glossary:exportentry', $context) - || ($entry->userid == $USER->id - && has_capability('mod/glossary:exportownentry', $context))) { + if (!empty($CFG->enableportfolios) && (has_capability('mod/glossary:exportentry', $context) || ($iscurrentuser && has_capability('mod/glossary:exportownentry', $context)))) { require_once($CFG->libdir . '/portfoliolib.php'); $button = new portfolio_add_button(); $button->set_callback_options('glossary_entry_portfolio_caller', array('id' => $cm->id, 'entryid' => $entry->id), '/mod/glossary/locallib.php'); @@ -1155,21 +1155,19 @@ function glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode='',$h $return .= ''; - if (has_capability('mod/glossary:comment', $context) and $glossary->allowcomments) { + if (!empty($CFG->usecomments) && has_capability('mod/glossary:comment', $context) and $glossary->allowcomments) { + require_once($CFG->dirroot . '/comment/lib.php'); + $cmt = new stdClass(); + $cmt->component = 'mod_glossary'; + $cmt->context = $context; + $cmt->course = $course; + $cmt->cm = $cm; + $cmt->area = 'glossary_entry'; + $cmt->itemid = $entry->id; + $cmt->showcount = true; + $comment = new comment($cmt); + $return .= '
'.$comment->output(true).'
'; $output = true; - if (!empty($CFG->usecomments)) { - require_once($CFG->dirroot . '/comment/lib.php'); - $cmt = new stdClass(); - $cmt->component = 'mod_glossary'; - $cmt->context = $context; - $cmt->course = $course; - $cmt->cm = $cm; - $cmt->area = 'glossary_entry'; - $cmt->itemid = $entry->id; - $cmt->showcount = true; - $comment = new comment($cmt); - $return .= '
'.$comment->output(true).'
'; - } } //If we haven't calculated any REAL thing, delete result ($return)