From b1177c028d19aef4abd18e87ffdb398df0f6f24a Mon Sep 17 00:00:00 2001
From: ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
Date: Mon, 21 Apr 2008 17:26:51 +0000
Subject: Introduced profile plugin

git-svn-id: https://code.elgg.org/elgg/trunk@511 36083f99-b078-4883-b0ff-0f9b5a30f544
---
 mod/profile/actions/edit.php               | 40 +++++++++++++++
 mod/profile/edit.php                       | 36 +++++++++++++
 mod/profile/index.php                      | 34 +++++++++++++
 mod/profile/languages/en.php               | 47 +++++++++++++++++
 mod/profile/start.php                      | 79 +++++++++++++++++++++++++++++
 mod/profile/views/default/profile/edit.php | 59 ++++++++++++++++++++++
 mod/profile/views/default/user/user.php    | 81 ++++++++++++++++++++++++++++++
 7 files changed, 376 insertions(+)
 create mode 100644 mod/profile/actions/edit.php
 create mode 100644 mod/profile/edit.php
 create mode 100644 mod/profile/index.php
 create mode 100644 mod/profile/languages/en.php
 create mode 100644 mod/profile/start.php
 create mode 100644 mod/profile/views/default/profile/edit.php
 create mode 100644 mod/profile/views/default/user/user.php

(limited to 'mod')

