/** * Outputs the content of the widget * * @param array $args * @param array $instance */ public function widget($args, $instance) { // outputs the content of the widget //Get args and output the title wp_register_style('moocview-widget-css', plugins_url('css/moocview-widget.css', __FILE__)); wp_enqueue_style('moocview-widget-css'); extract($args); echo $before_widget; $title = apply_filters('widget_title', $instance['title']); if ($title) { echo $before_title . $title . $after_title; } if ($instance['contenttype'] == '0') { $catlist = get_moodle_categories($this->moodle_ws_url, $this->moodle_site_token); foreach ($catlist as $category) { $langCourses = $category->coursecount == 1 ? __('course', 'moodle-courses-view') : __('courses', 'moodle-courses-view'); echo "<div class='category'><a href='{$this->moodle_site}{$this->moocview_category_view_path}?{$this->moocview_category_id_par}={$category->id}'>{$category->name}</a> <br/>({$category->coursecount} {$langCourses})</div>"; } } elseif ($instance['contenttype'] == '2') { $catcourses = get_moodle_categories_and_courses($this->moodle_ws_url, $this->moodle_site_token); foreach ($catcourses['courses'] as $cc) { $category = $cc['category']; echo "<div class='catcourses'>"; $langCourses = $category->coursecount == 1 ? __('course', 'moodle-courses-view') : __('courses', 'moodle-courses-view'); echo "<div class='cattitle'><a href='{$this->moodle_site}{$this->moocview_category_view_path}?{$this->moocview_category_id_par}={$category->id}'>{$category->name}</a> <br/>({$category->coursecount} {$langCourses})</div>"; if ($category->coursecount > 0) { echo "<ul class='courselist'>"; } $i = 0; foreach ($cc['courses'] as $c) { $i++; if ($i <= $instance['maxcatcourses'] || $instance['maxcatcourses'] + 1 == $category->coursecount) { echo "<li><a href='{$this->moodle_site}{$this->moocview_course_view_path}?{$this->moocview_course_id_par}={$c->id}'>{$c->fullname}</li>"; } else { echo "<li class='morelink'><a href='{$instance['morelinkurl']}?{$instance['categoryparam']}={$category->id}'>" . __('More ...', 'moodle-courses-view') . "</li>"; break; } } if ($category->coursecount > 0) { echo "</ul>"; } echo "</div>"; } } else { $courses = get_moodle_courses($this->moodle_ws_url, $this->moodle_site_token); $i = 0; echo "<div class='catcourses'>"; echo "<ul class='maincourselist'>"; foreach ($courses as $c) { $i++; if ($i <= $instance['maxcatcourses']) { echo "<li><a href='{$this->moodle_site}{$this->moocview_course_view_path}?{$this->moocview_course_id_par}={$c->id}'>{$c->fullname}</a></li>"; } else { echo "<li class='morelink'><a href='{$instance['morelinkurl']}'>" . __('More ...', 'moodle-courses-view') . "</li>"; break; } } echo "</ul></div>"; } }
function print_course_mapping_options($course_mapping, $config, $err) { if (isset($err['course_mapping_db'])) { foreach ($err['course_maping_db'] as $value) { echo '<tr><td colspan="4" style="color: red;text-align:center">'; echo $value; echo '</td></tr>'; } } if (array_key_exists('course_mapping', $err)) { echo '<tr><td colspan="4" style="color: red;text-align:center">'; if (!empty($err['course_mapping']['saml'])) { echo "<p>" . get_string("auth_saml_duplicated_saml_data", "auth_saml") . implode(', ', $err['course_mapping']['saml']) . "</p>"; } if (!empty($err['course_mapping']['lms'])) { echo get_string("auth_saml_duplicated_lms_data", "auth_saml") . implode(', ', $err['course_mapping']['lms']); } echo '</td></tr>'; } if (array_key_exists('missed_course_mapping', $err)) { echo '<tr><td colspan="4" style="color: red;text-align:center">'; echo get_string("auth_saml_missed_data", "auth_saml") . implode(', ', array_unique($err['missed_course_mapping'])); echo '</td></tr>'; } echo '<tr><td colspan="2" style="padding-left: 44px;">Moodle Course Id</td><td>SAML Course Id</td><td>SAML Course Period</td></tr>'; //if this is a GET (no errors) read the values from the database $new_courses_total = optional_param('new_courses_total', FALSE, PARAM_INT); $read_from_db_only = $new_courses_total === FALSE; $moodle_courses = get_moodle_courses(); foreach ($moodle_courses as $mcourse) { if (array_key_exists($mcourse, $course_mapping)) { $course_mapping_id = $course_mapping[$mcourse]['course_mapping_id']; $saml_course_id = $course_mapping[$mcourse]['saml_course_id']; $saml_course_period = $course_mapping[$mcourse]['saml_course_period']; $course_param = optional_param_array('course_' . $course_mapping_id, array(), PARAM_ALPHANUMEXT); echo '<tr ' . (isset($err['course_mapping']['lms']) && in_array($course_param[0], $err['course_mapping']['lms']) || isset($err['course_mapping']['saml']) && in_array($course_param[1] . '_' . $course_param[2], $err['course_mapping']['saml']) || isset($err['missed_course_mapping']) && array_key_exists($course_mapping_id, $err['missed_course_mapping']) ? 'style="background:red;"' : '') . '>'; echo '<td colspan="2"><input style="margin-right: 20px;" type="checkbox"'; echo 'name="course_mapping_id[]" value="' . $course_mapping_id . '">'; echo '<input type="hidden" name="update_courses_id[]" value="' . $course_mapping_id . '">'; echo '<select name="course_' . $course_mapping_id . '[]" >'; foreach ($moodle_courses as $mcourse2) { echo '<option value="' . $mcourse2 . '" ' . (!$read_from_db_only && $course_param[0] == $mcourse2 || $read_from_db_only && $mcourse2 == $mcourse ? 'selected="selected"' : '') . ' >' . $mcourse2 . '</option>'; } echo '</select></td>'; $course_name = $read_from_db_only ? $saml_course_id : $course_param[1]; $course_period = $read_from_db_only ? $saml_course_period : $course_param[2]; echo '<td><input type="text" name="course_' . $course_mapping_id . '[]" value="' . $course_name . '" /></td>'; echo '<td><input type="text" name="course_' . $course_mapping_id . '[]" value="' . $course_period . '" /></td>'; echo '</tr>'; } } //New mappings echo '<tr><td colspan="4"><hr /></td></tr>'; $i = 0; if ($read_from_db_only) { while ($i <= $new_courses_total) { $new_course_param = optional_param_array('new_course_' . $i, array(), PARAM_ALPHANUMEXT); echo '<tr ' . (empty($new_course_param[1]) && empty($new_course_param[2]) ? 'style="display:none;"' : (isset($err['course_mapping']['lms']) && in_array($new_course_param[0], $err['course_mapping']['lms']) || isset($err['course_mapping']['saml']) && in_array($new_course_param[1] . '_' . $new_course_param[2], $err['course_mapping']['saml']) ? 'style="background:red;"' : '')) . ' >'; echo '<td colspan="2" style="padding-left: 38px;"><select id="newcourse_select" name="new_course' . $i . '[]">'; foreach ($moodle_courses as $mcourse) { $is_selected = $new_course_param[0] === $mcourse; echo '<option value="' . $mcourse . '" ' . ($is_selected ? 'selected="selected"' : '') . ' >' . $mcourse . '</option>'; } echo '</select>'; echo '<input id="new_courses_total" type="hidden" name="new_courses_total" value="' . $i . '" /></td>'; echo '<td><input id="newcourse_saml_id" type="text" name="new_course' . $i . '[]" value="' . $new_course_param[1] . '" /></td>'; echo '<td><input id="newcourse_saml_period" type="text" name="new_course' . $i . '[]" value="' . $new_course_param[2] . '" /></td>'; echo '</tr>'; $i++; } } echo '<tr><td colspan="2" style="padding-left: 38px;"><select id="newcourse_select" name="new_course' . $i . '[]">'; foreach ($moodle_courses as $mcourse) { echo '<option value="' . $mcourse . '" >' . $mcourse . '</option>'; } echo '</select>'; echo '<input id="new_courses_total" type="hidden" name="new_courses_total" value="' . $i . '" /></td>'; echo '<td><input id="newcourse_saml_id" type="text" name="new_course' . $i . '[]" value="" /></td>'; echo '<td><input id="newcourse_saml_period" type="text" name="new_course' . $i . '[]" value="" />'; echo '<input type="button" name="new" value="+" onclick="addNewField(\'newcourses\',\'new_course\',\'course\')" /></td></tr>'; }
/** * Get categories with their courses from moodle site. * @param string $moodle_site the moodle site from where to get course categories * @param string $moodle_token the token of the moodle web service user * @param integer $catid the moodle category id * @return array an array ('courses', 'cids') containing in 'courses' for each category the corresponding courses and in 'cids' the list af all courses ids */ function get_moodle_categories_and_courses($moodle_site, $moodle_token, $catid = null) { $cats = get_moodle_categories($moodle_site, $moodle_token); $courses = get_moodle_courses($moodle_site, $moodle_token); $courseids = array(); foreach ($cats as $ca) { if (is_null($catid) || $ca->id == $catid) { $catsarr[$ca->id]['category'] = $ca; $catsarr[$ca->id]['courses'] = array(); } } foreach ($courses as $co) { if (key_exists('category', $catsarr[$co->categoryid])) { $catsarr[$co->categoryid]['courses'][] = $co; $courseids[] = $co->id; } } return array('courses' => $catsarr, 'cids' => $courseids); }