diff --git a/src/controllers/components/SocialComponent.php b/src/controllers/components/SocialComponent.php
index 3e3069f09..c0dda7bcc 100644
--- a/src/controllers/components/SocialComponent.php
+++ b/src/controllers/components/SocialComponent.php
@@ -1811,20 +1811,7 @@ class SocialComponent extends Component implements CrawlConstants
$data['RESOURCES_INFO'] =
$group_model->getGroupPageResourceUrls($group_id,
$data['PAGE_ID'], $sub_path);
- if (!empty($data["HEAD"]['sort']) &&
- !empty($data["RESOURCES_INFO"]['resources'])) {
- $sort_field = substr($data["HEAD"]['sort'], 1);
- $callback = ($data["HEAD"]['sort'][0] == 'r') ?
- "rorderCallback" : "orderCallback";
- if ($sort_field == 'name') {
- $callback = ($data["HEAD"]['sort'][0] == 'r') ?
- "stringROrderCallback" : "stringOrderCallback";
- }
- $callback_name = C\NS_LIB . $callback;
- $callback_name(null, null, $sort_field);
- usort($data["RESOURCES_INFO"]["resources"],
- C\NS_LIB . $callback);
- }
+ $this->sortWikiResources($data);
}
if ($data["HEAD"]['page_type'] == 'presentation' &&
$data['CONTROLLER'] == 'group') {
@@ -1840,20 +1827,7 @@ class SocialComponent extends Component implements CrawlConstants
$data[$key] = $data["HEAD"][$key];
}
}
- if (!empty($data["HEAD"]['sort']) &&
- !empty($data["RESOURCES_INFO"]['resources'])) {
- $sort_field = substr($data["HEAD"]['sort'], 1);
- $callback = ($data["HEAD"]['sort'][0] == 'r') ?
- "rorderCallback" : "orderCallback";
- if ($sort_field == 'name') {
- $callback = ($data["HEAD"]['sort'][0] == 'r') ?
- "stringROrderCallback" : "stringOrderCallback";
- }
- $callback_name = C\NS_LIB . $callback;
- $callback_name(null, null, $sort_field);
- usort($data["RESOURCES_INFO"]["resources"],
- C\NS_LIB . $callback);
- }
+ $this->sortWikiResources($data);
$data['settings'] = "false";
if (isset($_REQUEST['settings']) &&
$_REQUEST['settings']=='true') {
@@ -1866,6 +1840,34 @@ class SocialComponent extends Component implements CrawlConstants
}
return $data;
}
+ /**
+ *
+ */
+ private function sortWikiResources(&$data)
+ {
+ if (empty($data["HEAD"]['sort']) ||
+ empty($data["RESOURCES_INFO"]['resources'])) {
+ return;
+ }
+ restore_error_handler();
+ $sort_map = @unserialize(L\webdecode($data["HEAD"]['sort']));
+ set_error_handler(C\NS_LIB . "yioop_error_handler");
+ $sort_key = (empty($data['SUB_PATH'])) ? "." : $data['SUB_PATH'];
+ $sort_key = rtrim($sort_key, '/');
+ if (empty($sort_map[$sort_key])) {
+ return;
+ }
+ $sort_field = substr($sort_map[$sort_key], 1);
+ $callback = ($sort_map[$sort_key][0] == 'r') ?
+ "rorderCallback" : "orderCallback";
+ if ($sort_field == 'name') {
+ $callback = ($sort_map[$sort_key][0] == 'r') ?
+ "stringROrderCallback" : "stringOrderCallback";
+ }
+ $callback_name = C\NS_LIB . $callback;
+ $callback_name(null, null, $sort_field);
+ usort($data["RESOURCES_INFO"]["resources"], C\NS_LIB . $callback);
+ }
/**
*
*/
@@ -1913,10 +1915,8 @@ class SocialComponent extends Component implements CrawlConstants
"</h1>');";
break;
}
- if (!empty($_REQUEST['sort'])) {
- $head_object =$parent->parsePageHeadVars(
- $page_info['PAGE']);
- }
+ $head_object =$parent->parsePageHeadVars(
+ $page_info['PAGE']);
$write_head = false;
$head_vars = [];
$page_types = array_keys($data['page_types']);
@@ -1963,11 +1963,26 @@ class SocialComponent extends Component implements CrawlConstants
}
}
$new_key = 'a' . $head_vars[$key];
- if (isset($head_object['sort']) &&
- $head_object['sort'] == $new_key) {
+ if (isset($head_object['sort'])) {
+ restore_error_handler();
+ $head_object['sort'] = @unserialize(
+ L\webdecode($head_object['sort']));
+ set_error_handler(C\NS_LIB .
+ "yioop_error_handler");
+ } else {
+ $head_object['sort'] = [];
+ }
+ $sort_path = empty($sub_path) ? "." :
+ $sub_path;
+ $sort_path = rtrim($sort_path, '/');
+ if (empty($head_object['sort'][$sort_path]) ||
+ $head_object['sort'][$sort_path] ==
+ $new_key) {
$new_key = 'r' . $head_vars[$key];
}
- $head_vars[$key] = $new_key;
+ $head_object['sort'][$sort_path] = $new_key;
+ $head_vars[$key] = L\webencode(serialize(
+ $head_object['sort']));
$edit_reason = "Change resource sort";
$write_head = true;
} else {
@@ -1990,14 +2005,12 @@ class SocialComponent extends Component implements CrawlConstants
}
}
}
- if ($write_head) {
- $head_string = "";
- foreach ($page_defaults as $key => $default) {
- $head_string .= $key . "=" . $head_vars[$key].
- "\n\n";
- }
- $page = $head_string . "END_HEAD_VARS" . $page;
+ $head_string = "";
+ foreach ($page_defaults as $key => $default) {
+ $head_string .= $key . "=" . $head_vars[$key].
+ "\n\n";
}
+ $page = $head_string . "END_HEAD_VARS" . $page;
$page_info['ID'] = $group_model->setPageName($user_id,
$group_id, $page_name, $page,
$data['CURRENT_LOCALE_TAG'], $edit_reason,
diff --git a/src/models/GroupModel.php b/src/models/GroupModel.php
index c760da1cd..3839ce465 100644
--- a/src/models/GroupModel.php
+++ b/src/models/GroupModel.php
@@ -1390,7 +1390,7 @@ class GroupModel extends Model implements MediaConstants
$file_name = "$folder/$resource_name";
$thumb_name = "$thumb_folder/$resource_name.jpg";
if (file_exists($file_name)) {
- $this->db->unlinkRecursive($file_name, true);
+ $this->db->unlinkRecursive($file_name);
}
if (file_exists($thumb_name)) {
unlink($thumb_name);
diff --git a/src/models/datasources/DatasourceManager.php b/src/models/datasources/DatasourceManager.php
index e1006c25c..78f3330a0 100755
--- a/src/models/datasources/DatasourceManager.php
+++ b/src/models/datasources/DatasourceManager.php
@@ -237,8 +237,13 @@ abstract class DatasourceManager
*/
public function traverseDirectory($dir, $callback, $rootToo = true)
{
+ // single not directory case
+ if (!is_dir($dir)) {
+ return @$callback($dir);
+ }
+ // directory case
$results = [];
- if (!is_dir($dir) || !$dh = @opendir($dir)) {
+ if (!$dh = @opendir($dir)) {
return $results;
}
while (false !== ($obj = readdir($dh))) {
diff --git a/src/views/elements/WikiElement.php b/src/views/elements/WikiElement.php
index 46e0ff03c..9f5cf904b 100644
--- a/src/views/elements/WikiElement.php
+++ b/src/views/elements/WikiElement.php
@@ -606,7 +606,7 @@ class WikiElement extends Element implements CrawlConstants
e("</div>");
$folder_prefix = "$folder_prefix&sf=$sub_path";
}
- if (count($data['RESOURCES_INFO']['resources']) > 0) {
+ if (count($data['RESOURCES_INFO']['resources']) > 0 || !$read_mode){
e('<table >');
if (!$read_mode) {
?><tr><th></th><th><a href='<?=
@@ -620,13 +620,18 @@ class WikiElement extends Element implements CrawlConstants
<input type="hidden" name='page_name'
value='<?=$data['PAGE_NAME']?>' />
<?php
+ if (!empty($data['SUB_PATH'])) { ?>
+ <input type="hidden" name='sf'
+ value='<?=$data['SUB_PATH']; ?>' />
+ <?php
+ }
$this->view->helper("options")->render("resource-actions",
"resource_actions", $data['resource_actions'],
'actions', true);
?></form><?php
if (!C\MOBILE) {
e("</th><th><a href='$folder_prefix&sort=size'>".
- tl('wiki_element_size').'</a></th>');
+ tl('wiki_element_size').'</a>');
e("</th><th><a href='".
"$folder_prefix&sort=modified'>".
tl('wiki_element_modified').'</a></th>');
@@ -723,7 +728,9 @@ class WikiElement extends Element implements CrawlConstants
if (!empty($data['SUB_PATH'])) {
$delete_url .= "&sf={$data['SUB_PATH']}";
}
- e("<td>[<a href='$delete_url'>X</a>]</td>");
+ e("<td>[<a onclick='javascript:return confirm(\"".
+ tl('confirm_delete_operation')."\");' ".
+ "href='$delete_url'>X</a>]</td>");
} else {
e("<td></td>");
}
@@ -738,11 +745,12 @@ class WikiElement extends Element implements CrawlConstants
$i++;
}
e('</table>');
- return;
}
}
- ?>
- <div class='red'><?=tl('wiki_element_no_resources')?></div><?php
+ if (count($data['RESOURCES_INFO']['resources']) == 0) {
+ ?>
+ <div class='red'><?=tl('wiki_element_no_resources')?></div><?php
+ }
}
/**
* Used to draw a list of Wiki Pages for the current group. It also