aboutsummaryrefslogtreecommitdiff
path: root/mod/activity
diff options
context:
space:
mode:
authormarcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>2009-01-21 10:39:35 +0000
committermarcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>2009-01-21 10:39:35 +0000
commite7a6658abfd1f8e20ebc91ce3022eef8376b3e2e (patch)
tree082c703a6579acb50b8606e0ae59629314342bcf /mod/activity
parent591790174387f9b773c5e8414eda772dad5ede04 (diff)
downloadelgg-e7a6658abfd1f8e20ebc91ce3022eef8376b3e2e.tar.gz
elgg-e7a6658abfd1f8e20ebc91ce3022eef8376b3e2e.tar.bz2
Added Activity stream back in
git-svn-id: https://code.elgg.org/elgg/trunk@2589 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'mod/activity')
-rw-r--r--mod/activity/all.php30
-rw-r--r--mod/activity/friends.php38
-rw-r--r--mod/activity/index.php35
-rw-r--r--mod/activity/languages/en.php30
-rw-r--r--mod/activity/manifest.xml9
-rw-r--r--mod/activity/opendd.php35
-rw-r--r--mod/activity/start.php453
-rw-r--r--mod/activity/views/default/activity/css.php103
-rw-r--r--mod/activity/views/default/activity/dashboard.php14
-rw-r--r--mod/activity/views/default/activity/wrapper.php51
-rw-r--r--mod/activity/views/default/settings/activity/edit.php11
-rw-r--r--mod/activity/views/opendd/activity/dashboard.php13
12 files changed, 822 insertions, 0 deletions
diff --git a/mod/activity/all.php b/mod/activity/all.php
new file mode 100644
index 000000000..88afb26d3
--- /dev/null
+++ b/mod/activity/all.php
@@ -0,0 +1,30 @@
+<?php
+ /**
+ * Elgg activity plugin.
+ *
+ * @package ElggActivity
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.com/
+ */
+
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+ $limit = get_input('limit', 20);
+ $offset = get_input('offset');
+ $type = get_input('type');
+ $subtype = get_input('subtype');
+ $title = elgg_view_title(elgg_echo('activity:all'));
+
+ global $autofeed;
+ $autofeed = true;
+
+ if (elgg_get_viewtype()=='opendd')
+ $body = elgg_view('activity/dashboard', array('activity' => activity_get_activity_opendd($limit, $offset, $type, $subtype)));
+ else
+ $body = elgg_view('activity/dashboard', array('activity' => activity_get_activity($limit, $offset, $type, $subtype)));
+
+ page_draw(elgg_echo('activity:all'),elgg_view_layout("two_column_left_sidebar", '', $title . $body));
+
+?> \ No newline at end of file
diff --git a/mod/activity/friends.php b/mod/activity/friends.php
new file mode 100644
index 000000000..b29d9c4d6
--- /dev/null
+++ b/mod/activity/friends.php
@@ -0,0 +1,38 @@
+<?php
+ /**
+ * Elgg activity plugin.
+ *
+ * @package ElggActivity
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.com/
+ */
+
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+ $owner = page_owner_entity();
+ $limit = get_input('limit', 20);
+ $offset = get_input('offset');
+
+ $title_txt = sprintf(elgg_echo('activity:person:friends'), $owner->name);
+ $title = elgg_view_title($title_txt);
+
+ if (elgg_get_viewtype()=='opendd')
+ $activity = activity_get_activity_opendd($limit, $offset, $type, $subtype, page_owner(), 'friend');
+ else
+ $activity = activity_get_activity($limit, $offset, $type, $subtype, page_owner(), 'friend');
+ if (count($activity)>0) {
+
+ global $autofeed;
+ $autofeed = true;
+
+ $body = elgg_view('activity/dashboard', array('activity' => $activity));
+ } else
+ $body = elgg_echo('activity:nofriendactivity');
+
+
+
+ page_draw($title_txt, elgg_view_layout("two_column_left_sidebar", '', $title . $body));
+
+?> \ No newline at end of file
diff --git a/mod/activity/index.php b/mod/activity/index.php
new file mode 100644
index 000000000..e71609576
--- /dev/null
+++ b/mod/activity/index.php
@@ -0,0 +1,35 @@
+<?php
+ /**
+ * Elgg activity plugin.
+ *
+ * @package ElggActivity
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.com/
+ */
+
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+ $limit = get_input('limit', 20);
+ $offset = get_input('offset');
+ $type = get_input('type');
+ $subtype = get_input('subtype');
+ $title = elgg_view_title(elgg_echo('activity:your'));
+
+ if (page_owner())
+ {
+ global $autofeed;
+ $autofeed = true;
+
+ if (elgg_get_viewtype()=='opendd')
+ $body = elgg_view('activity/dashboard', array('activity' => activity_get_activity_opendd($limit, $offset, $type, $subtype, page_owner())));
+ else
+ $body = elgg_view('activity/dashboard', array('activity' => activity_get_activity($limit, $offset, $type, $subtype, page_owner())));
+ }
+ else
+ $body = elgg_echo('activity:usernotfound');
+
+ page_draw(elgg_echo('activity:your'),elgg_view_layout("two_column_left_sidebar", '', $title . $body));
+
+?> \ No newline at end of file
diff --git a/mod/activity/languages/en.php b/mod/activity/languages/en.php
new file mode 100644
index 000000000..7843c8378
--- /dev/null
+++ b/mod/activity/languages/en.php
@@ -0,0 +1,30 @@
+<?php
+ /**
+ * Elgg activity plugin language pack.
+ *
+ * @package ElggActivity
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.com/
+ */
+
+ $english = array(
+
+ 'activity:all' => 'Site activity',
+ 'activity' => 'Activity',
+ 'activity:your' => 'Your activity',
+ 'activity:friends' => 'Friend\'s activity',
+ 'activity:person' => '%s\'s activity',
+ 'activity:person:friends' => '%s\'s friend\'s activity',
+
+ 'activity:useasdashboard' => 'Do you wish to use the activity stream as the dashboard?',
+
+ 'activity:noactivity' => 'Sorry, there is currently no activity that matches your search criteria',
+
+ 'activity:usernotfound' => 'User not found',
+ 'activity:nofriendactivity' => 'No activity, perhaps you should add some more friends?',
+ );
+
+ add_translation("en",$english);
+?> \ No newline at end of file
diff --git a/mod/activity/manifest.xml b/mod/activity/manifest.xml
new file mode 100644
index 000000000..79213c935
--- /dev/null
+++ b/mod/activity/manifest.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest>
+ <field key="author" value="Curverider Ltd" />
+ <field key="version" value="1.0" />
+ <field key="description" value="A rich activity river providing a useful summary of activity." />
+ <field key="website" value="http://www.elgg.org/" />
+ <field key="copyright" value="(C) Curverider 2008" />
+ <field key="licence" value="GNU Public License version 2" />
+</plugin_manifest> \ No newline at end of file
diff --git a/mod/activity/opendd.php b/mod/activity/opendd.php
new file mode 100644
index 000000000..9c008d472
--- /dev/null
+++ b/mod/activity/opendd.php
@@ -0,0 +1,35 @@
+<?php
+ /**
+ * Elgg activity plugin opendd export of a given statement.
+ *
+ * @package ElggActivity
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.com/
+ */
+
+ $id = (int)get_input('statement_id');
+ $type = sanitise_string(get_input('statement_type'));
+ $metaname = sanitise_string(get_input('metaname'));
+
+ $statement = construct_riverstatement_from_log(
+ get_log_entry($id)
+ );
+
+ global $CONFIG;
+
+ switch ($type)
+ {
+ case 'statement' : $result = activity_export_statement($statement, $id);
+ foreach ($result as $r) $body .= "$r";
+ break;
+ case 'metadata' :
+
+ $md = activity_export_field_from_statement($statement, $id, $metaname);
+ $body .= "$md";
+ break;
+ }
+
+ page_draw('',$body);
+?> \ No newline at end of file
diff --git a/mod/activity/start.php b/mod/activity/start.php
new file mode 100644
index 000000000..56ba5e69f
--- /dev/null
+++ b/mod/activity/start.php
@@ -0,0 +1,453 @@
+<?php
+ /**
+ * Elgg activity plugin.
+ *
+ * @package ElggActivity
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.com/
+ */
+
+ /**
+ * Initialise the activity.
+ *
+ */
+ function activity_init()
+ {
+ global $CONFIG;
+
+ // Register and optionally replace the dashboard
+ if (get_plugin_setting('useasdashboard', 'activity') == 'yes')
+ register_page_handler('dashboard','activity_page_handler');
+
+ // Page handler
+ register_page_handler('activity','activity_page_handler');
+
+ // Add our CSS
+ extend_view('css','activity/css');
+
+ // Activity main menu
+ if (isloggedin())
+ {
+ add_menu(elgg_echo('activity'), $CONFIG->wwwroot . "pg/activity/{$_SESSION['user']->username}/", array(), 'activity');
+ }
+ }
+
+ /**
+ * Post init gumph.
+ */
+ function activity_page_setup()
+ {
+ global $CONFIG;
+
+ if ((get_context()=='activity') || (get_context()=='dashboard'))
+ {
+ add_submenu_item(elgg_echo('activity:your'), $CONFIG->wwwroot."pg/activity/{$_SESSION['user']->username}/");
+ add_submenu_item(elgg_echo('activity:friends'), $CONFIG->wwwroot."pg/activity/{$_SESSION['user']->username}/friends/");
+ add_submenu_item(elgg_echo('activity:all'), $CONFIG->wwwroot."pg/activity/");
+ }
+ }
+
+ /**
+ * Page handler for activity.
+ *
+ * @param unknown_type $page
+ */
+ function activity_page_handler($page)
+ {
+ global $CONFIG;
+
+ if (($page[0]) && ($page[1]!='uuid')) set_input('username', $page[0]);
+
+ if ($page[0]) {
+ if ($page[1])
+ {
+ switch ($page[1])
+ {
+ case 'friends' :
+ include($CONFIG->pluginspath . "activity/friends.php");
+ break;
+ case 'uuid' : // Endpoint for UUID export of statements
+ switch ($page[2])
+ {
+ case 'metadata' : set_input('metaname', $page[4]);
+ case 'statement' : set_input('statement_id', $page[3]);
+ set_input('statement_type', $page[2]);
+ elgg_set_viewtype('opendd');
+ }
+
+ include($CONFIG->pluginspath . "activity/opendd.php");
+ break;
+ }
+ }
+ else
+ include($CONFIG->pluginspath . "activity/index.php");
+ } else
+ include($CONFIG->pluginspath . "activity/all.php");
+ }
+
+ /**
+ * 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 pre-rendered elgg_views on the data.
+ */
+ function activity_get_activity_data($limit = 10, $offset = 0, $type = "", $subtype = "", $owner_guid = "", $owner_relationship = "" )
+ {
+ global $CONFIG;
+
+ $limit = (int)$limit;
+ $offset = (int)$offset;
+
+ if (!is_array($type))
+ $type = array(sanitise_string($type));
+ else
+ foreach ($type as $k => $v)
+ $type[$k] = sanitise_string($v);
+
+ if (!is_array($subtype))
+ $subtype = array(sanitise_string($subtype));
+ else
+ foreach ($subtype as $k => $v)
+ $subtype[$k] = sanitise_string($v);
+
+ 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;
+ }
+ $activity_events[] = $f;
+ }
+
+ $done[] = $tmp;
+ }
+
+
+ }
+
+ $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++;
+ }
+
+ }
+
+ // 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);
+ }
+
+ /**
+ * Pull activity from the system log.
+ *
+ * This works in a similar way to the river code, but looks for activity views instead.
+ *
+ * @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 pre-rendered elgg_views on the data.
+ */
+ function activity_get_activity($limit = 10, $offset = 0, $type = "", $subtype = "", $owner_guid = "", $owner_relationship = "" )
+ {
+ global $CONFIG;
+
+ $log_data = activity_get_activity_data($limit, $offset, $type, $subtype, $owner_guid, $owner_relationship);
+
+ // until count reached, loop through and render
+ $activity = array();
+
+ if ($log_data)
+ {
+ foreach ($log_data as $log)
+ {
+ // See if we have access to the object we're talking about
+ $statement = construct_riverstatement_from_log($log);
+
+ $event = $log->event;
+ $class = $log->object_class;
+ $type = $log->object_type;
+ $subtype = $log->object_subtype;
+ $tmp = new $class();
+ $object = $tmp->getObjectFromID($log->object_id);
+ $by_user_obj = get_entity($log->performed_by_guid);
+
+ // Belts and braces
+ if ($statement)
+ {
+ $tam = "";
+
+ // Now construct and call the appropriate views
+
+ if ($subtype == "widget") { // Special case for widgets
+ $subtype = "widget/" . $object->handler;
+ }
+ if ($subtype == '')
+ $subtype = 'default';
+
+
+ $activity_view = 'activity';
+ if (!elgg_view_exists("$activity_view/$type/$subtype/$event"))
+ $activity_view = 'river';
+
+ $tam = elgg_view("$activity_view/$type/$subtype/$event", array(
+ 'statement' => $statement
+ ));
+
+
+ // Giftwrap
+ if (!empty($tam)) {
+ $tam = elgg_view("activity/wrapper",array(
+ 'entry' => $tam,
+ 'time' => $log->time_created,
+ 'event' => $event,
+ 'statement' => $statement
+ ));
+ }
+
+ $activity[] = $tam;
+ }
+ }
+ }
+
+ return $activity;
+
+ }
+
+ /**
+ * Export a given field of a statement as a bit of opendd metadata
+ *
+ * @param ElggRiverStatement $statement
+ * @param int $logid The id of the log entry this was generated from
+ * @param string $field The fieldname
+ * @return ODDMetadata object or false if field not available.
+ */
+ function activity_export_field_from_statement(ElggRiverStatement $statement, $logid, $field)
+ {
+ global $CONFIG;
+
+ $result = false;
+
+ // Convert
+ $object_return = $statement->getObject();
+ if (is_array($object_return)) {
+
+ $object = array();
+ foreach ($object_return as $c)
+ $object[] = $c;
+ }
+ else
+ $object = $object_return;
+
+
+ switch ($field)
+ {
+ case 'timestamp' : $value = $statement->getTimestamp(); break;
+ case 'event' : $value = $statement->getEvent(); break;
+ case 'subject' : $subject = $statement->getSubject();
+ $value = guid_to_uuid($subject->guid);
+ break;
+ case 'object' :
+ if ($object instanceof ElggEntity) $value = guid_to_uuid($object->guid);
+ if ((is_array($object)) && (isset($object[0]))) {
+ if ( ($object[0] instanceof ElggEntity) || ($object[0] instanceof ElggExtender) || ($object[0] instanceof ElggRelationship))
+ $value = get_uuid_from_object($object[0]);
+ else
+ $value = $object[0];
+ }
+ break;
+ case 'object2' :
+
+ if ( (is_array($object)) && (isset($object[1]))) {
+ if ( ($object[1] instanceof ElggEntity) || ($object[1] instanceof ElggExtender) || ($object[1] instanceof ElggRelationship))
+ $value = get_uuid_from_object($object[1]);
+ else
+ $value = $object[1];
+ }
+
+ break;
+ case 'object3' :
+
+ if ( (is_array($object)) && (isset($object[2]))) {
+ if ( ($object[2] instanceof ElggEntity) || ($object[2] instanceof ElggExtender) || ($object[2] instanceof ElggRelationship))
+ $value = get_uuid_from_object($object[2]);
+ else
+ $value = $object[2];
+ }
+
+ break;
+
+ }
+
+ //$md = new ODDMetaData("{$CONFIG->url}pg/activity/export/uuid/metadata/$id/$metaname/", "{$CONFIG->url}pg/activity/export/uuid/metadata/$id/", $metaname, $value);
+ if ($value)
+ $result = new ODDMetaData("{$CONFIG->url}pg/activity/export/uuid/metadata/$logid/$field/", "{$CONFIG->url}pg/activity/export/uuid/metadata/$logid/", $field, $value);
+
+ return $result;
+ }
+
+ /**
+ * Export an Elgg river statement as OpenDD
+ *
+ * @param ElggRiverStatement $statement
+ * @param int $logid The id of the log entry this was generated from
+ */
+ function activity_export_statement(ElggRiverStatement $statement, $logid)
+ {
+ global $CONFIG;
+
+ $result = array();
+
+ // Export activity
+ $result[] = new ODDEntity("{$CONFIG->url}pg/activity/export/uuid/statement/$logid/", 'riverstatement');
+
+ foreach (
+ array(
+ 'timestamp',
+ 'subject',
+ 'object',
+ 'object2',
+ 'object3',
+ 'event') as $field
+ )
+ $result[] = activity_export_field_from_statement($statement, $logid, $field);
+
+
+ return $result;
+ }
+
+ /**
+ * Get the activity stream and output it as an opendd feed of data
+ *
+ * @param unknown_type $limit
+ * @param unknown_type $offset
+ * @param unknown_type $type
+ * @param unknown_type $subtype
+ * @param unknown_type $owner_guid
+ * @param unknown_type $owner_relationship
+ */
+ function activity_get_activity_opendd($limit = 10, $offset = 0, $type = "", $subtype = "", $owner_guid = "", $owner_relationship = "" )
+ {
+ global $CONFIG;
+
+ $log_data = activity_get_activity_data($limit, $offset, $type, $subtype, $owner_guid, $owner_relationship);
+
+ // until count reached, loop through and render
+ $activity = array();
+
+ if ($log_data)
+ {
+ foreach ($log_data as $log)
+ {
+ // See if we have access to the object we're talking about
+ $statement = construct_riverstatement_from_log($log);
+
+ $event = $log->event;
+ $class = $log->object_class;
+ $type = $log->object_type;
+ $subtype = $log->object_subtype;
+ $tmp = new $class();
+ $object = $tmp->getObjectFromID($log->object_id);
+ $by_user_obj = get_entity($log->performed_by_guid);
+
+ // Belts and braces
+ if ($statement)
+ {
+ $activity[] = activity_export_statement($statement, $log->id);
+ }
+ }
+ }
+
+ return $activity;
+ }
+
+
+
+ // river index with tabs to drill down
+
+
+
+
+ /// BONUS POINTS
+
+ // comment on feed items
+
+ // comment on search terms/ tags
+
+
+ // Initialise plugin
+ register_elgg_event_handler('init','system','activity_init');
+ register_elgg_event_handler('pagesetup','system','activity_page_setup');
+?> \ No newline at end of file
diff --git a/mod/activity/views/default/activity/css.php b/mod/activity/views/default/activity/css.php
new file mode 100644
index 000000000..bce6fe0d2
--- /dev/null
+++ b/mod/activity/views/default/activity/css.php
@@ -0,0 +1,103 @@
+<?php
+
+ /**
+ * Elgg Activity CSS
+ *
+ * @package ElggBookmarks
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider <info@elgg.com>
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.org/
+ */
+
+?>
+
+
+/* ***************************************
+ ACTIVITY
+*************************************** */
+.activity_item p {
+ margin:0;
+ padding:2px 0 0 0;
+ line-height:1.1em;
+ min-height:17px;
+}
+.activity_item .activity_item_time {
+ font-size:90%;
+ color:#666666;
+}
+#activity {
+ border-top:1px solid #dddddd;
+}
+#activity .activity_item p {
+ margin:0;
+ padding:2px 0 0 20px;
+ line-height:1.1em;
+ min-height:17px;
+}
+#activity .activity_item {
+ border-bottom:1px solid #dddddd;
+ padding:2px 0 2px 0;
+}
+#activity .river_item_time {
+ font-size:90%;
+ color:#666666;
+}
+/* IE6 fix */
+* html #activity .river_item p {
+ padding:3px 0 3px 20px;
+}
+/* IE7 */
+*:first-child+html #activity .river_item p {
+ min-height:17px;
+}
+
+#activity .activity_file_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_files.gif) no-repeat left -1px;
+}
+#activity .activity_file_annotate {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_comment.gif) no-repeat left -1px;
+}
+#activity .activity_status_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_profile.gif) no-repeat left -1px;
+}
+#activity .activity_user_profileupdate {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_profile.gif) no-repeat left -1px;
+}
+#activity .activity_user_profileiconupdate {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_profile.gif) no-repeat left -1px;
+}
+#activity .activity_relationship_friend_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_friends.gif) no-repeat left -1px;
+}
+#activity .activity_bookmarks_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_bookmarks.gif) no-repeat left -1px;
+}
+#activity .activity_blog_annotate {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_comment.gif) no-repeat left -1px;
+}
+#activity .activity_widget_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_plugin.gif) no-repeat left -1px;
+}
+#activity .activity_blog_update {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_blog.gif) no-repeat left -1px;
+}
+#activity .activity_blog_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_blog.gif) no-repeat left -1px;
+}
+#activity .activity_status_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_status.gif) no-repeat left -1px;
+}
+#activity .activity_forums_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_forum.gif) no-repeat left -1px;
+}
+#activity .activity_forums_update {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_forum.gif) no-repeat left -1px;
+}
+#activity .activity_forumtopic_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_forum.gif) no-repeat left -1px;
+}
+#activity .activity_relationship_member_create {
+ background: url(<?php echo $vars['url']; ?>_graphics/river_icons/river_icon_forum.gif) no-repeat left -1px;
+}
+
diff --git a/mod/activity/views/default/activity/dashboard.php b/mod/activity/views/default/activity/dashboard.php
new file mode 100644
index 000000000..3e626b49f
--- /dev/null
+++ b/mod/activity/views/default/activity/dashboard.php
@@ -0,0 +1,14 @@
+<?php
+ /// Extract the activity
+ $activity = $vars['activity'];
+?>
+<div id="activity">
+ <?php
+ if (($activity) && (count($activity)))
+ {
+ foreach ($activity as $a) echo $a;
+ }
+ else
+ echo elgg_echo('activity:noactivity');
+ ?>
+</div> \ No newline at end of file
diff --git a/mod/activity/views/default/activity/wrapper.php b/mod/activity/views/default/activity/wrapper.php
new file mode 100644
index 000000000..88ba6ef57
--- /dev/null
+++ b/mod/activity/views/default/activity/wrapper.php
@@ -0,0 +1,51 @@
+<?php
+
+ /**
+ * Elgg activity item wrapper.
+ * Wraps all river items.
+ *
+ * @package Elgg
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.com/
+ */
+
+ $statement = $vars['statement'];
+ $time = $vars['time'];
+ $event = $vars['event'];
+ $entry = $vars['entry'];
+
+ if ($statement->getObject() instanceof ElggEntity) {
+
+ $obj = $statement->getObject();
+ $subtype = $obj->getSubtype();
+ if (empty($subtype)) $subtype = $obj->type;
+ if (empty($subtype)) $subtype = "general";
+ } else if (is_array($statement->getObject())) {
+ $obj = $statement->getObject();
+ $subtype = "relationship_" . $obj['relationship'];
+ }
+?>
+<div class="activity_item">
+
+ <div class="activity_<?php echo $subtype; ?>">
+ <div class="activity_<?php echo $event; ?>">
+ <p class="activity_<?php echo $subtype; ?>_<?php echo $event; ?>">
+ <?php
+
+ echo $vars['entry'];
+
+ ?>
+ <span class="activity_item_time">
+ (<?php
+
+ echo friendly_time($time);
+
+ ?>)
+ </span>
+ </p>
+ </div>
+ </div>
+
+</div>
diff --git a/mod/activity/views/default/settings/activity/edit.php b/mod/activity/views/default/settings/activity/edit.php
new file mode 100644
index 000000000..bfb1a9dbe
--- /dev/null
+++ b/mod/activity/views/default/settings/activity/edit.php
@@ -0,0 +1,11 @@
+<?php
+?>
+<p>
+ <?php echo elgg_echo('activity:useasdashboard'); ?>
+
+ <select name="params[useasdashboard]">
+ <option value="yes" <?php if ($vars['entity']->useasdashboard == 'yes') echo " selected=\"yes\" "; ?>><?php echo elgg_echo('option:yes'); ?></option>
+ <option value="no" <?php if ($vars['entity']->useasdashboard != 'yes') echo " selected=\"yes\" "; ?>><?php echo elgg_echo('option:no'); ?></option>
+ </select>
+
+</p>
diff --git a/mod/activity/views/opendd/activity/dashboard.php b/mod/activity/views/opendd/activity/dashboard.php
new file mode 100644
index 000000000..2fdd7bbf2
--- /dev/null
+++ b/mod/activity/views/opendd/activity/dashboard.php
@@ -0,0 +1,13 @@
+<?php
+ /// Extract the activity
+ $activity = $vars['activity'];
+
+ if (($activity) && (count($activity)))
+ {
+ foreach ($activity as $a)
+ {
+ foreach ($a as $odd)
+ echo $odd;
+ }
+ }
+?> \ No newline at end of file