]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Standardized activity.
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 9 Oct 2009 21:35:36 +0000 (21:35 +0000)
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 9 Oct 2009 21:35:36 +0000 (21:35 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@3523 36083f99-b078-4883-b0ff-0f9b5a30f544

engine/lib/activity.php

index 10374e386e2dad40c36141a52336238c2e85e993..30c81cb9688886999745167a805960573a598901 100644 (file)
 <?php
-       /**
-        * Elgg activity stream.
-        * Functions for listening for and generating the rich activity stream from the 
-        * system log.
-        * 
-        * @package Elgg
-        * @subpackage Core
-
-        * @author Curverider Ltd
-
-        * @link http://elgg.org/
-        */
-
-       /**
-        * Construct and execute the query required for the activity stream.
-        *
-        * @param int $limit Limit the query.
-        * @param int $offset Execute from the given object
-        * @param mixed $type A type, or array of types to look for. Note: This is how they appear in the SYSTEM LOG.
-        * @param mixed $subtype A subtype, or array of types to look for. Note: This is how they appear in the SYSTEM LOG.
-        * @param mixed $owner_guid The guid or a collection of GUIDs
-        * @param string $owner_relationship If defined, the relationship between $owner_guid and the entity owner_guid - so "is $owner_guid $owner_relationship with $entity->owner_guid"
-        * @return array An array of system log entries.
-        */
-       function get_activity_stream_data($limit = 10, $offset = 0, $type = "", $subtype = "", $owner_guid = "", $owner_relationship = "")
-       {
-               global $CONFIG;
-               
-               $limit = (int)$limit;
-               $offset = (int)$offset;
-       
-               if ($type) {
-                       if (!is_array($type))
-                               $type = array(sanitise_string($type));
-                       else
-                               foreach ($type as $k => $v)
-                                       $type[$k] = sanitise_string($v);
+/**
+ * Elgg activity stream.
+ * Functions for listening for and generating the rich activity stream from the
+ * system log.
+ *
+ * @package Elgg
+ * @subpackage Core
+ * @author Curverider Ltd
+ * @link http://elgg.org/
+ */
+
+/**
+ * Construct and execute the query required for the activity stream.
+ *
+ * @param int $limit Limit the query.
+ * @param int $offset Execute from the given object
+ * @param mixed $type A type, or array of types to look for. Note: This is how they appear in the SYSTEM LOG.
+ * @param mixed $subtype A subtype, or array of types to look for. Note: This is how they appear in the SYSTEM LOG.
+ * @param mixed $owner_guid The guid or a collection of GUIDs
+ * @param string $owner_relationship If defined, the relationship between $owner_guid and the entity owner_guid - so "is $owner_guid $owner_relationship with $entity->owner_guid"
+ * @return array An array of system log entries.
+ */
+function get_activity_stream_data($limit = 10, $offset = 0, $type = "", $subtype = "", $owner_guid = "", $owner_relationship = "") {
+       global $CONFIG;
+
+       $limit = (int)$limit;
+       $offset = (int)$offset;
+
+       if ($type) {
+               if (!is_array($type)) {
+                       $type = array(sanitise_string($type));
+               } else {
+                       foreach ($type as $k => $v) {
+                               $type[$k] = sanitise_string($v);
+                       }
                }
-               
-               if ($subtype) {
-                       if (!is_array($subtype))
-                               $subtype = array(sanitise_string($subtype));
-                       else
-                               foreach ($subtype as $k => $v)
-                                       $subtype[$k] = sanitise_string($v);
+       }
+
+       if ($subtype) {
+               if (!is_array($subtype)) {
+                       $subtype = array(sanitise_string($subtype));
+               } else {
+                       foreach ($subtype as $k => $v) {
+                               $subtype[$k] = sanitise_string($v);
+                       }
                }
-               
-               if ($owner_guid) {
-                       if (is_array($owner_guid))
-                               foreach ($owner_guid as $k => $v)
-                                       $owner_guid[$k] = (int)$v;
-                       else
-                               $owner_guid = array((int)$owner_guid);
+       }
+
+       if ($owner_guid) {
+               if (is_array($owner_guid)) {
+                       foreach ($owner_guid as $k => $v) {
+                               $owner_guid[$k] = (int)$v;
+                       }
+               } else {
+                       $owner_guid = array((int)$owner_guid);
                }
-                       
-               $owner_relationship = sanitise_string($owner_relationship);
-               
-               // Get a list of possible views
-               $activity_events= array(); 
-               $activity_views = array_merge(elgg_view_tree('activity', 'default'), elgg_view_tree('river', 'default')); // Join activity with river
-
-               $done = array();
-                       
-               foreach ($activity_views as $view)
-               {
-                       $fragments = explode('/', $view);
-                       $tmp = explode('/',$view, 2);
-                       $tmp = $tmp[1];
-                       
-                       if ((isset($fragments[0])) && (($fragments[0] == 'river') || ($fragments[0] == 'activity')) 
-                               && (!in_array($tmp, $done)))
-                       {
-                               if (isset($fragments[1]))
-                               {
-                                       $f = array();
-                                       for ($n = 1; $n < count($fragments); $n++)
-                                       {
-                                               $val = sanitise_string($fragments[$n]);
-                                               switch($n)
-                                               {
-                                                       case 1: $key = 'type'; break;
-                                                       case 2: $key = 'subtype'; break;
-                                                       case 3: $key = 'event'; break;
-                                               }
-                                               $f[$key] = $val;
+       }
+
+       $owner_relationship = sanitise_string($owner_relationship);
+
+       // Get a list of possible views
+       $activity_events= array();
+       $activity_views = array_merge(elgg_view_tree('activity', 'default'), elgg_view_tree('river', 'default')); // Join activity with river
+
+       $done = array();
+
+       foreach ($activity_views as $view) {
+               $fragments = explode('/', $view);
+               $tmp = explode('/',$view, 2);
+               $tmp = $tmp[1];
+
+               if ((isset($fragments[0])) && (($fragments[0] == 'river') || ($fragments[0] == 'activity'))
+                       && (!in_array($tmp, $done))) {
+
+                       if (isset($fragments[1])) {
+                               $f = array();
+                               for ($n = 1; $n < count($fragments); $n++) {
+                                       $val = sanitise_string($fragments[$n]);
+                                       switch($n) {
+                                               case 1: $key = 'type'; break;
+                                               case 2: $key = 'subtype'; break;
+                                               case 3: $key = 'event'; break;
                                        }
-                                       
-                                       // Filter result based on parameters
-                                       $add = true;
-                                       if ($type) {
-                                               if (!in_array($f['type'], $type)) $add = false;
+                                       $f[$key] = $val;
+                               }
+
+                               // Filter result based on parameters
+                               $add = true;
+                               if ($type) {
+                                       if (!in_array($f['type'], $type)) {
+                                               $add = false;
                                        }
-                                       if (($add) && ($subtype)) {
-                                               if (!in_array($f['subtype'], $subtype)) $add = false;
+                               }
+                               if (($add) && ($subtype)) {
+                                       if (!in_array($f['subtype'], $subtype)) {
+                                               $add = false;
                                        }
-                                       if (($add) && ($event)) {
-                                               if (!in_array($f['event'], $event)) $add = false;
+                               }
+                               if (($add) && ($event)) {
+                                       if (!in_array($f['event'], $event)) {
+                                               $add = false;
                                        }
-                                       
-                                       if ($add)
-                                               $activity_events[] = $f;
                                }
-                               
-                               $done[] = $tmp; 
+
+                               if ($add) {
+                                       $activity_events[] = $f;
+                               }
                        }
-                       
-                       
+
+                       $done[] = $tmp;
+               }
+       }
+
+       $n = 0;
+       foreach ($activity_events as $details) {
+               // Get what we're talking about
+               if ($details['subtype'] == 'default') {
+                       $details['subtype'] = '';
                }
 
-               $n = 0;
-               foreach ($activity_events as $details)
-               {
-                       // Get what we're talking about
-               
-                       if ($details['subtype'] == 'default') $details['subtype'] = '';
-                       
-                       if (($details['type']) && ($details['event'])) {
-                               if ($n>0) $obj_query .= " or ";
-                               
-                               $access = "";
-                               if ($details['type']!='relationship')
-                                       $access = " and " . get_access_sql_suffix('sl');
-                                
-                               $obj_query .= "( sl.object_type='{$details['type']}' and sl.object_subtype='{$details['subtype']}' and sl.event='{$details['event']}' $access )";
-                               
-                               $n++;
+               if (($details['type']) && ($details['event'])) {
+                       if ($n > 0) {
+                               $obj_query .= " or ";
                        }
-               
-               }               
-       
-               // User
-               if ((count($owner_guid)) &&  ($owner_guid[0]!=0)) {
-                       $user = " and sl.performed_by_guid in (".implode(',', $owner_guid).")";
-                       
-                       if ($owner_relationship)
-                       {
-                               $friendsarray = "";
-                               if ($friends = get_entities_from_relationship($owner_relationship,$owner_guid[0],false,"user",$subtype,0,"time_created desc",9999)) {
-                                       $friendsarray = array();
-                                       foreach($friends as $friend) {
-                                               $friendsarray[] = $friend->getGUID();
-                                       }
-                                       
-                                       $user = " and sl.performed_by_guid in (".implode(',', $friendsarray).")";
+
+                       $access = "";
+                       if ($details['type']!='relationship') {
+                               $access = " and " . get_access_sql_suffix('sl');
+                       }
+
+                       $obj_query .= "( sl.object_type='{$details['type']}'
+                               AND sl.object_subtype='{$details['subtype']}'
+                               AND sl.event='{$details['event']}' $access )";
+
+                       $n++;
+               }
+       }
+
+       // User
+       if ((count($owner_guid)) &&  ($owner_guid[0] != 0)) {
+               $user = " and sl.performed_by_guid in (".implode(',', $owner_guid).")";
+
+               if ($owner_relationship) {
+                       $friendsarray = "";
+                       if ($friends = get_entities_from_relationship($owner_relationship, $owner_guid[0],
+                               FALSE, "user", $subtype, 0, "time_created desc", 9999)) {
+
+                               $friendsarray = array();
+                               foreach($friends as $friend) {
+                                       $friendsarray[] = $friend->getGUID();
                                }
-                               
+
+                               $user = " and sl.performed_by_guid in (" . implode(',', $friendsarray).")";
                        }
                }
-               
-               $query = "SELECT sl.* from {$CONFIG->dbprefix}system_log sl  where 1 $user and ($obj_query) order by sl.time_created desc  limit $offset, $limit";
-               return get_data($query);
        }
-?>
\ No newline at end of file
+
+       $query = "SELECT sl.* FROM {$CONFIG->dbprefix}system_log sl
+               WHERE 1 $user AND ($obj_query)
+               ORDER BY sl.time_created desc limit $offset, $limit";
+       return get_data($query);
+}
\ No newline at end of file