File Syntax Behavior
In R4.2 file:attachment.jpg
loaded the global file before the local file. This behavior was later inverted, if this behavior is used at all, then the local file should be loaded first.
I guess this behavior was implemented to deal with syntax errors, so the user will get his uploaded file either way. I suggest for the sake of clearness and uniqueness to load only the local file.
-
file:/global_file.jpg
-
file:local_file.jpg
This change will cause all these pages with the "wrong" syntax failing to show the alternate global file, when the local version is missing. Imagine you mistakenly uploaded a file global instead of local to a page, then later update the local file, to delete it later - suddenly it shows the forgotten global file - guess nobody wants this, right. If we do an error - we want the error to be shown.
These links need to be adjusted so that they work again:
file:
-> file:/
file:attachment.jpg
should load only the local file.
file:/attachment.jpg
loads the file in the global namespace, the slash after the colon is now mandatory.
diff --git a/wacko/class/wacko.php b/wacko/class/wacko.php index acc2ea6..3a944e4 100644 --- a/wacko/class/wacko.php +++ b/wacko/class/wacko.php @@ -3603,7 +3603,8 @@ } else { - // 2a -> file:some.zip or file:/cluster/some.zip (local) + // 2a -> file:some.zip (local relative) + // 2b -> file:/cluster/some.zip (local absolute) $local_file = $file_array; $_global = false; $file_name = $local_file[count($local_file) - 1]; @@ -3641,30 +3642,6 @@ $file_access = true; } } - - // check for global file - if (!$href) - { - // 2b -> file:some.zip (global) - if (count($file_array) == 1) - { - $file_name = $_file_name; - $param = $this->parse_media_param($file_name); - - // no local file available, take the global file instead - if ($file_data = $this->check_file_record($param['src'], 0)) - { - $href = ($this->canonical ? $this->db->base_url : $this->db->base_path) . Ut::join_path(UPLOAD_GLOBAL_DIR, $file_name); - $_global = true; - - // tracking file link - if ($track && isset($file_data['file_id'])) - { - $this->track_link($file_data['file_id'], LINK_FILE); - } - } - } - } } // try to find file in global / local storage and return if success