a49eccb217a2e299dbe54257d4eff8ce38f7a9ca
[moodle.git] / tag / coursetags_more.php
1 <?php
2 /**
3  * coursetags_more.php
4  * a full display of tags allowing some filtering and reordering
5  * @author j.beedell@open.ac.uk June07
6  */
8 require_once('../config.php');
9 require_once($CFG->dirroot.'/tag/coursetagslib.php');
10 require_once($CFG->dirroot.'/tag/lib.php');
12 $sort = optional_param('sort', 'alpha', PARAM_TEXT); //alpha, date or popularity
13 $show = optional_param('show', 'all', PARAM_TEXT); //all, my, official, community or course
14 $courseid = optional_param('courseid', 0, PARAM_INT);
16 $url = new moodle_url($CFG->wwwroot.'/tag/coursetags_more.php');
17 if ($sort !== 'alpha') {
18     $url->param('sort', $sort);
19 }
20 if ($show !== 'all') {
21     $url->param('show', $show);
22 }
23 if ($courseid !== 0) {
24     $url->param('courseid', $courseid);
25 }
26 $PAGE->set_url($url);
28 if (empty($CFG->usetags)) {
29     print_error('tagsaredisabled', 'tag');
30 }
32 // Some things require logging in
33 if ($CFG->forcelogin or $show == 'my') {
34     require_login();
35 }
37 // Permissions
38 $sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID);
39 $isguest = has_capability('moodle/legacy:guest', $sitecontext, $USER->id, false);
40 $loggedin = isloggedin() && !$isguest;
42 // Course check
43 if ($courseid) {
44     if (!($course = $DB->get_record('course', array('id'=>$courseid)))) {
45         $courseid = 0;
46     }
47     if ($courseid == SITEID) $courseid = 0;
48 }
50 // Language strings
51 $tagslang = 'block_tags';
52 $title = get_string('moretitle', $tagslang);
53 $link1 = get_string('moreshow', $tagslang);
54 $link2 = get_string('moreorder', $tagslang);
55 $showalltags = get_string('moreshowalltags', $tagslang);
56 $showofficialtags = get_string('moreshowofficialtags', $tagslang);
57 $showmytags = get_string('moreshowmytags', $tagslang);
58 $showcommtags = get_string('moreshowcommtags', $tagslang);
59 $orderalpha = get_string('moreorderalpha', $tagslang);
60 $orderdate = get_string('moreorderdate', $tagslang);
61 $orderpop = get_string('moreorderpop', $tagslang);
62 $welcome = get_string('morewelcome', $tagslang);
64 // The title and breadcrumb
65 if ($courseid) {
66     $PAGE->navbar->add(format_string($course->shortname), new moodle_url($CFG->wwwroot.'/course/view.php', array('id'=>$courseid)));
67 }
68 $PAGE->navbar->add($title);
69 $PAGE->set_title($title);
70 echo $OUTPUT->header();
71 echo $OUTPUT->heading($title, 'centre');
73 // Prepare data for tags
74 $courselink = '';
75 if ($courseid) { $courselink = '&amp;courseid='.$courseid; }
76 $myurl = $CFG->wwwroot.'/tag/coursetags_more.php';
77 $myurl2 = $CFG->wwwroot.'/tag/coursetags_more.php?show='.$show;
79 // Course tags
80 if ($show == 'course' and $courseid) {
82     if ($sort == 'popularity') {
83         $tags = coursetag_print_cloud(coursetag_get_tags($courseid, 0, '', 0, 'popularity'), true, 200, 90);
84     } else if ($sort == 'date') {
85         $tags = coursetag_print_cloud(coursetag_get_tags($courseid, 0, '', 0, 'timemodified'), true, 200, 90);
86     } else {
87         $tags = coursetag_print_cloud(coursetag_get_tags($courseid, 0, '', 0, 'name'), true, 200, 90);
88     }
90 // My tags
91 } else if ($show == 'my' and $loggedin) {
93     if ($sort == 'popularity') {
94         $tags = coursetag_print_cloud(coursetag_get_tags(0, $USER->id, 'default', 0, 'popularity'), true, 200, 90);
95     } else if ($sort == 'date') {
96         $tags = coursetag_print_cloud(coursetag_get_tags(0, $USER->id, 'default', 0, 'timemodified'), true, 200, 90);
97     } else {
98         $tags = coursetag_print_cloud(coursetag_get_tags(0, $USER->id, 'default', 0, 'name'), true, 200, 90);
99     }
101 // Official course tags
102 } else if ($show == 'official') {
104     if ($sort == 'popularity') {
105         $tags = coursetag_print_cloud(coursetag_get_tags(0, 0, 'official', 0, 'popularity'), true, 200, 90);
106     } else if ($sort == 'date') {
107         $tags = coursetag_print_cloud(coursetag_get_tags(0, 0, 'official', 0, 'timemodified'), true, 200, 90);
108     } else {
109         $tags = coursetag_print_cloud(coursetag_get_tags(0, 0, 'official', 0, 'name'), true, 200, 90);
110     }
112 // Community (official and personal together) also called user tags
113 } else if ($show == 'community') {
115     if ($sort == 'popularity') {
116         $tags = coursetag_print_cloud(coursetag_get_tags(0, 0, 'default', 0, 'popularity'), true, 200, 90);
117     } else if ($sort == 'date') {
118         $tags = coursetag_print_cloud(coursetag_get_tags(0, 0, 'default', 0, 'timemodified'), true, 200, 90);
119     } else {
120         $tags = coursetag_print_cloud(coursetag_get_tags(0, 0, 'default', 0, 'name'), true, 200, 90);
121     }
123 // All tags for courses and blogs and any thing else tagged - the fallback default ($show == all)
124 } else {
126     $subtitle = $showalltags;
127     if ($sort == 'popularity') {
128         $tags = coursetag_print_cloud(coursetag_get_all_tags('popularity'), true, 200, 90);
129     } else if ($sort == 'date') {
130         $tags = coursetag_print_cloud(coursetag_get_all_tags('timemodified'), true, 200, 90);
131     } else {
132         $tags = coursetag_print_cloud(coursetag_get_all_tags('name'), true, 200, 90);
133     }
137 // Prepare the links for the show and order lines
138 if ($show == 'all') {
139     $link1 .= '<b>'.$showalltags.'</b>';
140 } else {
141     $link1 .= '<a href="'.$myurl.'?show=all'.$courselink.'">'.$showalltags.'</a>';
143 //if ($show == 'official') { //add back in if you start to use official course tags
144 //    $link1 .= ' | <b>'.$showofficialtags.'</b>';
145 //} else {
146 //    $link1 .= ' | <a href="'.$myurl.'?show=official'.$courselink.'">'.$showofficialtags.'</a>';
147 //}
148 if ($show == 'community') {
149     $link1 .= ' | <b>'.$showcommtags.'</b>';
150 } else {
151     $link1 .= ' | <a href="'.$myurl.'?show=community'.$courselink.'">'.$showcommtags.'</a>';
153 if ($loggedin) {
154     if ($show == 'my') {
155         $link1 .= ' | <b>'.$showmytags.'</b>';
156     } else {
157         $link1 .= ' | <a href="'.$myurl.'?show=my'.$courselink.'">'.$showmytags.'</a>';
158     }
160 if ($courseid) {
161     if ($show == 'course') {
162         $link1 .= ' | <b>'.get_string('moreshowcoursetags', $tagslang, $course->fullname).'</b>';
163     } else {
164         $link1 .= ' | <a href="'.$myurl.'?show=course'.$courselink.'">'.get_string('moreshowcoursetags', $tagslang, $course->fullname).'</a>';
165     }
167 if ($sort == 'alpha') {
168     $link2 .= '<b>'.$orderalpha.'</b> | ';
169 } else {
170     $link2 .= '<a href="'.$myurl2.'&amp;sort=alpha'.$courselink.'">'.$orderalpha.'</a> | ';
172 if ($sort == 'popularity') {
173     $link2 .= '<b>'.$orderpop.'</b> | ';
174 } else {
175     $link2 .= '<a href="'.$myurl2.'&amp;sort=popularity'.$courselink.'">'.$orderpop.'</a> | ';
177 if ($sort == 'date') {
178     $link2 .= '<b>'.$orderdate.'</b>';
179 } else {
180     $link2 .= '<a href="'.$myurl2.'&amp;sort=date'.$courselink.'">'.$orderdate.'</a>';
183 // Prepare output
184 $fclass = '';
185 // make the tags larger when there are not so many
186 if (strlen($tags) < 10000) { $fclass = 'coursetag_more_large'; }
187 $outstr = '
188     <div class="coursetag_more_title">
189         <div style="padding-bottom:5px">'.$welcome.
190             $OUTPUT->help_icon(moodle_help_icon::make('usingtags', 'using tags', $tagslang)).'
191         </div>
192         <div class="coursetag_more_link">'.$link1.'</div>
193         <div class="coursetag_more_link">'.$link2.'</div>
194     </div>
195     <div class="coursetag_more_tags '.$fclass.'">'.
196         $tags.'
197     </div>';
198 echo $outstr;
200 echo $OUTPUT->footer();
201 ?>