WackoWiki: File Syntax Behavior

https://wackowiki.org/doc     Version: 17 (09/01/2021 08:28)

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.

  1. file:/global_file.jpg
  2. 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.

This renders existing global file links without the slash after the colon invalid.

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
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


commit:51b3cd3e1518f5ad3680b49d22b590c1921eebd0[link1]