aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-08-07 16:42:33 +0000
committermarcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-08-07 16:42:33 +0000
commit4af8915edaa0e25d651b819590c802b18ea1fb67 (patch)
tree603ea6013d65bde8fb023d457e4df3bebc2560e1
parent0af698606f32a4fbee1d654dd8fe9135886888e9 (diff)
downloadelgg-4af8915edaa0e25d651b819590c802b18ea1fb67.tar.gz
elgg-4af8915edaa0e25d651b819590c802b18ea1fb67.tar.bz2
Refs #174: Introducing the ElggDummy class which returns false for all methods and set variables called on it. This is what the logged out $_SESSION['user'] is set to and is also what page_owner_entity will return if page_owner is invalid.
This means that calls to things like $_SESSION['user']->getGUID() are now safe and will no longer cause a parsing error. Please report any issues. git-svn-id: https://code.elgg.org/elgg/trunk@1770 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r--engine/lib/dummy.php29
-rw-r--r--engine/lib/pageowner.php4
-rw-r--r--engine/lib/sessions.php14
-rw-r--r--views/default/page_elements/title.php2
4 files changed, 41 insertions, 8 deletions
diff --git a/engine/lib/dummy.php b/engine/lib/dummy.php
new file mode 100644
index 000000000..a7f8760e0
--- /dev/null
+++ b/engine/lib/dummy.php
@@ -0,0 +1,29 @@
+<?php
+ /**
+ * Dummy class.
+ * This function contains dummy functions and classes which return safe dummy values. Essentially this is
+ * to make sure that things like calling echo page_owner_entity()->name don't cause a WSoD.
+ *
+ * @package Elgg
+ * @subpackage Core
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Marcus Povey
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.org/
+ */
+
+ /**
+ * Dummy class.
+ * For every function call, get and set this function returns false.
+ */
+ class ElggDummy {
+
+ public function __call($method, $args) {
+ return false;
+ }
+
+ function __get($name) { return false; }
+
+ function __set($name, $value) { return false; }
+ }
+?> \ No newline at end of file
diff --git a/engine/lib/pageowner.php b/engine/lib/pageowner.php
index 3f867e750..46394c8c9 100644
--- a/engine/lib/pageowner.php
+++ b/engine/lib/pageowner.php
@@ -67,8 +67,8 @@
if ($page_owner > 0)
return get_entity($page_owner);
- return false;
-
+ //return false;
+ return new ElggDummy();
}
/**
diff --git a/engine/lib/sessions.php b/engine/lib/sessions.php
index 87e2f931d..5b08a6e5b 100644
--- a/engine/lib/sessions.php
+++ b/engine/lib/sessions.php
@@ -184,14 +184,16 @@
$code = $_COOKIE['elggperm'];
$code = md5($code);
$_SESSION['guid'] = 0;
- $_SESSION['id'] = 0;
+ $_SESSION['id'] = 0;
+ $_SESSION['user'] = new ElggDummy();
if ($user = get_user_by_code($code)) {
$_SESSION['user'] = $user;
$_SESSION['id'] = $user->getGUID();
$_SESSION['guid'] = $_SESSION['id'];
$_SESSION['code'] = $_COOKIE['elggperm'];
}
- } else {
+ } else {
+ $_SESSION['user'] = new ElggDummy();
$_SESSION['id'] = 0;
$_SESSION['guid'] = 0;
}
@@ -201,11 +203,13 @@
if ($user = get_user_by_code($code)) {
$_SESSION['user'] = $user;
} else {
- unset($_SESSION['user']);
+ //unset($_SESSION['user']);
+ $_SESSION['user'] = new ElggDummy();
$_SESSION['guid'] = 0;
$_SESSION['id'] = 0;
}
- } else {
+ } else {
+ $_SESSION['user'] = new ElggDummy();
$_SESSION['guid'] = 0;
$_SESSION['id'] = 0;
}
@@ -213,7 +217,7 @@
if ($_SESSION['id'] > 0) {
set_last_action($_SESSION['id']);
}
-
+ print_r($_SESSION);
register_action("login",true);
register_action("logout");
diff --git a/views/default/page_elements/title.php b/views/default/page_elements/title.php
index 2e8e3e4b7..845b47dc7 100644
--- a/views/default/page_elements/title.php
+++ b/views/default/page_elements/title.php
@@ -19,7 +19,7 @@
$submenu = get_submenu(); // elgg_view('canvas_header/submenu');
if (!empty($submenu)) $submenu = "<ul>" . $submenu . "</ul>";
- if ((!$_SESSION['user']) || ($page_owner && $page_owner_user->guid != $_SESSION['user']->getGUID())) {
+ if ($page_owner && $page_owner_user->guid != $_SESSION['user']->getGUID()) {
$info = "<h2>" . $vars['title'] . "</h2>";
if($page_owner_user instanceOf ElggGroup) {
$display = "<div id=\"content_area_group_title\">" . $info . "</div>";