aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-04-21 17:26:51 +0000
committerben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-04-21 17:26:51 +0000
commitb1177c028d19aef4abd18e87ffdb398df0f6f24a (patch)
tree546bab818f4f47dac7386b4971c310c9b7e1e985
parentfbac997a10e9ab2fb3f04b2a33635f3434ddd5e3 (diff)
downloadelgg-b1177c028d19aef4abd18e87ffdb398df0f6f24a.tar.gz
elgg-b1177c028d19aef4abd18e87ffdb398df0f6f24a.tar.bz2
Introduced profile plugin
git-svn-id: https://code.elgg.org/elgg/trunk@511 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r--mod/profile/actions/edit.php40
-rw-r--r--mod/profile/edit.php36
-rw-r--r--mod/profile/index.php34
-rw-r--r--mod/profile/languages/en.php47
-rw-r--r--mod/profile/start.php79
-rw-r--r--mod/profile/views/default/profile/edit.php59
-rw-r--r--mod/profile/views/default/user/user.php81
7 files changed, 376 insertions, 0 deletions
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