aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/tidypics.php112
-rw-r--r--pages/lists/friendmostrecent.php45
-rw-r--r--pages/lists/mostrecentimages.php22
-rw-r--r--pages/lists/yourmostrecent.php34
-rw-r--r--start.php22
5 files changed, 136 insertions, 99 deletions
diff --git a/lib/tidypics.php b/lib/tidypics.php
index d81b3ab2f..9a3a82af7 100644
--- a/lib/tidypics.php
+++ b/lib/tidypics.php
@@ -52,4 +52,116 @@
return $file->getFilenameOnFilestore() . 'image/';
}
+
+ /**** these functions replace broken core functions ****/
+ function tp_get_entities($type = "", $subtype = "", $owner_guid = 0, $order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0, $container_guid = null, $timelower = 0, $timeupper = 0)
+ {
+ global $CONFIG;
+
+ if ($subtype === false || $subtype === null || $subtype === 0)
+ return false;
+
+ if ($order_by == "") $order_by = "time_created desc";
+ $order_by = sanitise_string($order_by);
+ $limit = (int)$limit;
+ $offset = (int)$offset;
+ $site_guid = (int) $site_guid;
+ $timelower = (int) $timelower;
+ $timeupper = (int) $timeupper;
+ if ($site_guid == 0)
+ $site_guid = $CONFIG->site_guid;
+
+ $where = array();
+
+ if (is_array($subtype)) {
+ $tempwhere = "";
+ if (sizeof($subtype))
+ foreach($subtype as $typekey => $subtypearray) {
+ foreach($subtypearray as $subtypeval) {
+ $typekey = sanitise_string($typekey);
+ if (!empty($subtypeval)) {
+ if (!$subtypeval = (int) get_subtype_id($typekey, $subtypeval))
+ return false;
+ } else {
+ // @todo: Setting subtype to 0 when $subtype = '' returns entities with
+ // no subtype. This is different to the non-array behavior
+ // but may be required in some cases.
+ $subtypeval = 0;
+ }
+ if (!empty($tempwhere)) $tempwhere .= " or ";
+ $tempwhere .= "(type = '{$typekey}' and subtype = {$subtypeval})";
+ }
+ }
+ if (!empty($tempwhere)) $where[] = "({$tempwhere})";
+
+ } else {
+
+ $type = sanitise_string($type);
+ if ($subtype !== "" AND !$subtype = get_subtype_id($type, $subtype))
+ return false;
+
+ if ($type != "")
+ $where[] = "type='$type'";
+ if ($subtype!=="")
+ $where[] = "subtype=$subtype";
+ }
+
+ if ($owner_guid != "") {
+ if (!is_array($owner_guid)) {
+ $owner_array = array($owner_guid);
+ $owner_guid = (int) $owner_guid;
+ $where[] = "owner_guid = '$owner_guid'";
+ } else if (sizeof($owner_guid) > 0) {
+ $owner_array = array_map('sanitise_int', $owner_guid);
+ // Cast every element to the owner_guid array to int
+ $owner_guid = array_map("sanitise_int", $owner_guid);
+ $owner_guid = implode(",",$owner_guid);
+ $where[] = "owner_guid in ({$owner_guid})";
+ }
+ }
+ if ($site_guid > 0)
+ $where[] = "site_guid = {$site_guid}";
+
+ if (!is_null($container_guid)) {
+ if (is_array($container_guid)) {
+ foreach($container_guid as $key => $val) $container_guid[$key] = (int) $val;
+ $where[] = "container_guid in (" . implode(",",$container_guid) . ")";
+ } else {
+ $container_guid = (int) $container_guid;
+ $where[] = "container_guid = {$container_guid}";
+ }
+ }
+ if ($timelower)
+ $where[] = "time_created >= {$timelower}";
+ if ($timeupper)
+ $where[] = "time_created <= {$timeupper}";
+
+ if (!$count) {
+ $query = "SELECT * from {$CONFIG->dbprefix}entities where ";
+ } else {
+ $query = "SELECT count(guid) as total from {$CONFIG->dbprefix}entities where ";
+ }
+ foreach ($where as $w)
+ $query .= " $w and ";
+ $query .= get_access_sql_suffix(); // Add access controls
+ if (!$count) {
+ $query .= " order by $order_by";
+ if ($limit) $query .= " limit $offset, $limit"; // Add order and limit
+ $dt = get_data($query, "entity_row_to_elggstar");
+ return $dt;
+ } else {
+ $total = get_data_row($query);
+ return $total->total;
+ }
+ }
+
+ function tp_list_entities($type= "", $subtype = "", $owner_guid = 0, $limit = 10, $fullview = true, $viewtypetoggle = false, $pagination = true) {
+
+ $offset = (int) get_input('offset');
+ $count = tp_get_entities($type, $subtype, $owner_guid, "", $limit, $offset, true);
+ $entities = tp_get_entities($type, $subtype, $owner_guid, "", $limit, $offset);
+
+ return elgg_view_entity_list($entities, $count, $offset, $limit, $fullview, $viewtypetoggle, $pagination);
+
+ }
?> \ No newline at end of file
diff --git a/pages/lists/friendmostrecent.php b/pages/lists/friendmostrecent.php
deleted file mode 100644
index 5f71d5679..000000000
--- a/pages/lists/friendmostrecent.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
- /**
- * List of someone else's most recent photos (we should be able to combine with yourmostrecent.php)
- *
- */
-
- include_once dirname(dirname(dirname(dirname(dirname(__FILE__))))) . "/engine/start.php";
-
- if (is_null(page_owner_entity()->name) || page_owner_entity()->name == '') {
- $friendname = get_input('username');
- } else {
- $friendname = page_owner_entity()->name;
- };
-
- //there has to be a better way to do this
- if(!$friendname) {
- $page = get_input("page");
- list($pagename, $friendname) = split("/", $page);
- }
- $user = get_user_by_username($friendname);
-
- global $CONFIG;
- $prefix = $CONFIG->dbprefix;
- $max = 24;
- //grab the top views (metadata 'tp_views') for $max number of entities
- //ignores entity subtypes
-
- $sql = "SELECT ent.guid as entity_guid FROM " . $prefix . "entities ent
- INNER JOIN " . $prefix . "entity_subtypes sub ON ent.subtype = sub.id AND sub.subtype = 'image'
- WHERE ent.owner_guid = " . $user->guid . "
- ORDER BY ent.guid DESC
- LIMIT $max";
- $result = get_data($sql);
- $entities = array();
- foreach($result as $entity) {
- $entities[] = get_entity($entity->entity_guid);
- }
-
- $title = sprintf(elgg_echo("tidypics:friendmostrecent"), $friendname);
- $area2 = elgg_view_title($title);
- $area2 .= elgg_view_entity_list($entities, $max, 0, $max);
- $body = elgg_view_layout('two_column_left_sidebar', '', $area2);
- page_draw($title, $body);
-
-?> \ No newline at end of file
diff --git a/pages/lists/mostrecentimages.php b/pages/lists/mostrecentimages.php
index 5332d8e9e..32320a5d2 100644
--- a/pages/lists/mostrecentimages.php
+++ b/pages/lists/mostrecentimages.php
@@ -8,13 +8,31 @@
// Load Elgg engine
include_once dirname(dirname(dirname(dirname(dirname(__FILE__))))) . "/engine/start.php";
+ // start with assumption this is for all site photos
+ $title = elgg_echo('tidypics:mostrecent');
+ $user_id = 0;
+
+ // is this all site or an individuals images
+ $username = get_input('username');
+ if ($username) {
+ $user = get_user_by_username($username);
+ if ($user) {
+ $user_id = $user->guid;
+
+ if ($user_id == get_loggedin_userid())
+ $title = elgg_echo('tidypics:yourmostrecent');
+ else
+ $title = sprintf(elgg_echo("tidypics:friendmostrecent"), $user->name);
+ }
+ }
+
// how many do we display
$max = 12;
// grab the html to display the images
- $images = list_entities("object", "image", 0, $max, false, false, true);
+ $images = tp_list_entities("object", "image", $user_id, $max, false, false, true);
+ $images .= '<div class="clearfloat"/>'; // hack until elgg fixes problem with css/list entities html
- $title = elgg_echo('tidypics:mostrecent');
// this view takes care of the title on the main column and the content wrapper
$area2 = elgg_view('tidypics/content_wrapper', array('title' => $title, 'content' => $images,));
diff --git a/pages/lists/yourmostrecent.php b/pages/lists/yourmostrecent.php
deleted file mode 100644
index eb124c84d..000000000
--- a/pages/lists/yourmostrecent.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
- /**
- * List of user's most recently uploaded photos
- *
- */
-
- include_once dirname(dirname(dirname(dirname(dirname(__FILE__))))) . "/engine/start.php";
-
- global $CONFIG;
- $viewer = get_loggedin_user();
- $prefix = $CONFIG->dbprefix;
- $max = 24;
- //grab the top views (metadata 'tp_views') for $max number of entities
- //ignores entity subtypes
-
- $sql = "SELECT ent.guid as entity_guid FROM " . $prefix . "entities ent
- INNER JOIN " . $prefix . "entity_subtypes sub ON ent.subtype = sub.id AND sub.subtype = 'image'
- WHERE ent.owner_guid = " . $viewer->guid . "
- ORDER BY ent.guid DESC
- LIMIT $max";
-
- $result = get_data($sql);
- $entities = array();
- foreach($result as $entity) {
- $entities[] = get_entity($entity->entity_guid);
- }
-
- $title = elgg_echo("tidypics:yourmostrecent");
- $area2 = elgg_view_title($title);
- $area2 .= elgg_view_entity_list($entities, $max, 0, $max);
- $body = elgg_view_layout('two_column_left_sidebar', '', $area2);
- page_draw($title, $body);
-
-?> \ No newline at end of file
diff --git a/start.php b/start.php
index 53b2c17c4..ba8d90aac 100644
--- a/start.php
+++ b/start.php
@@ -115,7 +115,7 @@
}
add_submenu_item( elgg_echo('tidypics:yourmostrecent'),
- $CONFIG->wwwroot . 'pg/photos/yourmostrecent',
+ $CONFIG->wwwroot . 'pg/photos/mostrecent/' . $_SESSION['user']->username,
'tidypics-a');
} else if (isloggedin()) {
// logged in not owner gets "your albums", "page owners albums", "page owner's friends albums", "page owner's most viewed", "page owner's most recent"
@@ -130,7 +130,7 @@
}
add_submenu_item( elgg_echo('tidypics:yourmostrecent'),
- $CONFIG->wwwroot . 'pg/photos/yourmostrecent',
+ $CONFIG->wwwroot . 'pg/photos/mostrecent/' . $_SESSION['user']->username,
'tidypics-b');
if($page_owner->name) { // check to make sure the owner set their display name
@@ -148,7 +148,7 @@
}
add_submenu_item( sprintf(elgg_echo('tidypics:friendmostrecent'),$page_owner->name),
- $CONFIG->wwwroot . "pg/photos/friendmostrecent/". $page_owner->username,
+ $CONFIG->wwwroot . "pg/photos/mostrecent/". $page_owner->username,
'tidypics-a');
}
} else if ($page_owner->guid) {
@@ -286,7 +286,7 @@
break;
case "mostrecent":
- if (isset($page[1])) set_input('guid',$page[1]);
+ if (isset($page[1])) set_input('username',$page[1]);
include($CONFIG->pluginspath . "tidypics/pages/lists/mostrecentimages.php");
break;
@@ -295,21 +295,11 @@
include($CONFIG->pluginspath . "tidypics/pages/lists/yourmostviewed.php");
break;
- case "yourmostrecent":
- if (isset($page[1])) set_input('guid',$page[1]);
- include($CONFIG->pluginspath . "tidypics/pages/lists/yourmostrecent.php");
- break;
-
case "friendmostviewed":
if (isset($page[1])) set_input('guid',$page[1]);
include($CONFIG->pluginspath . "tidypics/pages/lists/friendmostviewed.php");
break;
- case "friendmostrecent":
- if (isset($page[1])) set_input('guid',$page[1]);
- include($CONFIG->pluginspath . "tidypics/pages/lists/friendmostrecent.php");
- break;
-
case "recentlyviewed":
if (isset($page[1])) set_input('guid',$page[1]);
include($CONFIG->pluginspath . "tidypics/pages/lists/recentlyviewed.php");
@@ -398,10 +388,6 @@
return $CONFIG->url . "pg/photos/album/" . $entity->getGUID() . "/" . $title;
}
- function tp_mostrecentimages($max = 8, $pagination = true) {
- return list_entities("object", "image", 0, $max, false, false, $pagination);
- }
-
// Make sure tidypics_init is called on initialisation
register_elgg_event_handler('init','system','tidypics_init');
register_elgg_event_handler('pagesetup','system','tidypics_submenus');