From 441c9e85dcb824dba2a44657a31fa29ad71a4ee1 Mon Sep 17 00:00:00 2001 From: ewinslow Date: Tue, 2 Nov 2010 16:06:53 +0000 Subject: Refs #2538: Moved js directory to elgg root. git-svn-id: http://code.elgg.org/elgg/trunk@7189 36083f99-b078-4883-b0ff-0f9b5a30f544 --- js/lib/session.js | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 js/lib/session.js (limited to 'js/lib/session.js') diff --git a/js/lib/session.js b/js/lib/session.js new file mode 100644 index 000000000..227c607eb --- /dev/null +++ b/js/lib/session.js @@ -0,0 +1,116 @@ +/** + * @todo comment + */ +elgg.provide('elgg.session'); + +/** + * Helper function for setting cookies + * @param {string} name + * @param {string} value + * @param {Object} options + * {number|Date} options[expires] + * {string} options[path] + * {string} options[domain] + * {boolean} options[secure] + * + * @return {string} The value of the cookie, if only name is specified + */ +elgg.session.cookie = function(name, value, options) { + //elgg.session.cookie() + if(typeof name == 'undefined') { + return document.cookie; + } + + //elgg.session.cookie(name) + if (typeof value == 'undefined') { + if (document.cookie && document.cookie != '') { + var cookies = document.cookie.split(';'); + for (var i = 0; i < cookies.length; i++) { + var cookie = jQuery.trim(cookies[i]).split('='); + if (cookie[0] == name) { + return decodeURIComponent(cookie[1]); + } + } + } + return undefined; + } + + // elgg.session.cookie(name, value[, opts]) + var cookies = []; + + options = options || {}; + + if (value === null) { + value = ''; + options.expires = -1; + } + + cookies.push(name + '=' + value); + + if (typeof options.expires == 'number') { + var date, valid = true; + + if (typeof options.expires == 'number') { + date = new Date(); + date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); + } else if(options.expires.toUTCString) { + date = options.expires; + } else { + valid = false; + } + + valid ? cookies.push('expires=' + date.toUTCString()) : 0; + } + + // CAUTION: Needed to parenthesize options.path and options.domain + // in the following expressions, otherwise they evaluate to undefined + // in the packed version for some reason. + if (options.path) { + cookies.push('path=' + (options.path)); + } + + if (options.domain) { + cookies.push('domain=' + (options.domain)); + } + + if (options.secure) { + cookies.push('secure'); + } + + document.cookie = cookies.join('; '); +}; + +/** + * @return {ElggUser} The logged in user + */ +elgg.get_loggedin_user = function() { + return elgg.session.user; +}; + +/** + * @return {number} The GUID of the logged in user + */ +elgg.get_loggedin_userid = function() { + var user = elgg.get_loggedin_user(); + return user ? user.guid : 0; +}; + +/** + * @return {boolean} Whether there is a user logged in + */ +elgg.isloggedin = function() { + return (elgg.get_loggedin_user() instanceof elgg.ElggUser); +}; + +/** + * @return {boolean} Whether there is an admin logged in + */ +elgg.isadminloggedin = function() { + var user = elgg.get_loggedin_user(); + return (user instanceof ElggUser) && user.isAdmin(); +}; + +/** + * @deprecated Use elgg.session.cookie instead + */ +$.cookie = elgg.session.cookie; \ No newline at end of file -- cgit v1.2.3