Example #1
0
 function definition()
 {
     global $CFG;
     $mform =& $this->_form;
     $mform->addElement('header', 'notice', get_string('chooseexportformat', 'data'));
     $choices = csv_import_reader::get_delimiter_list();
     $key = array_search(';', $choices);
     if (!$key === FALSE) {
         // array $choices contains the semicolon -> drop it (because its encrypted form also contains a semicolon):
         unset($choices[$key]);
     }
     $typesarray = array();
     $typesarray[] =& MoodleQuickForm::createElement('radio', 'exporttype', null, get_string('csvwithselecteddelimiter', 'data') . ' ', 'csv');
     $typesarray[] =& MoodleQuickForm::createElement('select', 'delimiter_name', null, $choices);
     $typesarray[] =& MoodleQuickForm::createElement('radio', 'exporttype', null, get_string('excel', 'data'), 'xls');
     $typesarray[] =& MoodleQuickForm::createElement('radio', 'exporttype', null, get_string('ods', 'data'), 'ods');
     $mform->addGroup($typesarray, 'exportar', '', array(''), false);
     $mform->addRule('exportar', null, 'required');
     $mform->setDefault('exporttype', 'csv');
     if (array_key_exists('cfg', $choices)) {
         $mform->setDefault('delimiter_name', 'cfg');
     } else {
         if (get_string('listsep') == ';') {
             $mform->setDefault('delimiter_name', 'semicolon');
         } else {
             $mform->setDefault('delimiter_name', 'comma');
         }
     }
     $mform->addElement('header', 'notice', get_string('chooseexportfields', 'data'));
     foreach ($this->_datafields as $field) {
         if ($field->text_export_supported()) {
             $mform->addElement('advcheckbox', 'field_' . $field->field->id, '<div title="' . s($field->field->description) . '">' . $field->field->name . '</div>', ' (' . $field->name() . ')', array('group' => 1));
             $mform->setDefault('field_' . $field->field->id, 1);
         } else {
             $a = new object();
             $a->fieldtype = $field->name();
             $mform->addElement('static', 'unsupported' . $field->field->id, $field->field->name, get_string('unsupportedexport', 'data', $a));
         }
     }
     $this->add_checkbox_controller(1, null, null, 1);
     require_once $CFG->libdir . '/portfoliolib.php';
     if (has_capability('mod/data:exportallentries', get_context_instance(CONTEXT_MODULE, $this->_cm->id))) {
         if ($portfoliooptions = portfolio_instance_select(portfolio_instances(), call_user_func(array('data_portfolio_caller', 'supported_formats')), 'data_portfolio_caller', '', true, true)) {
             $mform->addElement('header', 'notice', get_string('portfolionotfile', 'data') . ':');
             $portfoliooptions[0] = get_string('none');
             ksort($portfoliooptions);
             $mform->addElement('select', 'portfolio', get_string('portfolio', 'portfolio'), $portfoliooptions);
         }
     }
     $this->add_action_buttons(true, get_string('exportdatabaserecords', 'data'));
 }
 public function should_display($discussion)
 {
     global $CFG;
     //check are portfolios enabled
     if (!$CFG->enableportfolios) {
         return false;
     }
     //check at there's at least one enabled and visible portfolio plugin
     require_once $CFG->libdir . '/portfoliolib.php';
     $instances = portfolio_instances();
     if (empty($instances)) {
         return false;
     }
     return true;
 }
 /**
  * This function gets called by {@link settings_navigation::load_user_settings()} and actually works out
  * what can be shown/done
  *
  * @param int $courseid The current course' id
  * @param int $userid The user id to load for
  * @param string $gstitle The string to pass to get_string for the branch title
  * @return navigation_node|false
  */
 protected function generate_user_settings($courseid, $userid, $gstitle = 'usercurrentsettings')
 {
     global $DB, $CFG, $USER, $SITE;
     if ($courseid != $SITE->id) {
         if (!empty($this->page->course->id) && $this->page->course->id == $courseid) {
             $course = $this->page->course;
         } else {
             $select = context_helper::get_preload_record_columns_sql('ctx');
             $sql = "SELECT c.*, {$select}\n                          FROM {course} c\n                          JOIN {context} ctx ON c.id = ctx.instanceid\n                         WHERE c.id = :courseid AND ctx.contextlevel = :contextlevel";
             $params = array('courseid' => $courseid, 'contextlevel' => CONTEXT_COURSE);
             $course = $DB->get_record_sql($sql, $params, MUST_EXIST);
             context_helper::preload_from_record($course);
         }
     } else {
         $course = $SITE;
     }
     $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
     // Course context
     $systemcontext = get_system_context();
     $currentuser = $USER->id == $userid;
     if ($currentuser) {
         $user = $USER;
         $usercontext = get_context_instance(CONTEXT_USER, $user->id);
         // User context
     } else {
         $select = context_helper::get_preload_record_columns_sql('ctx');
         $sql = "SELECT u.*, {$select}\n                      FROM {user} u\n                      JOIN {context} ctx ON u.id = ctx.instanceid\n                     WHERE u.id = :userid AND ctx.contextlevel = :contextlevel";
         $params = array('userid' => $userid, 'contextlevel' => CONTEXT_USER);
         $user = $DB->get_record_sql($sql, $params, IGNORE_MISSING);
         if (!$user) {
             return false;
         }
         context_helper::preload_from_record($user);
         // Check that the user can view the profile
         $usercontext = get_context_instance(CONTEXT_USER, $user->id);
         // User context
         $canviewuser = has_capability('moodle/user:viewdetails', $usercontext);
         if ($course->id == $SITE->id) {
             if ($CFG->forceloginforprofiles && !has_coursecontact_role($user->id) && !$canviewuser) {
                 // Reduce possibility of "browsing" userbase at site level
                 // Teachers can browse and be browsed at site level. If not forceloginforprofiles, allow access (bug #4366)
                 return false;
             }
         } else {
             $canviewusercourse = has_capability('moodle/user:viewdetails', $coursecontext);
             $canaccessallgroups = has_capability('moodle/site:accessallgroups', $coursecontext);
             if (!$canviewusercourse && !$canviewuser || !can_access_course($course, $user->id)) {
                 return false;
             }
             if (!$canaccessallgroups && groups_get_course_groupmode($course) == SEPARATEGROUPS) {
                 // If groups are in use, make sure we can see that group
                 return false;
             }
         }
     }
     $fullname = fullname($user, has_capability('moodle/site:viewfullnames', $this->page->context));
     $key = $gstitle;
     if ($gstitle != 'usercurrentsettings') {
         $key .= $userid;
     }
     // Add a user setting branch
     $usersetting = $this->add(get_string($gstitle, 'moodle', $fullname), null, self::TYPE_CONTAINER, null, $key);
     $usersetting->id = 'usersettings';
     if ($this->page->context->contextlevel == CONTEXT_USER && $this->page->context->instanceid == $user->id) {
         // Automatically start by making it active
         $usersetting->make_active();
     }
     // Check if the user has been deleted
     if ($user->deleted) {
         if (!has_capability('moodle/user:update', $coursecontext)) {
             // We can't edit the user so just show the user deleted message
             $usersetting->add(get_string('userdeleted'), null, self::TYPE_SETTING);
         } else {
             // We can edit the user so show the user deleted message and link it to the profile
             if ($course->id == $SITE->id) {
                 $profileurl = new moodle_url('/user/profile.php', array('id' => $user->id));
             } else {
                 $profileurl = new moodle_url('/user/view.php', array('id' => $user->id, 'course' => $course->id));
             }
             $usersetting->add(get_string('userdeleted'), $profileurl, self::TYPE_SETTING);
         }
         return true;
     }
     $userauthplugin = false;
     if (!empty($user->auth)) {
         $userauthplugin = get_auth_plugin($user->auth);
     }
     // Add the profile edit link
     if (isloggedin() && !isguestuser($user) && !is_mnet_remote_user($user)) {
         if (($currentuser || is_siteadmin($USER) || !is_siteadmin($user)) && has_capability('moodle/user:update', $systemcontext)) {
             $url = new moodle_url('/user/editadvanced.php', array('id' => $user->id, 'course' => $course->id));
             $usersetting->add(get_string('editmyprofile'), $url, self::TYPE_SETTING);
         } else {
             if (has_capability('moodle/user:editprofile', $usercontext) && !is_siteadmin($user) || $currentuser && has_capability('moodle/user:editownprofile', $systemcontext)) {
                 if ($userauthplugin && $userauthplugin->can_edit_profile()) {
                     $url = $userauthplugin->edit_profile_url();
                     if (empty($url)) {
                         $url = new moodle_url('/user/edit.php', array('id' => $user->id, 'course' => $course->id));
                     }
                     $usersetting->add(get_string('editmyprofile'), $url, self::TYPE_SETTING);
                 }
             }
         }
     }
     // Change password link
     if ($userauthplugin && $currentuser && !session_is_loggedinas() && !isguestuser() && has_capability('moodle/user:changeownpassword', $systemcontext) && $userauthplugin->can_change_password()) {
         $passwordchangeurl = $userauthplugin->change_password_url();
         if (empty($passwordchangeurl)) {
             $passwordchangeurl = new moodle_url('/login/change_password.php', array('id' => $course->id));
         }
         $usersetting->add(get_string("changepassword"), $passwordchangeurl, self::TYPE_SETTING);
     }
     // View the roles settings
     if (has_any_capability(array('moodle/role:assign', 'moodle/role:safeoverride', 'moodle/role:override', 'moodle/role:manage'), $usercontext)) {
         $roles = $usersetting->add(get_string('roles'), null, self::TYPE_SETTING);
         $url = new moodle_url('/admin/roles/usersroles.php', array('userid' => $user->id, 'courseid' => $course->id));
         $roles->add(get_string('thisusersroles', 'role'), $url, self::TYPE_SETTING);
         $assignableroles = get_assignable_roles($usercontext, ROLENAME_BOTH);
         if (!empty($assignableroles)) {
             $url = new moodle_url('/admin/roles/assign.php', array('contextid' => $usercontext->id, 'userid' => $user->id, 'courseid' => $course->id));
             $roles->add(get_string('assignrolesrelativetothisuser', 'role'), $url, self::TYPE_SETTING);
         }
         if (has_capability('moodle/role:review', $usercontext) || count(get_overridable_roles($usercontext, ROLENAME_BOTH)) > 0) {
             $url = new moodle_url('/admin/roles/permissions.php', array('contextid' => $usercontext->id, 'userid' => $user->id, 'courseid' => $course->id));
             $roles->add(get_string('permissions', 'role'), $url, self::TYPE_SETTING);
         }
         $url = new moodle_url('/admin/roles/check.php', array('contextid' => $usercontext->id, 'userid' => $user->id, 'courseid' => $course->id));
         $roles->add(get_string('checkpermissions', 'role'), $url, self::TYPE_SETTING);
     }
     // Portfolio
     if ($currentuser && !empty($CFG->enableportfolios) && has_capability('moodle/portfolio:export', $systemcontext)) {
         require_once $CFG->libdir . '/portfoliolib.php';
         if (portfolio_instances(true, false)) {
             $portfolio = $usersetting->add(get_string('portfolios', 'portfolio'), null, self::TYPE_SETTING);
             $url = new moodle_url('/user/portfolio.php', array('courseid' => $course->id));
             $portfolio->add(get_string('configure', 'portfolio'), $url, self::TYPE_SETTING);
             $url = new moodle_url('/user/portfoliologs.php', array('courseid' => $course->id));
             $portfolio->add(get_string('logs', 'portfolio'), $url, self::TYPE_SETTING);
         }
     }
     $enablemanagetokens = false;
     if (!empty($CFG->enablerssfeeds)) {
         $enablemanagetokens = true;
     } else {
         if (!is_siteadmin($USER->id) && !empty($CFG->enablewebservices) && has_capability('moodle/webservice:createtoken', get_system_context())) {
             $enablemanagetokens = true;
         }
     }
     // Security keys
     if ($currentuser && $enablemanagetokens) {
         $url = new moodle_url('/user/managetoken.php', array('sesskey' => sesskey()));
         $usersetting->add(get_string('securitykeys', 'webservice'), $url, self::TYPE_SETTING);
     }
     // Repository
     if (!$currentuser && $usercontext->contextlevel == CONTEXT_USER) {
         if (!$this->cache->cached('contexthasrepos' . $usercontext->id)) {
             require_once $CFG->dirroot . '/repository/lib.php';
             $editabletypes = repository::get_editable_types($usercontext);
             $haseditabletypes = !empty($editabletypes);
             unset($editabletypes);
             $this->cache->set('contexthasrepos' . $usercontext->id, $haseditabletypes);
         } else {
             $haseditabletypes = $this->cache->{'contexthasrepos' . $usercontext->id};
         }
         if ($haseditabletypes) {
             $url = new moodle_url('/repository/manage_instances.php', array('contextid' => $usercontext->id));
             $usersetting->add(get_string('repositories', 'repository'), $url, self::TYPE_SETTING);
         }
     }
     // Messaging
     if ($currentuser && has_capability('moodle/user:editownmessageprofile', $systemcontext) || !isguestuser($user) && has_capability('moodle/user:editmessageprofile', $usercontext) && !is_primary_admin($user->id)) {
         $url = new moodle_url('/message/edit.php', array('id' => $user->id));
         $usersetting->add(get_string('editmymessage', 'message'), $url, self::TYPE_SETTING);
     }
     // Blogs
     if ($currentuser && !empty($CFG->bloglevel)) {
         $blog = $usersetting->add(get_string('blogs', 'blog'), null, navigation_node::TYPE_CONTAINER, null, 'blogs');
         $blog->add(get_string('preferences', 'blog'), new moodle_url('/blog/preferences.php'), navigation_node::TYPE_SETTING);
         if (!empty($CFG->useexternalblogs) && $CFG->maxexternalblogsperuser > 0 && has_capability('moodle/blog:manageexternal', get_context_instance(CONTEXT_SYSTEM))) {
             $blog->add(get_string('externalblogs', 'blog'), new moodle_url('/blog/external_blogs.php'), navigation_node::TYPE_SETTING);
             $blog->add(get_string('addnewexternalblog', 'blog'), new moodle_url('/blog/external_blog_edit.php'), navigation_node::TYPE_SETTING);
         }
     }
     // Login as ...
     if (!$user->deleted and !$currentuser && !session_is_loggedinas() && has_capability('moodle/user:loginas', $coursecontext) && !is_siteadmin($user->id)) {
         $url = new moodle_url('/course/loginas.php', array('id' => $course->id, 'user' => $user->id, 'sesskey' => sesskey()));
         $usersetting->add(get_string('loginas'), $url, self::TYPE_SETTING);
     }
     return $usersetting;
 }
