[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Provides user rendering functionality such as printing private files tree and displaying a search utility 19 * 20 * @package core_user 21 * @copyright 2010 Dongsheng Cai <dongsheng@moodle.com> 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 defined('MOODLE_INTERNAL') || die(); 26 27 /** 28 * Provides user rendering functionality such as printing private files tree and displaying a search utility 29 * @copyright 2010 Dongsheng Cai <dongsheng@moodle.com> 30 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 31 */ 32 class core_user_renderer extends plugin_renderer_base { 33 34 /** 35 * Prints user files tree view 36 * @return string 37 */ 38 public function user_files_tree() { 39 return $this->render(new user_files_tree); 40 } 41 42 /** 43 * Render user files tree 44 * 45 * @param user_files_tree $tree 46 * @return string HTML 47 */ 48 public function render_user_files_tree(user_files_tree $tree) { 49 if (empty($tree->dir['subdirs']) && empty($tree->dir['files'])) { 50 $html = $this->output->box(get_string('nofilesavailable', 'repository')); 51 } else { 52 $htmlid = 'user_files_tree_'.uniqid(); 53 $module = array('name' => 'core_user', 'fullpath' => '/user/module.js'); 54 $this->page->requires->js_init_call('M.core_user.init_tree', array(false, $htmlid), false, $module); 55 $html = '<div id="'.$htmlid.'">'; 56 $html .= $this->htmllize_tree($tree, $tree->dir); 57 $html .= '</div>'; 58 } 59 return $html; 60 } 61 62 /** 63 * Internal function - creates htmls structure suitable for YUI tree. 64 * @param user_files_tree $tree 65 * @param array $dir 66 * @return string HTML 67 */ 68 protected function htmllize_tree($tree, $dir) { 69 global $CFG; 70 $yuiconfig = array(); 71 $yuiconfig['type'] = 'html'; 72 73 if (empty($dir['subdirs']) and empty($dir['files'])) { 74 return ''; 75 } 76 $result = '<ul>'; 77 foreach ($dir['subdirs'] as $subdir) { 78 $image = $this->output->pix_icon(file_folder_icon(), $subdir['dirname'], 'moodle', array('class' => 'icon')); 79 $result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.s($subdir['dirname']).'</div> '. 80 $this->htmllize_tree($tree, $subdir).'</li>'; 81 } 82 foreach ($dir['files'] as $file) { 83 $url = file_encode_url("$CFG->wwwroot/pluginfile.php", '/'.$tree->context->id.'/user/private'. 84 $file->get_filepath().$file->get_filename(), true); 85 $filename = $file->get_filename(); 86 $image = $this->output->pix_icon(file_file_icon($file), $filename, 'moodle', array('class' => 'icon')); 87 $result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.html_writer::link($url, $filename). 88 '</div></li>'; 89 } 90 $result .= '</ul>'; 91 92 return $result; 93 } 94 95 /** 96 * Prints user search utility that can search user by first initial of firstname and/or first initial of lastname 97 * Prints a header with a title and the number of users found within that subset 98 * @param string $url the url to return to, complete with any parameters needed for the return 99 * @param string $firstinitial the first initial of the firstname 100 * @param string $lastinitial the first initial of the lastname 101 * @param int $usercount the amount of users meeting the search criteria 102 * @param int $totalcount the amount of users of the set/subset being searched 103 * @param string $heading heading of the subset being searched, default is All Participants 104 * @return string html output 105 */ 106 public function user_search($url, $firstinitial, $lastinitial, $usercount, $totalcount, $heading = null) { 107 global $OUTPUT; 108 109 $strall = get_string('all'); 110 $alpha = explode(',', get_string('alphabet', 'langconfig')); 111 112 if (!isset($heading)) { 113 $heading = get_string('allparticipants'); 114 } 115 116 $content = html_writer::start_tag('form', array('action' => new moodle_url($url))); 117 $content .= html_writer::start_tag('div'); 118 119 // Search utility heading. 120 $content .= $OUTPUT->heading($heading.get_string('labelsep', 'langconfig').$usercount.'/'.$totalcount, 3); 121 122 // Bar of first initials. 123 $content .= html_writer::start_tag('div', array('class' => 'initialbar firstinitial')); 124 $content .= html_writer::label(get_string('firstname').' : ', null); 125 126 if (!empty($firstinitial)) { 127 $content .= html_writer::link($url.'&sifirst=', $strall); 128 } else { 129 $content .= html_writer::tag('strong', $strall); 130 } 131 132 foreach ($alpha as $letter) { 133 if ($letter == $firstinitial) { 134 $content .= html_writer::tag('strong', $letter); 135 } else { 136 $content .= html_writer::link($url.'&sifirst='.$letter, $letter); 137 } 138 } 139 $content .= html_writer::end_tag('div'); 140 141 // Bar of last initials. 142 $content .= html_writer::start_tag('div', array('class' => 'initialbar lastinitial')); 143 $content .= html_writer::label(get_string('lastname').' : ', null); 144 145 if (!empty($lastinitial)) { 146 $content .= html_writer::link($url.'&silast=', $strall); 147 } else { 148 $content .= html_writer::tag('strong', $strall); 149 } 150 151 foreach ($alpha as $letter) { 152 if ($letter == $lastinitial) { 153 $content .= html_writer::tag('strong', $letter); 154 } else { 155 $content .= html_writer::link($url.'&silast='.$letter, $letter); 156 } 157 } 158 $content .= html_writer::end_tag('div'); 159 160 $content .= html_writer::end_tag('div'); 161 $content .= html_writer::tag('div', ' '); 162 $content .= html_writer::end_tag('form'); 163 164 return $content; 165 } 166 167 /** 168 * Displays the list of tagged users 169 * 170 * @param array $userlist 171 * @param bool $exclusivemode if set to true it means that no other entities tagged with this tag 172 * are displayed on the page and the per-page limit may be bigger 173 * @return string 174 */ 175 public function user_list($userlist, $exclusivemode) { 176 $tagfeed = new core_tag\output\tagfeed(); 177 foreach ($userlist as $user) { 178 $userpicture = $this->output->user_picture($user, array('size' => $exclusivemode ? 100 : 35)); 179 $fullname = fullname($user); 180 if (user_can_view_profile($user)) { 181 $profilelink = new moodle_url('/user/view.php', array('id' => $user->id)); 182 $fullname = html_writer::link($profilelink, $fullname); 183 } 184 $tagfeed->add($userpicture, $fullname); 185 } 186 187 $items = $tagfeed->export_for_template($this->output); 188 189 if ($exclusivemode) { 190 $output = '<div><ul class="inline-list">'; 191 foreach ($items['items'] as $item) { 192 $output .= '<li><div class="user-box">'. $item['img'] . $item['heading'] ."</div></li>\n"; 193 } 194 $output .= "</ul></div>\n"; 195 return $output; 196 } 197 198 return $this->output->render_from_template('core_tag/tagfeed', $items); 199 } 200 201 } 202 203 /** 204 * User files tree 205 * @copyright 2010 Dongsheng Cai <dongsheng@moodle.com> 206 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 207 */ 208 class user_files_tree implements renderable { 209 210 /** 211 * @var context_user $context 212 */ 213 public $context; 214 215 /** 216 * @var array $dir 217 */ 218 public $dir; 219 220 /** 221 * Create user files tree object 222 */ 223 public function __construct() { 224 global $USER; 225 $this->context = context_user::instance($USER->id); 226 $fs = get_file_storage(); 227 $this->dir = $fs->get_area_tree($this->context->id, 'user', 'private', 0); 228 } 229 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |