You are here

function webfm_putmeta in Web File Manager 5.2

Same name and namespace in other branches
  1. 5 webfm.module \webfm_putmeta()
1 call to webfm_putmeta()
webfm_ajax in ./webfm.module
Ajax post requests

File

./webfm.module, line 2073

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,
      ),
    );
  }
  if (($file = webfm_get_file_record($fid)) != false) {
    if ($user == 1 || $user == $file->uid) {
      $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 == ":") {
          $metadata[$metadata_key_arr[$key]['field']] = strval($value);
        }
      }
      if (count($metadata)) {
        $ret = webfm_dbupdate_file($fid, '', $metadata);
        if (!$ret) {
          $err = "webfm_dbupdate_file fail";
        }
        return $ret;
      }
      else {
        $err = "empty";
        return TRUE;
      }
    }
    else {
      $err = "permission denied";
    }
  }
  else {
    $err = "file not found";
  }
  return FALSE;
}