示例#1
0
 /**
  * Tests the static specialtoascii method.
  */
 public function test_specialtoascii()
 {
     $str = "Žluťoučký koníček";
     $this->assertSame('Zlutoucky konicek', core_text::specialtoascii($str));
 }
示例#2
0
 /**
  * Tries to convert $localname into another encoding,
  * please note that it may fail really badly.
  *
  * @param string $localname name of file in utf-8 encoding
  * @return string
  */
 protected function mangle_pathname($localname)
 {
     if ($this->encoding === 'utf-8') {
         return $localname;
     }
     $converted = core_text::convert($localname, 'utf-8', $this->encoding);
     $original = core_text::convert($converted, $this->encoding, 'utf-8');
     if ($original === $localname) {
         $result = $converted;
     } else {
         // try ascii conversion
         $converted2 = core_text::specialtoascii($localname);
         $converted2 = core_text::convert($converted2, 'utf-8', $this->encoding);
         $original2 = core_text::convert($converted, $this->encoding, 'utf-8');
         if ($original2 === $localname) {
             //this looks much better
             $result = $converted2;
         } else {
             //bad luck - the file name may not be usable at all
             $result = $converted;
         }
     }
     $result = preg_replace('/\\.\\.+/', '', $result);
     $result = ltrim($result);
     // no leading /
     if ($result === '.') {
         $result = '';
     }
     return $result;
 }
 public function read_submitted_permissions()
 {
     global $DB;
     $this->errors = array();
     // Role short name. We clean this in a special way. We want to end up
     // with only lowercase safe ASCII characters.
     $shortname = optional_param('shortname', null, PARAM_RAW);
     if (!is_null($shortname)) {
         $this->role->shortname = $shortname;
         $this->role->shortname = core_text::specialtoascii($this->role->shortname);
         $this->role->shortname = core_text::strtolower(clean_param($this->role->shortname, PARAM_ALPHANUMEXT));
         if (empty($this->role->shortname)) {
             $this->errors['shortname'] = get_string('errorbadroleshortname', 'core_role');
         }
     }
     if ($DB->record_exists_select('role', 'shortname = ? and id <> ?', array($this->role->shortname, $this->roleid))) {
         $this->errors['shortname'] = get_string('errorexistsroleshortname', 'core_role');
     }
     // Role name.
     $name = optional_param('name', null, PARAM_TEXT);
     if (!is_null($name)) {
         $this->role->name = $name;
         // Hack: short names of standard roles are equal to archetypes, empty name means localised via lang packs.
         $archetypes = get_role_archetypes();
         if (!isset($archetypes[$shortname]) and html_is_blank($this->role->name)) {
             $this->errors['name'] = get_string('errorbadrolename', 'core_role');
         }
     }
     if ($this->role->name !== '' and $DB->record_exists_select('role', 'name = ? and id <> ?', array($this->role->name, $this->roleid))) {
         $this->errors['name'] = get_string('errorexistsrolename', 'core_role');
     }
     // Description.
     $description = optional_param('description', null, PARAM_RAW);
     if (!is_null($description)) {
         $this->role->description = $description;
     }
     // Legacy type.
     $archetype = optional_param('archetype', null, PARAM_RAW);
     if (isset($archetype)) {
         $archetypes = get_role_archetypes();
         if (isset($archetypes[$archetype])) {
             $this->role->archetype = $archetype;
         } else {
             $this->role->archetype = '';
         }
     }
     // Assignable context levels.
     foreach ($this->allcontextlevels as $cl => $notused) {
         $assignable = optional_param('contextlevel' . $cl, null, PARAM_BOOL);
         if (!is_null($assignable)) {
             if ($assignable) {
                 $this->contextlevels[$cl] = $cl;
             } else {
                 unset($this->contextlevels[$cl]);
             }
         }
     }
     // Allowed roles.
     $allow = optional_param_array('allowassign', null, PARAM_INT);
     if (!is_null($allow)) {
         $this->allowassign = $allow;
     }
     $allow = optional_param_array('allowoverride', null, PARAM_INT);
     if (!is_null($allow)) {
         $this->allowoverride = $allow;
     }
     $allow = optional_param_array('allowswitch', null, PARAM_INT);
     if (!is_null($allow)) {
         $this->allowswitch = $allow;
     }
     // Now read the permissions for each capability.
     parent::read_submitted_permissions();
 }
 /**
  * Send a discussion and its posts to the export
  *
  * @param \stdClass $discussion
  * @param \stdClass[] $posts
  * @return void
  */
 public function send_discussion($discussion, $posts)
 {
     $discname = format_string($discussion->name);
     foreach ($posts as $post) {
         $postuser = hsuforum_extract_postuser($post, hsuforum_get_cm_forum($this->cm), \context_module::instance($this->cm->id));
         $author = fullname($postuser);
         $attachments = $this->process_attachments($post);
         $options = new \stdClass();
         $options->para = false;
         $options->trusted = $post->messagetrust;
         $options->context = \context_module::instance($this->cm->id);
         $message = file_rewrite_pluginfile_urls($post->message, 'pluginfile.php', \context_module::instance($this->cm->id)->id, 'mod_hsuforum', 'post', $post->id);
         $message = format_text($message, $post->messageformat, $options, $this->cm->course);
         $message = \core_text::specialtoascii(html_to_text($message));
         if ($post->id == $discussion->firstpost) {
             $this->format->export_discussion($post->id, $discname, $author, $post->created, $message, $attachments);
         } else {
             $private = '';
             if (!empty($post->privatereply)) {
                 $private = get_string('yes');
             }
             $this->format->export_post($post->id, $discname, format_string($post->subject), $author, $post->created, $message, $attachments, $private);
         }
     }
 }