Example #4
0
 $temp = new admin_settingpage('manageportfolios', get_string('manageportfolios', 'portfolio'));
 $temp->add(new admin_setting_heading('manageportfolios', get_string('activeportfolios', 'portfolio'), ''));
 $temp->add(new admin_setting_manageportfolio());
 $temp->add(new admin_setting_heading('manageportfolioscommon', get_string('commonsettings', 'admin'), get_string('commonsettingsdesc', 'portfolio')));
 $fileinfo = portfolio_filesize_info();
 // make sure this is defined in one place since its used inside portfolio too to detect insane settings
 $fileoptions = $fileinfo['options'];
 $temp->add(new admin_setting_configselect('portfolio_moderate_filesize_threshold', get_string('moderatefilesizethreshold', 'portfolio'), get_string('moderatefilesizethresholddesc', 'portfolio'), $fileinfo['moderate'], $fileoptions));
 $temp->add(new admin_setting_configselect('portfolio_high_filesize_threshold', get_string('highfilesizethreshold', 'portfolio'), get_string('highfilesizethresholddesc', 'portfolio'), $fileinfo['high'], $fileoptions));
 $temp->add(new admin_setting_configtext('portfolio_moderate_db_threshold', get_string('moderatedbsizethreshold', 'portfolio'), get_string('moderatedbsizethresholddesc', 'portfolio'), 20, PARAM_INTEGER, 3));
 $temp->add(new admin_setting_configtext('portfolio_high_db_threshold', get_string('highdbsizethreshold', 'portfolio'), get_string('highdbsizethresholddesc', 'portfolio'), 50, PARAM_INTEGER, 3));
 $ADMIN->add('portfoliosettings', $temp);
 $ADMIN->add('portfoliosettings', new admin_externalpage('portfolionew', get_string('addnewportfolio', 'portfolio'), $url, 'moodle/site:config', true), '', $url);
 $ADMIN->add('portfoliosettings', new admin_externalpage('portfoliodelete', get_string('deleteportfolio', 'portfolio'), $url, 'moodle/site:config', true), '', $url);
 $ADMIN->add('portfoliosettings', new admin_externalpage('portfoliocontroller', get_string('manageportfolios', 'portfolio'), $url, 'moodle/site:config', true), '', $url);
 foreach (portfolio_instances(false, false) as $portfolio) {
     require_once $CFG->dirroot . '/portfolio/type/' . $portfolio->get('plugin') . '/lib.php';
     $classname = 'portfolio_plugin_' . $portfolio->get('plugin');
     $ADMIN->add('portfoliosettings', new admin_externalpage('portfoliosettings' . $portfolio->get('id'), $portfolio->get('name'), $url . '?edit=' . $portfolio->get('id'), 'moodle/site:config', !$portfolio->get('visible')), $portfolio->get('name'), $url . ' ?edit=' . $portfolio->get('id'));
 }
 // repository setting
 require_once "{$CFG->dirroot}/repository/lib.php";
 $catname = get_string('repositories', 'repository');
 $managerepo = get_string('manage', 'repository');
 $url = $CFG->wwwroot . '/' . $CFG->admin . '/repository.php';
 $ADMIN->add('modules', new admin_category('repositorysettings', $catname));
 $temp = new admin_settingpage('managerepositories', $managerepo);
 $temp->add(new admin_setting_heading('managerepositories', get_string('activerepository', 'repository'), ''));
 $temp->add(new admin_setting_managerepository());
 $temp->add(new admin_setting_heading('managerepositoriescommonheading', get_string('commonsettings', 'admin'), ''));
 $temp->add(new admin_setting_configtext('repositorycacheexpire', get_string('cacheexpire', 'repository'), get_string('configcacheexpire', 'repository'), 120));
