Fixes a bug in parsing out wiki page resources namespaces, a=chris

Chris Pollett [2018-05-21 16:May:st]
Fixes a bug in parsing out wiki page resources namespaces, a=chris
Filename
src/models/GroupModel.php
diff --git a/src/models/GroupModel.php b/src/models/GroupModel.php
index 8e00dfdb1..472f7883b 100644
--- a/src/models/GroupModel.php
+++ b/src/models/GroupModel.php
@@ -1737,7 +1737,28 @@ class GroupModel extends Model implements MediaConstants
         for ($i = 0; $i < $num_matches; $i++) {
             $match_string = $matches[0][$i];
             $resource_namespace_name = $matches[2][$i];
-            $namespace_parts = explode(":", $resource_namespace_name);
+            $namespace_parts = explode(":", $resource_namespace_name, 2);
+            if (count($namespace_parts) > 1) {
+                list($current_namespace, $resource_namespace_name)
+                    = $namespace_parts;
+                $current_page_id = $this->getPageId($group_id,
+                    $current_namespace, $locale_tag);
+                if ($current_page_id === false || $current_page_id === null) {
+                    continue;
+                }
+                $current_folders = $this->getGroupPageResourcesFolders(
+                    $group_id, $current_page_id);
+                if ($current_folders) {
+                    list($current_folder, $current_thumb_folder,) =
+                        $current_folders;
+                } else {
+                    continue;
+                }
+            } else {
+                $current_page_id = $page_id;
+                $current_folder = $folder;
+                $current_thumb_folder = $thumb_folder;
+            }
             $sub_path = "";
             $thumb_resource = ($matches[1][$i] == "-thumb") ? true : false;
             $chart_resource = (in_array($matches[1][$i], ["-bargraph",
@@ -1801,28 +1822,8 @@ class GroupModel extends Model implements MediaConstants
                     }
                 }
             }
-            if (count($namespace_parts) > 1) {
-                $current_namespace = array_shift($namespace_parts);
-                $current_page_id = $this->getPageId($group_id,
-                    $current_namespace, $locale_tag);
-                if ($current_page_id === false || $current_page_id === null) {
-                    continue;
-                }
-                $current_folders = $this->getGroupPageResourcesFolders(
-                    $group_id, $current_page_id);
-                if ($current_folders) {
-                    list($current_folder, $current_thumb_folder,) =
-                        $current_folders;
-                } else {
-                    continue;
-                }
-            } else {
-                $resource_name = (isset($rect_parts[0])) ? $rect_parts[0] :
-                    $resource_namespace_name;
-                $current_page_id = $page_id;
-                $current_folder = $folder;
-                $current_thumb_folder = $thumb_folder;
-            }
+            $resource_name = (isset($rect_parts[0])) ? $rect_parts[0] :
+                $resource_namespace_name;
             $is_dir = false;
             if ($data_chart) {
                 $mime_type = "text/csv";
@@ -1836,7 +1837,9 @@ class GroupModel extends Model implements MediaConstants
             } else {
                 $current_folder  = realpath($current_folder);
                 $resource_name = html_entity_decode($resource_name, ENT_QUOTES);
-                $file_name = "$current_folder/$sub_path/$resource_name";
+                $file_name = (empty($sub_path)) ?
+                    "$current_folder/$resource_name"
+                    : "$current_folder/$sub_path/$resource_name";
                 $resource_pos = strpos($file_name, "resources");
                 if ($resource_pos === false) {
                     $resource_path = "resources/".substr($current_folder,
ViewGit