MDL-37085 Substitute get_print_section_cm_text() with cm_info functions
authorMarina Glancy <marina@moodle.com>
Tue, 11 Dec 2012 06:07:42 +0000 (14:07 +0800)
committerMarina Glancy <marina@moodle.com>
Mon, 14 Jan 2013 04:01:21 +0000 (15:01 +1100)
blocks/site_main_menu/block_site_main_menu.php
blocks/social_activities/block_social_activities.php
course/lib.php
lib/modinfolib.php

index d4374bc..03a5d4c 100644 (file)
@@ -41,8 +41,8 @@ class block_site_main_menu extends block_list {
                         continue;
                     }
 
-                    list($content, $instancename) =
-                            get_print_section_cm_text($cm, $course);
+                    $content = $cm->get_formatted_content(array('overflowdiv' => true, 'noclean' => true));
+                    $instancename = $cm->get_formatted_name();
 
                     if (!($url = $cm->get_url())) {
                         $this->content->items[] = $content;
@@ -111,8 +111,8 @@ class block_site_main_menu extends block_list {
                             '<img style="height:16px; width:80px; border:0px" src="'.$OUTPUT->pix_url('movehere') . '" alt="'.$strmovehere.'" /></a>';
                         $this->content->icons[] = '';
                     }
-                    list($content, $instancename) =
-                            get_print_section_cm_text($modinfo->cms[$modnumber], $course);
+                    $content = $mod->get_formatted_content(array('overflowdiv' => true, 'noclean' => true));
+                    $instancename = $mod->get_formatted_name();
                     $linkcss = $mod->visible ? '' : ' class="dimmed" ';
 
                     if (!($url = $mod->get_url())) {
index b98f44f..d7d48c0 100644 (file)
@@ -43,8 +43,8 @@ class block_social_activities extends block_list {
                         continue;
                     }
 
-                    list($content, $instancename) =
-                            get_print_section_cm_text($cm, $course);
+                    $content = $cm->get_formatted_content(array('overflowdiv' => true, 'noclean' => true));
+                    $instancename = $cm->get_formatted_name();
 
                     if (!($url = $cm->get_url())) {
                         $this->content->items[] = $content;
@@ -113,8 +113,8 @@ class block_social_activities extends block_list {
                             '<img style="height:16px; width:80px; border:0px" src="'.$OUTPUT->pix_url('movehere') . '" alt="'.$strmovehere.'" /></a>';
                         $this->content->icons[] = '';
                     }
-                    list($content, $instancename) =
-                                get_print_section_cm_text($modinfo->cms[$modnumber], $course);
+                    $content = $mod->get_formatted_content(array('overflowdiv' => true, 'noclean' => true));
+                    $instancename = $mod->get_formatted_name();
 
                     $linkcss = $mod->visible ? '' : ' class="dimmed" ';
 
index 9acd125..18b0892 100644 (file)
@@ -1307,42 +1307,18 @@ function set_section_visible($courseid, $sectionnumber, $visibility) {
  *
  * Calls format_text or format_string as appropriate, and obtains the correct icon.
  *
+ * @deprecated since 2.5
+ *
  * This data is also used in other areas of the code.
  * @param cm_info $cm Course-module data (must come from get_fast_modinfo)
- * @param object $course Moodle course object
+ * @param object $course (argument not used)
  * @return array An array with the following values in this order:
  *   $content (optional extra content for after link),
  *   $instancename (text of link)
  */
 function get_print_section_cm_text(cm_info $cm, $course) {
-    global $OUTPUT;
-
-    // Get content from modinfo if specified. Content displays either
-    // in addition to the standard link (below), or replaces it if
-    // the link is turned off by setting ->url to null.
-    if (($content = $cm->get_content()) !== '') {
-        // Improve filter performance by preloading filter setttings for all
-        // activities on the course (this does nothing if called multiple
-        // times)
-        filter_preload_activities($cm->get_modinfo());
-
-        // Get module context
-        $modulecontext = context_module::instance($cm->id);
-        $labelformatoptions = new stdClass();
-        $labelformatoptions->noclean = true;
-        $labelformatoptions->overflowdiv = true;
-        $labelformatoptions->context = $modulecontext;
-        $content = format_text($content, FORMAT_HTML, $labelformatoptions);
-    } else {
-        $content = '';
-    }
-
-    // Get course context
-    $coursecontext = context_course::instance($course->id);
-    $stringoptions = new stdClass;
-    $stringoptions->context = $coursecontext;
-    $instancename = format_string($cm->name, true,  $stringoptions);
-    return array($content, $instancename);
+    return array($cm->get_formatted_content(array('overflowdiv' => true, 'noclean' => true)),
+        $cm->get_formatted_name());
 }
 
 /**
@@ -1463,7 +1439,8 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
             echo html_writer::start_tag('div', array('class' => $indentclasses));
 
             // Get data about this course-module
-            list($content, $instancename) = get_print_section_cm_text($mod, $course);
+            $content = $mod->get_formatted_content(array('overflowdiv' => true, 'noclean' => true));
+            $instancename = $mod->get_formatted_name();
 
             //Accessibility: for files get description via icon, this is very ugly hack!
             $altname = '';
index a9f4b24..90fb1b5 100644 (file)
@@ -756,6 +756,52 @@ class cm_info extends stdClass {
         return $this->content;
     }
 
+    /**
+     * Returns the content to display on course/overview page, formatted and passed through filters
+     *
+     * if $options['context'] is not specified, the module context is used
+     *
+     * @param array|stdClass $options formatting options, see {@link format_text()}
+     * @return string
+     */
+    public function get_formatted_content($options = array()) {
+        $this->obtain_view_data();
+        if (empty($this->content)) {
+            return '';
+        }
+        if ($this->modname === 'label') {
+            // special case, label returns already formatted content, see cm_info::__construct()
+            // and label_get_coursemodule_info()
+            return $this->content;
+        }
+        // Improve filter performance by preloading filter setttings for all
+        // activities on the course (this does nothing if called multiple
+        // times)
+        filter_preload_activities($this->get_modinfo());
+
+        $options = (array)$options;
+        if (!isset($options['context'])) {
+            $options['context'] = context_module::instance($this->id);
+        }
+        return format_text($this->content, FORMAT_HTML, $options);
+    }
+
+    /**
+     * Returns the name to display on course/overview page, formatted and passed through filters
+     *
+     * if $options['context'] is not specified, the module context is used
+     *
+     * @param array|stdClass $options formatting options, see {@link format_string()}
+     * @return string
+     */
+    public function get_formatted_name($options = array()) {
+        $options = (array)$options;
+        if (!isset($options['context'])) {
+            $options['context'] = context_module::instance($this->id);
+        }
+        return format_string($this->name, true,  $options);
+    }
+
     /**
      * Note: Will collect view data, if not already obtained.
      * @return string Extra CSS classes to add to html output for this activity on main page