Während Moodle's Quellcode gerade ich über diese gestolpert:base64_encode und PHP-Funktion serialisiert params
repository/letzten/lib.php
public function get_listing($encodedpath = '', $page = '') {
global $OUTPUT;
$ret = array();
$ret['dynload'] = true;
$ret['nosearch'] = true;
$ret['nologin'] = true;
$list = array();
$files = $this->get_recent_files(0, $this->number);
try {
foreach ($files as $file) {
$params = base64_encode(serialize($file));
// Check that file exists and accessible
$filesize = $this->get_file_size($params);
if ($file['filename'] == 'image.png') {
var_dump($filesize);
}
if (!empty($filesize)) {
$node = array(
'title' => $file['filename'],
'size' => $filesize,
'date' => '',
'source'=> $params,
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($file['filename'], 32))->out(false),
);
$list[] = $node;
}
}
} catch (Exception $e) {
throw new repository_exception('emptyfilelist', 'repository_recent');
}
$ret['list'] = array_filter($list, array($this, 'filter'));
return $ret;
}
repository/lib.php
public function get_file_size($source) {
$browser = get_file_browser();
$params = unserialize(base64_decode($source));
$contextid = clean_param($params['contextid'], PARAM_INT);
$fileitemid = clean_param($params['itemid'], PARAM_INT);
$filename = clean_param($params['filename'], PARAM_FILE);
$filepath = clean_param($params['filepath'], PARAM_PATH);
$filearea = clean_param($params['filearea'], PARAM_AREA);
$component = clean_param($params['component'], PARAM_COMPONENT);
$context = get_context_instance_by_id($contextid);
$file_info = $browser->get_file_info($context, $component, $filearea, $fileitemid, $filepath, $filename);
if (!empty($file_info)) {
$filesize = $file_info->get_filesize();
} else {
$filesize = null;
}
return $filesize;
}
Meine Frage ist, was der Zweck der Codierung und Serialisierung von Base64 ist Wann wird es sofort innerhalb der Funktion rückgängig gemacht? Gibt es einen triftigen Grund dafür oder ist das einfach überentwickelt?
Kein gültiger Grund dafür, es sei denn, dies ist eine wirklich große Ausnahme und die häufigste Verwendung von 'get_file_size' ist bei weitem die Dateigröße eines' serialize'd, 'base64_encode'd Objekts. – Ryan
['Funktion get_file_size'] (http://xref.schoolsict.net/moodle/2.2/nav.html?repository/lib.php.source.html#l1367) in moodle Quelle – air4x
Kannst du den folgenden Code anzeigen? Aufruf an '$ this-> get_file_size()'? – NullUserException