Example #5
0
 /**
  * Searches page for the specified string.
  * @param string $query The string to search for
  * @return bool True if it is found on this page
  */
 public function search($query)
 {
     global $CFG;
     if ($result = parent::search($query)) {
         return $result;
     }
     $found = false;
     $textlib = textlib_get_instance();
     $portfolios = get_plugin_list('portfolio');
     foreach ($portfolios as $p => $dir) {
         if (strpos($p, $query) !== false) {
             $found = true;
             break;
         }
     }
     if (!$found) {
         foreach (portfolio_instances(false, false) as $instance) {
             $title = $instance->get('name');
             if (strpos($textlib->strtolower($title), $query) !== false) {
                 $found = true;
                 break;
             }
         }
     }
     if ($found) {
         $result = new stdClass();
         $result->page = $this;
         $result->settings = array();
         return array($this->name => $result);
     } else {
         return array();
     }
 }
 /**
  * constructor. either pass the options here or set them using the helper methods.
  * generally the code will be clearer if you use the helper methods.
  *
  * @param array $options keyed array of options:
  *                       key 'callbackclass': name of the caller class (eg forum_portfolio_caller')
  *                       key 'callbackargs': the array of callback arguments your caller class wants passed to it in the constructor
  *                       key 'callbackfile': the file containing the class definition of your caller class.
  *                       See set_callback_options for more information on these three.
  *                       key 'formats': an array of PORTFOLIO_FORMATS this caller will support
  *                       See set_formats or set_format_by_file for more information on this.
  */
 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;
     }
     $constructoroptions = array('callbackclass', 'callbackargs', 'callbackfile', 'formats');
     foreach ((array) $options as $key => $value) {
         if (!in_array($key, $constructoroptions)) {
             throw new portfolio_button_exception('invalidbuttonproperty', 'portfolio', $key);
         }
         $this->{$key} = $value;
     }
 }
