From b09bca9dbeec1e10e28fb80b7c9f0c4ebd7a7707 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sun, 23 Aug 2009 01:20:37 +0000 Subject: condensed most recent list pages into one instead of 3 --- lib/tidypics.php | 112 +++++++++++++++++++++++++++++++++++++++ pages/lists/friendmostrecent.php | 45 ---------------- pages/lists/mostrecentimages.php | 22 +++++++- pages/lists/yourmostrecent.php | 34 ------------ start.php | 22 ++------ 5 files changed, 136 insertions(+), 99 deletions(-) delete mode 100644 pages/lists/friendmostrecent.php delete mode 100644 pages/lists/yourmostrecent.php 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 @@ -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 .= '
'; // 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 @@ -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'); -- cgit v1.2.3