Fixes a bug in parsing out wiki page resources namespaces, a=chris
Fixes a bug in parsing out wiki page resources namespaces, a=chris
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,