Example #7
0
 /**
  * constructor. either pass the options here or set them using the helper methods.
  * generally the code will be clearer if you use the helper methods.
  *
  * @param array $options keyed array of options:
  *                       key 'callbackclass': name of the caller class (eg forum_portfolio_caller')
  *                       key 'callbackargs': the array of callback arguments your caller class wants passed to it in the constructor
  *                       key 'callbackfile': the file containing the class definition of your caller class.
  *                       See set_callback_options for more information on these three.
  *                       key 'formats': an array of PORTFOLIO_FORMATS this caller will support
  *                       See set_formats or set_format_by_file for more information on this.
  */
 public function __construct($options = null)
 {
     global $SESSION, $CFG;
     $this->instances = portfolio_instances();
     if (empty($options)) {
         return true;
     }
     $constructoroptions = array('callbackclass', 'callbackargs', 'callbackfile', 'formats');
     foreach ((array) $options as $key => $value) {
         if (!in_array($key, $constructoroptions)) {
             throw new portfolio_button_exception('invalidbuttonproperty', 'portfolio', $key);
         }
         $this->{$key} = $value;
     }
 }
Example #8
0
 /**
  * constructor. either pass the options here or set them using the helper methods.
  * generally the code will be clearer if you use the helper methods.
  *
  * @param array $options keyed array of options:
  *                       key 'callbackclass': name of the caller class (eg forum_portfolio_caller')
  *                       key 'callbackargs': the array of callback arguments your caller class wants passed to it in the constructor
  *                       key 'callbackfile': the file containing the class definition of your caller class.
  *                       See set_callback_options for more information on these three.
  *                       key 'formats': an array of PORTFOLIO_FORMATS this caller will support
  *                       See set_formats for more information on this.
  */
 public function __construct($options = null)
 {
     global $SESSION, $CFG;
     if (isset($SESSION->portfolioexport)) {
         $this->alreadyexporting = true;
         return;
     }
     $this->instances = portfolio_instances();
     if (empty($options)) {
         return true;
     }
     foreach ((array) $options as $key => $value) {
         if (!in_array($key, $constructoroptions)) {
             throw new portfolio_button_exception('invalidbuttonproperty', 'portfolio', $key);
         }
         $this->{$key} = $value;
     }
 }
            echo $OUTPUT->heading(get_string('configplugin', 'portfolio'));
            echo $OUTPUT->box_start();
            $mform->display();
            echo $OUTPUT->box_end();
            $display = false;
        }
    }
} else {
    if (!empty($hide)) {
        $instance = portfolio_instance($hide);
        $instance->set_user_config(array('visible' => !$instance->get_user_config('visible', $USER->id)), $USER->id);
        core_plugin_manager::reset_caches();
    }
}
if ($display) {
    echo $OUTPUT->heading($configstr);
    echo $OUTPUT->box_start();
    if (!($instances = portfolio_instances(true, false))) {
        print_error('noinstances', 'portfolio', $CFG->wwwroot . '/user/view.php');
    }
    $table = new html_table();
    $table->head = array($namestr, $pluginstr, '');
    $table->data = array();
    foreach ($instances as $i) {
        $visible = $i->get_user_config('visible', $USER->id);
        $table->data[] = array($i->get('name'), $i->get('plugin'), ($i->has_user_config() ? '<a href="' . $baseurl . '?config=' . $i->get('id') . '"><img src="' . $OUTPUT->pix_url('t/edit') . '" alt="' . get_string('configure') . '" /></a>' : '') . ' <a href="' . $baseurl . '?hide=' . $i->get('id') . '"><img src="' . $OUTPUT->pix_url('t/' . ($visible ? 'hide' : 'show')) . '" alt="' . get_string($visible ? 'hide' : 'show') . '" /></a><br />');
    }
    echo html_writer::table($table);
    echo $OUTPUT->box_end();
}
echo $OUTPUT->footer();
Example #10
0
 /**
  * Builds XHTML to display the control
  *
  * @param string $data Unused
  * @param string $query
  * @return string XHTML to display the control
  */
 public function output_html($data, $query = '')
 {
     global $CFG, $OUTPUT;
     $output = $OUTPUT->box_start('generalbox');
     $namestr = get_string('name');
     $pluginstr = get_string('plugin', 'portfolio');
     $plugins = get_plugin_list('portfolio');
     $plugins = array_keys($plugins);
     $instances = portfolio_instances(false, false);
     $alreadyplugins = array();
     // to avoid notifications being sent out while admin is editing the page
     define('ADMIN_EDITING_PORTFOLIO', true);
     $insane = portfolio_plugin_sanity_check($plugins);
     $insaneinstances = portfolio_instance_sanity_check($instances);
     $output .= portfolio_report_insane($insane, null, true);
     $output .= portfolio_report_insane($insaneinstances, $instances, true);
     $table = new html_table();
     $table->head = array($namestr, $pluginstr, '');
     $table->data = array();
     foreach ($instances as $i) {
         $row = '';
         $row .= '<a href="' . $this->baseurl . '&edit=' . $i->get('id') . '"><img src="' . $OUTPUT->old_icon_url('t/edit') . '" alt="' . get_string('edit') . '" /></a>' . "\n";
         $row .= '<a href="' . $this->baseurl . '&delete=' . $i->get('id') . '"><img src="' . $OUTPUT->old_icon_url('t/delete') . '" alt="' . get_string('delete') . '" /></a>' . "\n";
         if (array_key_exists($i->get('plugin'), $insane) || array_key_exists($i->get('id'), $insaneinstances)) {
             $row .= '<img src="' . $OUTPUT->old_icon_url('t/show') . '" alt="' . get_string('hidden', 'portfolio') . '" />' . "\n";
         } else {
             $row .= ' <a href="' . $this->baseurl . '&hide=' . $i->get('id') . '"><img src="' . $OUTPUT->old_icon_url('t/' . ($i->get('visible') ? 'hide' : 'show')) . '" alt="' . get_string($i->get('visible') ? 'hide' : 'show') . '" /></a>' . "\n";
         }
         $table->data[] = array($i->get('name'), $i->get_name() . ' (' . $i->get('plugin') . ')', $row);
         if (!in_array($i->get('plugin'), $alreadyplugins)) {
             $alreadyplugins[] = $i->get('plugin');
         }
     }
     $output .= $OUTPUT->table($table);
     $instancehtml = '<br /><br />' . get_string('addnewportfolio', 'portfolio') . ': <br /><br />';
     $addable = 0;
     foreach ($plugins as $p) {
         if (!portfolio_static_function($p, 'allows_multiple') && in_array($p, $alreadyplugins)) {
             continue;
         }
         if (array_key_exists($p, $insane)) {
             continue;
         }
         $instancehtml .= '<a href="' . $this->baseurl . '&amp;new=' . $p . '">' . portfolio_static_function($p, 'get_name') . ' (' . s($p) . ')' . '</a><br />' . "\n";
         $addable++;
     }
     if ($addable) {
         $output .= $instancehtml;
     }
     $output .= $OUTPUT->box_end();
     return highlight($query, $output);
 }
