function webfm_putmeta in Web File Manager 5
Same name and namespace in other branches
- 5.2 webfm.module \webfm_putmeta()
1 call to webfm_putmeta()
- webfm_ajax in ./
webfm.module - Ajax post requests
File
- ./
webfm.module, line 2825
Code
function webfm_putmeta($fid, $metadata, $user, &$err) {
//editable metadata columns of webfm_file table
static $metadata_key_arr = array();
if (!count($metadata_key_arr)) {
$metadata_key_arr = array(
't' => array(
'field' => 'ftitle',
'size' => 255,
),
'd' => array(
'field' => 'fdesc',
'size' => 1024,
),
'l' => array(
'field' => 'flang',
'size' => 16,
),
'p' => array(
'field' => 'fpublisher',
'size' => 255,
),
'f' => array(
'field' => 'fformat',
'size' => 255,
),
'u' => array(
'field' => 'uid',
'size' => 10,
),
);
}
$err = "";
if (($file = webfm_get_file_record($fid)) != false) {
if ($user == 1 || $user == $file->uid || webfm_file_mod_access($file)) {
$fields = explode(',', $metadata);
$metadata = array();
foreach ($fields as $field) {
// Parse webfm_file_key/metadata pairs
trim($field);
$key = substr($field, 0, 1);
$separator = substr($field, 1, 1);
$value = substr($field, 2, min(strlen($field) - 2, $metadata_key_arr[$key]['size']));
if (array_key_exists($key, $metadata_key_arr) && $separator == ":") {
if ($key == 'u') {
// Special handling for uid changes (admins only)
if ($user == 1) {
$uid_val = strval($value);
if (is_numeric($uid_val) && strlen($uid_val) << 11) {
// Check that requested uid exists
if (db_num_rows(db_query("SELECT uid FROM {users} WHERE uid = %d", $uid_val)) > 0) {
$metadata[$metadata_key_arr[$key]['field']] = $uid_val;
}
else {
$err = "user not found";
return FALSE;
}
}
else {
$err = "invalid data";
return FALSE;
}
}
else {
$err = "permission denied";
return FALSE;
}
}
else {
$metadata[$metadata_key_arr[$key]['field']] = strval($value);
}
}
}
if (count($metadata)) {
$ret = webfm_dbupdate_file($fid, '', $metadata);
if ($ret) {
$err = "metadata updated";
return TRUE;
}
else {
$err = "webfm_dbupdate_file fail";
}
}
else {
if (!strlen($err)) {
$err = "no update required";
}
return TRUE;
}
}
else {
$err = "permission denied";
}
}
else {
$err = "file not found";
}
return FALSE;
}