diff --git a/mod/profile/actions/edit.php b/mod/profile/actions/edit.php
new file mode 100644
index 000000000..4bcecdb56
--- /dev/null
+++ b/mod/profile/actions/edit.php
@@ -0,0 +1,40 @@
+<?php
+
+	/**
+	 * Elgg profile plugin edit action
+	 * 
+	 * @package ElggProfile
+	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+	 * @author Ben Werdmuller <ben@curverider.co.uk>
+	 * @copyright Curverider Ltd 2008
+	 * @link http://elgg.com/
+	 */
+		
+	// Get profile fields
+		$aboutme = get_input('aboutme');
+		$location = string_to_tag_array(get_input('location'));
+		$skills = string_to_tag_array(get_input('skills'));
+		$interests = string_to_tag_array(get_input('interests'));
+		
+	// Save stuff if we can, and forward to the user's profile
+		$user = $_SESSION['user'];
+		if ($user->canEdit()) {
+			
+			// Save stuff
+			$user->description = $aboutme;
+			$user->save();
+			$user->location = $location;
+			$user->skills = $skills;
+			$user->interests = $interests;
+			system_message(elgg_echo("profile:saved"));
+			
+			// Forward to the user's profile
+			forward($user->getUrl());
+
+		} else {
+	// If we can't, display an error
+			
+			system_message(elgg_echo("profile:cantedit"));
+		}
+
+?>
\ No newline at end of file
diff --git a/mod/profile/edit.php b/mod/profile/edit.php
new file mode 100644
index 000000000..046c9716f
--- /dev/null
+++ b/mod/profile/edit.php
@@ -0,0 +1,36 @@
+<?php
+
+	/**
+	 * Elgg profile editor
+	 * 
+	 * @package ElggProfile
+	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+	 * @author Ben Werdmuller <ben@curverider.co.uk>
+	 * @copyright Curverider Ltd 2008
+	 * @link http://elgg.com/
+	 */
+
+	// Get the Elgg engine
+		require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");	
+
+	// If we're not logged on, forward the user elsewhere
+		if (!isloggedin()) forward();
+		
+	// Get current user for now
+		$user = $_SESSION['user'];
+		
+	// Get form, if we're allowed to edit
+		if ($user->canEdit()) {
+			
+			$body = elgg_view("profile/edit",array('entity' => $user));
+			 
+		} else {
+			
+			$body = elgg_echo("profile:noaccess");
+			
+		}
+		
+	// Draw the page
+		page_draw(elgg_echo("profile:edit"),$body);
+
+?>
\ No newline at end of file
diff --git a/mod/profile/index.php b/mod/profile/index.php
new file mode 100644
index 000000000..e346740af
--- /dev/null
+++ b/mod/profile/index.php
@@ -0,0 +1,34 @@
+<?php
+
+	/**
+	 * Elgg profile index
+	 * 
+	 * @package ElggProfile
+	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+	 * @author Ben Werdmuller <ben@curverider.co.uk>
+	 * @copyright Curverider Ltd 2008
+	 * @link http://elgg.com/
+	 */
+
+	// Get the Elgg engine
+		require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+	// Get the username
+		$username = get_input('username');
+		
+	// Try and get the user from the username and set the page body accordingly
+		if ($user = get_user_by_username($username)) {
+			
+			$body = elgg_view_entity($user,"",true);
+			$title = $user->name;
+			
+		} else {
+			
+			$body = elgg_echo("profile:notfound");
+			$title = elgg_echo("profile");
+			
+		}
+		
+		page_draw($title, $body);
+		
+?>
\ No newline at end of file
diff --git a/mod/profile/languages/en.php b/mod/profile/languages/en.php
new file mode 100644
index 000000000..8459c41af
--- /dev/null
+++ b/mod/profile/languages/en.php
@@ -0,0 +1,47 @@
+<?php
+
+	/**
+	 * Elgg profile plugin language pack
+	 * 
+	 * @package ElggProfile
+	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+	 * @author Ben Werdmuller <ben@curverider.co.uk>
+	 * @copyright Curverider Ltd 2008
+	 * @link http://elgg.com/
+	 */
+
+	$english = array(
+	
+		/**
+		 * Menu items and titles
+		 */
+	
+			'profile' => "Profile",
+			'profile:yours' => "Your profile",
+			'profile:user' => "%s's profile",
+	
+			'profile:edit' => "Edit profile",
+	
+			'profile:aboutme' => "About me", 
+			'profile:location' => "Location",
+			'profile:skills' => "Skills",  
+			'profile:interests' => "Interests", 
+
+		/**
+		 * Status messages
+		 */
+	
+			'profile:saved' => "Your profile was successfully saved.",
+	
+		/**
+		 * Error messages
+		 */
+	
+			'profile:notfound' => "Sorry; we could not find the specified profile.",
+			'profile:cantedit' => "Sorry; you do not have permission to edit this profile.",
+	
+	);
+					
+	add_translation("en",$english);
+
+?>
\ No newline at end of file
diff --git a/mod/profile/start.php b/mod/profile/start.php
new file mode 100644
index 000000000..baebf802f
--- /dev/null
+++ b/mod/profile/start.php
@@ -0,0 +1,79 @@
+<?php
+
+	/**
+	 * Elgg profile plugin
+	 * 
+	 * @package ElggProfile
+	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+	 * @author Ben Werdmuller <ben@curverider.co.uk>
+	 * @copyright Curverider Ltd 2008
+	 * @link http://elgg.com/
+	 */
+
+	/**
+	 * Profile init function; sets up the profile functions
+	 *
+	 */
+		function profile_init() {
+			
+			// Get config
+				global $CONFIG;
+			
+			// Load the language file
+				register_translations($CONFIG->pluginspath . "profile/languages/");
+			
+			// Register a URL handler for users - this means that profile_url()
+			// will dictate the URL for all ElggUser objects
+				register_entity_url_handler('profile_url','user','all');
+			
+			// Set up menu for logged in users
+				if (isloggedin()) {
+					add_menu(elgg_echo('profile'), $CONFIG->wwwroot . "pg/profile/" . $_SESSION['user']->username,array(
+						menu_item(elgg_echo('profile:yours'),$CONFIG->wwwroot . "pg/profile/" . $_SESSION['user']->username),
+						menu_item(elgg_echo('profile:edit'),$CONFIG->wwwroot."mod/profile/edit.php"),
+					));
+				}
+				
+			// Register a page handler, so we can have nice URLs
+				register_page_handler('profile','profile_page_handler');
+				
+		}
+		
+	/**
+	 * Profile page handler
+	 *
+	 * @param array $page Array of page elements, forwarded by the page handling mechanism
+	 */
+		function profile_page_handler($page) {
+			
+			global $CONFIG;
+			
+			// The username should be the file we're getting
+			if (isset($page[0])) {
+				set_input('username',$page[0]);
+			}
+			// Include the standard profile index
+			include($CONFIG->pluginspath . "profile/index.php");
+			
+		}
+		
+	/**
+	 * Profile URL generator for $user->getUrl();
+	 *
+	 * @param ElggUser $user
+	 * @return string User URL
+	 */
+		function profile_url($user) {
+			global $CONFIG;
+			return $CONFIG->wwwroot . "pg/profile/" . $user->username;
+		}
+		
+	// Make sure the profile initialisation function is called on initialisation
+		register_event_handler('init','system','profile_init',1);
+		
+	// Register actions
+		global $CONFIG;
+		register_action("profile/edit",false,$CONFIG->pluginspath . "profile/actions/edit.php");
+
+
+?>
\ No newline at end of file
diff --git a/mod/profile/views/default/profile/edit.php b/mod/profile/views/default/profile/edit.php
new file mode 100644
index 000000000..0cd648bf6
--- /dev/null
+++ b/mod/profile/views/default/profile/edit.php
@@ -0,0 +1,59 @@
+<?php
+
+	/**
+	 * Elgg profile edit form
+	 * 
+	 * @package ElggProfile
+	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+	 * @author Ben Werdmuller <ben@curverider.co.uk>
+	 * @copyright Curverider Ltd 2008
+	 * @link http://elgg.com/
+	 * 
+	 * @uses $vars['entity'] The user entity
+	 */
+
+?>
+
+<form action="<?php echo $vars['url']; ?>action/profile/edit" method="post">
+
+	<p>
+		<label>
+			<?php echo elgg_echo("profile:aboutme"); ?><br />
+			<?php echo elgg_view("input/longtext",array(
+															'internalname' => 'aboutme',
+															'value' => $vars['entity']->description,
+														)); ?>
+		</label>
+	</p>
+	<p>
+		<label>
+			<?php echo elgg_echo("profile:location"); ?><br />
+			<?php echo elgg_view("input/tags",array(
+															'internalname' => 'location',
+															'value' => $vars['entity']->location,
+														)); ?>
+		</label>
+	</p>
+	<p>
+		<label>
+			<?php echo elgg_echo("profile:skills"); ?><br />
+			<?php echo elgg_view("input/tags",array(
+															'internalname' => 'skills',
+															'value' => $vars['entity']->skills,
+														)); ?>
+		</label>
+	</p>
+	<p>
+		<label>
+			<?php echo elgg_echo("profile:interests"); ?><br />
+			<?php echo elgg_view("input/tags",array(
+															'internalname' => 'interests',
+															'value' => $vars['entity']->interests,
+														)); ?>
+		</label>
+	</p>
+	<p>
+		<input type="submit" value="<?php echo elgg_echo("save"); ?>" />
+	</p>
+
+</form>
\ No newline at end of file
diff --git a/mod/profile/views/default/user/user.php b/mod/profile/views/default/user/user.php
new file mode 100644
index 000000000..2c64ac0df
--- /dev/null
+++ b/mod/profile/views/default/user/user.php
@@ -0,0 +1,81 @@
+<?php
+
+	/**
+	 * Elgg user display
+	 * 
+	 * @package ElggProfile
+	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+	 * @author Ben Werdmuller <ben@curverider.co.uk>
+	 * @copyright Curverider Ltd 2008
+	 * @link http://elgg.com/
+	 * 
+	 * @uses $vars['entity'] The user entity
+	 */
+
+?>
+
+	<h2><a href="<?php echo $vars['entity']->getUrl(); ?>"><?php echo $vars['entity']->name; ?></a></h2>
+	<p>
+		*** USER ICON TO COME ***
+	</p>
+	<?php 
+
+		if ($vars['full'] == true) {
+	
+	?>
+	<p><b><?php echo elgg_echo("profile:aboutme"); ?></b></p>
+	<p><?php echo nl2br($vars['entity']->description); ?></p>
+	<?php
+
+		}
+	
+	?>
+	<p>
+		<b><?php
+		
+			echo elgg_echo("profile:location");
+		
+		?>: </b>
+		<?php
+
+			echo elgg_view('output/tags',array('tags' => $vars['entity']->location));
+		
+		?>
+	</p>
+	<p>
+		<b><?php
+		
+			echo elgg_echo("profile:skills");
+		
+		?>: </b>
+		<?php
+
+			echo elgg_view('output/tags',array('tags' => $vars['entity']->skills));
+		
+		?>
+	</p>
+	<p>
+		<b><?php
+		
+			echo elgg_echo("profile:interests");
+		
+		?>: </b>
+		<?php
+
+			echo elgg_view('output/tags',array('tags' => $vars['entity']->interests));
+		
+		?>
+	</p>
+	<?php
+
+		if ($vars['entity']->canEdit()) {
+	
+	?>
+	<p>
+		<a href="<?php echo $vars['url']; ?>mod/profile/edit.php"><?php echo elgg_echo("edit"); ?></a>
+	</p>
+	<?php
+
+		}
+	
+	?>
\ No newline at end of file
-- 
cgit v1.2.3