Example #11
0
            $secondrow[] = new tabobject('usersroles', $CFG->wwwroot . '/' . $CFG->admin . '/roles/usersroles.php?userid=' . $user->id . '&amp;courseid=' . $course->id, get_string('thisusersroles', 'role'));
            if (!empty($assignableroles) || $currenttab == 'assign') {
                $secondrow[] = new tabobject('assign', $CFG->wwwroot . '/' . $CFG->admin . '/roles/assign.php?contextid=' . $usercontext->id . '&amp;userid=' . $user->id . '&amp;courseid=' . $course->id, get_string('assignrolesrelativetothisuser', 'role'), '', true);
            }
            if (!empty($overridableroles) || $currenttab == 'override') {
                $secondrow[] = new tabobject('override', $CFG->wwwroot . '/' . $CFG->admin . '/roles/override.php?contextid=' . $usercontext->id . '&amp;userid=' . $user->id . '&amp;courseid=' . $course->id, get_string('overridepermissions', 'role'), '', true);
            }
            if (has_any_capability(array('moodle/role:assign', 'moodle/role:safeoverride', 'moodle/role:override', 'moodle/role:assign'), $usercontext)) {
                $secondrow[] = new tabobject('check', $CFG->wwwroot . '/' . $CFG->admin . '/roles/check.php?contextid=' . $usercontext->id . '&amp;userid=' . $user->id . '&amp;courseid=' . $course->id, get_string('checkpermissions', 'role'));
            }
        }
    }
}
if (!empty($user) and empty($userindexpage) && $user->id == $USER->id && !empty($CFG->enableportfolios) && has_capability('moodle/portfolio:export', get_system_context())) {
    /// Portfolio tab
    if (portfolio_instances(true, false)) {
        $toprow[] = new tabobject('portfolios', $CFG->wwwroot . '/user/portfolio.php', get_string('portfolios', 'portfolio'));
        if (in_array($currenttab, array('portfolioconf', 'portfoliologs'))) {
            $inactive = array('portfolios');
            $activetwo = array('portfolios');
            $secondrow = array();
            $secondrow[] = new tabobject('portfolioconf', $CFG->wwwroot . '/user/portfolio.php', get_string('configure', 'portfolio'));
            $secondrow[] = new tabobject('portfoliologs', $CFG->wwwroot . '/user/portfoliologs.php', get_string('logs', 'portfolio'));
        }
    }
}
// Repository Tab
if (!empty($user) and $user->id == $USER->id) {
    require_once $CFG->dirroot . '/repository/lib.php';
    $usercontext = get_context_instance(CONTEXT_USER, $user->id);
    $editabletypes = repository::get_editable_types($usercontext);
Example #12
0
    portfolio_export_pagesetup($PAGE, $caller);
    // this calls require_login($course) if it can..
    // finally! set up the exporter object with the portfolio instance, and caller information elements
    $exporter = new portfolio_exporter($instance, $caller, $callbackcomponent);
    // set the export-specific variables, and save.
    $exporter->set('user', $USER);
    $exporter->save();
}
if (!$exporter->get('instance')) {
    // we've just arrived but have no instance
    // in this case the exporter object and the caller object have been set up above
    // so just make a little form to select the portfolio plugin instance,
    // which is the last thing to do before starting the export.
    //
    // first check to make sure there is actually a point
    $options = portfolio_instance_select(portfolio_instances(), $exporter->get('caller')->supported_formats(), get_class($exporter->get('caller')), $exporter->get('caller')->get_mimetype(), 'instance', true, true);
    if (empty($options)) {
        throw new portfolio_export_exception($exporter, 'noavailableplugins', 'portfolio');
    } else {
        if (count($options) == 1) {
            // no point displaying a form, just redirect.
            $optionskeys = array_keys($options);
            $instance = array_shift($optionskeys);
            redirect($CFG->wwwroot . '/portfolio/add.php?id= ' . $exporter->get('id') . '&instance=' . $instance . '&sesskey=' . sesskey());
        }
    }
    // be very selective about not including this unless we really need to
    require_once $CFG->libdir . '/portfolio/forms.php';
    $mform = new portfolio_instance_select('', array('id' => $exporter->get('id'), 'caller' => $exporter->get('caller'), 'options' => $options));
    if ($mform->is_cancelled()) {
        $exporter->cancel_request();
Example #13
0
     }
 } else {
     // If page is loaded directly
     echo $OUTPUT->header();
     echo $OUTPUT->heading(get_string('manageportfolios', 'portfolio'));
     // Get strings that are used
     $strshow = get_string('on', 'portfolio');
     $strhide = get_string('off', 'portfolio');
     $strdelete = get_string('disabledinstance', 'portfolio');
     $strsettings = get_string('settings');
     $actionchoicesforexisting = array('show' => $strshow, 'hide' => $strhide, 'delete' => $strdelete);
     $actionchoicesfornew = array('newon' => $strshow, 'newoff' => $strhide, 'delete' => $strdelete);
     $output = $OUTPUT->box_start('generalbox');
     $plugins = core_component::get_plugin_list('portfolio');
     $plugins = array_keys($plugins);
     $instances = portfolio_instances(false, false);
     $usedplugins = array();
     // to avoid notifications being sent out while admin is editing the page
     define('ADMIN_EDITING_PORTFOLIO', true);
     $insane = portfolio_plugin_sanity_check($plugins);
     $insaneinstances = portfolio_instance_sanity_check($instances);
     $table = new html_table();
     $table->head = array(get_string('plugin', 'portfolio'), '', '');
     $table->data = array();
     foreach ($instances as $i) {
         $settings = '<a href="' . $sesskeyurl . '&amp;action=edit&amp;pf=' . $i->get('id') . '">' . $strsettings . '</a>';
         // Set some commonly used variables
         $pluginid = $i->get('id');
         $plugin = $i->get('plugin');
         $pluginname = $i->get('name');
         // Check if the instance is misconfigured
Example #14
0
 function definition()
 {
     $this->caller = $this->_customdata['caller'];
     $options = portfolio_instance_select(portfolio_instances(), $this->caller->supported_formats($this->caller), get_class($this->caller), 'instance', true, true);
     if (empty($options)) {
         debugging('noavailableplugins', 'portfolio');
         return false;
     }
     $mform =& $this->_form;
     $mform->addElement('select', 'instance', get_string('selectplugin', 'portfolio'), $options);
     $this->add_action_buttons(true, get_string('next'));
 }
Example #15
0
    $exporter = new portfolio_exporter($instance, $caller, $callbackcomponent);

    // set the export-specific variables, and save.
    $exporter->set('user', $USER);
    $exporter->save();
}

if (!$exporter->get('instance')) {
    // we've just arrived but have no instance
    // in this case the exporter object and the caller object have been set up above
    // so just make a little form to select the portfolio plugin instance,
    // which is the last thing to do before starting the export.
    //
    // first check to make sure there is actually a point
    $options = portfolio_instance_select(
        portfolio_instances(),
        $exporter->get('caller')->supported_formats(),
        get_class($exporter->get('caller')),
        $exporter->get('caller')->get_mimetype(),
        'instance',
        true,
        true
    );
    if (empty($options)) {
        throw new portfolio_export_exception($exporter, 'noavailableplugins', 'portfolio');
    } else if (count($options) == 1) {
        // no point displaying a form, just redirect.
        $optionskeys = array_keys($options);
        $instance = array_shift($optionskeys);
        redirect($CFG->wwwroot . '/portfolio/add.php?id= ' . $exporter->get('id') . '&instance=' . $instance . '&sesskey=' . sesskey());
    }